Jump to content

Первые шаги в мир программирования под nanoCAD


Recommended Posts

14 часов назад, Robink сказал:

В VBA для этого есть Collection насколько помню


nanoSoft говорит не о VBA, которое у Autodesk запускается непосредственно из AutoCAD, а о JScript и VBScript - старые средства автоматизации до PowerShell.
>wscript Test.js | Test.vbs
Для отладки:
>wscript //X Test.js | Test.vbs

И здесь все очень печально ....

Спойлер

image.png.643941d186c0ac6af4b9b31b186e0ce6.png



 

Link to comment
Share on other sites

55 минут назад, A.Kudrjashov сказал:

nanoSoft говорит не о VBA, которое у Autodesk запускается непосредственно из AutoCAD

не надо глупостей..

и в нане и в папе есть объектная модель (ActiveX),

в нашем случае VBA это всего лишь одно из средств доступа к ней иже с VBS, JS, NET и т.д. через COM интерфейс

Более того в АК VBA Enabler не встроен по умолчанию и для доступа к объектной модели его наличие не требуется.

Выше уважаемый Robink верно заметил, что отладку VBS  для наны прекрасно можно делать в VBA из пакета офис.

-------------

то что VBA/VBS изрядно устарел и есть более подвинутые средства разработки никто не спорит, но для большинства задач VBA хватает вполне, а легкость освоения и доступность перевешивает все остальные недостатки.

ЗЫ по большому счету отличие VBA(VB6) vs VBS лишь в отсутствии пользовательских форм в последнем, в остальном функционал идентичен

 

Edited by doctorraz
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

22 минуты назад, doctorraz сказал:

не надо глупостей..

и в нане и в папе есть объектная модель (ActiveX),

в нашем случае VBA это всего лишь одно из средств доступа к ней иже с VBS, JS, NET и т.д. через COM интерфейс

Более того в АК VBA Enabler не встроен по умолчанию и для доступа к объектной модели его наличие не требуется.

Выше уважаемый Robink верно заметил, что отладку VBS  для наны прекрасно можно делать в VBA из пакета офис.

-------------

то что VBA/VBS изрядно устарел и есть более подвинутые средства разработки никто не спорит, но для большинства задач VBA хватает вполне, а легкость освоения и доступность перевешивает все остальные недостатки.

ЗЫ по большому счету отличие VBA(VB6) vs VBS лишь в отсутствии пользовательских форм в последнем, в остальном функционал идентичен

 


А как можно сделать отладку VBS в VBA, если в среде VBA вы свойства получаете, а при непосредственном запуске VBS не получаете ?
Какой смысл в такой отладке ? Отлаживать надо в той среде, в которой будет выполняться скрипт. А VBS/JS ориентированы на исполнение из командной строки.

Разговор начался именно с невозможности получить свойства того, что уже создано, из JScript.

добавлено через 4 минут

 

Edited by A.Kudrjashov
Link to comment
Share on other sites

1 минуту назад, A.Kudrjashov сказал:

А как можно сделать отладку VBS в VBA, если в среде VBA вы свойства получаете, а при непосредственном запуске VBS не получаете ?

а это я кому писал?

21 минуту назад, doctorraz сказал:

по большому счету отличие VBA(VB6) vs VBS лишь в отсутствии пользовательских форм в последнем, в остальном функционал идентичен

этак мы щас договоримся, что если я программу в VB6 студии отладил и скомпилировал, то функционал у скомпилированной изменился.

3 минуты назад, A.Kudrjashov сказал:

Разговор начался именно с невозможности получить свойства того, что уже создано из JScript.

да ладно

1 час назад, A.Kudrjashov сказал:

а о JScript и VBScript - старые средства автоматизации до PowerShell.

разговор начался так

----------------

за яву не скажу, но для VBS есть отладчики, достаточно перевернуть страницу назад и начать читать, а не только писать

Link to comment
Share on other sites

Вопрос:
Как запустить необходимое nanoCAD.Application "по умолчанию" ?

Вариант Autodesk (запускается последнее открытое приложение) не проходит.
Библиотека подключена из чистого nanoCAD, а запускается Геоника.

image.png.98e111383644d053df64569b3db2f5f9.png

Link to comment
Share on other sites

10 минут назад, A.Kudrjashov сказал:

Вариант Autodesk (запускается последнее открытое приложение) не проходит.

конечно, потому что папины приложения при запуске себя регистрируют каждый раз, а приложения неклона регистрируются один раз при инсталяции...

соответственно запускается не последнее запущенное, а последнее установленное наноприложение.

Разработчики в курсе, но и так сойдет.

Имха дальше будет еще веселее с запуском, это когда нано придет к одной установленной платформе и куче навесок поверх нее запускаемой либо с ключами либо костыликом типа XX_Интегратор

PS и это .. добавление библиотек в референсы по большому счету ни на, что не влияет (кроме удобства работы в редакторе (подсказки))

можно  подключить в проект например McCOM от наноСПДС и подцепиться к СПДС в АК и наоборот, а можно  никакие дллки не подключать и все равно все будет работать)))

Edited by doctorraz
Link to comment
Share on other sites

