.net 如何在AutoCAD 2019中自动加载.dll插件?

xxe27gdn  于 2023-08-08  发布在  .NET
关注(0)|答案(5)|浏览(523)

如何在AutoCAD 2019中自动加载.dll插件?最好不要更改AutoCAD目录中的任何文件(我不是管理员)。我试图加载这个插件注册,在Excel文件中,当AutoCAD关闭.它是用.net在vb中创建的。
我已经尝试过了,但失败了,因为我不是管理员,无法更改AutoCAD目录中的文件:
https://knowledge.autodesk.com/support/autocad/troubleshooting/caas/sfdcarticles/sfdcarticles/How-to-autoload-DLLs-with-AutoCAD.html
必须有一个解决方案,不涉及手动编辑AutoCAD目录中的文件。特别是因为这是要用在200+电脑在公司我工作的公司。
我在Visual Studio中用VB中的.NET创建了这个插件,如下所示:

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.IO

Public Class Class1
    <CommandMethod("AddAppEvent")>
    Public Sub AddAppEvent()
        AddHandler Application.SystemVariableChanged, AddressOf appSysVarChanged
    End Sub

    <CommandMethod("RemoveAppEvent")>
    Public Sub RemoveAppEvent()
        RemoveHandler Application.SystemVariableChanged, AddressOf appSysVarChanged
    End Sub

    Public Sub appSysVarChanged(ByVal senderObj As Object,
                                ByVal sysVarChEvtArgs As Autodesk.AutoCAD.ApplicationServices.
                                SystemVariableChangedEventArgs)

        Dim oVal As Object = Application.GetSystemVariable(sysVarChEvtArgs.Name)

        Dim fileTest As String = "C:\Users\rita.aguiar\Documents\AutoCAD plug-in\Registo de Eventos.xlsx"
        If File.Exists(fileTest) Then
            File.Delete(fileTest)
        End If

        Dim oExcel As Object
        oExcel = CreateObject("Excel.Application")
        Dim oBook As Excel.Workbook
        Dim oSheet As Excel.Worksheet

        oBook = oExcel.Workbooks.Add
        oSheet = oExcel.Worksheets(1)

        oSheet.Name = "Fecho do AutoCAD"
        oSheet.Range("A1").Value = "O AutoCAD foi encerrado."
        oBook.SaveAs(fileTest)
        oBook.Close()
        oBook = Nothing
        oExcel.Quit()
        oExcel = Nothing
    End Sub

End Class

字符串
这将是可爱的,如果有别的东西,我可以写在这里,至少启用事件的注册自动,而不是总是必须启用它击中“AddAppEvent”命令在AutoCAD中。我还想自动加载插件,而不是每次打开autoCAD文件时都要手动点击“netload”并选择.dll文件。
多谢了。

0s7z1bwu

0s7z1bwu1#

只需使用ApplicationPlugins文件夹。
这就是AutoCAD加载插件的方式。(可以是Dll)
文档在这里:https://help.autodesk.com/view/OARX/2023/ENU/?guid=GUID-5E50A846-C80B-4FFD-8DD3-C20B22098008
请参见此处的示例:https://help.autodesk.com/view/OARX/2023/ENU/?guid=GUID-40F5E92C-37D8-4D54-9497-CD9F0659F9BB

s4chpxco

s4chpxco2#

据我所知,与AutoCAD,插件只能自动加载与注册表编辑或编辑文件所提到的链接。没有管理员权限,就我所知,没有办法解决这个问题

7uhlpewt

7uhlpewt3#

你可以把所有你构建的文件,.cuix文件捆绑在一个名为“PluginName.bundle”的文件夹中,该文件夹还应该包含一个名为PackageContents.xml的文件,并把它放在下面的位置-C:\ProgramData\Autodesk\ApplicationPlugins
x1c 0d1x的数据
有关其他详细信息,请查看following link
下面是PackageContents.xml应该包含的内容的示例:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage SchemaVersion="1.0" AutodeskProduct="AutoCAD" Name="PluginName" Description="Plugin Description" AppVersion="0.0.1" FriendlyVersion="0.0.1" ProductType="Application" SupportedLocales="Enu" AppNameSpace="appstore.exchange.autodesk.com" Author="Anwesh Gangula" HelpFile="./help.html" OnlineDocumentation="vConstruct.com" ProductCode="{030335ce-ee6b-4cd9-84d0-0afa479ed4ac}" UpgradeCode="{08abfbe3-2dab-45aa-817b-68e70212f494}" Icon="./icon.ico">
  <CompanyDetails Name="Anwesh Gangula" Email="myEmail@gmail.com" Url="anweshgangula.com" />
  <Components Description="2017-2023">
    <RuntimeRequirements OS="Win32|Win64" Platform="AutoCAD*" SeriesMin="R19.1" SeriesMax="R24.2" />
    <ComponentEntry AppName="PluginName" Version="0.0.1" ModuleName="./Contents/PluginName.dll" AppDescription="Commands Description" LoadOnCommandInvocation="True" >
      <Commands>
        <Command Global="OpenWPFWindow" />
        <Command Global="AdskGreeting" />
      </Commands>
    </ComponentEntry>
    <ComponentEntry AppName="PluginName" Version="0.0.1" ModuleName="./PluginName.cuix" AppDescription="Customization description" LoadOnAppearance="False" LoadOnAutoCADStartup="True" />
  </Components>
</ApplicationPackage>

字符串
其他reference
您应该为ProductCode创建一个新的GUID,但永远不要更改UpgradeCode。

emeijp43

emeijp434#

我知道如何自动加载。其实很简单
1.我创建了名为acad.lsp的lsp文件
1.该文件调用netload命令来加载my.dll(以及我创建的其他命令)。
1.我将文件存储在C:\Program Files\Autodesk\AutoCAD 2019\Support中
1.现在每次我打开AutoCAD它会自动加载我的插件!

yws3nbqq

yws3nbqq5#

accepted answer中的链接似乎被破坏了,并且在该答案中建议的使用ApplicationPlugins文件夹的方法对我不起作用。
对我有效的是遵循Autodesk在following link中记录的以下步骤:
要自动加载DLL文件,您可以执行以下步骤:

  • 使用文件资源管理器浏览到c:\program files\autodesk\autocad 20xx\support文件夹
  • 检查是否存在名为acad20xxdoc.lsp的文件。如果它在那里,用ASCII编辑器打开,如notepad.exe。如果没有,用ASCII编辑器创建它。
  • 在下一个结构后面添加要加载的DLL列表:
(command "_netload" "C:/folder1/folder2/my_DLL_1.DLL")
(command "_netload" "C:/folder1/folder2/my_DLL_2.DLL")
(command "_netload" "C:/folder1/folder2/my_DLL_3.DLL")
(command "_netload" "C:/folder1/folder2/my_DLL_4.DLL")

字符串
更新路径和文件名以满足您的需要。

  • 保存acad20xxdoc.lsp
  • 每次你启动一个新文件或打开一个现有的文件时,它都会加载DLL列表。

相关问题