(setq tObj (mk_txt
(setq p (polar iPt (+ lAng (/ pi 2.)) (* oFac tSze)))
(vla-get-Layer (vlax-ename->vla-object ent))
)
)
最后,添加要本地化的变量,如下所示:
(defun c:LBLL (/ *error* mk_txt DOC ENT I IPT LANG OFAC P SPC SS TOBJ TSZE UFLAG lay) 像做梦一样工作!!非常感谢!不是为了给我带来好运,而是。。。
有没有两行或多行文字? 真为你高兴。
当然,只需在字符之前添加\\P,您就可以在新行中获取字符。 好的,太好了。太谢谢你了Tharwat!
这可能再次给我带来好运。如果我问的问题太多,请告诉我。
这应该是最后一个了。我希望LISP在选择文字高度后从该点循环。因此,他们先选择对象,然后选择标签位置,命令继续询问下一个对象,然后选择标签位置。while语句在哪里开始和结束? 我不太清楚你最后的要求。
我很抱歉。。。
当前,该例程在标记一条多段线后停止,用户必须再次初始化命令,再次选择文本高度,然后选择另一条多段线。
我希望该命令继续执行,直到用户退出。放置第一个标签后,它返回并要求下一条多段线进行标记,并指向放置标签,依此类推。这样他们可以一个接一个地走。选择“拾取标签位置”,然后选择“拾取标签位置”。
我希望这有意义。
嘿,这似乎不起作用。
(strcat“Lot”(substr lay 9)\\ PBlock(substr lay 5 3))
结果:标段1-298
我也尝试过:
(strcat“Lot”(substr lay 9)“\\P”“Block”(substr lay 5 3)
结果:相同。
我尝试了所有组合。似乎无法让它工作。我知道这很简单,但是。。。 为了重复,请考虑将While更改为在过程中更高的位置,您可能会更好地将While与entsel一起使用,而不是ssget,因为您一次只看一个对象。搜索这里有一个质心lisp的GP,它做什么你想要的。
<p>; something like this pick nothing to exit.</p><p>(while (setq obj (entsel "pick line arc pline etc or nothing <exit>"))</exit></p><p>(setq layname (vla-get-layer (vlax-ename->vla-object (car obj)))</p><p>....check valid object</p><p>.....</p><p>) ;endwhile</p> 试试这个:
7
页:
1
[2]