自贡黄明儒 发表于 2022-2-24 11:09:30

封闭的多段线

最后非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)
)

czb203 发表于 2022-2-25 21:43:40

哦哦,谢谢,你这分享还挺别致的

LYC688 发表于 2022-9-4 03:08:47

错误: 参数类型错误: lentityp nil

xujinhua 发表于 2022-9-4 20:08:32

黄总出的都是精品

Bdj 发表于 2022-9-4 20:54:41

czb203 发表于 2022-2-25 21:43
哦哦,谢谢,你这分享还挺别致的

这也太别致了,哈哈哈,掐头直接进入
页: [1]
查看完整版本: 封闭的多段线