AsbjornM 发表于 2022-7-7 00:01:18

自动增加编号

你好
 
我正在做一个大项目。我有大约5600个单元,带有唯一的编号/标签。

 
标签示例:
SQ.2.20.32
RB。2.20.04
 
添加新单元时,我必须手动将以下单元的编号增加+1。
 
有没有可能让我制作一个具有自动执行功能的按钮?
 
例子:
我按了一个标签,上面写着“SQ.2.20.32”,它变为“SQ.2.20.33”
我按下一个标签,上面写着“RB.2.20.04”,它变为“RB.2.20.05”
 
这将为我节省数小时的无聊工作,因此如果有人能帮助我,我将不胜感激:)

JGA 发表于 2022-7-7 00:19:12

我使用从0开始工作的diesel宏,但我认为您需要lisp来管理如此复杂的编号系统。

*^C^Ctext;_m;\;;$M=$(getvar,USERI1);setvar;USERI1;$(+,1,$(getvar,USERI1))

BIGAL 发表于 2022-7-7 00:31:30

如果总是2个12月轻松开始
 
; from help
;Substr string start length
(setq ans (getstring "\type in code part num above"))
(setq number ( - (strlen ans) 2))
(princ (substr ans number 2))
; you need to do some convert to real add 1 then RTOS & strcat etc

AsbjornM 发表于 2022-7-7 00:38:43

谢谢你帮我:)
 
(setq ans (getstring *^C^Ctext;_m;\;;$M=$(getvar,USERI1);setvar;USERI1;$(+,1,$(getvar,USERI1))))
(setq number ( - (strlen ans) 2))
(princ (substr ans number 2))
 
我已经将此代码添加到一个按钮中,但当我按下一个标签时,会创建一个新标签,上面写着“0”。
 
 
我不熟悉autolisp,所以我想在使用它之前我需要学习更多:)

AsbjornM 发表于 2022-7-7 00:59:51



(setq ans (getstring *^C^Ctext;_m;\;;$M=$(getvar,USERI1);setvar;USERI1;$(+,1,$(getvar,USERI1))))
(princ ans)

 
这个代码不应该和我点击的标签一样吗?所发生的一切是,当我按下一个标签,一个新的标签说“0”被创建。

BIGAL 发表于 2022-7-7 01:02:58

我不会在lisp中混合diesel,而是将一切都作为lisp过程,使用ENTSEL可以选择一个对象并检查其文本,然后执行下一步。
 
(setq en1 (car (entsel "\nSelect first text number:" )))
(setq el1 (entget en1))
(if (= (cdr (assoc 0 el1)) "TEXT")
(progn
(setq ans (cdr (assoc 1 el1)))
(setq number ( - (strlen ans) 1))
(princ (substr ans number 2))
)
)
页: [1]
查看完整版本: 自动增加编号