t计算备选方案
有人有我可以使用的重新编号lisp例程吗?我正在寻找比autocad的tcount命令更简单的使用方法。条件:
1.将对当前图形中的所有数字或带有前缀的数字(不包括外部参照和块)扣除或添加给定值(x表示附加值,x表示扣除值)。
2、提示输入起始编号和结束编号。(将代码限制在这些给定数字内)
3.必须包括带有任何前缀的文本,如A1、COL1等(中间无空格)
5、保留所有原文属性。
非常感谢你。 你查过李的增量编号套件了吗?我认为这可能值得一看。
http://lee-mac.com/numinc.html 谢谢你的推荐
我还推荐IrnéBarnard的“AutoIncr”-LISP&DCL,可从caddons存储库获得。 非常感谢您的建议。我要找的是一种更简单、直接到点的编码,它不涉及选择或对话框。只需输入增量/减量编号、开始编号和结束编号,就可以了。正如他们所说,越简单越好。 有几个自定义lisp例程可以“简单”地完成这项任务。互联网搜索应该可以找到其中一个或多个。
非常感谢你的建议。 在这里可以找到两个用于递增数字的宏。。。http://www.cadeverything.com/help/showthread.php/2826-Automatic-incrementing-of-numbers-in-LT
宏是最简单的。将宏指定给按钮。
具有递增编号的引线lisp例程可以在此处找到。。。http://www.theswamp.org/index.php?topic=25254.0
下载INCNUM的副本。lsp在此。。。http://autocad.xarch.at/code/tanzillo/ghindex.html
增量文本和增量文本块lisp例程可以在这里找到。。。http://www.cadlispandtips.com/2011/01/lisp-increment-text.html 再次感谢您抽出时间。那我就得走很长的路了。干杯
对不起,我放弃得太早了。我在你的一个链接上找到了下面的代码,非常接近我要查找的内容。唯一缺少的是“开始”和“结束”数字提示进行选择。有没有人可以帮助修改代码以包含这些行?
(defun extract (s / i prefix number suffix)
(setq i 0 prefix "" number "" suffix "")
(repeat (strlen s)
(setq c (substr s (setq i (1+ i)) 1))
(cond
((and (wcmatch c "#")
(eq suffix ""))
(setq number (strcat number c))) ; 3
((and (eq c "-")
(= suffix number "")
(wcmatch
(substr s (1+ i) 1) "#"))
(setq number (strcat number c))) ; 3
((eq number "")
(setq prefix (strcat prefix c))) ; 3
(t (setq suffix (strcat suffix c))))) ; 5
(if (not (zerop (strlen number))) ; 3
(list prefix number suffix)
)
)
(defun C:INCNUM ( / ss off e d s s1 i fltr)
(setq fltr '((0 . "TEXT") (1 . "*#*")))
(cond
((not (setq ss (ssget fltr)))) ; 4
((not (setq off (getint "\nIncrement: ")))); 4
((zerop off)
(princ "\nValue must be non-zero."))
(t (setvar "cmdecho" 0)
(command ".undo" "g")
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i))) ; 3
d (entget e)
s (cdr (assoc 1 d))) ; 3
(if (setq s (extract s)) ; 3
(entmod
(list
(cons -1 e)
(cons 1
(strcat
(car s)
(itoa
(+ off (atoi (cadr s)))) ; 4
(caddr s))))))) ; 7
(command ".undo" "e"))) ; 3
(princ)
) Artek,我不确定你的代码是否像你想象的那么简单。你提到一个起始数字和一个结束数字。这些是做什么用的?毕竟,您说过要在图形中添加/减去所有现有的文字编号。有什么好处?一般来说,最好用示例展示您希望程序做什么,并解释示例。
谢谢你的邀请。使用上述代码(IncNum)作为参考,我需要它提示用户要处理的数字限制(开始和结束提示),而不是选择带有数字的文本进行递增/递减。代码只处理这两个给定值内的数字。假设我在我的画上有数百条文字,文字从“Unit-01”到“Unit-300”。如果我需要在100单元之后再加5个单元,那么我必须将从101单元到300单元的所有文本增加5。因此,代码将提示以下内容:增量值为5,起始数字为101,结束数字为300。代码只会将给定范围(101-300)内的文本增加5,并保留1-100不变。因此,01单元到100单元的文本保持不变,101单元。。。300号机组将改为106号机组。。。。分别为305号机组。
现有文本:
01号机组。。。。。单元-300
提示:
增量值:5;或输入-扣除值
起始编号:101;提示1
结束编号:300;提示2
请注意:用于替换IncNum代码中的选择提示的范围(提示1和2)。
结果:
01号机组。。。。。单元-100->不变
101单元。。。。单元-300->单元-106。。。。。305单元
图纸中的文本有时没有按数字顺序排列,因此很难手动定位和选择,因此需要开始和结束数字。该图纸也有子文本,其编号与主文本相同,但前缀不同(如Bath-01…Bath-300),也应更新。因此,代码应该适用于所有带有数字的文本,而不管其前缀如何,有或没有分隔符(例如“-”或空格),但属性除外,即块或外部参照中的属性。我认为,经过一些快速测试,“IncNum”(如上所述)已经满足了所有条件,只需要包含起始和结束(范围)数字的编码。如果你需要更多的例子,请告诉我。
我知道我要找的不是那么简单。我只是说,与早期建议的提供了许多有用特性的优秀代码相比。我只是在寻找一个可以实现两个功能的函数,即在给定范围内增加或减少文本中的数字。
再次感谢!
页:
[1]
2