Teigha Mechanical でのデータムターゲットの作成

データムターゲットは、データムが理論的に正確な平面、線、またはプロファイルを確立するため、表面全体の公差を制御するために使用できます。

image1

DatumTarget を作成し、現在のデータベース (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);

DatumTarget を遠い側に設定します。

pDatumTgt->setHidden(true);

引き出し線ポイントをポイント配列に追加し、引き出し線を作成します。

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

DatumTarget の原点を設定します。

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));

長方形ターゲットを初期化する2番目の方法:

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日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す