

円弧を作成したあと、ARC(Curve)のStartPointを利用しても開始点ではなく終点が取れることがありますが、  
線を引いた際の開始点を取る方法はあるのでしょうか？

[![画像の説明をここに入力](https://i.stack.imgur.com/E8R8z.png)](https://i.stack.imgur.com/E8R8z.png)

[![画像の説明をここに入力](https://i.stack.imgur.com/KfEi5.png)](https://i.stack.imgur.com/KfEi5.png)  
[![画像の説明をここに入力](https://i.stack.imgur.com/rnf6g.png)](https://i.stack.imgur.com/rnf6g.png)  
※プログラムから取得した際も同様

[code]

    using (Transaction acTrans = acDb.TransactionManager.StartTransaction())
    {
        PromptSelectionResult res = acEdr.GetSelection();
        if (res.Status == PromptStatus.OK)
        {
            foreach (ObjectId objId in res.Value.GetObjectIds())
            {
                using (Entity ent = acTrans.GetObject(objId, OpenMode.ForRead) as Entity)
                {
                    if (ent is Arc arc)
                    {
                        // 円弧の場合、開始点と終点を取得（逆転している）
                        Point3d startPoint = arc.StartPoint;
                        Point3d endPoint = arc.StartPoint;
                    }
                }
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2021-09-02T08:52:49.937
82180
2021-10-01T05:10:56.253
44517
question
c# .net ijcad
IJCADで円弧を作成した際の曲線の開始点・終点を取得する方法について


> 線を引いた際の開始点を取る方法はあるのでしょうか？

円弧(ARC)のプロパティから円弧の線を引いた1点目を取得することはできません。  
円弧のAPIの仕様では点をセットした順ではなく、  
反時計周り方向を正として始点(Curve.StartPoint)、終点(Curve.EndPoint)がセットされます。

プログラムで対応するなら、

  * Document.BeginCommand など、ARCコマンドを監視するイベント
  * Editor.PointMonitor など、マウスの座標を監視するイベント
  * DBObject.XData など、独自の情報を保持するプロパティ
  * Database.ObjectAppended など、Databaseの変更を監視するイベント

といったAPIを組み合わせて、ARCオブジェクトをデータベースに追加する直前に、  
ARCオブジェクトの拡張データに最初にクリックした点の座標を保持させて、  
ARCオブジェクトの拡張データから最初にクリックした点を取得する  
という方法が考えられます。


CC BY-SA 4.0
2021-10-01T05:10:56.253
82788
2021-10-01T05:10:56.253
39778
82180
answer