

IJCAD 2017のVBAで開発をしています。  
長さ寸法（GcadDimRotated）について聞きたいことがあります。

IJCADで図面上にある長さ寸法を選択した後、寸法の始点と終点（座標値）を知りたいのですが、ヘルプでGcadDimRotateやGcadDimensionクラスをいくら調べても、それらしいプロパティが見つかりませんでした。

平行寸法（GcadIimAligned）クラスにはExtLine1Point、ExtLine2Pointのプロパティがあってこちらでは簡単に取得できるようです。

始点・終点を知る方法がわかれば教えてください。


CC BY-SA 4.0
2018-07-13T02:43:45.343
45572
2023-10-28T09:01:20.150
29128
question
vba ijcad
IJCADのVBAで長さ寸法の始点・終点を取り出したい


残念ながら、IJCADのVBAではGcadDimRotateの始点と終点を取得することはできません。AutoCADのAcadDimRotateでも取得できないので仕様としか言えないです。

回避策としては、VBAではなくVB.NetやGRXで開発を進めるとか、取得するだけのモジュールを.Net
APIやGRXで作ってVBAから呼び出して使うとか、一時的に長さ寸法を分解（Explode）して得られたLineから始点終点を求めるなどの方法が考えられます。


CC BY-SA 4.0
2018-07-13T04:18:31.477
45575
2018-07-13T04:18:31.477
29030
45572
answer


回転寸法オブジェクトに ExtLine1Point と ExtLine2Point プロパティがないのはおかしいと思います。

回転寸法の始点と終点の座標値は図形リストの13と14で取得できます。

[code]

    (setq el (entget (car (entsel))))
    
[/code]

座標値を文字列化する関数を用意して

[code]

    (defun ptos ( p ) 
      (strcat (rtos (car p)) "," (rtos (cadr p)) "," (rtos (caddr p))))
    
[/code]

システム変数 USERS1 に文字列化した座標値を保存して

[code]

    (setvar "USERS1" (ptos (cdr (assoc 13 el))))
    
[/code]

VBAでそれを取得することも可能です。

[code]

    Dim text As String
    text = ThisDrawing.GetVariable("USERS1")
    
[/code]

また図面に拡張データか拡張レコード(XRECORD)を用意すれば、座標値をLISPとVBAの間で受け渡すことも可能です。


CC BY-SA 4.0
2019-10-05T06:32:54.030
59474
2019-10-05T06:37:31.057
2019-10-05T06:37:31.057
32986
36080
45572
answer