本帖最后由 zdqwy19 于 2015-10-24 10:24 编辑
前几天因为工作关系要统计一张基坑围护图纸中三轴搅拌桩的幅数,打开图纸一看,哇!那么多!心想还好,可以利用AutoCAD自带的“选择类似对象”和“特性”一次统计出来,多快好省事。结果总是。。。把基坑围护图纸炸开,三轴搅拌桩竟然有的是块,有的是分段圆弧,颜色各异,名称不同,块中套块。。。一个一个地数嫌麻烦,算了还是写个lisp程序吧。
自己先把程序目的和实现过程分析出来,再上网搜索相应的程序代码组装即可。开工:
目的:统计三轴搅拌桩的幅数
思路:把图形中指定半径圆弧的圆心统计出来,除以3就是三轴搅拌桩的幅数
过程:
1.选择图形中的块和圆弧((ssget(list'(0."INSERT,ARC"))))
2.筛选出所选择的图形中满足指定半径的圆弧的圆心坐标((if(equal (cdr (assoc 40 (entget ename))) 半径值 1e-6)(append 圆心坐标列表 (trans(cdr(assoc 10 (entget en))) (cdr(assoc 210 (entget en))) 0))))
3.删除坐标值重复的圆心坐标(http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99010、http://bbs.mjtd.com/forum.php?mod=viewthread&tid=93205&page=2#pid521011)
4.统计圆心坐标数量,除以3就是三轴搅拌桩的幅数
5.找出圆心坐标之间的距离最小值点(http://bbs.mjtd.com/forum.php?mod=viewthread&tid=56310)
6.绘制距离最小值点的不交叉连线(http://bbs.mjtd.com/thread-96730-1-1.html)
7.在命令行输出所需要的结果:三轴搅拌桩的幅数,距离最小值等(princ "")
8.观察图形是否有重复统计或漏掉未统计的图形
步骤1-4为基本过程,5-6为复核观察过程,7-8为输出结果过程,开动搜索搜集1-7各过程所需的代码组装即可,lisp程序的缺点就是运行速度有点慢,5000多幅三轴搅拌桩统计用时大约3分钟,不过比人工快多了。代码及程序就不贴了,毕竟都是从网上搜罗来的,要尊重他人的劳动成果!
|