0

0

分享

【快速入门教程三】天工插件开发通识

22 0
5 天前 天工开发者中心| 显示全部楼层 阅读模式
本帖最后由 天工开发者团队 于 2024-10-17 13:46 编辑

一、装配文档(AssemblyDocument)、零件文档(PartDocument)
         现实世界中一个物体往往可看成由多部分组成,如台式电脑可由显卡、cpu、电源、内存、螺丝这些子部分组装而成,这些子部分可能是单个零件如螺丝,也可能继续由更细微的子部分组成;如电源的组成部分中还是有螺丝。这种组装与零件概念在天工CAD中表现为零件文档与装配文档。如上图所示,一个装配文档递归地由子装配文档和子零件文档组成,每一个子装配文档或子零件文档在装配环境中也称做装配实例(Occurrence),零件是天工CAD对现实世界进行抽象的基本单元。


二、设计体、特征、几何表示、构造体
2.1 设计体与特征
         正如零件文档是装配文档的组装单元,设计体(Model也称设计模型)是零件文档的组成单元。特征(Feature)则是一个更基础的概念,一个三维模型可经由拉伸、旋转、布尔运算..等三维操作复合而来,这其中的每一个操作都可称为一个特征。草图创建是三维模型创建的一个重要过程,因此天工将一个草图也算为一个特征。
3.1.png
         天工将一个设计模型视为诸三维操作的效果叠加,每次操作都使设计模型特性发生改变,这就是命名为特征的原因。
2.2 创建、激活设计体
         新建一个零件文档时,文档内设计模型个数为0,此时在此零件文档中进行一个特征操作如拉伸,则自动地添加了一个设计模型,后续进行的特征操作都会在这个当前设计模型上进行。设计模型也可以手动添加,添加后就自动地成为了当前设计模型,点击添加体填写参数并确定即可手动创建设计体。如使用SDK添加体则是Models接口AddBody方法;使设计模型成为当前设计模型,则使用Model接口的MakeActive方法。
3.2.png

3.3.png
2.3 设计体与几何表示
         每一个设计模型有一个对应的边界几何表示(Body),设计模型可由Model::GetBody()方法获得其几何表示;这个方法的返回值是SolidEdgeGeometry::Body,由此返回值即可遍历整个的拓扑结构(壳-面-边)。需要注意的是,设计模型中的一个特征与设计模型对应的几何表示中的壳之间没有数量上的相关关系,如创建一个拉伸体后,在此拉伸体进行倒圆,再另建一个拉伸体。此时设计体内有三个特征(拉伸一,倒圆一、拉伸二),这个设计体内的brep结构是一体两壳。

3.4.png
2.4 设计体与构造体
         在草图中有构造线和普通曲线区别,构造线一般用于辅助定位定位使用,也称辅助线。实体(设计体对应的几何表示)的定义是具有封闭体积的三维几何结构,而那些不具有封闭体积的三维几何结构(如b样条曲面)则是构造体(Constructions);另一方面,实体可以转为构造体(主要表明这个实体是起辅助作用),一个构造体如果是由实体切换过来也可以切换回实体。正如构造线线在计算草图面积时不被计算在内,在工程图纸中一般也不显示构造体(可以通过设置使显示)。

3.5.png


三、二维草图、三维草图查询几何表示
3.1 二维草图(Sketch)
3.1.1 GetRegionBody查询BREP
         使用Sketch::GetRegionBody可以查询到草图对应的边界表示,在天工CAD中,也就是拿到SolidEdgeGeometry::Body
  1. void DemoRegionBody()
  2. {
  3.     namespace pt = TGPart;
  4.     namespace fwp = TGFrameworkSupport;
  5.     namespace gm = TGGeometry;
  6.     pt::PartDocumentPtr pPartDoc = SEAPP->GetActiveDocument();
  7.     assert(pPartDoc);

  8.     // 创建两个圆,且使其区域有交集
  9.     pt::SketchPtr pSketch = pPartDoc->GetSketches()->AddByPlane(pPartDoc->GetRefPlanes()->Item(1l));
  10.     pt::ProfilePtr pProfile = pSketch->GetProfile();
  11.     pProfile->GetCircles2d()->AddByCenterRadius(0.1, 0, 0.12);
  12.     pProfile->GetCircles2d()->AddByCenterRadius(0, 0, 0.1);
  13.     pProfile->End(pt::igProfileClosed);

  14.     // 验证拿到的面域数量为3
  15.     gm::BodyPtr pBody = pSketch->GetRegionBody();
  16.     gm::FacesPtr pFaces= pBody->GetFaces(gm::igQueryAll);
  17.     assert(pFaces != nullptr && pFaces->GetCount() == 3);
  18. }
复制代码

         上述代码演示了这个方法的一般用法,运行效果如下。这个草图,两个圆组成了三个面域,均可以通过GetRegionBody得到的SolidEdgeGeometry::Body查询到。
3.6.png
3.1.2 MapGeometryToCurves
         Brep可能有些过于重,偏向于拓扑结构及其之间的连接;另一方面,如草图轮廓上的元素都不闭合,则GetRegionBody无法查询到Brep。这时可使用Profile::MapGeometryToCurves可查询轮廓中的曲线元素对应的SolidEdgeGeometry::Curve,此接口下有丰富的几何方法。

3.7.png

         SolidEdgeGeometry::Curve是对于曲线的统一表示,线段、弧等都是曲线。通过Geometry和GeometryForm配合可以获得曲线的实质表示,如一条二维草图上的线段,得到的Curve对应的GeometryForm是2,对应的Geometry就是SolidEdgeGeometry下Line类型对象。
3.2 三维草图(Sketch3D)
         三维草图可以通过Sketch3DFeature::Edges 和Sketch3DFeature::Faces等查询方法获得一个三维草图元素的拓扑结构(SolidEdgeGeometry::Edge SolidEdgeGeometry::Face)类型。每在一个三维草图上新建一个元素,Sketch3DFeature就会有这个元素的对应拓扑结构。
四、顺序建模、直接建模
         天工CAD同时支持直接顺序建模、直接建模模式,这两个模式在SDK中也有所反映。使用PartDocument下PutModelingMode()可以设定当前建模模式,需要注意的是有一些接口只在直接建模模式下起效,须事先设定建模模式为直接建模,如AddBoxByCenter。
在天工SDK中很多API有后缀为Sync的版本,如AddFiniteSync和AddFinite,有Sync后缀的版本适用于直接建模环境,无Sync后缀的版本适用于顺序建模环境。
五、Profile、Included  Profile
         Profile即轮廓,Included  Profile即嵌入(内含)轮廓。以拉伸操作为例,用草图上的轮廓进行拉伸操作相当于引用了轮廓中的图形,嵌入轮廓是可以嵌入到模型中的。如下图所示,

3.8.png

         拉伸1是嵌入轮廓拉伸而成,拉伸2是草图轮廓拉伸而成。拉伸结束后再删除原有草图上的轮廓,结果如下。
 3.9.png
         可见草图上一般轮廓拉伸而成的拉伸2特征已不显示,而内嵌轮廓拉伸而成的拉伸1特征仍然显示。
六、输出提示
         使用Application接口下PutStatusBar可以输出提示、信息
七、类型
         天工SDK中有许多作为集合的接口,通常以s为后缀,如RefPlanes。从集合中欲使用Item方法访问其中某序号的的元素,需要严格使用long值传入。

  1. TGPart::RefPlanePtr GetXOYPlane(TGPart::PartDocumentPtr pPartDoc)
  2. {
  3.     return pPartDoc->GetRefPlanes()->Item(1l);
  4. }
复制代码


评论(0)

您需要登录后才可以回复 登录

客服 意见反馈
返回顶部
快速回复 返回顶部 返回列表