【问题标题】:Autocad user variablesAutoCAD 用户变量
【发布时间】:2011-12-13 05:56:21
【问题描述】:

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

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

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

我可以将 value1value2 放入我绘图上的某个文本对象中吗?

【问题讨论】:

    标签: autocad


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

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

      等等……

      【讨论】:

      • (setvar "useri1" 5) 在命令提示符和 $(getvar, "useri1") 在 DieselExpression 工作。谢谢!
      • 但是当您更改变量时,TEXT 字段不会发生动态变化。试过 LispVariable,也不管用 :(
      • 不,它不会动态改变。如果你输入 regen 它会更新。
      【解决方案3】:

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

      如果您对它的工作原理有任何疑问,请随时提问。

      【讨论】:

      • 是的,谢谢!我已经开始学习 AutoLisp,而且非常容易。只花了两天时间就编写了一个脚本,该脚本自动在草稿上绘制电缆线并计算长度并将其放在特定的桌子上等等。现在它节省了很多时间!
      猜你喜欢
      • 2015-03-05
      • 2019-11-19
      • 1970-01-01
      • 2012-01-15
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多