乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 192|回复: 10

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

[复制链接]

37

主题

267

帖子

15

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
407
发表于 2015-9-10 03:33:00 | 显示全部楼层 |阅读模式
  1. (setq rrno1 5)
  2. ;;函数名:zjhy(自交画圆)
  3. ;;功能:在多段线是线自相交处画圆圈标注      
  4. ;;注:多段线为纯线段,不含弧线
  5. (defun c:zjhy(/ $i $j jiaodian lss nn ns os pt1 pt2 pt3 pt4)
  6.   (setq lss (Vertexs (car(entsel))));获取定点表
  7.   (setq rrno1 (ureal 0 "" "输入圆圈半径" rrno1))
  8.   (setq nn 0)
  9. (setq os (getvar "osmode"))
  10.   (setvar "osmode" 0)(setvar "CMDECHO" 0)
  11.   (setq ns (length lss));返回顶点个数
  12.   (setq $i 0);循环初始
  13.   (setq $j 2);嵌套循环初始
  14.   (repeat (- ns 1);循环从第一点到倒数第二点
  15.     (repeat (if(= $i 0)(1-(- ns $j))(- ns $j));循环到第一点(首点除外)
  16.       (setq pt1(nth $i lss));0
  17.       (setq pt2(nth (1+ $i) lss));1
  18.       (setq pt3(nth $j lss));2
  19.       (setq pt4(nth (if(=(1+ $j)ns)0(1+ $j)) lss));3(超过最后一个点跳到第一点)
  20.       (setq jiaodian(inters pt1 pt2 pt3 pt4));判断线段相交
  21.       (if jiaodian(command "CIRCLE" jiaodian rrno1));画圆
  22.       (if jiaodian(setq nn(1+ nn)));计数
  23.       (setq $j (1+ $j))
  24.     )
  25.     (setq $i (1+ $i))
  26.     (setq $j (+ 2 $i))
  27.   )
  28.   (setvar "osmode" os)
  29.   (princ "\n共找到") (princ nn)(princ "个自相交点。")
  30.   (prin1)
  31.   )
  32. (prompt
  33.   "\n******* zjhy[自交画圆]命令加载完成!*******------tryhi----2015-9-10"
  34. )(prin1)
  35. ;;返回多段线顶点表         
  36.   (defun Vertexs (s1 / lst);
  37.     (setq  lst (entget s1)
  38.       lst (vl-remove-if-not '(lambda (x) (= (car x) 10)) lst)
  39.       lst (mapcar 'cdr lst)
  40.     )
  41.   )
  42. ;;                  实型数输入格式化                           
  43. (defun ureal (bit kwd msg def / inp)
  44.   (if def
  45.     (setq msg (strcat "\n" msg ": ") bit (* 2 (fix (/ bit 2))))
  46.     (setq msg (strcat "\n" msg ": "))
  47.   )
  48.   (initget bit kwd)
  49.   (setq inp (getreal msg))
  50.   (if inp inp def)
  51. )

0gxhjlrfygu.gif

0gxhjlrfygu.gif


回复

使用道具 举报

4

主题

57

帖子

9

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
73
发表于 2018-1-27 10:45:00 | 显示全部楼层
海哥  厉害  顶顶顶  过来学习下
回复

使用道具 举报

22

主题

326

帖子

185

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
243
发表于 2020-7-27 15:09:00 | 显示全部楼层
You havn't checked  segment is a arc curve case
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2017-10-30 21:54:00 | 显示全部楼层
谢谢楼主的分享,我把他转换为C#代码试试看
回复

使用道具 举报

3

主题

31

帖子

5

银币

初来乍到

Rank: 1

铜币
43
发表于 2015-9-10 13:59:00 | 显示全部楼层
谢谢,虽然不是C#,但是做法学会了
回复

使用道具 举报

31

主题

360

帖子

18

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
479
发表于 2015-9-10 19:37:00 | 显示全部楼层
支持原创
回复

使用道具 举报

1

主题

49

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
53
发表于 2015-9-20 23:16:00 | 显示全部楼层
支持一下!
回复

使用道具 举报

19

主题

115

帖子

9

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
191
发表于 2015-9-29 19:40:00 | 显示全部楼层
支持  原创   源码
回复

使用道具 举报

41

主题

320

帖子

12

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
483
发表于 2015-10-20 11:46:00 | 显示全部楼层
感谢大师的分享
回复

使用道具 举报

0

主题

334

帖子

12

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
335
发表于 2017-10-5 20:15:00 | 显示全部楼层
回帖是一种美德!感谢楼主的无私分享 谢谢
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 02:50 , Processed in 0.623838 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表