xiao88gang 发表于 2020-2-26 20:46:05

框选断开程序

这是一个非常实用的小工具,框选断开插件,在晓东上找的,很好用。
有一个地方要改一下,就是如何加一语句,实现不用选择物体,省去这一步。输入命令后,框选哪,就断开哪。哪位高手给修改一下。

(defun c:y (/ e p1 p2 pts pl ptl ss pt el)
(if (and (setq e (xdrx_entsel
       "\n请选择要断开的曲线: "
       '((0 . "*line,arc,circle,ellipse"))
   )
    )
    (setvar "osmode" 0)
    (progn (redraw (car e) 3) t)
    (setq p1 (getpoint "\n起点: "))
    (setq p2 (getcorner p1 "\n终点: "))
      )
    (progn
      (setq pts (list p1
      (list (car p1) (cadr p2) 0.)
      p2
      (list (car p2) (cadr p1) 0.)
)
   pl (apply 'xdrx_polyline_make (append pts '(t)))
   ptl (vl-sort (xdrx_entity_intersectwith (car e) pl)
    '(lambda (p1 p2)
       (< (xdrx_curve_getparamatpoint (car e) p1)
          (xdrx_curve_getparamatpoint (car e) p2)
       )
   )
)
      )
      (xdrx_setmark)
      (apply 'xdrx_curve_break (cons (car e) ptl))
      (setq ss (xdrx_getss)
   el (xdrx_pickset->ents ss)
      )
      (if (xdrx_point_isinside
   (cadr (xdrx_curve_getpoint (car e)))
   pl
   )
(progn
   (xdrx_object_swapid pt (car e))
   (xdrx_entity_delete (car e))
)
(foreach x el
   (if (xdrx_point_isinside
(cadr (xdrx_curve_getpoint x))
pl
       )
   (xdrx_entity_delete x)
   )
)
      )
      (xdrx_entity_delete pl)
    )
)
(princ)
)

start4444 发表于 2020-2-27 11:36:38

看看行不         

xiao88gang 发表于 2020-2-27 14:55:46

start4444 发表于 2020-2-27 11:36
看看行不

非常感谢,很好用。

烟盒迷唇 发表于 2020-2-27 09:09:35

这缺少很多自定义函数呢。

chenbh2 发表于 2020-3-7 20:42:00

start4444 发表于 2020-2-27 11:36
看看行不

这个好用!感谢!!

sunny_8848 发表于 2020-3-8 13:56:46

谢谢分享好程序

白色微風1991 发表于 2022-7-21 10:43:26

謝謝分享好程序

zmzk 发表于 2022-11-23 19:48:03

源码高深,有中文注释就好了

阳阳阳 发表于 2022-11-24 11:50:25

好东西,谢谢分享!!!

白色微風1991 发表于 2022-11-24 20:24:06

謝謝分享好程序
页: [1]
查看完整版本: 框选断开程序