tryhi 发表于 2015-9-10 03:33:45

查找线自相交[原创.附源码]

本帖最后由 tryhi 于 2015-9-10 15:45 编辑

(setq rrno1 5)
;;函数名:zjhy(自交画圆)
;;功能:在多段线是线自相交处画圆圈标注      
;;注:多段线为纯线段,不含弧线
(defun c:zjhy(/ $i $j jiaodian lss nn ns os pt1 pt2 pt3 pt4)
(setq lss (Vertexs (car(entsel))));获取定点表
(setq rrno1 (ureal 0 "" "输入圆圈半径" rrno1))
(setq nn 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)(setvar "CMDECHO" 0)
(setq ns (length lss));返回顶点个数
(setq $i 0);循环初始
(setq $j 2);嵌套循环初始
(repeat (- ns 1);循环从第一点到倒数第二点
    (repeat (if(= $i 0)(1-(- ns $j))(- ns $j));循环到第一点(首点除外)
      (setq pt1(nth $i lss));0
      (setq pt2(nth (1+ $i) lss));1
      (setq pt3(nth $j lss));2
      (setq pt4(nth (if(=(1+ $j)ns)0(1+ $j)) lss));3(超过最后一个点跳到第一点)
      (setq jiaodian(inters pt1 pt2 pt3 pt4));判断线段相交
      (if jiaodian(command "CIRCLE" jiaodian rrno1));画圆
      (if jiaodian(setq nn(1+ nn)));计数
      (setq $j (1+ $j))
    )
    (setq $i (1+ $i))
    (setq $j (+ 2 $i))
)
(setvar "osmode" os)
(princ "\n共找到") (princ nn)(princ "个自相交点。")
(prin1)
)
(prompt
"\n******* zjhy[自交画圆]命令加载完成!*******------tryhi----2015-9-10"
)(prin1)
;;返回多段线顶点表         
(defun Vertexs (s1 / lst);
    (setqlst (entget s1)
      lst (vl-remove-if-not '(lambda (x) (= (car x) 10)) lst)
      lst (mapcar 'cdr lst)
    )
)
;;                  实型数输入格式化                           
(defun ureal (bit kwd msg def / inp)
(if def
    (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ") bit (* 2 (fix (/ bit 2))))
    (setq msg (strcat "\n" msg ": "))
)
(initget bit kwd)
(setq inp (getreal msg))
(if inp inp def)
)

479274135 发表于 2018-1-27 10:45:53

海哥厉害顶顶顶过来学习下

ketxu 发表于 2020-7-27 15:09:49

You havn't checkedsegment is a arc curve case

高大宝 发表于 2017-10-30 21:54:57

谢谢楼主的分享,我把他转换为C#代码试试看

j15tty 发表于 2015-9-10 13:59:08

谢谢,虽然不是C#,但是做法学会了

434939575 发表于 2015-9-10 19:37:41

支持原创

dingtiedt 发表于 2015-9-20 23:16:34

支持一下!

杜阳 发表于 2015-9-29 19:40:23

支持原创   源码   

ynhh 发表于 2015-10-20 11:46:05

感谢大师的分享

pengfei2010 发表于 2017-10-5 20:15:43

回帖是一种美德!感谢楼主的无私分享 谢谢

pengfei2010 发表于 2017-10-16 17:27:16

回帖是一种美德!感谢楼主的无私分享 谢谢
页: [1] 2
查看完整版本: 查找线自相交[原创.附源码]