我正在想办法让某种类型的脚本或宏选择一段文本,然后对其进行编辑并加粗。然而,我发现唯一有效的是 Qselect,它在我录制的宏中不起作用或在任何脚本(我知道的)中不起作用。寻找一个坚实的起点,以此为起点。
基本上到目前为止,我只是做了 QSelect>"MTEXT">MTEDIT>Ctrl+A>Ctrl+B
谢谢
您无法自动执行该QSELECT
命令。
您将需要使用ssget
带有模式字符串的函数"X"
(以自动查询图形数据库)和适当的过滤器列表来获得选择以定位所需的文本。
由于您在评论中提到了该TXT2MTXT
命令的使用,我将假设最初的“文本块”是单行文本 ( TEXT
)。
要获得单行文本的选择,您可以使用如下ssget
表达式:
(ssget "_X" '((0 . "TEXT")))
但是,这将返回驻留在所有图纸布局中的所有单行文本对象。
因此,您需要细化提供给ssget
函数的过滤器列表,以针对您需要的单行文本的特定实例。
这可以通过按布局过滤来实现,例如:
(ssget "_X" '((0 . "TEXT") (410 . "MyLayout")))
按层,例如:
(ssget "_X" '((0 . "TEXT") (8 . "MyLayer")))
或者通过任何其他属性或属性组合来唯一地将您的目标单行文本与绘图中的所有其他文本区分开来。
您可能希望参考我的ssget 参考ssget
,以获取有关使用过滤列表的更多信息和示例。
在获得适当的单行文本对象选择集后,您首先需要生成一个MTEXT
与每个单行文本对象具有相同属性的多行文本对象 ( ),因为TEXT
无法显示粗体。
为此,您需要遍历上面获得的选择集。我在关于选择集处理的教程中提供了几种方法来演示如何做到这一点。
对于每个TEXT
对象,您可以发出对TXT2MTXT
函数的调用(但请注意,由于这是一个 Express Tools 命令,您需要将其评估为 LISP 函数,而不是内置的 AutoCAD 命令),然后收集MTEXT
已添加到绘图数据库的对象(即使用entlast
&的组合entnext
)。或者,您可以MTEXT
使用从实体的 DXF 数据(使用)entmake
获得的函数和 DXF 属性生成实体- 这是我个人解决问题的方式。TEXT
entget
文本样式覆盖(例如粗体、斜体、下划线、上划线)使用嵌入在多行文本内容中的多行文本格式代码表示。
对于粗体文本,您需要使用以下 MText 格式代码包围现有的 MText 内容:
{\\f<FontFace>|b1|i0|c0|p18;<Existing Text Content>}
这里,b1
表示<FontFace>
将使用粗体版本。