乐于分享
好东西不私藏

CAD 二次开发入门:CAD插件编译、集成、调试

CAD 二次开发入门:CAD插件编译、集成、调试

    上一篇讲述了如何搭建基本的开发环境CAD 二次开发:一个 C# 项目如何完美适配多版本 .NET(从 4.0 到 8.0)
本篇主要介绍如何进行代码的编译、调试集成从文完成插件的开发
一、编译
1.1创建RDebug配置
打开配置管理器,新建解决方案配置,按图输入名称、从Release复制,勾选创建新的项目配置,点击确定
1.2为不同net版本增加CAD宏
    不同 .NET 版本下,CAD 的 API、第三方库以及 C# 标准库所使用的接口均存在差异。为在同一功能目标下适配不同实现代码,需要通过为项目增加不同的 CAD 版本配置(如 ACD2022、ACD2025)进行区分与管理,直接修改项目配置文件,增加以下配置:
        <PropertyGroup Condition="'$(TargetFramework)|$(Platform)'=='net35|x64' And ('$(Configuration)'=='Debug'or'$(Configuration)'=='RDebug'or'$(Configuration)'=='Release')">		<DefineConstants>$(DefineConstants);AutoCAD2010</DefineConstants>	</PropertyGroup>	<PropertyGroup Condition="'$(TargetFramework)|$(Platform)'=='net40|x64' And	('$(Configuration)'=='Debug'or'$(Configuration)'=='RDebug'or'$(Configuration)'=='Release')">		<DefineConstants>$(DefineConstants);AutoCAD2013</DefineConstants>	</PropertyGroup>	<PropertyGroup Condition="'$(TargetFramework)|$(Platform)'=='net45|x64' And ('$(Configuration)'=='Debug'or'$(Configuration)'=='RDebug'or'$(Configuration)'=='Release')">		<DefineConstants>$(DefineConstants);AutoCAD2015</DefineConstants>	</PropertyGroup>	<PropertyGroup Condition="'$(TargetFramework)|$(Platform)'=='net461|x64' And ('$(Configuration)'=='Debug'or'$(Configuration)'=='RDebug'or'$(Configuration)'=='Release')">		<DefineConstants>$(DefineConstants);AutoCAD2017</DefineConstants>	</PropertyGroup>	<PropertyGroup Condition="'$(TargetFramework)|$(Platform)'=='net472|x64' And ('$(Configuration)'=='Debug'or'$(Configuration)'=='RDebug'or'$(Configuration)'=='Release')">		<DefineConstants>$(DefineConstants);AutoCAD2019</DefineConstants>	</PropertyGroup>	<PropertyGroup Condition="'$(TargetFramework)|$(Platform)'=='net48|x64' And ('$(Configuration)'=='Debug'or'$(Configuration)'=='RDebug'or'$(Configuration)'=='Release')">		<DefineConstants>$(DefineConstants);AutoCAD2021</DefineConstants>	</PropertyGroup>	<PropertyGroup Condition="'$(TargetFramework)|$(Platform)'=='net8.0-windows|x64' And ('$(Configuration)'=='Debug'or'$(Configuration)'=='RDebug'or'$(Configuration)'=='Release')">		<DefineConstants>$(DefineConstants);AutoCAD2025</DefineConstants>	</PropertyGroup>
