马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
今天做了一项工作,沿曲线有许多填充,要求在填充处打断。有几百个填充,临时写了个程序,很快完成了![](static/image/smiley/default/lol.gif)
![](source/plugin/imc_colorcode/images/loading.gif) - (defun C:w1 (/ E E0 EN N P1 P2 SS SS0)
- (_StartUndo *DOC*)
- (if (and
- (setq ss0 (LM:ssget "\n 选择曲线:" (list "_+.:E:S" '((0 . "LWPOLYLINE")))))
- (setq e0 (ssname ss0 0))
- )
- (while
- (setq ss (LM:ssget "\n 填充处画线:" (list ":S" '((0 . "HATCH")))))
- (repeat (setq n (sslength ss))
- (setq e (ssname ss (setq n (1- n))))
- (setq en (member '(2 . "SOLID") (entget e)))
- (setq p1 (cdr (assoc 10 en)))
- (setq p2 (vlax-curve-getClosestPointTo e0 p1))
- (command "._break" e0 "_non" (trans p2 0 1) "_non" (trans p2 0 1))
- ;;打断后,离曲线终点最近的曲线为e0,新产生的线由(entlast)取得
- ;;(vlax-curve-getEndPoint e0)
-
- ;(setq e0 (entlast))
- ;;记号
- ;;; (if (equal p1 p2 0.0001)
- ;;; (_EntmakeLine p1 (mapcar '+ p1 '(50000 0 0)) "0")
- ;;; (_EntmakeLine p1 p2 "0")
- ;;; )
- (entdel e)
- )
- )
- )
- (_EndUndo *DOC*)
- (princ)
- )
|