最后非C or CL封闭的多段线,使用(vla-put-closed obj :vlax-true)封闭后,同最后C or CL封闭的多段线相比,使用entget(或者(vlax-get obj 'coordinates))会发现,前者要多一个点(组码10)。我试图用(vla-SetBulge obj x y)(vla-put-coordinates obj p)来更新失败了,不知道是什么原因?下面使用entmod来更新,则是成功的。供大家参考
 - ;;最后非C or CL封闭的多段线,使其真封闭。但用vla方法失败(vla-SetBulge obj x y)(vla-put-coordinates obj p)
- (defun HH-LPClosed (e / EN OBJ)
- (setq obj (vlax-ename->vla-object e))
- (if (and (equal (vla-get-closed obj) :vlax-false)
- (equal (vlax-curve-getStartPoint e) (vlax-curve-getEndPoint e) 1e-7)
- )
- (progn
- (vla-put-closed obj :vlax-true)
- (setq en (reverse (entget e)))
- (setq en (cdr (member (assoc 42 en) en)))
- (setq en (cdr (member (assoc 10 en) en)))
- (setq en (subst (cons 90 (1- (cdr (assoc 90 en)))) (assoc 90 en) en))
- (entmod (reverse en))
- )
- )
- )
- (defun c:a2 (/ E)
- (setq e (car (entsel)))
- (HH-LPClosed e)
- (princ)
- )
|