Тема: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

vl-load-com
;; function to load objectdcl2004.arx
(defun LoadODCL ()
  (if (not (member "ObjectDCL2004.arx" (arx)))
    (arxload "ObjectDCL2004.arx" "ObjectDCL2004.arx not found.")
  )
)
; load the project
(defun c:MyODCL ()
  ;; load ObjectDCL
  (LoadODCL)
  ;; load the project
  (Odcl_LoadProject  "MyODCL_frmMyODCL" T)
  ;; show the form
  (Odcl_Form_Show MyODCL_frmMyODCL)
)

почему у меня не признает функцию (Odcl_LoadProject  "MyODCL_frmMyODCL" T)
Скажите пожалуйста, как запустить.

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

а вообще, если кто сможет. пришлите мне готовый проект какой-нибудь, буду благодарен

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

(Odcl_LoadProject "tbase" T)
(Odcl_Form_Show "tbase" "DclForm1")

tbase - имя проекта
DclForm1 - имя формы в проекте tbase
Кстати, там есть папка с примерами. Правда в них много ошибок. Ну и хелп есть. :)

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Дык в хелпе вообще косяк. там расписываются 2 файла, а нужен то один, у меня в принципе функцию (Odcl_LoadProject  "MyODCL_frmMyODCL" T)
не признает. хотя файл ObjectDCL2004.arx я скопировала в папку support, если есть работающий пример, пришлите кто-нибудь, пожалуйста!

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

У меня даже примеры не работают. Помогите!!!

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

> Type
То, что arx скопирован в путь поддержки, не гарантирует его загрузку :)
Проверить загрузку arx файла в лиспе не трудно:

(member "objectdcl2004.arx" (arx)) 

Ну и загрузить его через (arxload).
Только разберись там с заглавными и строчными буквами. По-моему, (arx) возвращает все имена в нижнем регистре, но точно не помню.

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Ну если этот файл не загружен, тогда почему AutoCAD не сообщает о том. что файл не загружен?

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

А почему он должен о чем-то сообщать? Команда внешняя, и не задача када (ИМХО) заботиться о загрузке нужных arx / lsp / vlx и т.п. приложений - это должен сделать программист.
Так что, сработала загрузка arx-a?

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

И вообще как загрузить. если в коде все правильно?

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

не работает, аська есть? я постучусь

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

> Type
См. почту.

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

70868713 ко мне тоже можешь стучаться

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

1. Убедись что odc-проект лежит по пути поиска файлов Автокада, если нет то задай полный путь к проектую
2. Добавь в имя прооекта расширение файла вот так:
(Odcl_LoadProject  "MyODCL_frmMyODCL.odc" T)

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Все это я уже сделала, но теперь AutoCAD (версия 2000) возмущается теперь, что файл objectdcl.arx более новая версия. чем автокад может ее прочитать, короче я совсем запуталась

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Для Автокадов 2000-2002 нужен не ObjectDcl2004.arx, а ObjectDcl.arx. Другой формат ARX-файла.

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Как оказалось, проблема решилась просто.
Нужно было сразу уточнить версию используемого AutoCAD. :)

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Ха, не так все просто!!!! Теперь у меня стоит автокад 2004, и файл я использую для него соответствующий, но тперь она не признает функцию  (Odcl_Form_Show 2_DclForm1);

vl-load-com
; this method is called to ensure that the ObjectDCL.arx file is loaded into AutoCAD.
; Please ensure that the ObjectDCL.arx file is in a path listed in one of the AutoCAD preferences
; dialog box support search paths.
(defun ObjectDCL_LoadArx ()
   (if (not (member "objectdcl2004.arx" (arx)))
      (arxload "objectdcl2004.arx" "ObjectDCL2004.arx not found.")
   )
)
(defun c:Hello ()
   ; ensure the ObjectDCL.arx file is loaded
   (ObjectDCL_LoadArx)
   (print "!1")
   ; call the method to load the 2.odc file.
   (Odcl_LoadProject "2.odc" T)
   (print "!2")
   ; call the method to show the Hellow world dialog box example
   (Odcl_Form_Show 2_DclForm1)
   (print "!3")
   (princ)
)

Автокад сообщает, что в этой функции аргумент 0# не является строкой, а какой аргумент не понятно!

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

> Type
Вы невнимательны. Посмотрите мой пост выше, а именно как пишутся аргументы функции Odcl_Form_Show

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

и так попробовала. как вы Стас советовали и писали, неполучается

vl-load-com
; this method is called to ensure that the ObjectDCL.arx file is loaded into AutoCAD.
; Please ensure that the ObjectDCL.arx file is in a path listed in one of the AutoCAD preferences
; dialog box support search paths.
(defun ObjectDCL_LoadArx ()
   (if (not (member "objectdcl2004.arx" (arx)))
      (arxload "objectdcl2004.arx" "ObjectDCL2004.arx not found.")
   )
)
(defun c:Hello ()
   ; ensure the ObjectDCL.arx file is loaded
   (ObjectDCL_LoadArx)
   (print "!1")
   ; call the method to load the 2.odc file.
   (Odcl_LoadProject "2" T)
   (print "!2")
   ; call the method to show the Hellow world dialog box example
   (Odcl_Form_Show "2" "DclForm1")
   (print "!3")
   (princ)
)

"2" - название проекта
"DclForm1" - название формы в проекте

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Type пишет:

Автокад сообщает, что в этой функции аргумент 0# не является строкой, а какой аргумент не понятно!

Из вопроса не понятно, какая конкретно функция не срабатывает и выдает это сообщение.
Не надо ставить отладочные print в теле программы. Научитесь пользоваться отладчиком VisualLisp и точно найдете причину ошибки и вкакой она функции.
Попробуйте, как я уже писал, задать полный путь к odc-файлу в функции Odcl_LoadProject.

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Создал проект "2"
Скопировал Ваш код в lsp.
Создал профиль в AutoCAD.
Добавил в пути поиска AutoCAD папку с проектом, папку с ObjectDCL.
Загрузил lsp (из редактора).
Набрал hello в коммандной строке.
ВСЕ РАБОТАЕТ!!!
AutoCAD 2004 анг.

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Выслал архив с тем, что у меня работает.
Хотя чем это поможет...

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Столкнулся с той же проблемой и так и не смог у себя ее решить. Функция Odcl_LoadProject выполняется, а Odcl_Form_Show выдает ошибку, из-за того, что (VarName) формы почему то определяется как nil. Ну и соответственно ошибку пишет, что "the #0 argument of the Odcl_Form_Show method is not a string". Один пример, скачанный с dwg.ru работает, но как только я что-то меняю в форме, опять возникает та же проблема. Кто-нибудь подскажите, пожалуйста, как можно ее решить.

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

Может это из-за того, что ObjectDCL2004.arx не подходит к ACAD 2006? Хотя один пример запускается...подскажите, пожалуйста, пути решения проблемы

Re: Как выполнить запуск формы Odcl_LoadProject в ObjectDCL ?

> Михаил
Примеры работоспособности ObjectDCL2004.arx в версиях AutoCAD 2004-2006 приведены в главе 4 "ObjectDCL" (написана О.З.Бероном) моей книги "AutoCAD: разработка приложений, настройка и адаптация" 2006 года издания (см. http://poleshchuk.spb.ru/cad). К книге есть диск с примерами.