hastan
发表于 2015-7-27 18:44:02
hastan
发表于 2015-8-2 20:00:47
llsheng_73
发表于 2015-8-4 13:32:08
楼主是先用多线段把那些点连起来了,多线段会有一个统一高程(捕捉到的第一个点的高程),而现在楼主需要线上每一点都有正确高程,并且希望一次选中多条这样的多线段进行处理,是这样不?
hastan
发表于 2015-8-4 19:56:14
llsheng_73
发表于 2015-8-4 20:35:56
本帖最后由 llsheng_73 于 2015-8-8 08:32 编辑
那样的话,可以依次用多线段的顶点坐标作为过滤条件找到该顶点位置的高程值(比如高程点),全部取出后用这些点绘制polyline,删除该多线段
当然这些高程点实际上可能用多线段顶点表进行ssget"F"一次性取出来(不过需要排除不在线上的点)
当然也可以直接根据顶点平面坐标去查找到高程
这样循环处理完所有多线段
(defun c:tt(/ pt p h)
(setq p(mapcar'(lambda(x)(cdr(assoc 10(entget x))))(sstoes(ssget"X"'((0 . "INSERT")(8 . "99")(2 . "99"))))))
(foreach e(sstoes(ssget'((0 . "lwPolyline")(8 . "94213"))))
(MKPOLYLINE(cons(setq en(entget e)
h(cdr(assoc 38 en))
pt(mapcar'(lambda(x)
(if(setq y(vl-remove-if-not'(lambda(y)(equal(mapcar'+'(0 0)y)x 1e-8))p))(car y)(list(car x)(cadr x)h)))
(mapcar'cdr(vl-remove-if'(lambda(x)(/=(car x)10))en))))
(cons(+(logand(cdr(assoc 70 en))1)8)(subst 256'nil(mapcar'(lambda(x)(cdr(assoc x en)))'(8 62))))))
;;(entdel e);;;如果不需要保留原多线段,可加上此句删除它
)
)
(defun MKPOLYLINE(arg / e);;arg(pts 是否闭合 layer color)
(setq e(entmakex(cons'(0 . "POLYLINE")(mapcar'cons'(70 8 62)(cdr arg)))))
(foreach x(car arg)
(entmake(list'(0 . "VERTEX")'(70 . 32)(cons 10 x))))
(entmake '((0 . "SEQEND")))
e)
(defun SstoEs(ss / a lst)
(if ss(progn(setq a -1)(repeat(sslength ss)(setq lst(cons(ssname ss(setq a(1+ a)))lst))))))
hastan
发表于 2015-8-4 22:50:06
llsheng_73
发表于 2015-8-4 22:55:34
hastan 发表于 2015-8-4 22:50 static/image/common/back.gif
出現錯誤no function definition: PLINEXY我的圖層是94213要怎麼修改
PLINEXY在最后啊,另外图层,颜色已经考虑进去了
hastan
发表于 2015-8-4 23:09:28
hastan
发表于 2015-8-4 23:20:17
hastan
发表于 2015-8-5 06:41:41