ynhh 发表于 2022-9-24 00:18:57

修改多段线中任一点的Z值

修改多段线中任一点的Z值
请教
如何将二维多段线

指定任意一点
之后自动修改这个点的Z值
最后成为三维多段线
谢谢






wzg356 发表于 2022-9-24 00:18:58

本帖最后由 wzg356 于 2022-9-25 19:12 编辑

(defun c:tt3 ( / en en1 es es1 e10 e70)
(setq en (car(entsel)));LWPOLYLINE
(setq es(entget en))
(setq es1(vl-remove nil(mapcar '(lambda(x)(assoc x es))(list 8 62 6))))
(setq e10(vl-remove-if '(lambda(x)(/= 10(car x)))es))
(setq e38(cdr(assoc 38 es))K -1);原z
(setq e10(mapcar '(lambda(x)
      (setq k(1+ k))
      (cons 10(list(car x)(cadr x)(if(= k 0)10.5 e38))))
      ;第一个点z改为10.5
      (mapcar 'cdr e10))
)
;坐标表
(setq e70(cons 70(+ 8(rem(cdr(assoc 70 es))128))))
;生成3DPOLYLINE
(setq en1 (Entmake (append(list '(0 . "POLYLINE")e70)es1)))
(mapcar '(lambda(x)(entmake (list '(0 . "VERTEX") '(70 . 32)x)))e10)
(entmake '((0 . "SEQEND")))
(entdel en)
en1
)

wzg356 发表于 2022-9-24 07:10:32

先转换再修改,3dpl数据结构有点像块,各顶点各有图元名及属性

ynhh 发表于 2022-9-25 12:09:37

wzg356 发表于 2022-9-24 07:10
先转换再修改,3dpl数据结构有点像块,各顶点各有图元名及属性

谢谢您的指导
我想是把多段线各顶点坐标提出来
再把指定点与这些点的最近点找出来
之此修改此点的Z值
再替换之前的二维多段线坐标点
最后重新画三维模多段线
不知这思路对不对?
谢谢

ynhh 发表于 2022-9-25 23:10:42

wzg356 发表于 2022-9-25 16:01
(defun c:tt3 ( / en en1 es es1 e10 e70)
(setq en (car(entsel)));LWPOLYLINE
(setq es(entget en))


谢谢您 的指导
您这是改第一个点
我想的是指定多段线任意位置的顶点
还是谢谢您的热心指导
我再您这基本上在好好研究一下
谢谢您
页: [1]
查看完整版本: 修改多段线中任一点的Z值