MicroStation中的工作单位


不知您注意到没有,在MicroStation中输入一个长度值时有时会看到如下所示的情况:

怎么我要输入的长度值还带有两个冒号呢?这就要从MicroStation的工作单位说起。在MicroStation中,一个长度值由三部分组成:主单位:子单位:位置单位(也叫分辨率单位),用英文表达就是Master Unit:Sub Unit:Positional Unit(缩写为MU:SU:PU)。为何要引入主单位和子单位?这主要是为了英制单位服务的。我们知道1英尺等于12英寸,对于英制来说,我们可以将主单位设置为英尺,子单位设置为英寸。这样当您想输入2'5"时就可以直接输入2:5而不需要将5"先换算成0.41666666666667'进而输入2.41666666666667。这种巧妙的设计对于公制来说反而显得多此一举了。

那为何还需要一个分辨率单位呢?这是由于历史原因造成的。在V7DGN时代,为了提高程序的工作效率,内部全部用整数表达。那现实世界中不能没有实数呀,那就设置一个PU,当显示给用户看时就用内部保存的整数除以这个PU变成实数,当保存用户输入的实数时就乘以这个PU转换为整数后保存。所以,您应该能知道,这个PU其实就表达了V7DGN时代的数值精度。不过到了V8DGN,内部数据直接用实数表达了,这个PU其实意义已经不大了,但为了保持和V7DGN概念的延续性,仍然保留了这个概念。

如何设置我当前工作单位的显示呢?

最后一行的Working Units就是所有对工作单位的控制项。其中的Format可以选择MU:SU:PU、MU:SU或者就是MU。如下图所示:

对于MU:SU:PU这种显示设置,假设MU指定的为Meters(米),SU指定的是Millimeters(毫米),而PU为每米10000的话,我们要输入一个500mm的长度,以下几种写法都是正确的

0.5

:500

::5000

如果你想故意为难自己也没关系,输入0.3:100:1000也是可以的。

【高级知识】:点击Advanced Settings(高级设置)下的按钮Edit(编辑)能打开对实体范围的设置界面如下:

其中的Solids默认是1km,即智能实体的最大边长为1km,由于参数化实体的要求,参数化实体的边长需要减半,变成500m了。这个值不要轻易调整。你如果增加了该值,则其对应的实体精度(Solid Accuracy)会随之减小,这样会导致后续的运算可能产生不可预知的结果(有时正确,有时错误)。不建议这样做。

当然,如果您能确保您的实体体积不超过4km的话,还是可以去调整一下这个Solids的值的。我们测试过4km似乎出错的几率很低,但100km肯定是不行的。

【注意】:在MVBA编程中,所给的值默认为主单位;在MDL(即C++)编程中,所给的值默认为UOR(Unit Of Resolution)单位,即PU单位。在C# 中如果用到Interop编程对象模型,则默认单位为主单位,如果用到.NET编程对象模型,则默认主单位为UOR。