CAD工程二次开发总结
文章平均质量分 70
1.努力每一篇文章做到实用、高质量【可以在博主主页查看其他文章】
2.力求用最通俗的方式,展示CAD开发中遇到的问题
3.不定期记录cad二次开发心得
4.如果你在用C#进行cad二次开发,那么你一定能从本专栏收获你想要的东西
5.可以留言与博主讨论,也可+q:1624376279【请备注】
韦_恩
【知乎:韦恩少爷】
1.测绘硕士研究生毕业、注册测绘师、软件设计师;
2.擅长C#/.Net、Android、Java、Vue、JavaScript、CAD、ArcGis等主流开发技术栈;
3.不定期分享技术干货(踩坑记录)与日常电脑使用技巧;
【流水不争先,争的是滔滔不绝】
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CAD二次开发--关于“获取最后绘制的闭合范围面积”的说明(含源码)
先说一下,本文是在【根据内部点识别最近外部边界范围】这个动机下测试的,最初以为本文所述方法能获取内部点的边界范围,实际不行。 经过我的测试得出结论:本文方法还是比较擅长“根据指定点求最后绘制的闭合范围面积”,但是本文在调用CAD命令方面确实有可取之处,记录一下,方便后面使用。【源码直接复制即可】原创 2023-05-06 16:05:10 · 682 阅读 · 0 评论 -
CAD二次开发--根据内部点识别最近外部边界范围即boundary命令代码实现(含源码)
在AutoCAD中我们知道使用Boundary(BO)命令可以快速找到内部点附近的最近边界范围(通常要求闭合)。然而网上很多文章却停留在如何用BO命令,并没有讲如何用代码去实现!本文将实现代码贴出来并进行简单介绍。 先看下实现效果图吧!原创 2023-05-06 11:24:46 · 2894 阅读 · 3 评论 -
CAD二次开发--点击窗体按钮后还要再次点击CAD获取焦点才能进行操作?【winform/wpf与CAD焦点切换滞后问题解决办法】
在cad的二次开发过程中,为了提高使用体验我们会大量需要自定义窗体界面进行交互,这里面就需要通过窗体向cad发送命令,这个过程大致上可以分为两个步骤。第一步让cad获得当前焦点;第二步调用cad执行命令的方法。这个过程当中如果忽略了第一步,你就会发现貌似调用方法无效,当重新点击下cad界面后方法又生效了的情况。本文教你如何在窗体按钮点击后让cad立刻获取焦点的方法,同时对其原理进行简单的说明。原创 2022-11-10 11:42:30 · 1458 阅读 · 0 评论 -
CAD二次开发--CAD2007(.Net3.5环境)等低版本CAD二次开发在VS中无法捕获断点调试解决办法(CAD二次开发无法断点调试解决办法)
在进行CAD二次开发的时候如果想进行断点调试,众所周知,在VS环境里设置断点后直接启动类库项目就好了,只需要在启动项属性里设置下“启动外部程序”就可以了,设置成cad安装目录中的acad.exe。...原创 2022-08-09 15:56:17 · 1225 阅读 · 0 评论 -
CAD二次开发--如何通过代码禁止“CAD对象捕捉”捕捉到指定实体(含源代码)
CAD如何通过代码禁止“CAD对象捕捉”捕捉到指定实体呢?这个需求也是来源于实际需要,举个例子,如果我展一个高程点到CAD上,势必会有“高程点”与“高程点注记”两个实体。当我自动连线的时候,我只想让CAD对象捕捉到“高程点”上,禁止CAD对象捕捉到“高程点注记”上,有什么办法能实现呢?哈哈哈,这么说是不是有点迷糊?我放个图你就明白了!...原创 2022-07-28 15:36:36 · 817 阅读 · 1 评论 -
CAD二次开发--像纬地与CASS程序一样双击桌面图标实现插件的自动挂载(不用netload也不用进入后输入挂载命令)
先说一下我为什么要写这个文章,首先这一块我自己研究并查找了很久,始终没有很好的办法。二是网络上很多办法鱼龙混杂,要不很复杂,要不现在就已经过时了,总之不能解决问题。干脆自己写一下,防止遗忘!要明白CAD二次开发的程序如何与独立程序一样双击图标自动启动,你就先要知道程序启动要经历那几个步骤,之后给他自动化处理就可以了!具体看下文分节介绍!目录1.CAD程序如何挂载并添加到界面中2.应用程序初始化与加载优化 3.替代netload实现自动加载3.1创建bundle文件夹 3.2创建根文件夹包装你的程序4.总结:原创 2022-07-05 17:10:26 · 1082 阅读 · 0 评论 -
CAD二次开发--两条线交叉求交点坐标的方法建议(IntersectWith的使用注意)
通常来说两条线求交点在CAD中你可以采用CAD封装好的IntersectWith方法,也可以采用自己判断的方法,下面结合我自己工作经历来说一说思路和建议吧。目录1.自己判断的方法(不推荐)2.IntersectWith求交方法3.IntersectWith使用注意事项4.总结自己判断的方法无外乎就是向量判断方法,方法如下:定义集合A存储P1线段,定义集合B存储P2线段。先将P1多段线每两个点组成一个线段放入集合A中存储,之后将P2线段每两个点组成一个线段放入集合B中存储。之后循环方式将集合A与集合B中所有线原创 2022-06-15 15:03:38 · 3480 阅读 · 0 评论 -
CAD二次开发--如何获取图面“组”对象及其内部实体(以南方CASS居民地-房屋为例)
今天遇到的开发需求中有个小项就是将图面标准房屋实体及其结构、楼层等信息识别并筛选出来。乍一看没难度啊!可初次尝试发现却无法获取。仔细一看原来南方cass将居民地的房屋及其附属统一用组进行规范了,这样的话如果想找到楼层、结构信息,必须先获取组,再在组中获取这些附属属性信息!所以本文就简单介绍一下什么是组以及如何获取一个组中的全部属性内容!目录1.组与组字典2.查找图面的组3.总结:关于组和组字典什么关系,我觉得这个说法比较好:“组是管理其所包含对象的容器,而组字典是管理组对象的容器。”弄清这个概念问题后,我们原创 2022-06-15 13:09:38 · 1061 阅读 · 0 评论 -
ODA开发/CAD二次开发/C#开发-- “System.AccessViolationException尝试读取或写入受保护的内存,这通常指示其他内存已损坏”异常快速排除思路与建议(踩坑血泪史)
首先开篇强调:这个报错是一个笼统的报错,并不能准确判断异常出现的位置(会冒泡传递)与原因--他的本质相当于“空引用异常”。每个人的情况不同,但是你通过我总结的思路去排查应该可以很快速的解决问题。废话不多说(心急的直接目录跳转--2问题排查方向),进入正文。这个问题困扰了我3天的时间直到前天才解决!首先讲一下他是怎么发生的呢?现在有个需求就是说统计cad中的实体,当我统计完毕后,相应的计算也都ok了,准备往datagridview里绑定数据的时候,时不时的就会报这个问题。或者没有任何提示的程..原创 2022-05-07 17:14:29 · 2046 阅读 · 0 评论 -
CAD中的DWL是什么文件[可以放心删除]
问题描述用户使用CAD进行绘图过程中,当打开DWG文件时,系统都会自动产生一个类型为DWL的文件,但当用户关闭图形之后,这个DWL文件又不见了。这个文件是用来干什么的?解决方法其实CAD系统中,DWL(即图形锁定的意思)文件是和DWG文件相关的一种格式,这里DWL中的“L”就是表示“LOCK”锁定的意思。一般来说DWL的文件属性是默认设置为隐藏的。当用户打开DWG文件时,系统就会在该目录下创建出一个锁定文件DWL,表示这个文档已经有用户打开使用了,阻止其他程序或用户再对其进行修改或编辑...转载 2022-02-24 10:19:01 · 6767 阅读 · 0 评论 -
一文让你明白CAD开发基本结构框架(CAD二次开发入门)
想对CAD进行二次开发的你一定有这样的困惑。那就是如何入手呢?怎么用代码画图呢?又或是CAD画一个简单的图形要遵循什么步骤呢?我认为学习任何一个东西,从整体把握都是十分重要的,哪怕刚开始慢一点,花一点时间。因为只要这样你才不会迷茫,后续才有提升创造的空间。本文就主要把CAD二次开发框架思路捋顺清楚!我相信这将在你CAD开发中至始至终都能用得上的!当然老夫我也有很多未曾研究的部分。emm......期待我后续的记录总结吧!有关CAD开发的更多内容请关注我的专题:地址:CAD二次开发记录原创 2021-11-15 09:44:59 · 5203 阅读 · 0 评论 -
CAD无法正常启动[acadiso.dwt加载卡死]解决办法与问题排除思路分享--以CAD2014版本情况为例
关于CAD启动卡死的解决办法,网上也有不少解决办法,有:处理Internet选项的、处理权限的、怀疑电脑配置低的。。。。。等等!首先排除我的电脑配置、病急乱投医的我逐一尝试了这些方法,发现并不能解决问题。于是我逐渐冷静下来。想想之前是干嘛了才导致的好好的CAD无法正常启动。之后开始逐个尝试!请看下文【心急的直接跳转至目录2】:目录1. acadiso.dwt文件尝试:2.进程占用尝试【问题所在】:3.总结1. acadiso.dwt文件尝试:由于我的程序每次启动卡死都停留在这个.原创 2021-12-10 19:49:22 · 14131 阅读 · 13 评论 -
Autodesk.AutoCAD.Runtime.Exception:“eLockViolation”解决办法--即AutoCAD二次开发模态框问题说明
开门见山:没有给正在使用的文件上锁导致的!详细请看下文!今天在接到合作部门的需求,说是想在“检查模块”改为对话框的形式展示。其实这本身我个人认为并不是一件很有意义的事,因为CAD的命令栏交互方式虽然没有图形界面好看,但是他有两个优点:1.熟练后操作速度快【使用效率高】2.省去了很多校验过程【开发舒服】扯远了,既然有要求,那么就得做么!可就在用form窗体控制cad命令的时候提示cad报错:Autodesk.AutoCAD.Runtime.Exception:“eLockViola.原创 2022-03-09 15:22:46 · 3374 阅读 · 1 评论 -
CAD二次开发--手动逐点绘制多段线示例及代码
先来看想要实现的效果:想实现这个效果,有两步是比较关键的,第一步就是允许PromptPointOptions使用基准点,第二部就是循环更新PromptPointOptions的基准点。这部分详细代码有三个方法,我分别展示在下面(直接复制粘贴就可以测试):AddPoly方法: [CommandMethod("AddPoly")] public void AddPoly() { Document doc = Application.Doc原创 2022-03-01 14:52:12 · 1462 阅读 · 0 评论 -
CAD二次开发--系统找不到指定的文件/应用程序不支持实时(JIT)调试解决办法【即:C#调用外部exe文件在CAD内部执行失败处理办法】
我们知道一个大型的程序系统很多功能之间是相互独立的,因此对于一个exe可执行文件我们可以直接进行调用,丰富我们程序中的功能!但是今天在测试的时候发现,原本调试时候可以调用的exe文件,在打包后竟提示错误:应用程序不支持实时(JIT)调试,系统找不到指定的文件!这是怎么回事?我折腾了一下午并对源码进行了细微改动最终算是解决了这个问题。接下来我把我的经验技巧总结一下!请看下文:1.系统找不到指定的文件1.1权限问题一般出现这个错误的时候,CAD会报如下提示框。导致的原因最为常见的是因为你要调用的ex原创 2022-02-16 19:20:22 · 6249 阅读 · 0 评论 -
CAD二次开发--ZOOM自定义缩放到视口区域,解决SelectCrossingWindow等方法对视口外实体不起作用的问题
引言:在实现功能:图面全部临近高程点高程检查的算法时,必然要基于某点绘制一个矩形范围,之后拿出这个矩形范围内的全部点进行高程判断,依次迭代其他点!问题:CAD二次开发中SelectCrossingWindow、SelectCrossingPolygon、SelectWindow和SelectWindowPolygon方法存在一个致命问题,就是只能获取当前视口范围内的点,对于超出视口范围外的点则无能为力。这样肯定是不行的,因为你不能在做检查的时候,让用户自己把全部图形放到视口内吧?所以你必须要让程序在原创 2021-12-31 14:51:13 · 2780 阅读 · 11 评论 -
CAD二次开发--初始欢迎界面无法加载展示问题解决办法【启动欢迎窗体在CAD界面下层无法展示问题】
今天在调试CAD开发插件的时候,发现原来的欢迎界面并不能每次都加载!这肯定是不行的啊!如今想到好办法进行处理,特来记录!1.问题描述首先说一下我是如何进行初始欢迎界面设置的,第一步还是初始化一个winform窗体【wpf更好】;第二步在dll启动主程序时候,让这个窗体show出来,之后让主线程Thread.sleep(1000)大约1秒钟;第三步再将这个窗体关闭。这个方式在之前的时候屡试不爽,可能是因为加载图片小,速度快的原因。但是在我更换了高清的启动界面的时候,就发现虽然主线程已经暂停了,但是原创 2021-12-23 14:16:17 · 888 阅读 · 0 评论 -
CAD二次开发--自定义的特殊线形如何设置(以CASS软件中坎类锯齿线形为例)
CAD自身提供了比较多的标准线形,比如虚线,但是也很难满足各个行业的具体需求,比如在测量中,就经常用到锯齿状的线形,如下图,ok,究竟如何设置呢?接下来我会分步骤讲解。原创 2021-12-22 10:40:12 · 1670 阅读 · 0 评论 -
CAD二次开发--polyline线宽设置踩坑总结【以转换CASS地形图情况为例】
今天遇到个需求,就是说将我开发的cad插件绘图成果,转换为南方CASS地形图格式【南方CASS是测绘中最常用的基础性软件】。所以说就不可避免的遇到线宽的设置问题,比如“等级公路主线”要求线宽为0.2mm等等,其实这个本身并没难度,直接设置多段线polyline的ConstantWidth属性就好了,可问题就在这里【一个小坑,不清楚就要费你个把小时】,请看我接下来的总结。同时为了区别,我再将cad图纸中常见的两种不同线宽设置进行区别说明【很多人搞不清楚的区别】。目录1.ConstantWidth线宽设原创 2021-12-13 19:55:59 · 1943 阅读 · 0 评论 -
无法将“路径1.dll”复制到“路径2.dll”超出了重试计数10。失败。文件被“AutoCAD Application(32244),AutoCAD Application(37628)”锁定
无法将“路径1.dll”复制到“路径2.dll”超出了重试计数10。失败。文件被“AutoCAD Application(32244),AutoCAD Application(37628)”锁定原创 2021-11-30 09:36:10 · 2453 阅读 · 0 评论 -
CAD二次开发--三维多段线偏移(Polyline3d offset)实现方法【GetOffsetCurves附带原代码】
你如果有在做CAD开发,并且你也有自定义的个性化的偏移需求,那么你会发现CAD目前只能进行2D线偏移;而3D线分为两种,第一种为“假三维”(z为0),这种虽然不会报错,也能看见他的图形,但是回车确认的时候是无法绘制的!第二种为“真三维”(z不为0),这种cad会明确禁止你偏移!其实这也好理解,例如在一个立体空间中,该如何确定具体偏移方向呢?不管怎么说,cad在三维多段线偏移这一块留给了开发者一定的空间结合自己需求进行开发。本文将针对第一种三维多段线的偏移给出一种理论思路及实现参考代码!至于其他情况,待老夫实原创 2021-10-27 15:03:37 · 3985 阅读 · 4 评论 -
CAD二次开发--自定义下拉菜单与工具栏踩坑总结(附带源码)
如果你在进行cad的二次开发,那么就会设计到自定义一个下拉菜单或者工具栏,他们本质上是一样的。但是。。。。理论一套一套的,实际应用却出现了各种问题!好在最后都总结了!为了以后的方便、也为了给正在研究这一块的你提供一点帮助!我决定花点时间总结一下是十分有必要的!目录1.CUI与CUIX基础知识:2.CUI与CUIX基本关系3.自定义下拉菜单与工具栏流程图4.源代码及效果图4.1定义下拉菜单:4.2下拉菜单效果:4.3定义快捷工具栏:4.4工具栏效果:5.总结1...原创 2021-10-19 10:10:30 · 3418 阅读 · 4 评论 -
CAD突然没有对话框了?只能命令行输入内容??(FILEDIA=0?CMDECHO=0?)
目录问题重现:原因及解决办法:总结:问题重现:以加载程序集命令为例子:想加载程序集文件,输入netload命令后,应该跳出文件选择对话框才对,可并没有,而是直接命令行。如下图所示!为什么会这样?原因就是你设置了CAD的filedia属性!这个属性正常默认值是1,当他为0的时候就不会显示对话框,而是以命令行的形式展示内容,这时候你需要传递路径。【ps:不显示对话框的方式,编写的程序才能让cad默认执行一些动作!】原因及解决办法:如果你只是用cad画图,那么原因可能是你加原创 2021-10-18 15:42:48 · 3269 阅读 · 0 评论 -
CAD二次开发--三维多段线(Polyline3d)删除再绘制不能同步刷新的问题(格式刷变更实体属性踩坑总结)
大家是否遇到过这个问题呢?变更一条三维多段线的属性(类似于格式刷),当删除再绘制的时候,会出现明显的卡顿现象,就是命令输入完毕后,必须鼠标再点一下才能成功!很明显这个和“格式刷”那种点一下就秒变的情况差的太远!不论你具体的实现功能是什么,我相信如果你在做CAD的二次开发,涉及三维多段线的时候,一定也会遇到这个问题!那究竟是什么原因导致呢?请看下文说明。目录1.实现思路2.踩坑说明及注意点3.总结 1.实现思路实现更改实体属性的思路主要是这6个步骤:①选中待变更实体...原创 2021-10-09 17:18:09 · 1183 阅读 · 0 评论 -
CAD二次开发--通过三维多段线实体(Polyline3d)获取顶点
public static Point3dCollection GetVertices(this Polyline3d pl) { Point3dCollection pts = new Point3dCollection(); using (Transaction tran=pl.Database.TransactionManager.StartTransaction()) { ...转载 2021-09-30 16:14:22 · 2841 阅读 · 1 评论 -
CAD二次开发--二维多段线Polyline与三维多段线Polyline3d创建总结
今天在接到一个小需求并开发完成后,发现人家要的是三维polyline,而我画的确是二维的,所以这个必须要改过来!我心想:“这不是很简单么?2换一下3不就得了?”。结果一顿折腾,发现还是画不出来?奇了怪了!好在最后解决了。根本原因是三维线与二维线的画法存在顺序差异!!!不墨迹说重点:polyline: 点添加到线上后再将线提交事务处理!polyline3d:线先提交事务处理,之后再将点添加到线上!目录1.创建步骤2.三维多段线(Polyline3d)3.二维多段线(...原创 2021-09-26 20:00:23 · 4140 阅读 · 3 评论 -
突然发现CAD都是命令行不显示对话框了!!!
1.为什么CAD打开图纸时在命令行提示而不显示对话框呢?CAD打开和保存图纸时通常都会弹出对话框,但有时不知改了什么设置,打开和保存文件时不弹出对话框,只是在命令行出现提示,我们需要在命令行中输入目录名、文件名,这样子的操作很麻烦。如下图所示。2.为什么突然打开、保存都出现了这样的命令行提示呢?怎么解决呢?其实原因很简单,CAD中有一个系统变量可以控制这种状态。这些变量个人一般不会去设置,应该是我前几天编写下拉菜单时设置FILEDIA为0了。解决方法如下:在命令行输入:filedia原创 2021-08-25 21:00:59 · 12466 阅读 · 1 评论 -
CAD中ColorIndex索引对应的颜色及RGB值
原创 2021-08-15 15:26:23 · 6112 阅读 · 0 评论 -
实用绘图算法1---已知圆上两点坐标、半径及前进方向确定圆心所在位置(路线圆曲线绘制方法)
在开发路线类应用绘制圆曲线的时候,遇到了一个问题就是:已知圆曲线起点和终点的坐标、曲率半径及前进方向四个条件绘制圆曲线。而封装好的绘制圆曲线的函数是根据极坐标方法绘制的,因此需要提供四个参数。【1】圆心坐标【2】起始角度【3】终止角度【4】半径那么在不自己重新定义函数的情况下,很显然你要确定圆心坐标,有了这个坐标,那么起始角度和终止角度通过坐标反算也就不难求得了。请大佬们继续阅读。目录1.圆心确定2.方向判断原理(点在射线的左侧右侧)3.方向判断举例4.总结5.原创 2021-08-06 17:24:17 · 2146 阅读 · 0 评论 -
基于CAD二次开发的道路纵断面竖曲线计算原理与编程自动绘制方法(以C#为例)
针对道路纵断面竖曲线绘制(二次抛物线)问题,本文将先举个例题进行说明【不熟悉最好手算验证】,之后在对其编程思路进行简述,最后将附上各部分代码供参考交流学习。OK,开始进入正题。目录1.基本原理2. 编程实现3.总结:1.基本原理解:1)因为大于0,所以他是凹曲线。2)3)起点里程=边坡点里程-T=k25+460-105=k25+355终点里程=边坡点里程+T=k25+460+105=k25+565起点只边坡点的高程改正:y...原创 2021-08-02 12:24:05 · 4107 阅读 · 0 评论
分享