找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 209|回复: 0

_标记不闭合处画圆

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-3-2 20:15:26 | 显示全部楼层 |阅读模式
  1. ;;采用标记不闭合处画圆 By ls (2013年2月2日10时30分47秒)
  2. (defun c:tt (/ AT采用M:SearchSSByList AT采用Pl:GetClose C DIST ENAME ENDPT FILTER FIND I L R RETURN SS STARTPT)
  3. (vl-load-com)
  4. (setq filter (list (cons 0 "*line,ELLIPSE,ARC")));采用针对线 椭圆 圆弧
  5. (setq ss (ssget filter));采用创建选择集
  6. (setq return '());采用返回的点表
  7. (setq dist 0.01);采用距离
  8. (setq r 2);采用圆的半径 实型
  9. (setq l "Err");采用创建的圆所在的图层 字符型
  10. (setq c 3);采用圆的颜色(颜色号) 整型
  11. ;;采用指定距离搜索实体图元
  12. (defun AT采用M:SearchSSByList (pt S采用Dist tylst / PT采用A PT采用CL PT采用LIST RVAL SS X)
  13. (setq pt采用list '())
  14. (setq rVal nil)
  15. (setq pt采用cl (list 0 0.25 0.5 0.75 1 1.25 1.5 1.75))
  16. (setq pt采用a (mapcar '(lambda (x) (* x pi)) pt采用cl))
  17. (foreach n采用pt采用a pt采用a
  18. (setq pt采用list (cons (polar pt n采用pt采用a S采用Dist) pt采用list))
  19. )
  20. (setq  ss (ssget "cp" pt采用list tylst))
  21. (if (/= ss nil)
  22. (setq rVal ss)
  23. (setq rVal nil)
  24. )
  25. rVal
  26. )
  27. ;;采用曲线是否闭合
  28. (defun AT采用Pl:GetClose (ename / PLIST RETURN)
  29. (setq return nil)
  30. (if (vlax-curve-isClosed ename)
  31. (setq return T)
  32. (progn
  33. (setq plist (list (vlax-curve-getStartPoint ename) (vlax-curve-getEndPoint ename)))
  34. (if (equal (car plist) (last plist))
  35. (setq return T)
  36. (setq return nil)
  37. )
  38. )
  39. )
  40. return
  41. )
  42. (if ss
  43. (progn
  44. (setq i -1)
  45. (command "zoom" "e")
  46. (princ "\n正在处理,请稍等...")
  47. (princ)
  48. (while (setq ename (ssname ss (setq i (1+ i))))
  49. (if (not (AT采用Pl:GetClose ename));采用忽略本身已闭合的
  50. (progn
  51. (setq startpt (vlax-curve-getStartPoint ename));采用起点
  52. (setq endpt (vlax-curve-getEndPoint ename));采用终点
  53. (foreach pt (list startpt endpt)
  54. (setq find (AT采用M:SearchSSByList pt dist filter))
  55. (if find
  56. (progn
  57. (setq find (ssdel ename find)) ;采用删除自身的
  58. (if (= (sslength find) 0)
  59. (setq return (cons pt return))
  60. )
  61. )
  62. (setq return (cons pt return))
  63. )
  64. )
  65. )
  66. )
  67. )
  68. (command "zoom" "p")
  69. )
  70. )
  71. (if return
  72. (progn
  73. (foreach pt return
  74. (entmakex (list '(0 . "CIRCLE") '(100 . "AcDbEntity") '(100 . "ACDbCircle") (cons 10 pt) (cons 40 r) (cons 8 l) (cons 62 c) '(210 0. 0. 1.)))
  75. )
  76. (princ (strcat "\n共检测到 " (itoa (length return)) " 处.."))
  77. )
  78. )
  79. (princ)
  80. )
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 17:41 , Processed in 0.124334 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表