Как вызвать функцию из DLL в AutoCAD через пользовательское меню? - PullRequest
0 голосов
/ 18 сентября 2018

В AutoCAD я узнал, как создать пользовательский элемент меню с помощью настройки пользовательского интерфейса, выполнив команду со следующим макросом:

enter image description here

ПослеПри выборе созданного пользовательского меню откроется диалоговое окно «Безопасность - Неподписанный исполняемый файл»:

enter image description here

Как написать команду, где после выбора пользовательскогоменю и выбрав [Load Once], вызывается функция внутри DLL?

Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

В своем коде VB.NET я добавил атрибут команды перед функцией, которую хочу вызвать.

<CommandMethod("DOSOMETHING", CommandFlags.UsePickSet)>
Public Sub DoSomething()
...
...
End Sub

Это позволяет вызвать функцию, введя DOSOMETHING в командной строке AutoCAD.

После этого я изменил макрос на:

^C^C^P(command "_netload" "C:/ABC/VbXyz.dll");(command "DOSOMETHING")

Я не знаю, является ли это оптимальным способом, но я нашел способ обойти эту проблему, но в результате я получил именно то, что хотел.

0 голосов
/ 18 сентября 2018

Одним из способов обойти это является небольшая настройка реестра.

Откройте редактор реестра, введя «RegEdit» в поиске Windows.Перейдите к следующей клавише (я использую AutoCAD 2015, поэтому найдите версию, которую вы используете).

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R20.0\ACAD-E005:409\Profiles\<<YourProfile>>\Variables

Теперь в ключе «Переменные» установите значение SECURELOAD на 0.Это отключит диалог безопасности.

В качестве альтернативы, вы можете добавить свой C:\ABC в ваши надежные местоположения (но по общему признанию я имел смешанный успех с этим - я использую метод реестра).Вы можете установить надежное расположение вручную, открыв AutoCAD, выбрав «Параметры» -> «Файлы» -> «Добавить путь к« Надежным расположениям ».Вы также можете сделать то же самое с помощью взаимодействия (при необходимости).

Если вы хотите запустить команду, определенную в вашей dll, при запуске / открытии документа, лучший способ - добавить это в один из acad.lsp,acad2015.lsp, acaddoc.lsp и т. д. Эти сценарии выполняются при автоматическом запуске приложения / открытии документов AutoCAD

. Вы также можете использовать один из этих файлов lisp для загрузки вашей dll (в отличие от написания макроса),Например, это, вероятно, сделает это:

(COMMAND "NETLOAD" "C:\\ABC\\VbXyz.dll")
(COMMAND "MyCommandToRun")

Вот некоторая дополнительная информация об использовании AutoLisp для автоматического запуска команд из DLL.

Надеюсь, это поможет.

...