[ブログに戻る](/ja/blog) # .dgnファイルでのテーブル要素の作成

Andrew Ryabinin 7月 13, 2017 [\#dgn](/ja/blog/tag/dgn) [\#getting started](/ja/blog/tag/getting-started)

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

.dgnファイルのテーブル要素は、Bentley® MicroStation V8i Connect Edition以降でサポートされています。.dgnテーブル要素の構造と目的は、.dwgテーブル要素と似ています。テーブルは行と列に配置されたセルの集合です。テーブル内のセルはグリッド線で区切られており、.dgnテーブル要素のセルにはテキストデータのみを含めることができます。

.dgnテーブル要素を作成するには：

1\) 可能であれば、.dgnモデルまたは共有セル定義にテーブル要素を追加し、initTableDefaults()関数を使用して初期化します。テーブル要素は、そのデフォルトを初期化し、セルテキストデータで操作するためにテキストスタイルを使用します。しかし、それはテキストスタイルインデックスのみを格納します。したがって、テキストスタイルテーブルにアクセスするために.dgnデータベースが必要です。また、解像度単位（UOR）を作業単位スケールファクターに変換する必要があります（テキストスタイルはすべてのデータをUORで格納しますが、テーブル要素を.dgnモデルの一部として使用する予定がある場合、モデルの作業単位で操作する必要があります）。

```
OdDgTableElementPtr pTableElement = OdDgTableElement::createObject();
m_pModel3d->addElement( pTableElement );
pTableElement->initTableDefaults();

```

2\) 初期化後、テーブル本文のテキストスタイルを設定します。デフォルトの行の高さ、デフォルトの列の幅、最小のテーブルセルの幅と高さ、およびデフォルトのテーブルセルのマージンオフセットを設定する必要があります。

```
OdDgTextStyleTableRecordPtr pTableTextStyle = pTextStyleTable->getDefaultData();
pTableTextStyle->setName(L"TableTextStyle");
pTableTextStyle->setTextHeight( 0.1 * dScaleToUORs );
pTableTextStyle->setTextWidth( 0.1 * dScaleToUORs );
pTableTextStyle->setFontEntryId( pFontTable->getFont("Arial")->getNumber() );
pTableTextStyle->setColorIndex(250);
pTextStyleTable->add( pTableTextStyle );
pTableElement->setBodyTextStyle( pTableTextStyle->getEntryId() );

```

3\) テーブルの列と行を追加します。行と列の測定値は、作成後にデフォルトデータで初期化されます。

```
pTableElement->addColumn();
…
pTableElement->addColumn();
pTableElement->addRow();
…
pTableElement->addRow();

```

4\) 列と行の測定値を変更します。以下は、行と列の測定値を変更する例です。

```
pTableElement->getRow(1)->setHeight( 0.2 * minor );
…
pTableElement->getColumn(1)->setWidth( 0.15 * major );

```

5\) テーブルセルを結合します。複数のテーブルセルを1つの大きなセルに結合できます。セル結合には3つのルールがあります。

- 結合はそれ自体と交差することはできません。
- 長方形のセル領域のみを結合できます。
- 結合の内容は、左上（ベース）セル内の内容です。

```
OdDgTableElementMerge titleMerge;
titleMerge.setBaseRowIndex(0);
titleMerge.setBaseColumnIndex(0);
titleMerge.setRowCount(1);
titleMerge.setColumnCount(5);

pTableElement->addMerge( titleMerge );

```

6\) テーブルの塗りつぶし色を設定します。テーブルの塗りつぶしには2種類あります。まず、すべてのセルを塗りつぶすことができます。

```
pTableElement->getCell(1,4)->setFillColor(32);

```

また、奇数行と偶数行の塗りつぶし色をテーブルの本文行に適用できます。（テーブル要素には異なる種類の行が含まれています。デフォルトではすべての行が本文行ですが、0以外の数のタイトル行、ヘッダー行、フッター行を設定することも可能です。）

```
pTableElement->setOddFillColor( 1 );
pTableElement->setOddFillColorFlag(true);
pTableElement->setEvenFillColor( 2 );
pTableElement->setEvenFillColorFlag(true);

```

7\) セルの内容を設定します。テーブル要素のセルにはテキストデータのみを含めることができます。セルの内容を設定する方法は2つあります。

- 簡単な方法：「setCellText( const OdString&amp; strText )」関数を使用して単純なテキストを設定します。この関数は、セルテキストスタイルを持つテキストノードを作成し、必要な文字列を持つ1つのテキスト要素を追加します。
- 手動の方法：異なる色、サイズ、フォントなどを持つ複数行のテキストを設定し、テキストノードを作成してテキスト要素で埋め、その後setCellText(…)関数を使用して設定します。

```
OdDgTextNode3dPtr pMTextNode = OdDgTextNode3d::createObject();
OdDgText3dPtr pTextLine1 = OdDgText3d::createObject();
OdDgText3dPtr pTextLine2 = OdDgText3d::createObject();
…
pMTextNode->add( pTextLine1 );
pMTextNode->add( pTextLine2 );
…
pMTextNode->setDatabaseDefaults(m_pModel3d->database(), true);
pMTextNode->applyTextStyle( pMextStyle->elementId() );
pMTextNode->setJustification( OdDg::kCenterCenter );
pMTextNode->setLineSpacing(0.09);
pMTextNode->setLineSpacingType( OdDgTextExtendedProperties::kExact );
pTextLine1->applyTextStyle( pMextStyle->elementId() );
pTextLine2->applyTextStyle( pMextStyle->elementId() );
…
pTextLine1->setText(L"Multiline Text:");
pTextLine1->setCrCount(1);
pTextLine2->setText(L"- Line 1.");
pTextLine2->setItalics(true);
pTextLine2->setCrCount(1);
…
pTableElement->getCell(3,2)->setCellText( pMTextNode );

```

8\) テキストの位置、テキストの回転、セルの余白タイプ、およびセルの境界線もフォーマットできます。

```
// Set text alignment “Center, Middle”
pTableElement->getCell(1,1)->setTextAlignment(OdDgTableCellElement::kCenterMiddle);
// modify cell borders.
OdDgTableCellSymbology borderData;
borderData.setColorIndex(3);
borderData.setLineStyle(2);
borderData.setLineWeight(3);
borderData.setLineVisibility(true);

pTableElement->getCell(3,2)->setTopBorder(borderData);
pTableElement->getCell(3,2)->setBottomBorder(borderData);
pTableElement->getCell(3,2)->setLeftBorder(borderData);
pTableElement->getCell(3,2)->setRightBorder(borderData);

```

この記事のすべてのコードは、ExDgnCreateサンプルからのものです。テーブルの作成に関する詳細については、そちらを参照してください。

## 今すぐ始める

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

[無料で試す](https://www.opendesign.com/ja/free-trial)
