明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1191|回复: 9

[源码] 贴一个 打断曲线的 源码,差一点点就可以运行

[复制链接]
发表于 2023-6-10 20:33:10 | 显示全部楼层 |阅读模式
  1. ;命令为【TES】可以自己修改,打字注意用英文打字。
  2. (defun c:TES ( / &kw &kw1 ent os ss1 ss2 x)
  3. (vl-load-com)
  4. (setq os (getvar "osmode"))
  5. (princ "\n请选择要被打断的曲线");圆不能被打断于点排除
  6. (if (and (setq &kw (ssget '((0 . "LINE,LWPOLYLINE,ARC,HELIX,ELLIPSE,SPLINE,POLYLINE"))))
  7.           (princ "\n请选择打断曲线")
  8.           (setq &kw1 (ssget '((0 . "LINE,LWPOLYLINE,CIRCLE,ARC,HELIX,ELLIPSE,SPLINE,POLYLINE"))))
  9.      )
  10.   (progn;;1
  11.    (setvar "osmode" 0)
  12.    (setq ss1 '())
  13.    (while (setq ent (ssname &kw1 0))
  14.     (setq &kw1 (ssdel ent &kw1) ss1 (cons ent ss1))
  15.    )
  16.    (mapcar '(lambda (x) (vl-catch-all-apply 'ssdel (list x &kw))) ss1);排除重复选择的对象
  17.    (setq ss2 '())
  18.    (while (setq ent (ssname &kw 0))
  19.     (setq &kw (ssdel ent &kw) ss2 (cons ent ss2))
  20.    )
  21.    (while (setq ent (car ss2))
  22.     (setq ss2 (cdr ss2))
  23.     (dxd20 ent ss1)
  24.    )
  25.    (setvar "osmode" os)
  26.   );progn
  27. )
  28. (princ)
  29. )

  30. ;判断
  31. (defun apd20 (ent p1 / ent p1 pt1 pt2 pt3)
  32. (setq pt1 (vlax-curve-getStartPoint ent) pt2 (vlax-curve-getEndPoint ent) pt3 (vlax-curve-getclosestpointto ent p1))
  33. (if (and (> (distance p1 pt1) 0.0001)
  34.           (> (distance p1 pt2) 0.0001)
  35.           (< (distance p1 pt3) 0.0001)
  36.       )
  37.       pt3
  38.       nil
  39. )
  40. )


  41. ;vlax-erased-p
  42. ;打断曲线于点
  43. (defun dxd20 (ent1 ss / kkk ent1 ent2 ent3 ent8 n p1 pt1 pt2 ss ss3 ss4 ss5 ss6)
  44. (setq ss5 (list ent1) ent8 (entlast))
  45. (while (setq ent2 (car ss))
  46.   (setq ss (cdr ss))
  47.   (setq ss4 '() n -1)
  48.   (while (setq ent3 (nth (setq n (1+ n)) ss5)) (if (= (vlax-erased-p ent3) nil) (setq ss4 (cons ent3 ss4))))
  49.   (setq n -1 ss6 '())
  50.   (while (setq ent3 (nth (setq n (1+ n)) ss4));计算出所有点
  51.    (if (vlax-curve-isClosed ent3)
  52.     (setq kkk nil)
  53.     (setq kkk t pt1 (vlax-curve-getStartPoint ent3) pt2 (vlax-curve-getEndPoint ent3))
  54.    )
  55.    (if (setq ss3 (acet-geom-intersectwith ent3 ent2 0))
  56.     (progn
  57.      (while (setq p1 (car ss3))
  58.       (setq ss3 (cdr ss3))
  59.       (if kkk
  60.        (setq ss6 (cons p1 ss6))
  61.        (if (and (> (distance p1 pt1) 0.0001) (> (distance p1 pt2) 0.0001)) (setq ss6 (cons p1 ss6)) )
  62.       )
  63.      );while
  64.     )
  65.    )
  66.   )
  67.   (while (setq p1 (car ss6))
  68.    (setq ss6 (cdr ss6) ss4 '() n -1)
  69.    (while (setq ent3 (nth (setq n (1+ n)) ss5)) (if (= (vlax-erased-p ent3) nil) (setq ss4 (cons ent3 ss4))))
  70.    (while (setq ent3 (car ss4))
  71.     (setq ss4 (cdr ss4))
  72.     (if (apd20 ent3 p1)
  73.      (progn
  74.       (setq p1 (vlax-curve-getclosestpointto ent3 p1))
  75.       (command "BREAK" (list ent3 p1) p1)
  76.      )
  77.     )
  78.    );while
  79.    (while (setq ent8 (entnext ent8)) (setq ss5 (cons ent8 ss5)) )
  80.    (setq ent8 (entlast))
  81.   )
  82. )
  83. )
请帮忙处理一下bug
发表于 2023-6-12 02:40:53 | 显示全部楼层
我试了 可以打断,你是怎么用的
 楼主| 发表于 2023-6-12 13:11:13 | 显示全部楼层
小鸟 发表于 2023-6-12 02:40
我试了 可以打断,你是怎么用的

你什么版本呢?我在2020下出错!
发表于 2023-6-12 18:09:53 | 显示全部楼层
meja 发表于 2023-6-12 13:11
你什么版本呢?我在2020下出错!

2018版的

发表于 2023-6-12 18:18:57 来自手机 | 显示全部楼层
meja 发表于 2023-6-12 13:11
你什么版本呢?我在2020下出错!

可能是高版本command问题 ,改成command-s试试。
 楼主| 发表于 2023-6-12 19:37:23 | 显示全部楼层
小鸟 发表于 2023-6-12 02:40
我试了 可以打断,你是怎么用的

输入的字符串有缺陷。不知道哪个地方卡住了,可否整理下发上来
发表于 2023-6-12 23:03:31 | 显示全部楼层
meja 发表于 2023-6-12 19:37
输入的字符串有缺陷。不知道哪个地方卡住了,可否整理下发上来

你截图看看 ,我试了都可以打断的
 楼主| 发表于 2023-6-18 21:38:06 | 显示全部楼层
小鸟 发表于 2023-6-12 23:03
你截图看看 ,我试了都可以打断的

你把你的打包发上来
发表于 2023-6-24 18:45:47 | 显示全部楼层
meja 发表于 2023-6-18 21:38
你把你的打包发上来

完全没有改动,直接就可以用了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 22:20 , Processed in 0.185405 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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