既然4为3个直线相交,意思就是没有虚交点,相交点都是实交并且都是线的首尾点
那么只需要在框选后,把所有线的起点和止点提取出来,边提取边统计这个坐标出现的次数即可,没有分类的问题,所谓的分类只是那些坐标重复出现的次数,只出现一次的都不是交点,所以去掉了 - (defun c:tt(/ l)
- (and(ssget'((0 . "line,arc,*polyline")))
- (vlax-for o(vlax-get-property(vlax-get-property(vlax-get-acad-object)'activedocument)'activeselectionset)
- (vl-every(function(lambda(x / p)(setq p(apply x(List o)))
- (or(vl-some(function(lambda(a)
- (if(equal p(car a)1e-3)
- (setq l(cons(list p(1+(cadr a)))(vl-remove a l))))))l)
- (setq l(cons(List p 1)l)))))
- '(vlax-curve-getstartpoint vlax-curve-getendpoint))))
- ;;;统计完成后,再根据实际需要行处理,比如返回所有交点坐标及线段的条数,或者直接在图上写出它们的数量
- ;;;(vl-remove-if(function(lambda(a)(=(cadr a)1)))l)
- (vl-every(function(lambda(a)
- (or(=(cadr a)1)
- (entmakex(mapcar(function cons)
- '(0 1 10 40)
- (List"text"(itoa(cadr a))(car a)400))))))l)
- )
|