Mechanical SDK: 標準マネージャーの使用 (パート 1/2)

AcmStandardManager は、標準と対話するための機能を提供し、AcmStandard (すべての「グローバル」機械標準の基本クラス) と AcmSymbol (AcmFCF、AcmTaper、AcmBalloon などの機械エンティティの基本クラス) 関連クラス間の橋渡し役を務めます。このマネージャーは、主に機械シンボルが作成される際に、その場所に関係なく、シンボルに適した設定を取得するために使用されます。

ここで「グローバル」という言葉が使われているのは、これらの標準に加えて、シンボル標準も存在するからです。シンボル標準は、特定の機械シンボルの一連のパラメーター、特にグラフィックを提供するためのデータを格納します。たとえば、AcmTaperStd 標準には AcmTaper シンボルのデータが含まれています。AcmStandard クラスは、すべてのシンボル関連クラスのオブジェクトを保持するコンテナとして機能します。

マネージャーへのアクセス

AcmStandardManagerを使用するには、次のファイルを含めるだけです。

#include "AcmStandardManager.h"

そして、この関数を呼び出します。

AcmStandardManagerPtr pStdMgr = getAcmStdMgr();

標準のIDまたは名前の取得

AcmStandardManagerは、標準を取得するためのいくつかのメソッドを提供します。

特定の標準のIDを取得する最も簡単な方法は、AcmStandardManager::getStdメソッドを次のパラメーターで呼び出すことです。

  • stdId – 検索対象の標準のOdDbObjectId。
  • stdName – 標準の名前。
  • pDb – データベースへのポインター。

図面にそのような標準がない場合、eInvalidInputが返されます。

OdDbObjectId stdId;
OdString stdName(L"DIN");
Acm::ErrorStatus errorStatus = pStdMgr->getStd(stdName, stdId, pDb);

現在の標準の名前を取得するには、OdStringとデータベースへのポインターをパラメーターとしてAcmStandardManager::getCurrentメソッドを呼び出します。標準が正しく現在として設定されていない場合、eAcMeFailの結果が返されます。

OdString currStdName;
errorStatus = pStdMgr->getCurrent(currStdName, pDb);

現在の標準を取得する別の方法もありますが、この場合は標準の識別子が返されます。boolフラグbCreateをtrueとして渡すと(デフォルトで設定されています)、データベースに標準が存在しない場合、デフォルト値を使用して作成および初期化されます。

OdDbObjectId currStdId;
errorStatus = pStdMgr->getCurrent(currStdId, pDb, true);

データベースに存在するすべての標準の識別子の配列を取得する必要がある場合は、AcmStandardManager::getStandardsメソッドを使用します。データベースに標準が含まれていない場合、eStandardIsNotLoadedが結果として返されます。

OdDbObjectIdArray stdIds;
errorStatus = pStdMgr->getStandards(stdIds, pDb);

AcmStandardManager::getAllStandardNamesメソッドは、データベースに存在するか、作成可能なすべての標準の名前で配列を埋めます。

OdStringArray stdNames; 
errorStatus = pStdMgr->getAllStandardNames(stdNames);

AcmStandardManagerには、デフォルトの標準の名前を返すgetDefaultStdメソッドも利用できます。この値は、データベースに設定されている測定値によって異なります。測定値がOdDb::kMetricに設定されている場合、デフォルト名は「ISO」であり、それ以外の場合は「ANSI」です。基本的に、このメソッドは、新しいデータベースのデフォルト標準を作成したり、一般的なデータベースをメカニカルに変換したりするために使用されます。

OdString defaultStdName;
pStdMgr->getDefaultStd(defaultStdName, pDb);

標準を現在として設定する

AcmStandardManagerには、標準を現在として設定できる2つのメソッドがあります。

最初のメソッドは、標準の識別子とデータベースへのポインターを入力パラメーターとして受け取ります。入力されたOdDbObjectIdが標準のIDではないか、標準がデータベースに存在しない場合、結果としてeBadまたはeObjectNotInDatabaseが返されます。古い現在の標準がANSIであった場合、またはそのようになった場合、データベースに設定されている測定値を変更できます。また、データベース内のグローバルセクションと詳細ビューのスタイルも更新されます。

OdDbObjectId newCurrentStdId = // get stdId, for example by using getStd method
errorStatus = pStdMgr->setCurrent(newCurrentStdId, pDb);

標準を現在として設定する2番目のメソッドは、OdString値とデータベースへのリンクを入力パラメーターとして受け取ります。入力された標準名が有効であっても、その標準がデータベースに存在しない場合、デフォルト値を使用して作成、初期化され、現在として設定されます。

OdString newCurrentStdName(L"BSI"); 
errorStatus = pStdMgr->setCurrent(newCurrentStdName, pDb);

このシリーズの次の記事では、標準の追加と標準に対するさまざまな操作について説明します。

今すぐ始める

ODAソフトウェアを60日間無料でお試しください。
リスクなし、クレジットカード不要。

無料で試す