如何把多边形顶点从p点移动到q点?
如何把多边形顶点从p点移动到q点?就是移动一个顶点。。。。。。 就是一个顶点的坐标为p,把坐标值更改为q后,把图形新坐标更新下。
;;子程序,由一条pline的参数生成一条新的pline,用两个新点替换掉原pline中两个旧点
;;参数:
;;ent:原多段线的图元名
;;pn1、pn2:两个新点的三维坐标
;;pt1x、pt2x:原多段线中两个相应点的三维坐标
(defun makepline (ent pn1 pn2 pt1x pt2x / entx ent1 ent2)
(setq entx (entget ent))
(setq pn1 (reverse (cdr (reverse (append '(10) pn1)))))
(setq pn2 (reverse (cdr (reverse (append '(10) pn2)))))
(setq pt1x (reverse (cdr (reverse (append '(10) pt1x)))))
(setq pt2x (reverse (cdr (reverse (append '(10) pt2x)))))
(setqent1 (cddddr (reverse (member (assoc 39 entx) (reverse entx))))
ent2 (cdr (member '(39 . 0.0) entx))
) ;_ 结束setq
(setq ent2 (subst pn1 pt1x ent2))
(setq ent2 (subst pn2 pt2x ent2))
(entmake (append '((0 . "LWPOLYLINE")) (append ent1 ent2)))
(princ)
) ;_ 结束defun
换一个点不好玩,给你个换两个点的,愿意的话自己改一下: 算了帮你改改吧:
;;子程序,由一条pline的参数生成一条新的pline,用一个新点替换掉原pline中一个旧点
;;参数:
;;ent:原多段线的图元名
;;pn1:一个新点的三维坐标
;;pt1x:原多段线中一个相应点的三维坐标
(defun makepline (entx pn1 pt1x/ entx ent1 ent2)
(setq entx (entget ent))
(setq pn1 (reverse (cdr (reverse (append '(10) pn1)))))
(setq pt1x (reverse (cdr (reverse (append '(10) pt1x)))))
(setq ent1 (cddddr (reverse (member (assoc 39 entx) (reverse entx))))
ent2 (cdr (member '(39 . 0.0) entx))
) ;_ 结束setq
(setq ent2 (subst pn1 pt1x ent2))
(entmake (append '((0 . "LWPOLYLINE")) (append ent1 ent2)))
(princ)
) ;_ 结束defun
回复 mandala 的帖子
哈哈,碰到好心人了,真幸运啦。。。。
这么晚还回帖,而且程序都帮忙改好了~~~^_^~~~
页:
[1]