【发布时间】:2011-12-13 05:56:21
【问题描述】:
是否可以在dwg文件中使用局部变量并在文本对象中显示?
例如,我需要从某个值开始计算对象:
value0 = 5
value1 = value0 + 1
value2 = value0 + 2
etc...
我可以将 value1 和 value2 放入我绘图上的某个文本对象中吗?
【问题讨论】:
标签: autocad
是否可以在dwg文件中使用局部变量并在文本对象中显示?
例如,我需要从某个值开始计算对象:
value0 = 5
value1 = value0 + 1
value2 = value0 + 2
etc...
我可以将 value1 和 value2 放入我绘图上的某个文本对象中吗?
【问题讨论】:
标签: autocad
用户变量肯定会起作用。请注意,它们的数量有限,其他程序也可能在您不知情的情况下设置它们。 如果您希望将简单值显示为文本,AutoCAD 可以做到这一点。变量的范围取决于您和您选择的 api。 (VB、VBA、AutoLisp、.NET 等) dwg 文件中还有其他可用的数据存储选项。
【讨论】:
要在插入字段的 TEXT 或 MTEXT(或属性)对象中显示整数,请选择 DieselExpression 作为字段类型,然后键入您的表达式。您也可以对其他数据类型执行此操作。
有多种用户变量可用于该任务。要实现上述目的,请在 AutoCAD 命令提示符中键入以下内容:
setvar useri1 5(将用户 integer1 的值设置为 5)
然后您可以在不同文本对象内的字段中使用以下 DieselExpressions:
$(getvar, useri1)(获取useri1的值)
$(+,$(getvar,useri1),1)(useri1的值加1)
$(+,$(getvar,useri1),2)(useri1的值加2)
等等……
【讨论】:
了解您喜欢使用哪种语言会有所帮助。使用 AutoLISP 很容易做到这一点。假设您想要一个程序询问用户一个数字,然后继续增加该数字并将增量连续放入绘图文本(例如批号)。
这是一个完整的小示例,说明您将如何执行以下操作:
(defun c:consecunum ( / entget_in entsel_in value_in value_out)
(setq
value_in (getint "\nFirst number: ")
value_out value_in
)
(while (setq entsel_in (entsel (strcat "\nText to replace with \"" (itoa value_out) "\": ")))
(setq entget_in (entget (car entsel_in)))
(entmod
(subst
(cons 1 (itoa value_out))
(assoc 1 entget_in)
entget_in
)
)
(setq value_out (1+ value_out))
)
)
如果您对它的工作原理有任何疑问,请随时提问。
【讨论】: