地信网论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

免费视频|新人指南|答学员问|投诉删帖

禁止上传涉密资料|赚取铜板|附件下载

查看: 120|回复: 2
收起左侧

[二次开发] 多线段删点lsp

[复制链接]

3

主题

180

铜板

0

好友

技术员

Rank: 3Rank: 3

积分
78
发表于 2018-11-26 17:42 | 显示全部楼层 |阅读模式
“家乡”主题作品征集大赛

马上注册地信网,享受更多功能,学习更多知识,成就人生精彩!

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

x
  1. ;wzg 修改于20150417
  2. (defun c:plsd ( / en HH:delLwpolyPt1)
  3. ;;示例(HH:delLwpolyPt1 (car(setq en(entsel))) (cadr en)) By 自贡黄明儒
  4. (defun HH:delLwpolyPt1 (en p / ENT L1 L2 P1)
  5.   (setq ENT (entget en))
  6.   (setq p (vlax-curve-getclosestpointto en (trans p 1 0)))
  7.   (setq p1 (HH:PickClosePt en p))                            ;离p最近的顶点
  8.   (setq p1 (list 10 (car p1) (cadr p1)))
  9.   (setq L2 (cdr (member p1 ent)))                            ;后段
  10.   (setq L1 (reverse (cdr (member p1 (reverse ent)))))            ;前段
  11.   (entmod (append L1 L2))
  12. )
  13. ;;164.19 [功能] 多段线所点击点最近的一个顶点  By 自贡黄明儒
  14. ;;示例(HH:PickClosePt (car(setq en(entsel))) (cadr en))
  15. (defun HH:PickClosePt (obj p / N P1 P2 PP)
  16.   (setq pp (vlax-curve-getclosestpointto obj (trans p 1 0))
  17.         n  (fix (vlax-curve-getparamatpoint obj pp))
  18.   )
  19.   (setq p1 (vlax-curve-getPointAtParam obj n))
  20.   (setq p2 (vlax-curve-getPointAtParam obj (1+ n)))
  21.   (if (< (distance pp p1) (distance pp p2))
  22.     p1    p2
  23.   )
  24. )
  25. ;;---------------------------
  26. (initget "  ")
  27. (setq en (entsel "\n点击要删除的多线段顶点..."))
  28. (cond
  29.         ((= en "")nil)
  30.         ((and en(wcmatch(cdr(assoc 0(entget(car en))))"LWPOLYLINE"))
  31.                 (HH:delLwpolyPt1 (car en) (cadr en))
  32.                  (c:plsd)
  33.         )
  34.         (t (c:plsd))       
  35. )
  36. (princ)
  37. )
复制代码