代码之家  ›  专栏  ›  技术社区  ›  libzz

如何通过自定义菜单从AutoCAD中的DLL调用函数?

  •  2
  • libzz  · 技术社区  · 6 年前

    enter image description here

    选择创建的自定义菜单后,将启动“安全-未签名的可执行文件”对话框:

    enter image description here

    有可能吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Nik    6 年前

    通过在Windows搜索中键入“RegEdit”打开注册表编辑器。导航到以下键(我使用的是AutoCAD 2015,因此请查找您使用的版本)。

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

    现在在“变量”键中,设置 SECURELOAD 价值 0 . 这将禁用安全对话框。

    或者,您可以添加 C:\ABC 到您信任的位置(但无可否认,我在这方面取得了一些成功——我使用了registry方法)。通过打开AutoCAD,转到“选项”->“文件”->“将路径添加到“受信任的位置”,可以手动设置受信任的位置。您也可以通过interop执行相同的操作(如果需要的话)。

    如果要在startup/doc open时运行dll中定义的命令,最好的方法是将其添加到acad.lsp公司,acad2015.lsp,阿卡多克lsp这些脚本是在AutoCAD自动启动应用程序/打开文档时执行的

    您也可以使用其中一个lisp文件来加载dll(就像编写宏一样)。例如,这可能会做到:

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

    这里有一些 more information 使用AutoLisp从dll自动运行命令。

        2
  •  0
  •   libzz    6 年前

    在我的VB.NET版代码中,我在要调用的函数之前添加了一个command属性。

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

    这样就可以通过在AutoCAD命令行中键入DOSOMETHING来调用函数。

    之后,我将宏更改为:

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