質問: tx.GetObject(modelspaceObjectId, OpenMode.ForWrite) as BlockTableRecord; btr.AppendEntity(hatch); tx.AddNewlyCreatedDBObject(hatch, true); tx.Commit(); } ``` ※entParentはこちらを呼び出す前に作成した閉じたポリラインのObjectId 1では、ハッチが作成されず、2ではハッチは作成されたが、オブジェクトタイプが旧環境とは異なり「ブロック参照」ではなく「ハッチング」となってしまいました。 調べてみたところ、 IJCAD 6.4 Proで「HATCH」コマンドを行った際に作成されるのは「ブロック参照」になりますが、IJCAD 2018 Proで「HATCH」コマンドを行った際に作成されるのは「ハッチング」になります。 その後の処理でハッチがブロック参照であることを前提としている処理があるため、新環境でもハッチを「ブロック参照」として作成したいと考えております。 そこで下記の方法を行うと考えています。 1.ハッチングを作成する。 2.ハッチングを分解し、線分にする。 3.分解してできた全線分を名無しのブロックにする。 上記の方法でもできるかと考えております。※未検証 ただし、標準的な方法があれば、その方法を実装したいと考えております。 これ以外に標準的な方法がございましたら、教えていただけないでしょうか? □旧環境 OS:Windows7 IJCAD:IJCAD 6.4 Pro VisualStudio:Microsoft Visual C++ 6.0 言語:C++ □新環境 OS:Windows10 IJCAD:IJCAD 2018 Pro VisualStudio:Visual Studio 2017 言語:C#
回答: IJCAD2018では、ハッチングのようなブロック参照を作成するような標準機能はありません。 お考えの通り、ハッチングオブジェクトを分解してブロック化する必要があります。 ただ、ブロック参照にしてしまうとハッチングとしての機能が失われてしまいますので、 この移植の際に、ブロック参照ではなくハッチングを扱う処理に変更した方が良いと思います。