

ObjectARXを利用して、図面全体から指定長さ以下の線分を抽出する処理を作成しています。  
イテレータを使用したループでは時間がかかるため、他の方法を探しています。  
QSELECTで条件を指定すると短時間で抽出できるのですが、プログラムから実行することは可能でしょうか。  
また、acedSSGetに長さを条件に加えて検索することは可能でしょうか。  
ご回答いただけると非常に助かります。  
どうぞよろしくお願いします。


CC BY-SA 4.0
2021-11-08T12:15:47.840
83491
2021-11-26T04:45:47.550
31055
question
c++ ijcad
IJCADのObjectARXで微小線分の抽出を高速にしたいです。


> QSELECTで条件を指定すると短時間で抽出できるのですが、  
>  プログラムから実行することは可能でしょうか。

CADのQSELECTコマンドのように、  
プログラムで図形の種類やプロパティで条件指定して選択する事は可能です。  
acedSSGet()関数の第4引数(リザルトバッファ)を使用して、  
DXFのグループコードで条件を指定してフィルタリングする事ができます。

以下が条件指定で図形選択するためのリザルトバッファを作成するサンプルです。

[code]

    // (0,0)を始点に持つ線分でフィルタリングする例
    ads_point pt1;
    pt1[X] = pt1[Y] = pt1[Z] = 0.0;
    resbuf* prb;
    prb= acutBuildList(-4, _T("<AND"), RTDXF0,_T("LINE"), 10, pt1, -4, _T("AND>"), RTNONE);
    
[/code]

> acedSSGetに長さを条件に加えて検索することは可能でしょうか。

線分の長さを示すDXFコードが存在しないため、acedSSGetの条件に加えるのはできないと思います。


CC BY-SA 4.0
2021-11-26T04:45:47.550
83810
2021-11-26T04:45:47.550
39778
83491
answer