依然小小鸟 发表于 2025-5-29 10:23:29

求改进代码!框选所有矩形 在矩形中心生成圆

本帖最后由 依然小小鸟 于 2025-5-29 10:25 编辑 <br /><br />我是搞岩土的 我需要定位矩形方桩的中心点&nbsp;&nbsp;所以我需要一个插件 就是框选所有矩形 在矩形的中心生成圆 这样方便我批量提取圆坐标 依次来定位方桩<br> 我有上千根方桩 这样批量操作会更快捷! 我搜集的一个源代码,&nbsp;&nbsp;但是这个代码不支持框选 求改进<br>&nbsp;(defun c:NM (/ dxf10 i p0 p1 p2 pp s1 ss)<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(defun dxf10 (e / s)&nbsp;&nbsp;;10组码取点<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; (if (setq s<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; (mapcar 'cdr<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(vl-remove-if-not '(lambda (x) (= (car x) 10))(entget e))<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; )<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;)<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(if (= 1 (length s))(car s)s)<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; )<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;)<br>&nbsp;&nbsp;(setq i -1)<br>&nbsp;&nbsp;(if (setq ss (ssget ":S"(list '(0 . "LWPOLYLINE"))))<br>&nbsp; &nbsp; (while (and(setq s1 (ssname ss (setq i (1+ i)))))&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(setq pp(dxf10 s1)<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;p1(car pp)<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;p2(caddr pp)<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;)<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(setq p0(mapcar '(lambda(x)(* 0.5 x)) (mapcar '+ p1 p2)))<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(vla-AddCircle (vla-get-modelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))(vlax-3D-point p0) (* 0.02 (distance p1 p2)))<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(vla-put-layer (vlax-ename-&gt;vla-object (entlast)) "图层3")<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(entmake (list '(0 . "LINE") (cons 8&nbsp;&nbsp;"图层4")(cons 10 p0)&nbsp;&nbsp;(cons 11 p1)&nbsp;&nbsp;))<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; )<br>&nbsp;&nbsp;)<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(princ)<br>)

czb203 发表于 2025-5-29 11:47:44

框选所有矩形 在矩形中心生成圆

幽兰聆雨 发表于 2025-5-29 10:57:51

可以让ai写一个

maiko 发表于 2025-5-29 14:16:59

(vla-put-layer (vlax-ename->vla-object (entlast)) "图层3")看你图形有没有图层3图层.没有就会出错

forestgxc 发表于 2025-5-30 09:09:05

vla-getboundingbox?

CADHH450 发表于 2025-5-30 10:46:07

圆直径可输入 默认为矩形短边长

附加统计坐标

依然小小鸟 发表于 2025-5-30 17:58:58

CADHH450 发表于 2025-5-30 10:46
圆直径可输入 默认为矩形短边长

附加统计坐标

统计坐标可以 输出为txt格式吗

season_88 发表于 2025-5-30 20:33:25

CADHH450 发表于 2025-5-30 10:46
圆直径可输入 默认为矩形短边长

附加统计坐标

这个好像有看到过

aumyshow 发表于 2025-5-30 21:33:57

还有很多方式能够实现。。提取矩形形心点坐标
页: [1]
查看完整版本: 求改进代码!框选所有矩形 在矩形中心生成圆