chenknight 发表于 2003-12-12 19:29:00

怎样用lisp获得多义线的各顶点以及各段是直线还是圆弧

大侠们,怎样用lisp获得多义线的各顶点以及各段是直线还是圆弧?!!

meflying 发表于 2003-12-12 20:07:00

顶点是组码10
组码43,0就是直线,不是0就是圆弧

janice 发表于 2003-12-13 17:41:00

还是基础知识呀

shicai 发表于 2003-12-17 15:45:00

列出顶点:
(defun c:test ()
(setq obj (car (entsel "\nSelect a Polyline: ")))
(foreach x (entget obj)
    (if (eq 10 (car x))(setq nlist (cons (cdr x) nlist)))
)
(reverse nlist)
)
列出所点击子段序号, 坐标及凸度:
(defun c:test ( / en j oldos ss)
(cond ((setq ent (entsel "Pick a polyline: "))
         (getSegment (vlax-ename->vla-object (car ent))
                     (cadr ent)
         )
      )
)
)
(defun getSegment (obj pt / cpt eParam stParam)
(cond ((setq cpt (vlax-curve-getClosestPointTo obj pt T))
         (setq eParam (fix (vlax-curve-getEndParam obj)))
       (setq bul (vla-getBulge obj (fix (vlax-curve-getParamAtPoint obj cpt))))
         (if (= eParam (setq stParam (fix (vlax-curve-getParamAtPoint obj cpt))))
         (setq stParam (1- stParam))
         (setq eParam (1+ stParam))
         )
         (list eParam (vlax-curve-getPointAtParam obj stParam)
               (vlax-curve-getPointAtParam obj eParam) bul)
      )
)
)
页: [1]
查看完整版本: 怎样用lisp获得多义线的各顶点以及各段是直线还是圆弧