tmelancon 发表于 2022-7-5 17:04:06

哇看。。。我是一名初级程序员,仅仅因为“表面”上的结果似乎是合法的,就超越了自己,这是一个完美的例子。。谢谢你的投入,当涉及到这些例程时,我肯定需要训练自己,对所有事情进行双重检查。这段代码非常接近op想要的功能。我遇到的问题是,当我将其编辑为选中红色的所有多行文字时,我得到一个错误“错误:错误参数类型:VLA-OBJECT nil”。我确信这是一个交叉问题。

ronjonp 发表于 2022-7-5 17:09:31

试试这个。。它过滤掉当前粗体的文本,因此您不必在循环中签入
(defun c:hcb (/ _ps->ss o ss)
;; Use a function like this to convert a selection set to a list of items
(defun _ps->ss (ps)
   (if        (= 'pickset (type ps))
   (vl-remove-if 'listp (mapcar 'cadr (ssnamex ps)))
   )
)
(if (setq ss (_ps->ss (ssget ":L" '((0 . "mtext") (1 . "~{\\fArial|b1|i0|c0|p34;*")))))
   (foreach mtext ss
   (setq o (vlax-ename->vla-object mtext))
   (vla-put-textstring o (strcat "{\\fArial|b1|i0|c0|p34;" (vla-get-textstring o)))
   )
)
(princ)
)

tmelancon 发表于 2022-7-5 17:13:31

哇,是的,看看这个。希望你不介意,但我把你的代码稍微修改了一下,让OP完全符合他/她想要的:
 
gmmdinesh,将此代码复制并粘贴到主文件中。运行它,我想你会发现它正是你想要的。再加上罗恩增加的所有额外好处。希望你喜欢。

tmelancon 发表于 2022-7-5 17:18:10

gmmdinesh,这对你有用吗?请张贴任何一种方式,以便任何其他观看者都会知道。谢谢
页: 1 [2]
查看完整版本: 选择红色多行文字和纹理