BimNv SDK: 複数のシートを持つデータベースを操作する

.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); を使用して、現在アクティブなシートにモデルを追加することもできます。

今すぐ始める

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

無料で試す