9 минут назад, doctorraz сказал:

конечно, потому что папины приложения при запуске себя регистрируют каждый раз, а приложения неклона регистрируются один раз при инсталяции...

соответственно запускается не последнее запущенное, а последнее установленное наноприложение.

Разработчики в курсе, но и так сойдет.

Имха дальше будет еще веселее с запуском, это когда нано придет к одной установленной платформе и куче навесок поверх нее запускаемой либо с ключами либо костыликом типа XX_Интегратор

PS и это .. добавление библиотек в референсы по большому счету ни на, что не влияет (кроме удобства работы в редакторе (подсказки))

можно  подключить в проект например McCOM от наноСПДС и подцепиться к СПДС в АК и наоборот, а можно  никакие дллки не подключать и все равно все будет работать)))


Геоника - не последнее установленное приложение.

Link to comment
Share on other sites

36 минут назад, A.Kudrjashov сказал:

Вопрос:
Как запустить необходимое nanoCAD.Application "по умолчанию" ?

Вариант Autodesk (запускается последнее открытое приложение) не проходит.
Библиотека подключена из чистого nanoCAD, а запускается Геоника.

image.png.98e111383644d053df64569b3db2f5f9.png

 

https://github.com/RobinKzn/CustomAutosaveNanoCad/blob/master/autosave2/GetAcadApplication.cs

 

Перед тем как получить  nanocad.application я запускаю регистрацию Ncad.exe /register из кода. Пример на .NET выше. 

 

Пример как запустить регистрацию из VBA: https://visio.getbb.ru/viewtopic.php?p=4362#p4362

  • Thanks 3
Link to comment
Share on other sites

58 минут назад, doctorraz сказал:

конечно, потому что папины приложения при запуске себя регистрируют каждый раз, а приложения неклона регистрируются один раз при инсталяции...

соответственно запускается не последнее запущенное, а последнее установленное наноприложение.

Разработчики в курсе, но и так сойдет.

Имха дальше будет еще веселее с запуском, это когда нано придет к одной установленной платформе и куче навесок поверх нее запускаемой либо с ключами либо костыликом типа XX_Интегратор

PS и это .. добавление библиотек в референсы по большому счету ни на, что не влияет (кроме удобства работы в редакторе (подсказки))

можно  подключить в проект например McCOM от наноСПДС и подцепиться к СПДС в АК и наоборот, а можно  никакие дллки не подключать и все равно все будет работать)))

Может кстати где то приписать в конфиге, чтобы при старте проходила регистация.

Link to comment
Share on other sites

19 минут назад, Robink сказал:

 

https://github.com/RobinKzn/CustomAutosaveNanoCad/blob/master/autosave2/GetAcadApplication.cs

 

Перед тем как получить  nanocad.application я запускаю регистрацию Ncad.exe /register из кода. Пример на .NET выше. 

 

Пример как запустить регистрацию из VBA: https://visio.getbb.ru/viewtopic.php?p=4362#p4362


Спасибо. Все отлично сработало.

Link to comment
Share on other sites

3 минуты назад, Robink сказал:

Может кстати где то приписать в конфиге, чтобы при старте проходила регистация.

имха разработчики наны этим должны заниматься...

 

Link to comment
Share on other sites

1 час назад, Robink сказал:

Может кстати где то приписать в конфиге, чтобы при старте проходила регистация.


В config-файлах вроде как только настройка среды. Аналога startup script Autodesk не нашел. Как вариант, можно сделать соответствующий ярлык  и положить его куда-нибудь в сеть, чтобы, если требуется приложение "по умолчанию", запустил один раз и дальше спокойно работаешь. Установка в организациях по путям, как правило унифицирована.

Но, меня интересовал случай запуска nanoCAD из внешнего окружения, в частности, когда требуется обработать много файлов, но здесь вполне достаточно
>ncad.exe /register.

Единственное, для полноты картины, надо бы уточнить куда именно записывается данная регистрация ...

Link to comment
Share on other sites

26 минут назад, A.Kudrjashov сказал:

Как вариант, можно сделать соответствующий ярлык  и положить его куда-нибудь в сеть, чтобы, если требуется приложение "по умолчанию", запустил один раз и дальше спокойно работаешь. Установка в организациях по путям, как правило унифицирована.

батник в две строчки

первой строчкой регистрация, второй собственно запуск нужного приложения (но можно наоборот)

на батник ярлык, и этими ярлыками меняешь родные наноярлыки соотв приложений ;)

  • Like 1
Link to comment
Share on other sites

но из собственного приложения можно сделать значительно изящнее, дабы не напрягать простого пользователя, для которого что BAT, что ватт одинаково эфемерное понятие

Link to comment
Share on other sites

1 час назад, A.Kudrjashov сказал:


В config-файлах вроде как только настройка среды. Аналога startup script Autodesk не нашел. Как вариант, можно сделать соответствующий ярлык  и положить его куда-нибудь в сеть, чтобы, если требуется приложение "по умолчанию", запустил один раз и дальше спокойно работаешь. Установка в организациях по путям, как правило унифицирована.

