1

我正在尝试将 dll 文件自动加载到 Autocad 2018。

我怎样才能做到这一点?

我想自动化,所以它可以在启动时完成。使用 netload 一切正常。

我使用了 *.lsp 方式。有人可以帮忙吗?我在网上找到了很多方法,但没有一个有效。

4

3 回答 3

4

AutoCAD 在启动时加载用 .Net 编写的 .dll 文件的官方方法是使用自动加载器功能。您基本上将 .dll 与您想要的任何其他文件捆绑到默认文件夹中,AutoCAD 在启动时读取该文件夹以加载所有插件。如果您想将插件 (.dll) 作为安装文件分发以安装在多台机器上,这尤其有用。

第一步是在“ %ProgramData%/Autodesk/ApplicationPlugins”中创建一个捆绑文件夹。bundle 文件夹是一个以 .bundle 结尾的普通 windows 文件夹(例如 MyApp.bundle)

在此文件夹中,您需要有一个名为 ("Contents") 的文件夹和一个名为 (" PackageContents.xml") 的文件。

将 .dll 放在内容文件夹中

里面的代码PackageContents.xml可以像下面这样简单(更改“ MyApp”、“ MyName”等内容,它应该适合你):

<?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage SchemaVersion="1.0" ProductType="Application" Name="MyAPP" AppVersion="1.0" Description="MyAPP, My description" Author="My Name" Icon="./Contents/MyAPPIcon.ico" OnlineDocumentation="http://MyWebSite.com" HelpFile="" ProductCode="{xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx}" FriendlyVersion="1.0" SupportedLocales="Enu" AutodeskProduct="AutoCAD">
  <CompanyDetails Name="My Name" Phone=" " Url="http://MyWebsite.com" Email="MyName@MyWebSite.com" />
  <Components Description="Main">
    <RuntimeRequirements SupportPath="./Contents" OS="Win32|Win64" Platform="AutoCAD*" SeriesMin="R19.0" SeriesMax="R22.0" />
    <ComponentEntry AppName="MyAPP" Version="1.0" ModuleName="./Contents/MyAPP.dll" AppDescription="My description" LoadOnAppearance="True" LoadOnAutoCADStartup="True" LoadOnCommandInvocation="True">
    </ComponentEntry>
  </Components>
</ApplicationPackage>

我认为以上内容足以回答您的问题,但如果您需要更多阅读以下链接中的文章:http: //adndevblog.typepad.com/autocad/2013/01/autodesk-autoloader-white-paper.html

于 2017-09-18T21:11:12.193 回答
1

使用注册表也很容易,这是我的首选方式。请参阅下面的链接。要进行部署,您可以创建一个安装程序来设置注册表项,或者如果您有一些在 AutoCAD 之外执行的代码,您可以直接在代码中进行部署。

https://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/How-to-autoload-DLLs-with-AutoCAD.html

于 2017-09-24T22:28:15.300 回答
1

您将NETLOAD命令放在一个LSP文件中,然后将该LSP文件添加到您的启动套件中。

另请记住,路径需要使用 2 个反斜杠,如下所示:

(command "netload" "C:\\Internal Tools\\Detect Overlap\\Type 5\\x86\\Detect Overlap.dll")
于 2017-09-18T17:35:56.487 回答