通过LISP编辑多行文字
我到处寻找LISP来通过LISP编辑多行文字,但只找到了一个(谢谢Mike Weaver),这几乎就是我想要的。它张贴在下面,但我希望它能自动选择一段我指定的多行文字(通过ssget)。我已经修改了这段代码,但对VisualLisp理解不够,无法知道它出错的原因。。。有什么帮助吗?原件:
(defun c:mtval( / ent objmtext stroldval
strnewval)
(setq
ent (car (entsel))
objMText
(vlax-ename->vla-object ent)
strOldval (vlax-get-property objMText
"TEXTSTRING")
strnewval (getstring T (strcat "\nNew text value<"
stroldval ">: "))
)
(if
strnewval
(vlax-put-property objmtext "TEXTSTRING"
strnewval)
)
(vlax-release-object objmtext)
)
我的修改代码:
(defun c:mtval( / getmtext objMText strnewval)
(setq getmtext (ssget "_X" '((0 . "MTEXT")(1 . "TEST")))
objMText (vlax-ename->vla-object (entlast))
strnewval (getstring T "Enter New Text: ")
)
(if strnewval (vlax-put-property objmtext "TEXTSTRING" strnewval)
)
(vlax-release-object objmtext)
) 请注意,文本字符串区分大小写。
好了,伙计。
(defun c:test (/ new ss)
; Tharwat 24.02. 2010
(if (and (setq new (getstring T "Enter New Text: "))
(setq ss (ssget "_X" '((0 . "MTEXT") (1 . "test"))))
)
((lambda (i / ss1 e)
(while
(setq ss1 (ssname ss (setq i (1+ i))))
(entupd
(cdr
(assoc
-1
(entmod
(subst (cons 1 new) (assoc 1 (setq e (entget ss1))) e)
)
)
)
)
)
)
-1
)
(Alert
"\n Your replaced text is not found in the drawing....."
)
)
(princ)
)
塔瓦特 这行不通。。。它要求我选择一个对象,然后将其隔离。。。。 (setq getmtext (ssget "_X" '((0 . "MTEXT")(1 . "TEST"))) <-Select all MText with "TEST" value
objMText (vlax-ename->vla-object (entlast)) <- converts the last created object to a vla-object (not what you want to do here)
塔瓦特 @艾伦:也许我不理解你。我正在做ssget来“抓取”我画上的多行文字,并认为我需要将其转换为vla obect。多行文字的属性(文本字符串)包含哪些内容?vla get activeselectionset不是函数。
@Tharwat:同样的结果,它要求“在当前图形或外部参照中选择对象”。。。然后将其隔离。为什么会这样?它没有要求我输入任何文本或任何东西。。。
我感谢你们两位的帮助。 我已经为您发布的两个例程在Arch中正常工作。Autocad,但我没有MEP cad来检查这些代码。
不管怎样,你能用你的版本在例程失败后复制你的命令行吗?
塔瓦特 这不是真正的“失败”,只是没有做我想做的。。。我想知道你的代码中有什么依赖于ACAD版本。。。
命令:测试
选择当前图形或外部参照中的对象:
选择当前图形或外部参照中的对象:
再生模型。 哈哈,这是一个完全不同的节目。确保您实际上正在加载例程。 笑死我了。。。。世界跆拳道联盟。。。我已经正确地加载了它,并且非常确定我没有任何名为TEST的命令。。。。但我把这个命令改成了其他命令,它现在似乎起作用了。。。。非常感谢Tharwat!!!
我仍然很好奇我向你提出的问题,艾伦,只是为了让我能更好地理解它。
你能把你所做的改变发布到你的MEP cad上吗?
只是好奇其他cad版本。
页:
[1]
2