我问的唯一原因是,我非常怀疑您是否能够“调整”LISP以进行多选,而不需要完全重新编写它。
正如我之前可能提到的那样,LISP使用nentsel方法选择实体,因此在用户选择时可以获得某些信息-使用实体选择的选择集方法无法轻松检索这些信息。
我正在考虑为你写一个类似的LISP,这就是为什么我问这个问题。你只是想增加属性中的数字,还是更多? 我使用您之前帮助我使用的lisp用这个块填充点。它们以数字顺序出现。一旦我放置了块,人们需要删除或添加到我已经做的块集。这会导致缺少数字,或者我需要添加更多数字。因此,找到编号最高的块可能是一件痛苦的事,而从某个数字开始重新编号同样很糟糕。我宁愿选择全部并告诉他们重新编号。这将是一种可靠的方法来防止相似或缺失数字。
我可能在这里遗漏了一些关键的东西,但你难道不能使用你最初用来填充点的LISP(我帮助你的那个)来重新填充块吗? 我发现调整一些比重新调整许多更容易。随着工作的进行,我无法更改已被引用的块。在一个包含250个区块的cooridor中,工作人员可能已经使用这些区块建造了看台,参考号为215。我不能回去擦除块并重新填充点。由于填充lisp的随机性,编号模式可能会改变。现在我没有正确的数字来匹配他们的。因此,如果我被要求通过添加或删除其中的一些来更改其余的35个块,那么它们现在将失去顺序。我当前的方法是使用我当前的renum lisp依次选择每个剩余的块属性,以数字顺序更改它们。另一个问题是,我并不总是有原始点dwg重新填充,我将只有块dwg。我们的区块保存在与主图纸不同的单独图纸中。正如我所说,我喜欢我现在的Lisp程序的本质。我只想添加多个选项。 在这方面仍然需要帮助。有人接受吗? 快速写下这篇文章-可能就是你想要的:
(defun c:reNum (/ dCars tmpVars ss att)
(setq dVars '(sNum inNum Pref Suff))
(mapcar '(lambda (x y) (or (boundp x) (set x y))) dVars '(1 1 "" ""))
(setq tmpVars (list (getreal (strcat "\nSpecify Starting Number <" (rtos sNum 2 2) ">: "))
(getreal (strcat "\nSpecify Increment <" (rtos inNum 2 2) ">: "))
(getstring t (strcat "\nSpecify Prefix <" (if (eq "" Pref) "-None-" Pref) ">: "))
(getstring t (strcat "\nSpecify Suffix <" (if (eq "" Suff) "-None-" Suff) ">: "))))
(mapcar '(lambda (x y) (or (or (not x) (eq "" x)) (set y x))) tmpVars dVars)
(while (not ss)
(princ "\nSelect Blocks to ReNumber... ")
(setq ss (ssget '((0 . "INSERT") (66 . 1)))))
(foreach blk (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(setq att (entnext blk))
(while (not (eq "SEQEND" (cdadr (setq aLst (entget att)))))
(if (eq "POINT" (cdr (assoc 2 aLst)))
(entmod (subst (cons 1 (strcat Pref (rtos sNum) Suff)) (assoc 1 aLst) aLst)))
(setq att (entnext att)))
(setq sNum (+ sNum inNum)))
(command "_regenall")
(princ))
这没用,李。可能问题在于整个块的部分,而不仅仅是块中心的属性。只有当我选择属性而不是整个块本身时,我原来的lisp才起作用。所以我猜想,如果他们只是一种窗口选择属性的方法,这将更容易解决。
我只是想说清楚。在我引用的块中,在块中的三行文本中,只有中间的文本是属性。其他行(顶部和底部)仅为Dtext。
我的道歉,伙计,在里面留下了一个旧的属性名称代码已更新 你好由于此Lisp在ACAD 2008(仅2006年)中不起作用,我重新访问了此线程。此外,我仍然无法同时使用属性对多个块重新编号。
正如现在(在ACAD-2006中)一样,Lisp要求我必须高亮显示属性本身,而不接触块的任何其他部分,否则命令将结束。
我的理想Lisp将在ACAD-2008中工作,并使我能够一次通过窗口选择多个块进行重新编号。我喜欢现有lisp的基本结构。我只需要对它进行一些调整。谢谢李为我提供了原来的Lisp程序。
在上面的线程中是“renum.lsp”和ACAD-2000-Points块图纸。
谢谢你的帮助。 有人能解释一下吗??
(initget“Yes NoÄ�* Íåòu Yes No Yes No”)
我很困惑!!
谢谢!
页:
1
[2]