wanhongron 发表于 2011-12-14 01:05:02

★大侠高抬贵手,框选多段线顶点延伸

工作上经常用到顶点延伸功能,由左图框选顶点实现右图效果,请高手写一段代码实现,不胜感激!

tianbeiyuan 发表于 2019-11-23 21:25:02

学习一下好看东西

byghbcx 发表于 2011-12-14 08:40:58

思路:1、框选得到多义线
      2、求出多义线顶点坐标
      3、判断在框选范围内的顶点
      4、循环对在框选内的顶点进行原点打断,再选择过这点的对象,分别对该对象更新顶点坐标。

Andyhon 发表于 2011-12-14 12:19:39

;;; No error check
;;; For test only
(defun C:Test ()
   (setq ss (ssget '((0 . "LINE")))
         nn (sslength ss)
      pts (acet-geom-ss-extents ss nil)
         pa (carpts)
         pc (cadr pts)
         pb (list (car pc) (cadr pa))
         ee (ssname (ssget "w" pa pb '((0 . "LINE"))) 0)
         dd (getdist "\n 加长: ")
   )
   (entdel ee)
   
   (command "change" pa "" (mapcar '- pa (list 0 dd)))
   (setq e1 (ssname (ssget pa '((0 . "LINE"))) 0))
   (entdel e1)
   
   (command "change" pb "" (mapcar '- pb (list 0 dd)))
   (setq e2 (ssname (ssget pb '((0 . "LINE"))) 0))
   (entdel e2)
   
   (entdel ee)
   (command "change" pa "" (mapcar '- pa (list dd 0)))
   (command "change" pb "" (mapcar '+ pb (list dd 0)))
   (entdel e1)
   (entdel e2)
)

wanhongron 发表于 2011-12-14 18:37:54

不行啊,不能适应多段线,也不能伸长,只是删除了一根直线,效果见右图。

【KAIXIN】 发表于 2011-12-14 18:39:45

如果是直线的话就好办的多

yjr111 发表于 2011-12-14 22:43:47

1、框选打断得到图元
2、用length命令分别延伸即可

wanhongron 发表于 2011-12-15 00:00:37

高手能帮我写代码吗?

yjr111 发表于 2011-12-15 00:05:57

你把要求达到的功能说得再清楚一点,我可以试试

wanhongron 发表于 2011-12-15 00:55:03

麻烦大侠了!在多段线上框选我需要的顶点,由顶点反向伸长一段距离,完成后所有线段还保持多段线性质。

Andyhon 发表于 2011-12-15 14:29:04

...完成后所有线段还保持多段线性质...
命題不清
如何的保法?
Jpg 換成 Dwg 如何
页: [1] 2
查看完整版本: ★大侠高抬贵手,框选多段线顶点延伸