CAD收集块的数量一般采用FI等命令,或者使用天正等软件,这些方法或多或少都存在某些问题。这时就可以编写插件满足不同场景的使用。已应用到实际工作中。
一、界面及其功能
采用c#制作cad插件,框选待统计范围,直接输出到表格中,能采集到块的块名,坐标,块的值等功能
二、关键代码
SelectionFilter selFiter = new SelectionFilter(typeValue);
PromptSelectionResult psr = ed.GetSelection(selFiter);
if (psr.Status != PromptStatus.OK) return;
SelectionSet SS = psr.Value;
ObjectId[] idArray = SS.GetObjectIds();
BlockReference blkRef = trans.GetObject(id, OpenMode.ForRead) as BlockReference;
AcadBlockReference acadBlockRef = (AcadBlockReference)blkRef.AcadObject;
object[] oAtts = (object[])acadBlockRef.GetAttributes();
AcadAttributeReference att = (AcadAttributeReference)nn;
var source = jn.GroupBy(t => t.Trim()).Select(t => new { count = t.Count(), key = t.Key }).ToArray();
首先拿到块的id,通过id获取到块的属性,将属性放入数组,再去遍历数组,这样便能获取到块的值。再将块的值和块名组合起来放入一个字符串列表中,使用linq分类、统计到表格中。
三、结束语
视频已发到B站中,感兴趣的可以去看看实际效果CAD技巧分享【二次开发】--批量统计不同块的数量_哔哩哔哩_bilibili
QQ群以及微信群已建立,大家可以进去讨论自己遇到的问题。尽我的能力会在群里解答大家的问题