一种开发CAD应用系统的层次模型

来源: 作者:admin 阅读

三、工程图的分层组织及特殊问题

  1.工程图的分层组织
  工程设计图具有明显的层次结构。一幅整图由反映设计对象的各个视图及其它图形单元组成;这些图形单元又由更低层次的基本构件拼合而成;最底层则是基本 图素。典型的例子如一台机器,它包含多个部件,每一部件或是不可分的零件,或是可进一步分解的组件,因此其设计图可表现为一个层次结构。这种分层组织与结 构化的程序设计相对应,图形程序设计一般都应按它来组织程序结构。
  应当指出,常规的图形程序正是按以上结构设计的,但对设计对象的处理却存在一定缺陷。按照层次模型的原理,高层部件与低层部件的关系应是一种引用变 换,但常规的图形程序却仅仅是一种调用子程序的关系。具体来说,在设计一个部件的程序段或程序模块时,常规方法往往需要进行频繁的设计数据→图纸数据的比 例转换,程序设计者要同时关注设计对象本身及其在图纸上的表现等多方面的问题,这势必加重程序设计的负担,且程序代码也不够精炼。但按照层次模型方法,因 部件是在自己的本体坐标系中定义的,因此可在部件自身的本体坐标空间中用真实设计尺寸绘制图形,而无需考虑比例转换等问题,即程序设计者只需关注设计对象 自身,这就大大简化了程序设计工作。该方法表面上似乎未作比例转换,但实质上比例转换已通过引用变换矩阵被隐藏到后台,由层次模型操作函数自动处理了。
  按照层次模型方法,图形程序的结构如下:
  {根层(图面)图形处理;
  OBJECT-OPEN(引用变换参数);
  OBJECT-1;部件1在本体坐标系中的图形处理
  OBJECT-CLOSE;
  ……
  OBJECT-OPEN(引用变换参数);
  OBJECT-n;部件n在本体坐标系中的图形处理
  OBJECT-CLOSE;
  根层其它图形处理;}
  其中,在各部件的程序模块中又可嵌套引用低一级部件,如此可形成一个多重嵌套结构。

  2.图面信息问题
  一幅工程图所表达的内容,除了设计对象自身的图形外,尚有与图面有关的信息,如尺寸标注、文字说明、图形标记等。这是工程图绘制中的特殊问题。可以认 为,图面信息都是定义在图纸亦即根层的世界坐标系下的,因此可直接在根层绘制它们。但有一类图面信息,其定位点、方位等是与设计对象上的某一位置和方向相 关的,例如尺寸标注等。若在世界坐标系下绘制它们,其定位点、方位等却又定义在设计对象的本体坐标系下,则从程序流程及数据流向上难于解决。为此,可引入 一类专门的标注图素,约定它们的定位点定义在当前坐标系下,而其它属性值(如文字高度、尺寸值等)则始终定义在世界坐标系下。这样,只要在设计对象的本体 坐标系下调用它们即可完成相应的图面信息绘制,使用十分方便。
  在PHIGS图形标准中,定义了一个加注文字输出原语,用于在规范化投影坐标系上生成一个字符串,以实现对模型某一处的加注,但其它视图信息如图形标记却难于在建模时实现。因此,PHIGS图形标准这方面的功能较弱。

  3.层与层之间的关联与交叉引用问题
  在多层图形结构中,当程序在某一部件的本体坐标空间中工作时,某些数据有时需取自另一部件的本体坐标空间。这样,层与层之间的数据发生关联,需要交叉 引用。典型的例子是在部件的本体坐标系下引用根层世界坐标系下的数据,如某个定位点或某个方向矢量。这种数据引用按常规引用变换规则是无法解决的。为此, 可引入“虚拟工作空间”的概念,即在当前部件的本体坐标系下临时复制另一部件的坐标空间,用以处理相关数据,处理完毕后立即将其撤去,再回到当前部件的本 体坐标空间下。虚拟工作空间的操作细节由支持函数自动完成,对应用程序设计者则是完全透明的。

四、层次模型处理函数库的功能

  基于上述原理,作者用C语言研制了用于层次模型处理的通用函数库,配合图形软件包工作。它主要可提供以下几方面的功 能:(1)部件引用变换的支持函数;(2)用于部件自身布局的坐标变换函数;(3)当前工作空间支持函数,用于设置当前工作空间、交叉数据变换,也可用于 虚拟工作空间的操作;(4)各种标注图素的支持函数;(5)其它实用坐标计算函数。
  为便于实际编程,作者在函数库中定义了以下几类坐标系:(1)世界坐标系WCS:即图面的坐标系;(2)部件坐标系BCS:部件的本体坐标系;(3) 当前绝对坐标系CACS:BCS下的基坐标系,若在WCS下则为WCS下的基坐标系;(4)当前坐标系(或称工作坐标系)CCS:当前绘图所用的坐标系, 与CRCS并列,若未设定CRCS则为CACS,若未设定CACS则为BCS,若在WCS下则为WCS下的坐标系。
  相应地,作者定义了以下几类坐标变换:(1)部件引用变换:引用部件的变换;(2)绝对坐标变换:重置CACS,相应地撤消CRCS、CCS;(3) 相对坐标变换:重置CRCS,相应地撤消CCS;(4)当前坐标变换(或称累积的坐标变换):在原CCS上增量累积的坐标变换,CCS取累积后的坐标系特 别适用于保持程序设计中模块间的坐标系独立性。

查看所有评论

别人评论内容

我来评论

    评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
    用户名: 密码: 匿名? 注册

投诉建议QQ:26874722 责任编辑 QQ:914456782 13414832830 机械软件教程网 版权所有

Copyright © 2007 - 2008 www.jixie163.com Corporation, All Rights Reserved 粤ICP备07007759号备案编号 4452013000505