分享一些Visio模具库建库过程中值得注意的事项以及原因。

  1. 模具的BaseID的唯一性。

    BaseID是Master对象的属性之一,Master对象有三个ID:BaseID,UniqueID和ID。BaseID在Master被创建时生成,且不再改变(除非使用程序修改)。因此BaseID非常适合作为维护Master对象时的唯一标识。这是因为,UniqueID会随着Master内容的修改而变化,ID会随着不同的文档而变化。

    通常情况下,我们不需要关注BaseID,因为当我们将形状从绘图页拖拽至模具库时,会创建唯一的BaseID。但是,很多管理员在建立新模具时,为了省去添加通用形状和属性,如Tag文本,备注属性等,会直接在模具库中选中已经存在的模具复制粘贴,然后在粘贴后的模具中进行修改。这个时候站贴后的模具将和源模具具有相同的BaseID。为了保证BaseID的唯一性,可以在程序中调用Master.NewBaseID方法获取新的BaseID,或者直接在Openxml文档中键入新的BaseID。

    two-masters-with-the-same-baseid.png

  2. 模具的形状界限与网格线重合。

    由于Visio中的默认吸附设置包括网格线,当模具的形状界限是网格的整数倍时,模具实例的边界可以吸附在网格线上,这样用者不需要再使用对齐工具也可以快速的实现多个形状的对齐,从而使页面看起来更整洁。

    这就要求管理员在设计模具的形状时,充分考虑形状的轮廓尺寸。当然,有些情况下没有办法保证这些线条刚好经过网格线,但是仍然可以通过手动设置形状的Width和Height,使其包围框刚好位于网格线上。

    例如,对于图中的两个阀门,尽管电磁气动阀的轮廓远比通用阀门大,但是他们都使用同样的形状界限,即5mmx5mm。(这样做另一个隐藏的好处是:当用户使用电磁气动阀替换通用阀门时,不需要再调整对象的位置,因为他们是同轴的。)

    two-valves-with-the-same-bounding-box.png

  3. 在ShapeSheet的Geometry中使用GUARD和Rel而不是使用绝对尺寸。

    当我们在ShapeSheet中修改Geometry属性时,很容易遇到插入一个新的数据行引发形状的Width和Height重新计算,导致才修改好的形状意外改变。因此,在设计初期就应该使用GUARD对形状的Width和Height以及几何数据写保护,防止插入新的几何数据时Visio重新计算引发的意外情况。

    在几何数据中使用相对值而不是绝对值,则是为了解决用户手动调整实例尺寸时,代表实例的几何形状可以保持正确的比例,以防出现原来是个原型,现在是个椭圆形的情况。

  4. 在创建具有多个子类的对象时,将表示不通子类的多个几何数据创建在同一个形状对象上,而不是使用多个形状对象。

    这句话描述的可能比较抽象。有的时候,为了缩减模具库中模具的数量,管理员可能会考虑将多个具有类似的对象设计成一个模具,并通过属性切换显示与隐藏。例如,图中的阀门聚合了多种形式的阀体,并根据用户的选择进行形状的切换。

    compounded-valves.png

    在实现这个功能时,有两种做法:方法一是在模具的形状组中创建多个形状用以表示不通的阀体,例如三个形状分别表示通用发、三通阀、角式阀;方法二是在一个形状中,插入多个几何数据块。我认为方法二是更好的做法,因为如果用户在使用过程中解散了图纸中实例的组,不会在图纸中生成隐藏的形状对象。尽管这样增加了管理的复杂性,因为无法通过形状的名称判断几何数据块表示的形状。