使用CAA进行CATIA二次开发,如果需要实现制图模块相关功能的开发,那么你需要理解CAA制图模型的基本概念,本文对CAA制图模型进行介绍,为后面的CAA制图模块二次开发奠定必要的基础。
摘要(Abstract)
这篇文章讨论制图(Drafting)模型的基础。
制图模型概述(Drafting Modeler Overview)
制图应用程序涉及多个领域,制图模型使你能够自动完成和这些领域相关的任务。下图展示了制图模型的增值功能:
图表 1与制图应用程序相关的主要领域
图表 2制图模型提供的增值功能
制图模型管理几何,约束,注释,修饰和结构对象(Sheet (图纸页),View (视图),Detail Sheet (详细页),Ditto)。制图模型创建的所有元素完整的被集成在Drawing文档中。也就是说,他们将会被如草图拾取助手(sketcher picking assistant),标注(dimensioninig),关联方向(associative orientation)和定位(positioning)和约束(constraints)这些内部机制识别。
| 制图工作台被加载并打开当前的图纸页(Sheet.1)。工程图的结构树显示在图纸页的左侧。该结构树展示了结构对象的聚合关系。图纸页“Sheet.1”的“Front View”视图是激活图纸页的激活视图:意味着所有交互式创建的元素都会被聚合在这个视图中。在文档(document)的顶部,有一个管理激活图纸页的tab page。 |
一个工程图文档是多个图纸页(sheets)基于制图标准(ISO,ANSI,ASME和JIS)的一个集合。
图纸页(sheet)对应于一张实际的图纸空间,下列元素放置在其中:
1). 一个主视图:该视图支持在图纸页(sheet)中直接创建几何元素。
2). 一个背景视图:该视图用于创建图框,标题栏,版本和材料清单。
3). 任意多个交互生成以及从3D视图导入的视图。
视图(View)可以包括:
-
2D 几何元素(2D Geometry):使用制图交互式命令生成的几何元素。使用CAA Sketcher (草图)模型来创建2D几何元素。
-
生成的结果(Generative results):由3D文档创建的不可以修改的几何元素,并且这些几何元素保持了与3D文档关联。
-
约束(Constraints):使用草图模型(Sketcher modeler)创建约束。
-
注释(Annotations):所有包含文字信息的元素:尺寸,文字,粗糙度符号,焊接符号。
-
修饰(Dress up):区域填充,轴线,中心线,箭头,螺纹。
制图的预备知识(Prerequisites)
制图应用程序由下面两个产品管理:
-
交互式制图产品:强调2D设计和工程图产品需求。
-
生成的制图产品:提供从3D零件和装配件定义生成工程图的功能。
这两个产品是基于制图模型开发应用程序的必备条件。
有两个框架(frameworks)包含制图模型的API:
-
DraftingInterfaces:这个框架(framework)包含所有除Detail, 2D几何元素(2D geometry)和约束对象(constraint objects) 之外的制图API。
-
SketcherInterfaces:这个框架用于管理草图组件:Detail,2D几何元素(2D geometry)和约束对象(constraint objects)。
制图的结构(Structuring)对象
制图应用程序的数据被包含在一个应用程序容器中:工程图(drawing)容器也许可以使用GetFeatContainer方法从工程图(drawing)的根节点获取。
当一个工程图(drawing)被创建,下列对象也被同时创建:
-
Drawing容器
-
Drawing根节点
-
第1张图纸页(sheet)
-
聚合在第1张图纸页中的一个主视图。
-
聚合在第1张图纸页中的一个背景视图。
下面是用以完成工程图创建的必要步骤:
-
导入一个drawing标准。
-
从标准中取得可用的格式并将它应用到第一张图纸页(sheet)。
在drawing容器上实现的CATIDrwFactory接口使你能够创建视图(view)或者图纸页(sheet),以及没有聚合在视图中的任何对象。比如图纸页(sheet),视图(view),样式(pattern),详细(detail)或者关系(relations)。
注意:最好使用CATIDftDrawing接口的AddSheet方法创建图纸页(sheet),以实现图纸页码管理器(sheet page manager)。
图纸页(sheet)聚合多个视图(view),同时视图(view聚合所有在其中实例化的对象。通常,在一张图纸页(sheet)中有一个激活的视图(view)。为了在图纸(sheet)中直接创建对象,该图纸页(sheet)的主视图(main view)必须被激活(而不是背景视图)。
图表 3制图结构对象的UML示意图
一个继承自sketch的视图用于管理2D几何元素和2D约束。两种几何元素同时存在于一个视图(view)中:
-
2D几何元素:由CAA草图模型管理的几何元素。
-
生成的几何元素:从3D数据在generative视图中生成的几何元素。
两种接口类型可以获取几何元素上的信息:
-
IDMxxx 接口:这些接口被2D几何元素及生成的几何元素实现。
-
CATI2Dxxx 接口:这些接口仅仅适用于2D几何元素。
制图的2D组件(Component)对象
2D组件是一个几何和注释的可重用集合。该组件位于图纸页(sheet)中并可以像视图(view)一样进行编辑。这就是该组件被称之为详细(Detail)视图的原因。2D组件可以被多次实例化,每一个实例提供一个包含特定方向,位置和缩放比例的组件。详细视图可以作为CATDrawing在对应实例的同一个drawing中或者在另一个独立的CATDrawing中。
Catalog Browser命令允许从一个外部CATDrawing文档CATDrawing1在新的Drawing文档CATDrawing2中实例化一个副本(ditto)。为了实现该功能,会创建一个Detail Ref的特殊拷贝(Detail Ref2)和一个该拷贝的实例(Ditto Inst1)。Detail Ref2 Detail是一个无法访问并与参考详细(Detail Ref)对应的本地参考(查看图1)。
Detail Ref2不能够直接修改。只有Detail Ref可以被修改。当你对副本(ditto)进行第二次实例化的时候(从Detail Ref),在新的CATDrawing CATDrawing2中,一个新“拷贝”详细(Detail Ref2)的实例被创建(Ditto Inst2)。
在副本(Ditto)实例中,除文字修改以外,其它对象都不可以被修改。
在实例中修改文字:
在实例中的可编辑文字是一个有特殊属性的文字,当一个副本(ditto)被实例化时该属性用以通知系统复制该文字。查看下面在实例中获取可修改对象的方式:
// GetModifiableObjects method allows to retrieve texts modifiable in ditto piDitto-
CATIADrawingComponent * piMyDrawComp = NULL;-
HRESULT rc = piMyDitto -> QueryInterface (IID_CATIADrawingComponent,(void**)&piMyDrawComp);
if ( SUCCEEDED(rc) )
{
long Count = 0;
piMyDrawComp -> GetModifiableObjectsCount (Count);
for ( int Idx = 1; Idx<=Count; Idx++ )
{
CATVariant Variant;
rc = BuildVariant ((`long`)Idx, Variant);
if ( SUCCEEDED(rc) )
{
CATIABase * piABase = NULL;
rc = piMyDrawComp -> GetModifiableObject (Variant, piABase);
}
}
制图的2D几何(Geometry)对象
这些对象使用在SketcherInterface框架中的2D线框工厂(wire frame factory)创建。在视图(View)上使用QueryInterface可以获取CATI2DWFFactory接口的指针。
注意:
1). 必须激活视图(View) 以处理2D几何元素。当一个视图被激活时,关联的草图(sketch)就进入了编辑模式,因此可以在其中创建几何元素。
2). 如果一个交互式命令处理几何元素,在2D几何元素创建的最后一步,必须执行在CATISketchEditor接口定义的SaveEdition方法。CATISketch接口继承自CATISketchEditor,因此,SaveEdition可以通过CATISketch接口执行。
制图的2D约束(Constraint)对象
这些对象使用定义在SketcherInterface框架中的2D约束工厂(constraint factory)创建。在该视图(View)上使用QueryInterface方法可以获得CATI2DConstraintFactory接口类型的指针。在这个工厂中,CreateConstraint方法可以在视图(view)中创建约束。
制图的注释(Annotation)对象
Figure 9展示注释对象的UML示意图
这些对象使用drawing注释工厂创建。在视图上使用QueryInterface方法可以获得一个CATIDrwAnnotationFactory类型的接口指针。所有注释继承自AnnotationComponent对象,而该AnnotationComponent对象又继承自Annotation对象。CATIDrwAnnotation接口管理注释与注释之间或者注释与几何元素之间关联的位置和方向。CATIDrwAnnotationComponent用于管理与注释文字相关的全局信息。
当一个注释被编辑时,特征必须重新构造以获取相应的结果。这部分的开始是一个展示注释对象关系的UML示意图。
制图的修饰(Dress-up)对象
这些对象使用drawing注释工厂创建。在视图(View)上使用QueryInterface方法可以获得一个CATIDrwAnnotationFactory类型的指针。有时候这些元素要求创建对应的几何元素。创建中心线的例子阐述了如何通过2D几何元素或者生成的几何元素创建中心线(center line)。
制图的生成(Generative)视图
这些视图通过来源于Product或者Part类型文档的数据生成。为了创建一个生成的正视图(Front View),一个包含makeUp的视图必须首先被创建,然后使用在CATIView接口中定义的SetViewType方法对视图类型进行定义。SetDoc方法允许在生成视图和3D文档之间创建链接。最后,使用CATIGenerSpec接口的SetProjectionPlane方法在视图中定义一个投影平面。通过CATIView接口的GetGenerSpec方法可以获取一个CATIGenerSpec接口类型的指针。和所有视图一样,必须使用CATIDftSheet接口的AddView方法将生成的(Generative)视图聚合在一张图纸页(sheet)中。为了在视图中获取3D投影结果,可以调用CATIView接口的Update方法。
使用CATIDftGenViewFactory接口可以很容易地创建特殊的(Particular)生成视图。这个接口被图纸页(sheet)对象实现:
1). CreateViewFrom3D:用于从TPS视图创建一个生成的Drawing视图。(TPS视图是一个在Functional,Tolerancing and Annotation工作台创建的3D视图)
2). CreateSectionView:用于从父视图和在其中定义的轮廓中创建一个截面视图。
3). CreateStandAloneSectionView:用于创建一个与3D元素关联包含切割轮廓的截面视图。该3D元素可能是Planar Face,3D草图或者平面(Plane)。切割轮廓与3D元素关联。
制图的生成(Generated)对象
当创建或者更新一个生成的视图时这些对象被自动创建。生成的几何元素从3D文档定义并且与它们保持关联。生成的几何元素不能够编辑,仅仅可以修改它们的图形属性。
其他概念
CATIDrwAddin接口使你能在够制图工作台添加新的命令。在CAADraftingInterfaces.edu框架中定义的交互式命令添加了一个工具条。
由图纸页(sheet)实现的CATIDftMultiSheet接口使你可在激活图纸页(active sheet)改变时保持交互命令激活。
评论