etoxp 发表于 2012-10-13 17:08:54

请问如何用lisp获取三维多段线的顶点坐标?

请问如何用lisp获取三维多段线的顶点坐标?

VBALISPER 发表于 2012-10-14 00:32:41

(defun C:t2();3维多段线转2维多段线
        (VL-LOAD-COM)

        (setq AcadObject (vlax-get-acad-object))
        (setq AcadDocument (vla-get-ActiveDocument Acadobject))
        (setq mSpace (vla-get-ModelSpace Acaddocument))


        (setq ss1 (ssget '((0 . "POLYLINE"))));只选多段线
        (setq n (sslength ss1));得到选择集的图元数目
        (setq m 0);循环变量m置0,从选择集中的第1个文字改起

        (while (< m n);循环,可以一次改多个对象
        (setq ename (ssname ss1 m));将选择集转为图元名

        (setq ent_data (entget ename))
        (setq str_0 (cdr (assoc 0 ent_data)))
        (while (/= str_0 "POLYLINE")
        (setq ename (car (entsel "选择的实体非三维多段线,请重新选择!:")))
        (setq ent_data (entget ename))
        (setq str_0 (cdr (assoc 0 ent_data)))
        )
        (setq obj (vlax-ename->vla-object ename));将图元名转对象
        (setq pts (vlax-variant-value (vla-get-coordinates obj)))得到三维多段线的顶点,返回值是个数组

(setq listpts (vlax-safearray->list pts))

etoxp 发表于 2012-10-14 13:54:07

VBALISPER 发表于 2012-10-14 00:32 static/image/common/back.gif
(defun C:t2();3维多段线转2维多段线
        (VL-LOAD-COM)



我本意是想获得多段线各顶点的三维坐标,但多段线的顶点坐标都是二维的,多段线组码里有个210(挤出方向)貌似与此有关。不知道如何通过此二维坐标与挤出方向得到三维坐标。
请问大哥是否知道怎么弄?

自贡黄明儒 发表于 2012-10-14 16:53:22

http://bbs.mjtd.com/thread-96543-1-1.html
;;46.1

etoxp 发表于 2012-10-18 15:04:59

自贡黄明儒 发表于 2012-10-14 16:53 static/image/common/back.gif
http://bbs.mjtd.com/thread-96543-1-1.html
;;46.1

貌似不行啊,您提供的还是那种普通的获取多段线顶点的程序(获取的顶点坐标 是二维的)

etoxp 发表于 2012-10-18 20:54:23

etoxp 发表于 2012-10-18 15:04 static/image/common/back.gif
貌似不行啊,您提供的还是那种普通的获取多段线顶点的程序(获取的顶点坐标 是二维的)

;;46.2 [功能] pline,lwpline点坐标表
找到了,谢谢

技术工作室 发表于 2014-6-19 16:01:01

顶一个
页: [1]
查看完整版本: 请问如何用lisp获取三维多段线的顶点坐标?