更改所有文本
你好我是新来的,我在这里找到了一些日常生活的帮助。我的问题是,我正在寻找lisp例程来选择所有文本并将其转换为我的标准(verdana)。上周五我的例行程序运行良好,它正确地转换了文本,但由于某种原因,今天我无法让它工作。
任何帮助都将不胜感激
(defun C:ALLTEXT(/entities len count ent ent\u data ent\u name new\u style\u name)
(命令“STYLE”“verdana”“verdana.ttf”“”“”“”)
(setq实体(ssget“X”'((0。“TEXT”))
len(sslength实体)
计数0
);setq公司
(虽然(
(setq ent(ssname实体计数)
ent_数据(entget ent)
ent\u名称(cdr(assoc 7 ent\u数据))
);setq公司
(setq新样式名称(cons 7“verdana”))
(setq ent_数据(subst new_style_名称(assoc 7 ent_数据)ent_数据))
(entmod ent_数据)
(setq计数(+计数1))
);虽然
;;;再次运行相同的例程,这次选择多行文字。
(setq实体(ssget“X”((0。“多行文字”))
len(sslength实体)
计数0
);setq公司
(虽然(
(setq ent(ssname实体计数)
ent_数据(entget ent)
ent\u名称(cdr(assoc 7 ent\u数据))
);setq公司
(setq新样式名称(cons 7“verdana”))
(setq ent_数据(subst new_style_名称(assoc 7 ent_数据)ent_数据))
(entmod ent_数据)
(命令“explode”ent)
(setq计数(+计数1))
);虽然
(普林斯)
);德芬
出现错误:错误:错误参数类型:lselsetp nil
有什么想法吗? 确保所有图层都已打开,且没有冻结任何图层。试试常规。现在可以用了吗? 所有层当前都处于打开状态,没有冻结
仍然不工作 您没有对Lisp例程本身进行任何更改,对吗?问题可能是图纸本身吗?你能在另一张图上测试这个例程吗?
如果更改了例程,是否通过Visual Lisp编辑器运行它来验证功能? 没有对该例程本身进行任何更改
我改变了主意。mnu文件错误地对其进行了相应的修改,我试图使用此例程,但只是有问题,因为这让我现在非常困惑。
我试着在我的两个小时内完成这一程序。mnu自制工具栏,只需直接通过lisp(绕过)即可。mnu
我试着在几幅不同的画作中使用它,结果都是一样的 错误:错误的参数类型:lselsetp nil
通常意味着要处理的选择集为零。
确保在LISP中包含IF命令,以允许图形中不存在任何文本。
此外,如果使用多行文字而不是单行文字,则ssget函数的过滤器列表需要类似于:
(list (cons 0 "TEXT,MTEXT"))
希望这有帮助
PS-请将您的代码附在
[/ code] tags in future posts <p> </p><p>Lee</p> 李:是什么原因导致之前工作过的程序不起作用? 谢谢你的帮助,但还是设法解决了
在本部分中添加,而不是运行例程两次
并做了一些改动,尽管仍不确定问题是如何发生的
(list (cons 0 "TEXT,MTEXT")) [/ code] 很抱歉
tags [/ code] without the space 虽然编写速度快且未经测试,但它应该可以工作。
(defun c:txtchng (/ ss)
(vl-load-com)
(if (and (tblsearch "STYLE" "VERDANA")
(setq ss (ssget "X" (list (cons 0 "TEXT,MTEXT")
(if (getvar "CTAB")(cons 410 (getvar "CTAB"))
(cons 67 (- 1 (getvar "TILEMODE"))))))))
(progn
(setq ss (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))
(foreach e ss
(entmod (subst (cons 7 "VERDANA") (assoc 7 e) e))))
(princ "\n<!> No Text Found or Verdana Style Doesn't Exist <!>"))
(princ))
说明无选择集、无文字样式以及多行文字和文字选项。
页:
[1]
2