Но, меня интересовал случай запуска nanoCAD из внешнего окружения, в частности, когда требуется обработать много файлов, но здесь вполне достаточно
>ncad.exe /register.

Единственное, для полноты картины, надо бы уточнить куда именно записывается данная регистрация ...


Информация о регистрации приложения nanoCAD в Реестре.
1. Регистрация класса nanoCAD.Application:

Windows Registry Editor Version 5.00

[HKEY_USERS\S-1-5-21-1444282386-3698927227-3063026589-2620_Classes\nanoCAD.Application\CLSID]
@="{6F85631A-A9BB-46C8-85AB-B265B603C5F2}"

 

S-1-5-21-1444282386-3698927227-3063026589-2620 - SID текущего пользователя.
Можно получить через PowerShell:
PS>Add-Type -AssemblyName System.DirectoryServices.AccountManagement

PS>[System.DirectoryServices.AccountManagement.UserPrincipal]::Current

 

2. Информация о текущем зарегистрированном приложении nanoCAD.

Windows Registry Editor Version 5.00

[HKEY_USERS\S-1-5-21-1444282386-3698927227-3063026589-2620_Classes\CLSID\{6F85631A-A9BB-46C8-85AB-B265B603C5F2}\LocalServer32]
@="d:\\Program Files\\Nanosoft\\nanoCAD x64 Plus 11.0\\nCad.exe"



Можно считать информацию запомнить, восстановить, предложить выбор ... по вкусу.

  • Like 2
Link to comment
Share on other sites

4 минуты назад, A.Kudrjashov сказал:

Можно считать информацию запомнить, восстановить, предложить выбор ... по вкусу

подозреваю, что на разных машинах и даже разных пользователей одной машины GUIDы веток и ключей будут отличаться

имха все жэж проще перерегистрировать при необходимости на нужное

Link to comment
Share on other sites

Начиная с 7 версии можно получить nanocad.application через .NET, способом не зависящим от регистрации COM сервера

 

https://github.com/RobinKzn/CustomAutosaveNanoCad/blob/master/autosave7x32/GetAcadApplication.cs

  • Like 3
Link to comment
Share on other sites

13 минут назад, doctorraz сказал:

подозреваю, что на разных машинах и даже разных пользователей одной машины GUIDы веток и ключей будут отличаться

имха все жэж проще перерегистрировать при необходимости на нужное


Если SID пользователя известен, то почему они должны различаться ?

По SID получаете Class_ID, по Class_ID получаете nanoCAD.Apllication.

nanoCAD, когда запускается именно этим путем и идет. Проверено через Process Monitor.

  • Like 1
Link to comment
Share on other sites

  • 2 years later...

Оживлю веточку)

В примерах нашел связку LISP+DCL. Лисп запускает диалоговое окно, заполняем, возвращает назад.

А можно ли связку сделать JavaScript + DCL? Не нагуглил.

Ну и сразу может вдогонку пример какой-нибудь helloworld?

Link to comment
Share on other sites

@dows Да, спасибо, посмотрел.

Там как раз тот helloworld, который вместе с nanoCAD идет.

Там есть star.js, где звездочка рисуется и есть пара файлов lisp+dcl, которые как раз работают вместе запуская диалоговое окно (dcl) при запуске lispa.

Там примерно:

; load DCL file
  (setq dcl (load_dialog "helloworld.dcl"))

и т.д.

Вот тут понятно, что вызывают этот файл, где диалоговое окно описано.

А есть ли примеры, где JavaScript вызывает файл диалогового окна и потом обрабатывает все и выдает результат обратно в диалоговое окно?

Вот там есть пример еще очень хороший sindialog.lsp + sindialog.dcl.

Там прям здорово. Лисп открывает диалог, вводишь значение угла, жмешь рассчитать здесь же в диалоге и здесь же результат. Такое реально выполнить в связке JavaScript + dcl?

Edited by Олег К
Link to comment
Share on other sites

15 часов назад, Олег К сказал:

А есть ли примеры, где JavaScript вызывает файл диалогового окна и потом обрабатывает все и выдает результат обратно в диалоговое окно?

Это не вы спрашивали про выноску с обработкой условий  Да/Нет с диалогом: 

  

 

  • Like 1
Link to comment
Share on other sites

Чем женить JScript и DCL, не проще ли на C# окошко соорудить? Средства разработки тут куда удобней.

Link to comment
Share on other sites

я тоже не очень понял зачем именно JScript и DCL увязывать друг с другом...

Link to comment
Share on other sites

2 минуты назад, dows сказал:

я тоже не очень понял зачем именно JScript и DCL увязывать друг с другом...

Я новичок же) Знаю немного питон. Вот увидел JScript и решил что это более перспективно, чем lisp, поэтому быстренько прошелся по мини-курсу для понимания синтаксиса. Кроме того JScript еще много где пригодиться может. Потому вот, как написал выше, прошелся по мини-курсу и, так скажем, поверхностно разобрался. Разобрался с построением звездочки из примера. Теперь захотелось свое написать, но хочется с какими-то диалогами. Потому и спросил можно ли это в целом сделать, но, видимо, придется еще по лиспу пройтись)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...