CIRCLE不能直接用圆上同一个点进行break,因为CAD规定ARC的圆心角不能等于2pi,所以用圆上同一个点对圆进行break会失败。
但是这个圆心角可以无限接近于2pi,那么也就有了可以操作的可能:用圆心P0和给定的打断点p计算arc的初始角,再用这个角减去一个极小的数值,比如1e-8作为终止角,重新绘制ARC就可以

- (and(setq e(ssget":E:S"'((0 . "circle"))))
- (setq e(ssname e 0)
- en(entget e)
- p0(CDR(ASSOC 10 EN))
- p(vlax-curve-getclosestpointto e(getpoint)))
- (ENTMAKEX(MAPCAR'CONS'(0 10 40 50 51)(LIST"ARC"(CDR(ASSOC 10 EN))(CDR(ASSOC 40 EN))(ANGLE p0 P)(-(ANGLE p0 P)1E-8)))) (entdel e))
(and(setq e(ssget":E:S"'((0 . "circle"))))
(setq e(ssname e 0)
en(entget e)
p0(CDR(ASSOC 10 EN))
p(vlax-curve-getclosestpointto e(getpoint)))
(ENTMAKEX(MAPCAR'CONS'(0 10 40 50 51)(LIST"ARC"(CDR(ASSOC 10 EN))(CDR(ASSOC 40 EN))(ANGLE p0 P)(-(ANGLE p0 P)1E-8))))
(entdel e)) |