AutoCADDotNetLibrary:根据实际问题和需求出发,使用 c#对 AutoCAD 二次开发代码进行简化和封装。如果在 AutoCAD 二次开发中遇到了问题,此项目或许会找到答案或思路。
由于使用的是源生成器,因此推荐使用Visual Studio 2022
最新版本。使用用于创建面向.NET 或.NET Standard 的类库的项目
创建项目。.csproj
大概的写法如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net461</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoCADDotNet" Version="0.7.*" />
<PackageReference Include="AutoCADDotNetLibrary" Version="0.7.*" />
</ItemGroup>
</Project>
[assembly: CommandClass()]
和[assembly: ExtensionApplication()]
。Attribute
把逻辑转移到具有CommandMethodAttribute
的方法上,具体执行的操作逻辑会得到简化。具体细节请看文档。下面为简化的具体的操作逻辑:
IExtensionApplication
CUI
快捷菜单
Com菜单
Ribbon
XData
引入ORM
的概念。具体细节请看文档。Palette
可能会使用的事件,选中事件SelectEntityEvent
和文档变当前事件DocumentBecameCurrentEvent
,详见示例。WindowTransformCUI
:window
的Ribbon
相关对象变为cui
的对象。*Extention.cs
提供了各个类的扩展函数,使程序编写更方便。具体请看源码或示例。
[CommandMethod("")]
ResultBuffer
简化赋值操作menuname
系统变量路径小写问题Document.SendStringToExecute(string, bool, bool, bool)
非同步问题Editor.SetImpliedSelection(ObjectId[])
函数的问题Editor.SelectWindowPolygon(Point3dCollection)
框选问题Curve.GetSplitCurves(DoubleCollection)
的报错问题AOP
概念Tolerance
的问题(存在疑问)详见文档。
开源库目前不打算提供算法,理由是有一个算法,就会有第二个,第三个...,此开源库不想变成算法库,如果是个人维护,就更不会写算法函数了。次之想法,提供少量常用算法。目前采用的是第一种想法。
Test2010
项目能运行在AutoCAD2010-2012
的版本,Test2013
项目能运行在AutoCAD2013
及以上的版本。
NunitTest
是自动化的,只要在AutoCAD2013
中运行NunitTest.dll
插件,就会自动执行单元测试代码,并打开测试报告。
目前只能使用
AutoCAD2013
进行单元测试。因为每个 AutoCAD 版本的都存在细微差异,而且单元测试项目没有使用[CommandMethod("")]
技术,导致在各个版本运行不稳定,会频繁报错,所以单元测试项目无法适应多个版本。
我只是一个业余的 AutoCAD 开发者,凭一人之力毕竟有限,所以我不想也不能追求对封装的面面俱到,即不要大而全,即从自己的实际问题和需求出发,不考虑一些我没有使用的 AutoCAD 概念(如约束,规则重定义,视口,视图等)。AutoCADDotNetLibrary 只看重每个函数每个功能是否是“美”的,哪怕只有一个函数一个功能称得上“美”,AutoCADDotNetLibrary 也是成功的,即只要小而美,即对于一个问题,可能有很多种答案,由于无数次重构和思考的原因,每个问题的答案大多数趋近于唯一正确的答案。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。