明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1292|回复: 8

[已解答] 打断PLINE,

[复制链接]
发表于 2016-4-4 21:18 | 显示全部楼层 |阅读模式
见贴图,希望一个小的LSP程序,选择一个PLINE后,如果有直线段,则最长的直线段打断,变成一个开口的PLINE.谢谢!







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-4-4 23:25 | 显示全部楼层
本帖最后由 tryhi 于 2016-4-4 23:59 编辑
  1. ;;打断最长的直线边
  2. ;;BY-tryhi大海
  3. (defun c:tt (/ ens)
  4.         (command  "UNDO" "be")
  5.         (setq ens (try-ss2EnList(ssget '((0 . "LWPOLYLINE")(-4 . "&")(70 . 1)))))
  6.         (foreach n ens (brtt n))
  7.         (command "UNDO" "end")
  8. )
  9. (defun brtt (en / en enl enlst enlst-l llst ss ss1)
  10.         (setq enl(entlast))
  11.         (command "_explode" en)
  12.         (setq ss0(try-ssend enl))
  13.         (command "SELECT" ss "")
  14.         (setq ss(ssget "P" '((0 . "line")))
  15.                 enlst(try-ss2EnList ss)
  16.                 Llst(mapcar '(lambda(e)(vla-get-Length(vlax-ename->vla-object e))) enlst)
  17.                 enlst-l(mapcar 'list enlst Llst)
  18.                 enlst-l (vl-sort enlst-l '(lambda(a b)(> (cadr a)(cadr b))))
  19.                 en1(car (car enlst-l))
  20.                 ss1(ssdel en1 ss0)
  21.         )
  22.         (command "_pedit" "m" ss1 "" "" "j" "" "")
  23.         (command "ERASE"(car (car enlst-l))"")
  24. )
  25. (defun try-ssend(en / ss)
  26.         (setq ss (ssadd))
  27.         (while (setq en(entnext en))
  28.                 (setq ss(ssadd en ss))
  29.         )
  30.         ss
  31. )
  32. (defun try-Enlist2ss(enlist / ss)
  33.         (setq ss (ssadd))
  34.         (foreach n (reverse enlist) (ssadd n ss))
  35. )
  36. (defun try-ss2EnList(ss / a en lst)
  37.         (setq a -1)
  38.         (if ss
  39.                 (while
  40.                         (setq en(ssname ss(setq a(1+ a))))
  41.                         (setq lst(cons en lst))
  42.                 )
  43.         )
  44.         (reverse lst)
  45. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
434939575 + 1 赞一个!

查看全部评分

发表于 2016-4-5 12:59 | 显示全部楼层
tryhi 发表于 2016-4-4 23:25

厉害。。。
 楼主| 发表于 2016-4-7 23:20 | 显示全部楼层
可以。
1:原意是想有个不用Command命令的lsp,通过对pline线的计算,来生成。
2:最长的直线,希望是切掉一段,二头各留一小段直边。
发表于 2016-4-8 08:19 | 显示全部楼层
前生 发表于 2016-4-7 23:20
可以。
1:原意是想有个不用Command命令的lsp,通过对pline线的计算,来生成。
2:最长的直线,希望是切掉一 ...

这个愿望应该是可以,你也是老革命了,想必可以办到。
发表于 2016-4-8 10:48 | 显示全部楼层
真高手,
发表于 2016-4-25 12:00 | 显示全部楼层
学下方法,,,
发表于 2016-4-25 12:06 | 显示全部楼层
这里不知道有没有问题,好像也不影响程序执行!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2016-4-27 02:45 | 显示全部楼层
没采用上面的方法,用了以前陈伯雄老师讲的一种选择+点的方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 12:39 , Processed in 1.398758 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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