development of

Tieghaに関する備忘録とおまけ

【IJCAD】カメラを作成する

IJCAD ではカメラを設置できない?

IJCAD には 3D ビューカメラを作成するための CAMERA [カメラ] コマンドが存在しません。
それなのに何故かカメラオブジェクトに関する、 CAMERADISPLAY 等のシステム変数は存在してます。 まぁこのシステム変数は、AutoCADとの互換性を取るために存在しているのかもしれません。

本当にIJCADではカメラを設置できないのか??

コマンドが存在しないので IJCAD ではカメラは作成できないと普通は思いますが、API を使用することでカメラを作成することはできちゃったりします。
ただ、IJCAD が 3D ビューには対応していない節があるので、無理やりカメラオブジェクトを作成して設置することは何とかできるといった感じです。

サンプルコード

var db = Application.DocumentManager.MdiActiveDocument.Database;
var ed = Application.DocumentManager.MdiActiveDocument.Editor;

using (var tr = db.TransactionManager.StartTransaction())
{
    var vt = tr.GetObject(db.ViewTableId, OpenMode.ForWrite) as ViewTable;
    var vtr = new ViewTableRecord();
    vtr.Name = "TESTCAM";
    vt.Add(vtr);
    tr.AddNewlyCreatedDBObject(vtr, true);

    vtr.Target = new Point3d(50, 50, 50);
    vtr.ViewDirection = new Vector3d(0, -50, 0);
    vtr.PerspectiveEnabled = true;
    vtr.Height = 50;
    vtr.CenterPoint = Point2d.Origin;
    vtr.LensLength = 30;

    var vsDict = tr.GetObject(db.VisualStyleDictionaryId, OpenMode.ForRead) as DBDictionary;
    vtr.VisualStyleId = vsDict.GetAt("Realistic");

    db.CameraDisplay = true;

    tr.Commit();
}

実行結果

IJCADでサンプルコードを実行するとモデル空間上にカメラが配置され、カメラオブジェクトが表示されています。 +30点

f:id:tknmt:20190419143621p:plain

VIEW コマンドでビュー管理ダイアログを表示して確認してみると、作成したカメラのビューがモデルビューに追加されています。 +60点

f:id:tknmt:20190419143655p:plain

カメラを選択してみるとIJCADは異常終了します。-10000点

結論

今後リリースされる IJCAD に、 3D ビューカメラ機能が実装されるまでは、カメラを設置しない方が無難ですね。

カメラを作成した後、図面を保存して再度 IJCAD で開くと、カメラはどこにも表示されていませんでした。
ただ、保存した図面をAutoCADなどで開くとカメラはちゃんとありましたので、データベース内には問題なく追加されているのかもしれません。