[返回博客](/cn/blog) # 在 Teigha Mechanical 中创建基准目标

Alexandr Matvienko 三月 09, 2018 [\#mechanical](/cn/blog/tag/mechanical) [\#Example](/cn/blog/tag/example)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

基准目标可用于控制整个表面的公差，因为基准建立了理论上精确的平面、线或轮廓。

![image1](/files/inline-images/image001_26.png)使用当前数据库 (pDb) 创建基准目标并设置默认属性：

```
AcmDatumTargetPtr pDatumTgt = AcmDatumTarget::createObject();
pDatumTgt->setSymbolDefaults(pDb);

```

设置气球目标的显示数据和位置：

```
AcmCTargetBalloon* pBalloonTgt = pDatumTgt->balloon();
OdGePoint3d leaderPoint1(50.0, 310.0, 0.0);
OdGePoint3d leaderPoint2(105.0, 350.0, 0.0);

pBalloonTgt->setValue(Acm::DatumTargetSize, L"1");
pBalloonTgt->setValue(Acm::DatumTargetText, L"A");
pBalloonTgt->setOrigin(leaderPoint2);

OdCmColor dataColor;
dataColor.setColorIndex(6);
```

设置文本属性：

```
AcmDatumStdPtr pStd = pDatumTgt->serverId().safeOpenObject(OdDb::kForWrite);
pStd->setTextColorByStandard(false);
pStd->setTextTrueColor(dataColor);
pStd->setPointTrueColor(dataColor);
pStd->setTextHeightByStandard(false);
pStd->setTextHeight(5.0);
```

将基准目标设置到远侧：

```
pDatumTgt->setHidden(true);
```

将引线点附加到点数组并创建引线：

```
OdGePoint3dArray leaderPoints;
leaderPoints.append(leaderPoint1);
leaderPoints.append(leaderPoint2);
pDatumTgt->addLeader(leaderPoints);
```

设置基准目标的起点：

```
pDatumTgt->setOrigin(leaderPoint2);
```

附加参考几何体：

```
AcRfGeomPtr rfGeom;
createAcRfGeomByGeomObject(pDb, compGeomObjectId, rfGeom);
pDatumTgt->attachGeomRef((void*)rfGeom, leaderPoint1);
```

如果要创建点目标，请使用以下代码创建新目标并设置十字线大小的可见性和大小：

```
AcmCTargetPoint* pPointTgt = static_cast < AcmCTargetPoint* >(pDatumTgt->getNewTarget(Acm::kPoint));
pPointTgt->setDrawPoint(true);
pPointTgt->setOrigin(leaderPoint1);
pStd->setPointSize(6.0);
```

要创建线目标并设置点大小、因子和线参数：

```
AcmCTargetLine* pLineTgt = static_cast < AcmCTargetLine* >(pDatumTgt->getNewTarget(Acm::kLine));
pStd->setPointSize(1.0);
OdGePoint3d start, end;
start = end = leaderPoint1;
start.x -= 30.0;
end.x += 30.0;
start.y = end.y = leaderPoint1.y - 10.0;
pLineTgt->setOrigin(start);
pLineTgt->setEndPoint(end);
pLineTgt->setFactor(0.2);
```

您可以自定义线目标的线型：

```
OdDbLinetypeTablePtr pTable = pDb->getLinetypeTableId().safeOpenObject();
OdString lineTypeName("Amzigzag");
OdDbObjectId lineTypeId = pTable->getAt(lineTypeName);
pStd->setBorderLineId(lineTypeId);
```

`要创建圆形目标并设置半径和位置：`

```
AcmCTargetCircularArea* pCircTgt = static_cast < AcmCTargetCircularArea* >(pDatumTgt->getNewTarget(Acm::kCircular));
pCircTgt->setRadius(25.0);
pCircTgt->setOrigin(leaderPoint1 + OdGeVector3d(-25.0, 25.0, 0.0));
```

为圆形目标设置填充属性：

```
pStd->setHatchDist(10.0);
pStd->setHatchAngle(OdaPI2);
```

创建矩形目标：

```
AcmCTargetRectangularArea* pRectTgt = static_cast < AcmCTargetRectangularArea* >(pDatumTgt->getNewTarget(Acm::kRectangular));
pRectTgt->setOrigin(leaderPoint1 + OdGeVector3d(-25.0, 25.0, 0.0));

```

初始化矩形目标的第一种方法：

```
pRectTgt->setCornerPoint(leaderPoint1 + OdGeVector3d(-10.0, 10.0, 0.0));
pRectTgt->setAnglePoint(leaderPoint1 + OdGeVector3d(1.0, 1.3, 0.0));
```

初始化矩形目标的第二种方法：

```
pRectTgt->setXSize(25.0);
pRectTgt->setYSize(20.0);
pRectTgt->setAngle(OdaPI4);
```

将您的实体添加到模型空间：

```
OdDbBlockTableRecordPtr pBTR = btrId.safeOpenObject(OdDb::kForWrite);
pBTR->appendOdDbEntity(pDatumTgt);
```

最后一步是为 DatumTarget 设置图层：

```
pDatumTgt->setLayer(L"AM_5");
```

## 今天就开始行动

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

[免费试用](https://www.opendesign.com/cn/free-trial)
