Mechanical SDK:机械结构简介

机械结构概述

在 ODA Mechanical SDK 中,您可以将几何图形标记并收集到结构化实体中,从而简化复杂图纸的处理。

机械结构是一种机制,允许您将几何图形标记为组件并为标记的几何图形创建组件视图。无论几何图形标记类型如何,标记的几何图形都将出现在 BOM(物料清单)中。

有关收集和标记几何图形的另一种选项,请参阅零件参考文档。

机械结构包括组件和组件视图的概念。组件是为提供结构功能而创建的不可见实体。组件视图是保存几何图形的实体。组件和组件视图都具有层次结构。

此外,机械结构还具有定义和实例的概念。首先创建组件定义和组件视图定义,然后为定义创建实例。此概念提供了重用组件和组件视图的能力。

机械结构的基本操作

所有机械结构操作都通过 Mechanical 的 McadApi 库进行。

机械结构提供以下操作:

  • amiCreate2dCompDef – 创建新的组件定义。
  • amiInstance2dComp – 根据组件定义创建组件实例。
  • ami2DSCreateCompViewDef – 根据先前创建的组件创建组件视图定义。
  • ami2DSInstanceCompView – 根据组件视图定义创建组件视图实例。
  • ami2DSInstanceAnnotationView – 创建注释视图。
  • ami2DSCreateAnnotationViewLabels – 为注释视图创建注释视图标签。
  • ami2DSGetViewsInComp – 获取组件中包含的视图。
  • ami2DSGetViewName – 获取视图名称。
  • ami2DSGetCompViewOwnerDef – 获取组件视图的所有者定义。
  • ami2DSGetViewOwnerDef – 获取视图的所有者定义。
  • ami2DSGetNextComponentDefinitionName – 获取指定名称之后的组件定义的名称。
  • ami2DSGetViewGeomExtents – 获取视图的几何范围。
  • ami2DSGetViewDefChildren – 获取视图定义的子项。
  • ami2DSCompDefHasComponentViewDefinition – 指示指定的组件定义是否包含某个组件视图定义。
  • amiGetCompInstanceByGeom – 通过几何体获取组件实例。
  • amiGetMasterCompDef – 获取主组件定义。
  • amiGetMasterViewDef – 获取主视图定义。
  • amiGetCompDef – 获取指定组件的定义。
  • amiGetCompDefChildren – 获取组件定义的子项。
  • amiGetCompName – 获取组件的名称。
  • amiGetCompOwner – 获取组件的所有者。
  • amiIsCompDefMaster – 指示指定的组件定义是否为主组件定义。
  • amiIsCompDefFeature – 指示组件定义是否为特征。
  • amiIsCompDef2DAssembly – 指示组件定义是否为二维装配体。
  • amiIsCompDefExternal – 指示组件定义是否为外部的。
  • amiSetCompDefName – 为组件定义设置新名称。

 

简单机械结构示例

本节提供了一个创建、标记、收集几何体并将其放入 BOM 表的示例。

首先,应创建一些基本几何体,例如同一细节的顶视图和前视图的圆和线:


OdGeVector3d topPos(200.0, 100.0, 0.0);
OdGeVector3d frontPos(400.0, 100.0, 0.0);
        
OdDbCirclePtr pCircle1 = OdDbCircle::createObject();
pCircle1->setDatabaseDefaults(pDb);
pCircle1->setCenter(topPos.asPoint());
pCircle1->setRadius(50.0);
pTMModelSpace->appendOdDbEntity(pCircle1);
       
OdDbLinePtr pLine1 = OdDbLine::createObject();
pLine1->setDatabaseDefaults(pDb);
pLine1->setStartPoint(frontPos.asPoint() + OdGeVector3d(-50.0, .0, .0));
pLine1->setEndPoint(frontPos.asPoint() + OdGeVector3d(50.0, .0, .0));
pTMModelSpace->appendOdDbEntity(pLine1);

几何体创建后,也可以创建并实例化组件。此示例演示了一个组件和两个附加组件视图的创建过程:

AmiCompDefKeyPtr pCompDefKey1;
AmiCompKeyPtr    pCompKey1;
amiCreate2dCompDef(pDb, pCompDefKey1, L"CIRCLE_COMPONENT");
amiInstance2dComp(pDb, pCompKey1, pCompDefKey1, AmiCompDefKeyPtr());

创建组件后,也可以创建第一个组件视图(顶视图):

OdGeMatrix3d compMatrix1;
compMatrix1.setTranslation(topPos);
AmiCompViewDefKeyPtr pComp1TopDef;
AmiCompViewKeyPtr    pComp1Top;
OdArray<AmiFolderKey> arrayFolders;
OdDbObjectIdArray entities;
entities.append(pCircle1->objectId());
       
ami2DSCreateCompViewDef(pDb,
  pComp1TopDef,
  pComp1Top,
  pCompKey1,
  entities,
  arrayFolders,
  compMatrix1,
  AmiFolderKeyPtr(),
  L"Top");

附加组件视图(前视图):

OdGeMatrix3d compMatrixFront;
compMatrixFront.setTranslation(frontPos);
AmiCompViewDefKeyPtr pComp1FrontDef;
AmiCompViewKeyPtr    pComp1Front;
OdArray<AmiFolderKey> arrayFoldersFront;
OdDbObjectIdArray entitiesFront;
entitiesFront.append(pLine1->objectId());
   
ami2DSCreateCompViewDef(
  pDb,
  pComp1FrontDef,
  pComp1Front,
  pCompKey1,
  entitiesFront,
  arrayFoldersFront,
  compMatrixFront,
  AmiFolderKeyPtr(),
  L"Front");

组件完成后,可以创建包含该组件的BOM表:

AcmBOMManagerPtr pBomMgr = getAcmBomMgr();
OdDbObjectId bomId;
pBomMgr->createBomTable(bomId, OdDbObjectId::kNull, OD_T("MAIN"), true, pDb);

数据库字典中新BOM表(带组件行)的物理表示:

您可以在我们的文档中找到更多信息。

今天就开始行动

免费试用 ODA 软件 60 天。
无风险,无需信用卡。

免费试用