我希望能够以类似抓地力的方式编辑 lwpolyline。当顶点彼此重叠时,autocad 希望拉伸两个顶点。我一次只想要一个。
到目前为止,我有这个:
- (defun c:polygrip (/)
- (setq x (entsel "\nPick polyline to edit near vertex: ")
- pt (osnap (cadr x) "nea")
- ent (entget (car x))
- pt_lst nil
- )
- (foreach z ent
- (if (= (car z) 10)
- (setq pt_lst (append pt_lst (list (cdr z))))
- )
- )
- (setq cnt 0)
- (repeat (- (length pt_lst) 1)
- (setq a (nth cnt pt_lst)
- b (nth (+ 1 cnt) pt_lst)
- )
- (if (= (+ (distance a pt) (distance pt b)) (distance a b))
- (setq seg (append seg (list a b cnt)))
- )
- (setq cnt (+ 1 cnt))
- )
- (if (> (distance (car seg) pt) (distance (cadr seg) pt))
- (setq vert (cadr seg))
- (setq vert (car seg))
- );; old vertex
- (setq vurt (getpoint "\n Pick new vertex. ")
- vurt (list (car vurt)(cadr vurt))) ;; new vertex
- (setq ent (subst (cons (cons 10 vurt) (cdr (member (cons 10 vert) ent))) (member (cons 10 vert) ent) ent))
- (entmod ent)
- (entupd (cdr (assoc -1 ent)))
- )
,我认为我的subst命令失败了。
但现在是午餐时间,罗伊饿了。
我知道代码很丑,但是在我运行它之后,我可以让它变得更漂亮。
谢谢 |