migs 发表于 2022-7-6 15:03:08

更改所有文本

你好
 
我是新来的,我在这里找到了一些日常生活的帮助。我的问题是,我正在寻找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
 
有什么想法吗?

ReMark 发表于 2022-7-6 15:08:43

确保所有图层都已打开,且没有冻结任何图层。试试常规。现在可以用了吗?

migs 发表于 2022-7-6 15:10:01

所有层当前都处于打开状态,没有冻结
 
仍然不工作

ReMark 发表于 2022-7-6 15:15:51

您没有对Lisp例程本身进行任何更改,对吗?问题可能是图纸本身吗?你能在另一张图上测试这个例程吗?
 
如果更改了例程,是否通过Visual Lisp编辑器运行它来验证功能?

migs 发表于 2022-7-6 15:17:41

没有对该例程本身进行任何更改
 
我改变了主意。mnu文件错误地对其进行了相应的修改,我试图使用此例程,但只是有问题,因为这让我现在非常困惑。
 
我试着在我的两个小时内完成这一程序。mnu自制工具栏,只需直接通过lisp(绕过)即可。mnu
 
我试着在几幅不同的画作中使用它,结果都是一样的

Lee Mac 发表于 2022-7-6 15:21:08

错误:错误的参数类型:lselsetp nil
 
通常意味着要处理的选择集为零。
 
确保在LISP中包含IF命令,以允许图形中不存在任何文本。
 
此外,如果使用多行文字而不是单行文字,则ssget函数的过滤器列表需要类似于:
 
(list (cons 0 "TEXT,MTEXT"))
 
希望这有帮助
 
 
PS-请将您的代码附在
[/ code] tags in future posts <p> </p><p>Lee</p>

ReMark 发表于 2022-7-6 15:22:53

李:是什么原因导致之前工作过的程序不起作用?

migs 发表于 2022-7-6 15:28:50

谢谢你的帮助,但还是设法解决了
在本部分中添加,而不是运行例程两次
并做了一些改动,尽管仍不确定问题是如何发生的
 
(list (cons 0 "TEXT,MTEXT")) [/ code]

Lee Mac 发表于 2022-7-6 15:32:43

很抱歉
tags [/ code] without the space

Lee Mac 发表于 2022-7-6 15:36:11

虽然编写速度快且未经测试,但它应该可以工作。
 

(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
查看完整版本: 更改所有文本