Autocad用户变量

时间:2011-12-13 05:56:21

标签: autocad

是否可以在dwg文件中使用局部变量并将其显示在文本对象中?

例如,我需要以某个值开始计算对象:

value0 = 5
value1 = value0 + 1
value2 = value0 + 2
etc...

我可以将 value1 value2 放入我绘图上的某个文字对象中吗?

3 个答案:

答案 0 :(得分:2)

用户变量肯定会起作用。请注意,它们的数量有限,其他程序也可能在您不知情的情况下设置它们。 如果您希望将简单值显示为文本,AutoCAD可以执行此操作。变量的范围取决于您和您选择的API。 (VB,VBA,AutoLisp,.NET等) dwg文件中还有其他数据存储选项。

答案 1 :(得分:1)

要在TEXT或MTEXT(或属性)对象中显示整数,请插入字段,选择DieselExpression作为字段类型,然后键入表达式。您也可以为其他数据类型执行此操作。

该任务有多种用户变量可供使用。要实现上述目的,请在AutoCAD命令提示符中键入以下内容:

setvar useri1 5(将用户integer1的值设置为5)

然后,您可以在不同文本对象内的字段中使用以下DieselExpressions:

$(getvar, useri1)(获取useri1的值)

$(+,$(getvar,useri1),1)(将useri1的值加1)

$(+,$(getvar,useri1),2)(将useri1的值加2)

等...

答案 2 :(得分:1)

了解您喜欢使用哪种语言会有所帮助。使用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))
  )
)

如果您对此有何疑问,请随时提出。