繁体   English   中英

c#autocad dllimport通过autocad版本

[英]c# autocad dllimport by autocad version

我一直在使用Philippe Leefsma的“选择运行时检测光标下方的实体”中的程序1 它在ACAD2014中起作用,但是现在我们正在使用ACAD2016。 由于acdb19.dll的DLLImport和autocad2016需要acdb20.dll,它将无法工作。 有没有一种方法可以使程序加载dll版本的dll? 我尝试使用netload和assembly.loadfrom,但都没有起作用。

点监视器回调

DLL导入是在编译时设置的,因此最好的选择是为每个AutoCAD版本编译两个版本。

编译项目后,您可以通过创建application.bundle文件夹来设置自动加载器。 该文件夹可以放置在c:\\ programdata \\ Autodesk \\ applicationPlugins中。 在application.bundle文件夹中,创建一个名为Application的子文件夹,然后将已编译的.DLL文件放在其中。 application.bundle文件夹内容

加载程序由XML文件控制,该文件应名为PackageContents.xml。 这是xml文件的一些示例代码:-

    <?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     Name="My AutoCAD App"
     Description="Does something in AutoCAD"
     Icon="./Application/MyIcon.ico"
     Author="Paul Nelson">
 <CompanyDetails Name="Paul Nelson"
     Url="http://www.stackoverflow.com"
     Email="myemail@email.com">
 </CompanyDetails>
 <Components>
  <!-- define the min and max versions of AutoCA in the next line -->
  <RuntimeRequirements OS="Win64" Platform="AutoCAD" SeriesMin="R19.0" SeriesMax="R22.0" />
  <ComponentEntry
   ModuleName=".\Application\MyApp.dll"
   LoadOnAutoCADStartup="true"
   LoadOnCommandInvocation="false"
   AppDescription="This is assembly MyApp."
   AppName="My AutoCAD App"
   AppType=".NET">

   <Commands GroupName="My Apps">
    <Command Local="MYAPP" Global="MYAPP" />
   </Commands>

  </ComponentEntry>
 </Components>
</ApplicationPackage>

最后一个提示-确保.dll文件名不包含空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM