你什么时候交作业
;函数功能:找出封闭线
(defunc:tes(/&jd1&k1&k2&p1&ss1&ss2&ss3&ss5xy)
(setvar"cmdecho"0)
(setvar"blipmode"0)
(if(nullvlax-dump-object)(vl-load-com))
(setq&jd11.0)
(if(setq&ss1(a1611131));选择不封闭的对象
(Progn
(setq&ss2'())
(while(and(setq&k1(car&ss1))(setq&ss1(CDR&ss1)))
(setq&p1(vlax-curve-getstartpoint&k1)&ss5(list&k1))
(setq&ss3(a1611132&ss1&p1&jd1)&k2(car&ss3)&ss1(CADr&ss3))
(while&k2
(setq&ss5(cons&k2&ss5))
(if&ss1
(Progn;;2
(setq&p1(CADar(vl-sort
(mapcar'(lambda(x)(list(distance&p1x)x))
(list(vlax-curve-getstartpoint&k2)(vlax-curve-getendpoint&k2)))
'(lambda(xy)(>(carx)(cary))))
))
(setq&ss3(a1611132&ss1&p1&jd1)&k2(car&ss3)&ss1(CADr&ss3))
);Progn;2
(setq&k2nil)
);if;2
);while;2
(setq&p1(vlax-curve-getendpoint&k1)&ss5(reverse&ss5))
(setq&ss3(a1611132&ss1&p1&jd1)&k2(car&ss3)&ss1(CADr&ss3))
(while&k2
(setq&ss5(cons&k2&ss5))
(if&ss1
(Progn;;3
(setq&p1(CADar(vl-sort
(mapcar'(lambda(x)(list(distance&p1x)x))
(list(vlax-curve-getstartpoint&k2)(vlax-curve-getendpoint&k2)))
'(lambda(xy)(>(carx)(cary))))
))
(setq&ss3(a1611132&ss1&p1&jd1)&k2(car&ss3)&ss1(CADr&ss3))
);Progn;3
(setq&k2nil)
);if;3
);while;3
(if(CADr&ss5)(a1611133&ss5&jd1))
);while
)
)
(PRinc)
)
;函数功能:计算坐标
(defuna1611135(obj@p5/@p5obj)
(if(=(CADr@p5)1)
(list(vlax-curve-getstartpointobj)(vlax-curve-getendpointobj))
(list(vlax-curve-getendpointobj)(vlax-curve-getstartpointobj))
)
)
;函数功能:判断起点与端点
(defuna1611134(obj@p1/@p1objxy)
(setq@p1(CADdr@p1))
(cdar(vl-sort
(mapcar'(lambda(x)(cons(distance@p1(carx))x))
(list(list(vlax-curve-getstartpointobj)1(vlax-curve-getendpointobj))(list(vlax-curve-getendpointobj)2(vlax-curve-getstartpointobj))))
'(lambda(xy)(<(carx)(cary)))))
)
;函数功能:分析坐标
(defuna1611133(&ss5cd1/&k1&k2&p1&p2&p3&p4&p5&ss2&ss5cd1xy)
(setq&k1(car&ss5)&k2(CADr&ss5)
&p1(vlax-curve-getstartpoint&k1)&p2(vlax-curve-getendpoint&k1)
&p3(vlax-curve-getstartpoint&k2)&p4(vlax-curve-getendpoint&k2)
&p5(cdar(vl-sort
(mapcar'(lambda(x)(list(distance(carx)(CADrx))(carx)(CADdrx)(CADddrx)))
(list(list&p1&p32&p3)(list&p1&p42&p4)(list&p2&p31&p3)(list&p2&p41&p4)))
'(lambda(xy)(<(carx)(cary)))))
)
(setq&p1(car(a1611135&k1&p5))&ss2(CDR&ss5))
(setq&p2(CADr(last(mapcar'(lambda(x)(a1611135x(setq&p5(a1611134x&p5))))&ss2))))
(if(<(distance&p1&p2)cd1)(mapcar'(lambda(x)(vla-put-colorx256))&ss5))
)
;函数功能:计算距离
(defuna1611132(&ss1@p1cd1/&ss1&ss2@p1cd1x)
(setq&ss1(mapcar'(lambda(x)(list(distance@p1(vlax-curve-getstartpointx))(distance@p1(vlax-curve-getendpointx))x))&ss1))
(if(and(setq&ss2(mapcar'CADdr(vl-remove-if-not'(lambda(x)(or(<(carx)cd1)(<(CADrx)cd1)))&ss1)))(>(length&ss2)1))(setq&ss2'()))
(setq&ss1(mapcar'CADdr(vl-remove-if'(lambda(x)(or(<(carx)cd1)(<(CADrx)cd1)))&ss1)))
(list(car&ss2)&ss1)
)
;函数功能:选择不封闭对象;封闭对象改变颜色
(defuna1611131(/&k1&kw1&ss1&ss2ix)
(setq&ss1'()&ss2'())
(PRinc"请选择曲线")
(if(setq&kw1(ssget'((0."*line,circle,arc,helix,elliPSe"))))
(Progn
(setqi-1.0)
(while(setq&k1(ssname&kw1(setqi(1+i))))
(if(vlax-curve-isclosed(setq&k1(vlax-ename->vla-object&k1)))(setq&ss1(cons&k1&ss1))(setq&ss2(cons&k1&ss2)))
);while
(if(car&ss2)(mapcar'(lambda(x)(vla-put-colorx1))&ss2))
(if(car&ss1)(mapcar'(lambda(x)(vla-put-colorx7))&ss1))
)
)
(if(car&ss2)&ss2nil)
)
如果对象封闭,颜色为7【白色】,如果不封闭,颜色为1【红色】。