在AutoCAD中,我学习了如何通过使用以下宏通过命令来通过“自定义用户界面”创建自定义菜单项:
选择创建的自定义菜单后,将启动“安全性-未签名的可执行文件”对话框:
如何在选择自定义菜单并选择[一次加载]之后调用DLL中的函数的地方编写命令?
有可能吗?
答案 0 :(得分:0)
一种解决方法是通过对注册表进行一些调整。
通过在Windows搜索中键入“ RegEdit”来打开注册表编辑器。导航到以下键(我正在使用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")
这里有一些more information,介绍了使用AutoLisp从dll自动运行命令的情况。
希望有帮助。
答案 1 :(得分:0)
在我的VB.NET代码中,我在要调用的函数之前添加了一个命令属性。
<CommandMethod("DOSOMETHING", CommandFlags.UsePickSet)>
Public Sub DoSomething()
...
...
End Sub
这使得可以通过在AutoCAD命令行中键入DOSOMETHING来调用该函数。
之后,我将宏更改为:
^C^C^P(command "_netload" "C:/ABC/VbXyz.dll");(command "DOSOMETHING")
我不知道这是否是最佳方法,但是我找到了一种解决此问题的方法,但是所产生的行为正是我想要的。