口齿不清请调整。。。
我用这个lsp对我使用的块中的文本属性重新编号。我喜欢Lsp的工作方式。问题是,它只允许我一次更改一个块属性。我希望能够同时更换几个。请帮忙。雷纳姆。lsp 你说的同时有几个是什么意思?比如用窗口选择一组块?如果这就是你想做的,程序怎么知道数字的顺序? 我需要它以与重新编号命令相同的方式运行。我想有选择,要么选择一个在一个特定的顺序或随机分组一次。 试一试-很快修改~预计会出现错误
<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> 这就是它告诉我的。我只需要更改块内的属性(中间数字),我将附加我正在使用的块。打开然后爆炸一次。
点块。图纸 当“找不到视口”这个短语在您正在运行的LISP中不起作用时,我不明白您怎么会得到这样的回报——在我看来,这听起来像是以前LISP的错误定义。
我只是很快地看了看——我会再看一眼的。
编辑;你能用2000年的格式把这张图贴出来吗?这里只能用04年 我知道问题是什么-LISP使用nentsel提供有关属性和属性定义的信息,如果在块中选择,则提供文本。如果不进行更多编码,则无法使用ssget方法轻松获得该信息。 “未找到视口”不是由于该命令引起的。这是在renum命令之后的命令。我只是滚动到肾素序列。这是ACAD 2000中的块
ACAD-2000-点块。图纸 这些点有后缀吗? 对我目前使用的“renum”lisp提供了添加后缀和preffix或两者的选项。我正在处理的当前块有一个预修复,没有后缀。我永远不知道什么时候我会需要一个或另一个。
页:
[1]
2