边界修剪路线
大家好,我只是想知道为什么这个嘴唇不起作用,请看附件中的图片,路径必须像这样,选择点1到点2作为矩形边界,它将在我打开的矩形窗口上修剪,代码如下:
(defun c:cut () (graphscr)
(setvar "osmode" 31743)
(setvar "cmdecho" 0)
(initget 32)
(setq pnt1 (getpoint "First corner of rectangle: ")) (terpri)
(setq pnt3 (getcorner "Second corner: " pnt1 ))(terpri)
(setq pnt2 (list (car pnt1) (cadr pnt3)))
(setq pnt4 (list (car pnt3) (cadr pnt1)))
(command "Pline" pnt1 pnt2 pnt3 pnt4 "c")
(setq el (entlast))
(repeat 3
(setq pt1 (list (+ (car pnt1) 0.05)(+ (cadr pnt1) 0.05)))
(setq pt2 (list (+ (car pnt2) 0.05)(- (cadr pnt2) 0.05)))
(setq pt3 (list (- (car pnt3) 0.05)(- (cadr pnt3) 0.05)))
(setq pt4 (list (- (car pnt4) 0.05)(+ (cadr pnt4) 0.05)))
(command "trim" el "" "f" pt1 pt2 pt3 pt4 pt1 "" "" )
)
(command "erase" "w" pnt1 pnt3 "" )
(command "erase" el "" )
(setvar "cmdecho" 1)
(setvar "osmode" 15359)
(princ)
)
cls
我不明白为什么它会删除所有选中的行:哎呀:请在这条路线上帮助我,
提前感谢大家,
你试过了吗? 是的,JohnM,我已经试过了,我认识到当第一个角点拾取从左下到右上第二个角点拾取时,它工作正常,但为什么当我拾取右侧或左上角到选定边界的第一个角点时,该线将被删除,
非常感谢JohnM,我将在代码中添加快照:D 这可能是由于你的拣选箱的大小-大卫
此外,隐含选择也有自己的规则。
快速。。。
(defun c:cut (/ p1 p2 ofd clst ll lr ur ul ent trimpts)
(graphscr)
(setvar "cmdecho" 0)
(setq p1 (getpoint "\nFirst corner of rectangle: "))
(initget 32)
(setq p2 (getcorner "\nSecond corner: " p1))
(if (and p1 p2)
(progn
(command "_.undo" "begin")
(setq ofd0.05 ; offset distance
clst (list p1 p2)
)
;; get lower left corner
(setq ll (list (apply 'min (mapcar 'car clst))
(apply 'min (mapcar 'cadr clst))
)
)
;;get upper right corner
(setq ur (list (apply 'max (mapcar 'car clst))
(apply 'max (mapcar 'cadr clst))
)
)
(setq lr (list (car ur) (cadr ll)))
(setq ul (list (car ll) (cadr ur)))
(command "Pline" "_non" ll "_non" lr "_non" ur "_non" ul "c")
(setq ent (entlast))
(setq trimpts (list
(polar ll (* pi 0.25) ofd)
(polar lr (* pi 0.75) ofd)
(polar ur (* pi 1.25) ofd)
(polar ul (* pi 1.75) ofd)
(polar ll (* pi 0.25) ofd)
)
)
(repeat 2
(command "trim" ent "" "f")
(foreach x trimpts (command "_non" x))
(command "" "")
)
(if (setq x (ssget "wp" trimpts))
(command "erase" x "")
)
(entdel ent)
(command "_.undo" "end")
)
)
(setvar "cmdecho" 1)
(princ)
) 谢谢CAB,
你的路线很完美,正是我需要的,
再次感谢各位朋友
页:
[1]