如果由圆弧构成一个整圆,要合并为圆的话,测试版本AutoCAD2016版本,快捷键【J】可以合并为圆。
如果圆弧不规范,AutoCAD合并不了,需要用autolisp来解决,一个小插件就可以。
从图上看,这个圆弧是开口的,那么应当是【圆弧变为圆】不是你说的【圆弧合并为圆】。
提供两个小插件autolisp来解决你的问题。代码如下:
;=====以下是圆弧合并为圆========================================
(defun C:tes ( / &dis1 &dis2 &k1 &k2 &kw1 &ob1 &ob2 &r1 &r2 &ss1 &tc1 &xx1 i l1 l2 pt1 pt2);圆弧合并
(if (null vlax-dump-object) (vl-load-com) )
(if (setq &kw1 (ssget '((0 . "ARC"))));1
(progn;;1
(while (setq &k1 (ssname &kw1 0))
(setq &kw1 (ssdel &k1 &kw1))
(if (= &kw1 nil) (setq &kw1 (ssadd)) )
(setq &ob1 (vlax-ename->vla-object &k1))
(setq &dis1 (vlax-curve-getDistAtParam &ob1 (vlax-curve-getEndParam &ob1)));长度
(setq &tc1 (vla-get-layer &ob1));图层
(setq &xx1 (vla-get-Linetype &ob1));线型
(setq &r1 (vla-get-Radius &ob1));半径
(setq pt1 (Vlax-SafeArray->List (Vlax-Variant-Value (vla-get-Center &ob1))));取得圆心
(setq L1 (* pi 2 &r1));周长
(if (> L1 50) (setq L2 1) (setq L2 (* L1 0.01)) );圆心允许误差值1
(setq i 0 &ss1 '() &ss1 (cons &k1 &ss1))
(repeat (sslength &kw1)
(setq &k2 (ssname &kw1 i) i (1+ i))
(setq &ob2 (vlax-ename->vla-object &k2))
(setq &dis2 (vlax-curve-getDistAtParam &ob2 (vlax-curve-getEndParam &ob2)));长度
(setq &r2 (vla-get-Radius &ob2));半径
(setq pt2 (Vlax-SafeArray->List (Vlax-Variant-Value (vla-get-Center &ob2))));取得圆心
(if (and (<= (distance pt1 pt2) L2) (= &r1 &r2));2如果圆心坐标相同半径相同
(progn;;2
(setq &dis1 (+ &dis2 &dis1))
(setq &ss1 (cons &k2 &ss1))
);progn;2
);if;2
);repeat
(if (<= (abs (- &dis1 L1)) L2);如果长度符合圆的条件,就合并
(progn
(setq i 0)
(if (= &kw1 nil) (setq &kw1 (ssadd)) )
(repeat (length &ss1)
(setq &k2 (nth i &ss1) i (1+ i))
(setq &kw1 (ssadd &k2 &kw1) &kw1 (ssdel &k2 &kw1))
(entdel &k2)
);repeat
(entmake (list '(0 . "CIRCLE") (cons 8 &tc1) '(62 . 1) (cons 6 &xx1) (cons 10 pt1) (cons 40 &r1)))
)
)
);while
);progn;1
);if;1
(prin1)
);;复制到记事本,以【.lsp】为后缀命名,打开CAD,autolisp加载,命令【TES】
;===========以下程序是圆弧变圆===========================
(defun C:tes1 ( / &k1 &kw1 &ob1 &r1 &tc1 &xx1 pt1);圆弧变圆
(if (null vlax-dump-object) (vl-load-com) )
(if (setq &kw1 (ssget '((0 . "ARC"))));1
(progn;;1
(while (setq &k1 (ssname &kw1 0))
(setq &kw1 (ssdel &k1 &kw1))
(setq &ob1 (vlax-ename->vla-object &k1))
(setq &tc1 (vla-get-layer &ob1));图层
(setq &xx1 (vla-get-Linetype &ob1));线型
(setq &r1 (vla-get-Radius &ob1));半径
(setq pt1 (Vlax-SafeArray->List (Vlax-Variant-Value (vla-get-Center &ob1))));取得圆心
(vla-delete &ob1)
(entmake (list '(0 . "CIRCLE") (cons 8 &tc1) '(62 . 1) (cons 6 &xx1) (cons 10 pt1) (cons 40 &r1)))
);while
);progn;1
)
(prin1)
);;复制到记事本,以【.lsp】为后缀命名,打开CAD,autolisp加载,命令【TES1】
;为了显示合并,合并后的对象颜色为红色
楼上的讲的实在,重新画一个圈,点击阵列,设置横竖偏移尺寸,一个回车搞定!
选择 然后c(闭合)回车
只有用合并或编辑多段线命令
重新画最快,还能阵列什么的。