.nwd、.nwc、および.nwfファイルは、複数のシートを含むことができます。シートを操作することは、互いに関連のない複数のファイルを操作することに似ていますが、変更は一箇所に保存されます。このセクションでは、シートを操作する際の基本について説明します。
ファイル内の既存のシートに関する情報を取得するには、.nwd、.nwc、または.nwfファイルデータベースを読み取ります。
OdString szSource;//path to file
OdNwDatabasePtr pDb = svcs.readFile(szSource);
ファイルを開くと、データベースには現在アクティブなシートがあり、これはファイル内でアクティブとして保存されたシートです。ファイルにシートが1つしかない場合、ファイルを開いた後、このシートがアクティブになります。現在アクティブなシートを取得するには、メソッド OdNwObjectId getActiveSheetId() const を使用します。
OdNwObjectId activeSheetId = pDb->getActiveSheetId();
OdNwSheetInfoPtr pActiveSheet = activeSheetId.openObject();
ファイルに存在するシートのリストを取得するには、メソッド OdResult OdNwDatabase::getSheets(OdNwObjectIdArray& aSheets) const を使用します。
OdNwObjectIdArray aSheets;
pDb->getSheets(aSheets);
aSheets 配列の各要素は、シートオブジェクトの OdNwObjectId 要素です。たとえば、インデックス1のシートのデータを取得するには、次のようにします。
//Required index must be in the range of the array, otherwise an exception is thrown.
OdNwSheetInfoPtr pSheet = aSheets[1].openObject();
//Get the type of the sheet: 2D or 3D
NwSheetType::Enum sheetType = pSheet->getSheetType();
//Get the ID of the selected sheet info object
OdString newSheetId = pSheet->getSheetId();
データベースで選択したシートをアクティブにするには、シートIDを指定してメソッド OdResult OdNwDatabase::setActiveSheet(const OdString& sheetId) を使用します。
pDb->setActiveSheet(newSheetId);
シートがアクティブ状態に設定されると、データベースはその現在のシートを指します。現在のシートからデータを取得するには、次のメソッドを使用します。
- OdNwObjectId OdNwDatabase::getCurrentViewId() const;
- OdNwObjectId OdNwDatabase::getCurrrentViewClippingPlanesId() const;
- OdResult OdNwDatabase::getSavedViewsElements(OdNwObjectIdArray& aSavedViewsElementIds) const;
- OdNwObjectId OdNwDatabase::getBackgroundElementId() const;
- OdNwObjectId OdNwDatabase::getClashElementId() const;
- OdResult OdNwDatabase::getModels(OdNwObjectIdArray& arrModels) const;
- OdNwObjectId OdNwDatabase::getModelItemRootId() const;
- OdGeMatrix3d OdNwDatabase::getModelTransform() const;
- NwModelUnits::Enum OdNwDatabase::getUnits() const;
- OdResult OdNwDatabase::getLightElements(OdNwObjectIdArray& arrLights) const;
- OdNwGridSystemElementPtr OdNwDatabase::getGridSystemElement() const;
- OdNwObjectId OdNwDatabase::getSelectionSetsElementId() const;
- OdNwObjectId OdNwDatabase::getSavedAnimationElementId() const;
.nwfファイルの場合、メソッド OdNwObjectId OdNwDatabase::addModel(const OdString& sourcePath, OdResult* pResCode = NULL); を使用して、現在アクティブなシートにモデルを追加することもできます。