亦可以通过面板设置:
应用:在设置Ribbon菜单时候,低版本CAD2010可能不支持某些函数,可以使用宏来分别处理。
二、集成
    由于多版本C#项目每次编译的时候都会编译所有版本,如下图所示从NET4.0到NET8.0,可以看到在自己的项目目录下生成了DLL,当项目过多的时候,每个都在自己的项目下生成DLL不不利于插件的使用。
    我们可以通过写函数的编译后事件将编译完成的DLL拷贝到一个统一的目录,方便打包或者压缩给他人使用,具体步骤如下:

    新建文件夹:在解决方案目录下,新建插件文件夹,并且在插件文件夹下增加Debug、RDbug、Release三个文件夹,每一个文件夹下新建不同版本CAD文件夹,以Debug为例

    编辑生成后事件也是采用直接编辑项目配置文件的方式

	<Target Name="PostBuild_cad2010" AfterTargets="PostBuildEvent" Condition="'$(TargetFramework)|$(Platform)'=='net35|x64'">		<Exec Command="	echo 复制文件$(TargetFileName)&#xD;&#xA;						echo $(OutDir)$(TargetFileName)&#xD;&#xA;						echo $(SolutionDir)插件\$(Configuration)\AutoCAD2010\$(TargetFileName)&#xD;&#xA;						copy $(OutDir)$(TargetFileName) $(SolutionDir)插件\$(Configuration)\AutoCAD2010\$(TargetFileName)" />	</Target>	<Target Name="PostBuild_cad2013" AfterTargets="PostBuildEvent" Condition="'$(TargetFramework)|$(Platform)'=='net40|x64'">		<Exec Command="	echo 复制文件$(TargetFileName)&#xD;&#xA;						echo $(OutDir)$(TargetFileName)&#xD;&#xA;						echo $(SolutionDir)插件\$(Configuration)\AutoCAD2013\$(TargetFileName)&#xD;&#xA;						copy $(OutDir)$(TargetFileName) $(SolutionDir)插件\$(Configuration)\AutoCAD2013\$(TargetFileName)" />	</Target>	<Target Name="PostBuild_cad2015" AfterTargets="PostBuildEvent" Condition="'$(TargetFramework)|$(Platform)'=='net45|x64'">		<Exec Command="	echo 复制文件$(TargetFileName)&#xD;&#xA;						echo $(OutDir)$(TargetFileName)&#xD;&#xA;						echo $(SolutionDir)插件\$(Configuration)\AutoCAD2015\$(TargetFileName)&#xD;&#xA;						copy $(OutDir)$(TargetFileName) $(SolutionDir)插件\$(Configuration)\AutoCAD2015\$(TargetFileName)" />	</Target>	<Target Name="PostBuild_cad2017" AfterTargets="PostBuildEvent" Condition="'$(TargetFramework)|$(Platform)'=='net461|x64'">		<Exec Command="	echo 复制文件$(TargetFileName)&#xD;&#xA;						echo $(OutDir)$(TargetFileName)&#xD;&#xA;						echo $(SolutionDir)插件\$(Configuration)\AutoCAD2017\$(TargetFileName)&#xD;&#xA;						copy $(OutDir)$(TargetFileName) $(SolutionDir)插件\$(Configuration)\AutoCAD2017\$(TargetFileName)" />	</Target>	<Target Name="PostBuild_cad2019" AfterTargets="PostBuildEvent" Condition="'$(TargetFramework)|$(Platform)'=='net472|x64'">		<Exec Command="echo 复制文件$(TargetFileName)&#xD;&#xA;						echo $(OutDir)$(TargetFileName)&#xD;&#xA;						echo $(SolutionDir)插件\$(Configuration)\AutoCAD2019\$(TargetFileName)&#xD;&#xA;						copy $(OutDir)$(TargetFileName) $(SolutionDir)插件\$(Configuration)\AutoCAD2019\$(TargetFileName)" />	</Target>	<Target Name="PostBuild_cad2021" AfterTargets="PostBuildEvent" Condition="'$(TargetFramework)|$(Platform)'=='net48|x64'">		<Exec Command=" echo 复制文件$(TargetFileName)&#xD;&#xA;						echo $(OutDir)$(TargetFileName)&#xD;&#xA;						echo $(SolutionDir)插件\$(Configuration)\AutoCAD2021\$(TargetFileName)&#xD;&#xA;						copy $(OutDir)$(TargetFileName) $(SolutionDir)插件\$(Configuration)\AutoCAD2021\$(TargetFileName)" />	</Target>	<Target Name="PostBuild_cad2025" AfterTargets="PostBuildEvent" Condition="'$(TargetFramework)|$(Platform)'=='net8.0-windows|x64'">		<Exec Command="	&#xD;&#xA;			  echo 拷贝文件夹 &#xD;&#xA;			  xcopy $(SolutionDir)Depend\Configuration\ $(SolutionDir)插件\$(Configuration)\Configuration\ /Y /E&#xD;&#xA;			  echo 复制文件$(TargetFileName)&#xD;&#xA;						echo $(OutDir)$(TargetFileName)&#xD;&#xA;						echo $(SolutionDir)插件\$(Configuration)\AutoCAD2025\$(TargetFileName)&#xD;&#xA;						copy $(OutDir)$(TargetFileName) $(SolutionDir)插件\$(Configuration)\AutoCAD2025\$(TargetFileName)" />	</Target>
三、调试

    当使用不同版本的CAD进行调试时,需要为不同版本的CAD设置调试属性,以CAD2015为例:

3.1复制CAD2015EXE路径

3.2在VS中新建CAD2015调试配置

3.3点击重命名输入\CAD版本,并在可执行文件处粘贴复制的CDESE路径。

3.4选择与CAD2015相匹配的net版本。

3.5单击启动调试,可以看到CD2015已经启动。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » CAD 二次开发入门:CAD插件编译、集成、调试

评论 抢沙发

7 + 1 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