AutoCadで良く使うクイック選択。
qselectコマンドですね。
それを.NETで作ってみようと思います。
クイック選択では、「線分」だけとか「円」だけとか選ぶ事が出来ると思いますが、今回は線分だけを選択してみようと思います。
クイック選択だとこんな感じですね。
選択しただけではわかりにくいので、今回は選択した線分を全て赤(RED)にしたいと思います。
まずは全体のソースを
このコマンドを実行する線分だけが赤になります。
選択の条件の作り方によっていろいろな選択が出来ます。
//フィルタの条件を作成 TypedValue[] lineFilterValue = new TypedValue[1] { new TypedValue((int)DxfCode.Start, "LINE") };
SQL文のように、"AND"、"OR"、 "NOT"を指定したり、円の直径やブロックの名称を条件にする事も出来るようですが、それはまた次回に。
また、選択エリアも今回のSelectAll()の他に、
SelectWindow()
窓選択で完全に窓内に入っているオブジェクト(マウスによる左からの窓選択)
SelectCrossingWindow()
窓選択で窓に掛かるオブジェクト(マウスによる右からの窓選択)
SelectWindowPolygon()
ポリゴン選択でポリゴン内に完全に入っているオブジェクト(マウス選択の"WP"コマンド)
SelectCrossingPolygon()
ポリゴン選択でポリゴンに掛かるオブジェクト(マウス選択の"CP"コマンド)
等があります。
SelectAll()以外の選択は、選択するオブジェクトがウインドウに表示されていないと、resSelection.Statusでエラーが返って来ます。
マウスで選択しながら移動するとウインドウ外のオブジェクトが非選択になるのと同じですね。
なので、あるオブジェクトのある範囲にあるオブジェクトを選択する場合にはその部分を表示させる必要があります。
と言うわけで、今日はこの辺で。
書きたいな~と思う事はあるのですが、ソースとかを上手くブログに紹介するのがイマイチよくわからないのと、上手に説明出来ない気がして(^^;)
要するに構成が下手なんですね(笑)
こんなブログですが、たま~~にアクセスして頂いている方もいらっしゃるようで、嬉しいです。
プログラムのプロでは無いので、怪しい所もありますが、今後ともよろしくお願いします(^^)