自动选择文本
大家好。我对写作不熟悉。lisp例程,这是我的第一篇文章。我对txt2mtxt例程的版本有问题。我希望能够在不手动选择文本的情况下运行下面列出的例程。我希望这一切都是自动化的。这是可能的还是我完全不可能。这是我到目前为止掌握的代码。(defun Merge()
(if(and(setq ss(ssget’((0。“多行文字,文本”))));同时选择多行文字和数据文字
(>(sslength ss)1);检查是否选择了多个
) ;_ 结束和
(程序
(setq n 1;初始化计数器
en(ssname ss 0);选择第一个
ed(entget en);获取其DXF数据
txt(cdr(assoc 1 ed));获取其textvalue
) ;_ setq结束
(如果(=(cdr(assoc 0 ed))“文本”);如果第一个是DText
(程序
(命令“txt2mtxt”en“”);将其转换为多行文字
(setq obj(vlax ename->vla object(entlast)))
(vlax put property obj‘LineSpacingFactor 1)
(vlax put property obj‘LineSpacingDistance 0.25)
(vlax put property obj’LineSpacingStyle 2)
(setq en(entlast));获取新的多行文字
) ;_ 程序结束
) ;_ if结束
(setq eo(vlax ename->vla object en));获取第一个文本的ActiveX对象
(虽然(
(setq en(ssname ss n);获取第n个文本
ed(entget en);获取其DXF数据
) ;_ 集合结束
(setq txt(strcat txt“\\P”(cdr(assoc 1 ed)));将其字符串追加到第一个文本
(entdel en);删除第n个文本
(setq n(1+n));增加计数器
) ;_ while结束
(vla put TextString eo txt);将第一个文本修改为串联字符串
(命令“_.justifytext”pause““ML”)
) ;_ 程序结束
) ;_ if结束
) 欢迎来到论坛。
它来了。
在代码中更正它。
(if (and (setq ss (ssget "_x" '((0 . "MTEXT,TEXT"))))
塔瓦特 Thanx。如果我不想要图纸中的所有文本,而只是特定的文本,该怎么办。 因此,您将返回到第一个代码,因为它是单选的。 阅读此内容(如何发布代码)
http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南 您也可以考虑这些:
[列表]
[*]foreach,如果不是vlax for
[*]vla删除
[*]vla get textstring
[*]vla put连接点
[*]vla put行间距因子
[*]vla put线间距距离
[*]vla put线间距样式
此外,确保在例程结束时删除选择集:
(vla-delete ss)
您需要(setq ss(ssget“_x”'((0。“多行文字,文本”)))
示例将返回T
(wcmatch (strcase "hi old text!") "*OLD TEXT*")
使用entmod 使用entmod的目的是什么?
有关更多信息,请参阅VLIDE帮助。 我知道我现在真的很笨,但是我该如何在我的代码中写入wcmatch和entmod呢?
页:
[1]
2