MicroStationCONNECT Edition 帮助

计算器/预处理器

计算器/预处理器实用工具(“calculat.ma”)用于对 MicroStation 键入命令中的表达式进行求值。所使用的语法是“C”的语法。

  • 计算器在状态栏中显示表达式的结果。例如,如果加载了计算器/预处理器,则当您键入 CALCULATOR 3*sin(90) 时,结果 3 将显示在状态栏中。
  • 预处理器用结果替换表达式,并将键入命令传递给 MicroStation。例如,如果加载了计算器/预处理器,则当您键入 AA={asin(1)} 时,激活角度设置为其结果 (90°)。

C 表达式处理

计算器和预处理器都处理表达式的标准 C 语法。

C 表达式处理和计算器/预处理器表达式处理之间的最显著差异在于整数除法。使用 C 表达式处理,整数除法将产生一个整数结果。使用计算器/预处理器表达式处理,整数除法将产生一个浮点结果。例如,在 C 中,1/4 的结果为 0。若使用计算器/预处理器,1/4 的结果将为 0.25。

支持的函数包括 cosacossinasinatanatan2tancoshtanhsinhexpldexp、loglog10powsqrt。这些函数与标准 C 函数相同,除了角度用度而不是弧度表示。

可以声明变量和函数以与计算器/预处理器一起使用。有关详细信息,请参见“自定义计算器/预处理器”。

预处理器和产品之间的交互

此处介绍加载计算器/预处理器时预处理器与 MicroStation 之间的交互。

预处理器检查所有 MicroStation 键入命令,并查找包含在指定分隔符字符中的文本。缺省分隔符为大括号 {}。

当预处理器找到分隔的文本字符串时,它将对该字符串求值。如果该字符串是有效的 C 表达式,预处理器将使用结果替换分隔符和表达式,并重新检查整个键入字符串。预处理器以这种方式循环,直到它完成一遍而不替换任何文本。键入命令随后传递给 MicroStation,以便作为正常键入命令进行处理。

预处理器处理通过自定义菜单选择而获得的键入字符串或由键入命令以外的其他应用程序(MDL 应用程序)模拟的键入字符串。预处理器预期表达式的结果是整数、浮点值或字符串。

可以在“预处理器”对话框中更改缺省值。

计算器和预处理器输出格式

计算器和预处理器各自具有控制整数结果显示的格式字符串和控制浮点结果显示的另一个格式字符串。这些格式字符串是标准的 C printf 字符串。

计算器不处理字符串结果。如果计算器对生成字符指针结果的表达式求值,计算器将显示错误消息。如果预处理器对生成字符指针结果的表达式求值,则预处理器将使用结果所指向的字符串替换表达式。

计算器命令

当计算器/预处理器激活时,这些计算器命令可以按照与 MicroStation 键入命令相同的方式键入:

  • CALCULATOR [C_expression] — 计算 C 表达式的结果。该表达式的结果显示在状态栏中。CALCULATOR 单独指导计算器将所有键入命令解释为表达式。此模式保持有效,直到另一个命令被激活。
  • CALCULATOR DECLARE DOUBLE [variable_name] — 为计算器和预处理器声明一个浮点变量。该变量的初始值为 0。该值的定义和值保存在“uservrbl.dat”的会话之间。
  • CALCULATOR DECLARE INT [variable_name] — 为计算器和预处理器声明一个整数变量。该变量的初始值为 0。该值的定义和值保存在“uservrbl.dat”的会话之间。
  • CALCULATOR FORMAT DOUBLE [format_string] — 指定用于显示浮点表达式结果的格式字符串。缺省值为 %.16g
  • CALCULATOR FORMAT INT [format_string] — 指定用于显示整数表达式结果的格式字符串。缺省值为 %d

    例如,要计算十进制 100 的十六进制值,请键入 CALCULATOR FORMAT INT %#X,然后键入 CALCULATOR 100

    例如,要计算十六进制 100 的十进制值,请键入 CALCULATOR FORMAT INT %d,然后键入 CALCULATOR 0x100

  • UCCALC [C_expression] — 计算 C 表达式的结果,但不显示结果。

自定义计算器/预处理器

您可以按以下方式自定义计算器/预处理器:

  • 通过 “uservrbl.dat”文件添加变量。
  • 从 MDL 程序添加其他函数和变量。
  • 使用 CALCULATOR DECLARE 命令声明变量。
  • 用另一个 MDL 程序完全替换预处理器。

在初始化期间,计算器/预处理器读取“uservrbl.dat”。它在分配给 MS_DATA 配置变量的目录中查找文件。文件中的每个变量定义均具有以下格式:<类型名称> <变量名称> <初始值>

类型名称的可能值为 doubleint。在“uservrbl.dat”中定义的变量名称限制为最多 16 个字符。该字符串的初始值以变量名后面的第一个非空字符开头。然后继续直至行末尾。

以下是标准初始化文件的示例:

int baseValue 1
double baseUor 1.0

当计算器/预处理器被卸载时,它会更新 “uservrbl.dat”。更新时,它会记录“uservrbl.dat”文件中所定义变量的类型、名称和值以及用 CALCULATOR DECLARE 命令定义的变量的类型、名称和值。它不保存有关从 MDL 程序发布的变量的信息。

MDL 程序可以通过使用 mdlCExpression_symbolPublish 函数发布函数和变量来向计算器添加函数和变量。使用具有 VISIBILITY_CALCULATOR 可见性的符号集,可使计算器使用该函数或变量。这是向计算器添加函数的唯一方法。