Jadeous 发表于 2022-7-6 06:45:12

口齿不清请调整。。。

我用这个lsp对我使用的块中的文本属性重新编号。我喜欢Lsp的工作方式。问题是,它只允许我一次更改一个块属性。我希望能够同时更换几个。请帮忙。
雷纳姆。lsp

uddfl 发表于 2022-7-6 06:51:28

你说的同时有几个是什么意思?比如用窗口选择一组块?如果这就是你想做的,程序怎么知道数字的顺序?

Jadeous 发表于 2022-7-6 06:54:07

我需要它以与重新编号命令相同的方式运行。我想有选择,要么选择一个在一个特定的顺序或随机分组一次。

Lee Mac 发表于 2022-7-6 06:56:58

试一试-很快修改~预计会出现错误
 
<p>(defun c:renum    (/ oldPref oldSuf oldStart curText curStr vlaObj keepText)</p><p> </p><p>(vl-load-com)</p><p> </p><p>(defun TTC_Paste(pasteStr keepText / sslst vlaObj)</p><p>    (if    (setq ss (ssget))</p><p>      (progn</p><p>    (setq sslst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))</p><p>    (foreach ent sslst</p><p>    (cond</p><p>         ((= "DIMENSION" (cdr (assoc 0 (entget ent))))</p><p>      (setq vlaObj (vlax-ename->vla-object ent)</p><p>            oldStat (vla-get-Measurement vlaObj))</p><p>      (if keepText</p><p>          (if (= (vla-get-TextOverride vlaObj) "")</p><p>            (setq pasteStr</p><p>               (strcat</p><p>               pasteStr</p><p>               (rtos oldStat (vla-get-UnitsFormat vlaObj) (vla-get-PrimaryUnitsPrecision vlaObj))))</p><p>            (setq pasteStr (strcat pasteStr (vla-get-TextOverride vlaObj)))))</p><p>      (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-TextOverride (list vlaObj pasteStr)))</p><p>          (princ "\n Can't paste. Object may be on locked layer. "))) ; end condition #1</p><p>         ((= "ACAD_TABLE" (cdr (assoc 0 (entget ent))))</p><p>      (setq vlaObj (vlax-ename->vla-object ent))</p><p>      (if keepText</p><p>          (setq pasteStr (strcat pasteStr (vla-get-TextString vlaobj))))</p><p>      (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-TextString (list vlaObj pasteStr)))</p><p>          (princ "\nError. Can't paste text. ")</p><p>          (entupd ent))) ; end condition # 2</p><p>         ((= "INSERT" (cdr (assoc 0 (entget ent))))</p><p>      (princ "\nCan't paste to block's DText or MText. ")) ; end condition #3</p><p>         ((member (cdr (assoc 0 (entget ent))) '("TEXT" "MTEXT" "ATTRIB" "ATTDEF")) ; end and</p><p>      (setq vlaObj (vlax-ename->vla-object ent))</p><p>      (if keepText</p><p>          (setq pasteStr (strcat pasteStr (vla-get-TextString vlaobj))))</p><p>      (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-TextString (list vlaObj pasteStr)))</p><p>          (princ "\nError. Can't pase text. "))) ; end condition #4</p><p>         (T (princ "\nCan't paste. Invalid object. ")) ; end condition #5</p><p>         ))</p><p>         T) ; end progn</p><p>      nil) ; end if</p><p>    ) ;_TTC_PASTE</p><p> </p><p> </p><p>(setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object)))</p><p>(vla-StartUndoMark aDoc)</p><p>(if (not rnm:Pref)</p><p>    (setq rnm:Pref ""))</p><p>(if (not rnm:Suf)</p><p>    (setq rnm:Suf ""))</p><p>(if (not rnm:Start)</p><p>    (setq rnm:Start 1))</p><p>(setq    oldPref   rnm:Pref</p><p>    oldSuf   rnm:Suf</p><p>    oldStart rnm:Start) ; end setq</p><p>(setq rnm:Pref (getstring T (strcat "\nType prefix: : ")))</p><p>(if (= "" rnm:Pref)</p><p>    (setq rnm:Pref oldPref))</p><p>(if (= " " rnm:Pref)</p><p>    (setq rnm:Pref ""))</p><p>(setq rnm:Suf (getstring T (strcat "\nType suffix: : ")))</p><p>(if (= "" rnm:Suf)</p><p>    (setq rnm:Suf oldSuf)) ;(if(= " " rnm:Suf)(setq rnm:Suf ""))</p><p>(setq    rnm:Start (getint (strcat "\nEnter start number </p><p>                  (itoa rnm:Start)</p><p>                  ">: ")))</p><p>(if (null rnm:Start)</p><p>    (setq rnm:Start oldStart))</p><p>(initget "Yes No Ä</p>

Jadeous 发表于 2022-7-6 07:01:01

这就是它告诉我的。我只需要更改块内的属性(中间数字),我将附加我正在使用的块。打开然后爆炸一次。

点块。图纸

Lee Mac 发表于 2022-7-6 07:02:55

当“找不到视口”这个短语在您正在运行的LISP中不起作用时,我不明白您怎么会得到这样的回报——在我看来,这听起来像是以前LISP的错误定义。
 
我只是很快地看了看——我会再看一眼的。
 
编辑;你能用2000年的格式把这张图贴出来吗?这里只能用04年

Lee Mac 发表于 2022-7-6 07:06:09

我知道问题是什么-LISP使用nentsel提供有关属性和属性定义的信息,如果在块中选择,则提供文本。如果不进行更多编码,则无法使用ssget方法轻松获得该信息。

Jadeous 发表于 2022-7-6 07:08:14

“未找到视口”不是由于该命令引起的。这是在renum命令之后的命令。我只是滚动到肾素序列。这是ACAD 2000中的块
ACAD-2000-点块。图纸

Lee Mac 发表于 2022-7-6 07:11:07

这些点有后缀吗?

Jadeous 发表于 2022-7-6 07:15:42

对我目前使用的“renum”lisp提供了添加后缀和preffix或两者的选项。我正在处理的当前块有一个预修复,没有后缀。我永远不知道什么时候我会需要一个或另一个。
页: [1] 2
查看完整版本: Lisp程序请调整。。。