Z标签
嗨,不知道你们这些聪明人能帮上什么忙吗。我在这里浏览了各种LISP来标记点的Z值,但它们都不是我想要的。。。我有一条三维多段线,我想在每个顶点添加一个标签,包括一个水平交叉(理想情况下使用我现有的交叉块),其中有一段文字居中于此,给出Z值。复杂的是,我希望我的十字架和它的标签在插入后是2D的(即Z值为0)。
有人觉得自己是个小挑战吗??提前谢谢,如果我解释得不够清楚或者你有其他问题,请告诉我。。。 你能寄一个样品吗? 我试图标注的内容的屏幕截图(黄线)。
是否可以附着带有三维多段线的图形,该多段线标记有要使用的现有交叉块? 谢谢你的关注,Tombu。
DWG文件随附三维多段线、水平交叉块和随附文本,用于实验!
3Dpl_ZLabel。图纸 虽然我不太了解所有细节,但这应该让你开始:
(defun c:zlabel (/ ss i en ed vn vd vl txt z)
(while (not ss)
(setq ss (ssget (list (cons 0 "POLYLINE")
(cons -4 "=")
(cons 70 8)))))
(setq i 0)
(while (setq en (ssname ss i))
(setq ed (entget en)
vn (entnext en)
vd (entget vn))
(while (= "VERTEX" (cdr (assoc 0 vd)))
(setq vl (cons (cdr (assoc 10 vd)) vl))
(setq vn (entnext vn)
vd (entget vn)))
(setq i (1+ i)))
(setq txt 0.075)
(foreach v vl
(setq z (caddr v))
(entmake (list (cons 0 "INSERT")
(cons 2 "LEV-50A")
(cons 8 "LEVELS")
(cons 10 v)
(list 210 0 0 1)))
(entmake (list (cons 0 "TEXT")
(cons 1 (rtos z 2 4))
(cons 6 "BYLAYER")
(cons 7 "STANDARD")
(cons 8 "LEVELS")
(cons 10 (polar v (* pi 0.5) (* txt 2)))
(cons 11 (polar v (* pi 0.5) (* txt 2)))
(cons 39 0)
(cons 40 txt)
(cons 41 1)
(cons 50 0)
(cons 51 0)
(cons 62 256)
(cons 71 0)
(cons 72 4)
(cons 73 0)
(list 210 0 0 1))))
(prin1))
-大卫 谢谢大卫,这是一个良好的开端,我真的很感谢你在这方面花费的时间!
几点意见:我想把数值保留在小数点后2位; 我还需要在插入后文本和块本身没有Z值(即,要手动执行此操作,我需要使用展平命令)。虽然我意识到它们最初需要使用与其相关的顶点的相同Z,但一旦文本包含多段线的值,是否可以自动将其展平? 一些提示:
RealToString转换
(rtos number 2 2)
参见sysvars lunits和luprec
将sysvar“DIMZIN”设置为0
点的极坐标计算
(polar (list (car v) (cadr v) 0) .....
将Z轴强制为0
-大卫 谢谢David-我会使用这些设置,看看我能得到什么 大卫,在你的帮助下,我改变了2dec places的设置。然而,恐怕我的lisp知识还不足以真正知道如何将文本和块强制到Z为0的位置。我做了一些尝试和错误尝试添加到您的代码行中,但没有任何成功。。。
页:
[1]
2