有没有框选范围内的圆在水平和竖直方向圆心连线的程序?
机械制图中经常有很多在水平或者竖直的孔,出图时需要用中心线连接在一起,有没有这样的程序可以框选一下 自动连线,在X或者Y轴 平齐的才连线,其余的不连线
网上找了一个点击圆心连线的,只能一个一个点 感觉不是很方便,想请教大家 有没有这样自动的。。
单点圆心连线的程序~
本帖最后由 xj6019 于 2024-11-10 20:22 编辑
GEGEYANG88 发表于 2024-11-10 17:52
请测试并列圆连线
换个算法,再玩一遍
本帖最后由 xj6019 于 2024-11-10 14:45 编辑
瞎玩一把!!!!!!!!!!!!!!
(defun c:NM (/ canzhaoent cenlst entlst i s1 ss xentlst xlst yentlst ylst)
(setq cenlst nil)
(if(and
(setq ss (ssget (list '(0 . "CIRCLE"))));
(setq i -1)
)
(progn
(while(setq s1 (ssname ss (setq i (1+ i))))
(setq cenlst (cons(cdr(assoc 10 (entget s1)))cenlst))
)
(setq xentlst(vl-remove-if-not '(lambda(x)(= 'ENAME (type x))) (mapcar 'cadr (ssnamex SS)))
yentlst xentlst
)
;;;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
(while(setq canzhaoent(car xentlst))
(setq xlst
(vl-remove-if-not
(function
(lambda(x)
(equal(car(cdr(assoc 10 (entget canzhaoent))))(car(cdr(assoc 10 (entget x)))) 0.2)
)
)
(cdr xentlst)
)
)
(if xlst
(progn
(setq xlst
(vl-sort xlst
(function
(lambda (x y)
(>(distance(cdr(assoc 10 (entget canzhaoent))) (cdr(assoc 10 (entget x))))
(distance(cdr(assoc 10 (entget canzhaoent))) (cdr(assoc 10 (entget y)))))
)
)
)
)
(entmakex
(list '(0 . "LINE")
'(6 . "CENTER") '(62 . 1)
(cons 10 (cdr(assoc 10 (entget canzhaoent))))
(cons 11 (cdr(assoc 10 (entget (car xlst)))))))
(foreach x xlst
(setq xentlst(vl-remove x xentlst))
)
)
)
(setq xentlst(cdr xentlst))
)
;;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
(while(setq canzhaoent(car yentlst))
(setq ylst
(vl-remove-if-not
(function
(lambda(x)
(equal(cadr(cdr(assoc 10 (entget canzhaoent))))(cadr(cdr(assoc 10 (entget x)))) 0.2)
)
)
(cdr yentlst)
)
)
(if ylst
(progn
(setq ylst
(vl-sort ylst
(function
(lambda (x y)
(>(distance(cdr(assoc 10 (entget canzhaoent))) (cdr(assoc 10 (entget x))))
(distance(cdr(assoc 10 (entget canzhaoent))) (cdr(assoc 10 (entget y)))))
)
)
)
)
(entmakex
(list '(0 . "LINE")
'(6 . "CENTER") '(62 . 1)
(cons 10 (cdr(assoc 10 (entget canzhaoent))))
(cons 11 (cdr(assoc 10 (entget (car ylst)))))))
(foreach x ylst
(setq yentlst(vl-remove x yentlst))
)
)
)
(setq yentlst(cdr yentlst))
)
)
)
(princ)
)
xj6019 发表于 2024-11-10 14:18
瞎玩一把!!!!!!!!!!!!!!
{:1_1:}有BUG,并列多个圆,总要少连接1个,期待修复。 GEGEYANG88 发表于 2024-11-10 15:36
有BUG,并列多个圆,总要少连接1个,期待修复。
测试正常,没发现
;非源码慎用
请测试并列圆连线
GEGEYANG88 发表于 2024-11-10 17:52
请测试并列圆连线
牛牛牛牛牛! xj6019 发表于 2024-11-10 16:35
测试正常,没发现
谢谢大佬,程序我刚刚测试了一下,的确是有时候会漏连线,图片给您看看,画绿圈的地方是漏连接的,我把测试的图档也传上来,希望能帮忙优化一下
页:
[1]
2