仕事のカタマリにようこそ!  [ ログイン | ユーザ登録 ]
フォーラムから検索

機械用3D-CAD SolidWorks非公認のユーザサイトです
 
 
Web katamari.org
仕事のカタマリ
ホーム リンク集 ダウンロード フォーラム(掲示板) FAQ お問い合わせ









フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27)
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2025/04/19 - 23:52:49
ホーム ヘルプ 検索 ログイン 登録

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 図面内の範囲選択 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 図面内の範囲選択  (閲覧数 2554 回)
akichin
Full メンバー
***

オフライン

投稿: 32



I'm a llama!

プロファイルを見る メールアドレス
図面内の範囲選択
« 投稿日: 2004/10/26 - 17:26:55 »
引用して返信

同様のタイトルの過去スレがありましたが、途中から方向が変わってしまっているので、再度、質問させて下さい。

図面上で範囲選択にて特定のアイテム(図面ビュー)のみ選択させたいのですが、APIにて選択フィルターを設定して、通常オペレーションの範囲選択を行えば宜しいのでしょうか?SldWorks->SetApplySelectionFilter を使用しているのですが、上手く行きません。具体的には、何も変わりません。範囲内の寸法・注記が選択されてしまい、図面ビューは選択されません。
設定手順もしくは、他の方法をご存知の方がいらっしゃったら、教えて下さい。
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:図面内の範囲選択
« 返信 #1 投稿日: 2004/10/26 - 18:05:07 »
引用して返信

範囲選択ではなく、Ctrlキーを押しながらツリーからの選択などは使えないのでしょうか?

私のところでは、図面ビューの数が10個程度なのでほとんど問題なく使えています。
もしよろしければ、akichinさんの環境で、どの様な時に「範囲選択による図面ビューの選択」が必要になるのか教えていただけますか?
議長に報告する   記録済み
akichin
Full メンバー
***

オフライン

投稿: 32



I'm a llama!

プロファイルを見る メールアドレス
Re:図面内の範囲選択
« 返信 #2 投稿日: 2004/10/27 - 10:41:37 »
引用して返信

Makoron さん、早速のお返事ありがとうございます。

やりたい事は、図面枠内の図面ビューのみ選択させたいのです。当然、図面枠は
四角いので、マウスの範囲選択で行けるかと思っているのですが‥。ツリーから
の選択では、名前順(?)に全ビューがぶら下がっているだけなので、枠内の図面
かどうか判断できないのです。別件ですが、範囲選択以外でも、特定の状態の場
合は、特定のアイテムしか選択できないようにもしたいので、できれば、この辺の
知識が必要になります。今までに試した方法は、

pSldWorks->SetSelectionFilter( swSelDIMENSIONS , FALSE );
pSldWorks->SetSelectionFilter( swSelNOTES, FALSE );

で選択させたくないアイテムを無効にしたり、

pSldWorks->SetSelectionFilter( swSelDRAWINGVIEWS, TRUE );

で図面ビューを有効にしたりしているのですが、思った様に行きません。

GetApplySelectionFilter や SetApplySelectionFilter も絡ませる必要がある
のでしょうか?
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:図面内の範囲選択
« 返信 #3 投稿日: 2004/10/27 - 11:09:44 »
引用して返信


引用:
やりたい事は、図面枠内の図面ビューのみ選択させたいのです。当然、図面枠は
四角いので、マウスの範囲選択で行けるかと思っているのですが‥。ツリーから
の選択では、名前順(?)に全ビューがぶら下がっているだけなので、枠内の図面
かどうか判断できないのです。

この説明からすると、図面枠外にある図面ビューは選択せずに、図面枠の中にある図面ビューを選択したい、と言うことでよいのでしょうか?
「選択」と言う言葉が何を意味するかはわからないのですが、APIで扱うことを前提としているようなので、Viewオブジェクトの取得ということで考えて、以下の処理でどうでしょう。

「図面枠内にある全ての図面ビューのViewオブジェクトを取得する」
(1)Sheet::GetPropertiesで図面枠の高さと幅を取得する
(2)図面ドキュメントないのViewオブジェクトを検索し、View::PositionでXY座標を取得して(1)の範囲内にあるかを判断


引用:

別件ですが、範囲選択以外でも、特定の状態の場
合は、特定のアイテムしか選択できないようにもしたいので、できれば、この辺の
知識が必要になります。今までに試した方法は、

pSldWorks->SetSelectionFilter( swSelDIMENSIONS , FALSE );
pSldWorks->SetSelectionFilter( swSelNOTES, FALSE );

で選択させたくないアイテムを無効にしたり、

pSldWorks->SetSelectionFilter( swSelDRAWINGVIEWS, TRUE );

で図面ビューを有効にしたりしているのですが、思った様に行きません。

GetApplySelectionFilter や SetApplySelectionFilter も絡ませる必要がある
のでしょうか?

この内容を考えてみると(図面ビューに関して)、APIで図面ビューフィルターを実行して、ユーザが対角指定し、図面枠内の図面ビューを複数選択したい。という事だと思います。
選択した後に何をするかがわからないのでなんともいえませんが、「図面枠内の全ての図面ビュー」と特定されているのであれば、先に書いたように、プログラムでViewオブジェクトを取得する方が良いかもしれません。
図面枠内の全ての図面ビューでない場合は、対角範囲選択の座標を取得するとかが必要になる顔知れませんね。

いまいち、内容を理解していないため、見当違いな内容になっているかも知れません。
議長に報告する   記録済み
akichin
Full メンバー
***

オフライン

投稿: 32



I'm a llama!

プロファイルを見る メールアドレス
Re:図面内の範囲選択
« 返信 #4 投稿日: 2004/10/27 - 11:31:10 »
引用して返信

Makoron さん、ご返事ありがとうございます。

まず、
選択した後に何をするかがわからないのでなんともいえませんが、
の件ですが、独自 Addin 内で、選択したビューに対して特定の処理を施しています。選択はオペレ
ータが図面上で判断して行いたいので、マウスオペレーションにて行う様にしています。
必ず行いたい事の1つが、図面枠内のビューの一括選択なので、最後の手段としては Makoron が
仰った様に、
「図面枠内にある全ての図面ビューのViewオブジェクトを取得する」
(1)Sheet::GetPropertiesで図面枠の高さと幅を取得する
(2)図面ドキュメントないのViewオブジェクトを検索し、View::PositionでXY座標を取得して(1)の範囲内にあるかを判断
を行うしかないと思っていますが、上記で説明した様に、選択の判断はオペレータが行いますので、
選択フィルターを使用した方が簡単かつ明確かと思い、お聞きしました。また同様にして、特定の場合
に、図面内の注記のみを選択可能にしたい(オペレータの誤選択を防ぐ目的)事もありましたので、
選択フィルターの設定方法が知りたかったのです。選択フィルターは、この様な方法には使えないの
でしょうか?
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:図面内の範囲選択
« 返信 #5 投稿日: 2004/10/27 - 11:56:56 »
引用して返信

遅ればせながら、内容を理解しました。

SolidWorksでは、対角指定で図面ビューを選択する機能がないみたいです。
それで、akichinさんが行ったように、
pSldWorks->SetSelectionFilter( swSelDRAWINGVIEWS, TRUE );
を使っても、図面ビューが選択されないのだと思います。
ちなみに、図面ビューのフィルターをかけている状態で、クリックでの選択は可能だと思います。
(フィルターをかけているので、図面ビューしか選択出来ないはずです。)

そこで、対角指定で選択をさせる仕組みを考える必要があると思います。
実際に試していないので出来るかはわかりませんが、マウスイベントを取得して座標を読み取り、前に書いた(2)の処理を行うことが出来れば良いのではないでしょうか。
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:図面内の範囲選択
« 返信 #6 投稿日: 2004/10/27 - 12:18:31 »
引用して返信


引用:
実際に試していないので出来るかはわかりませんが、マウスイベントを取得して座標を読み取り、前に書いた(2)の処理を行うことが出来れば良いのではないでしょうか。

SWでマウスイベントはないみたいなので、むずかしいかも...

議長に報告する   記録済み
akichin
Full メンバー
***

オフライン

投稿: 32



I'm a llama!

プロファイルを見る メールアドレス
Re:図面内の範囲選択
« 返信 #7 投稿日: 2004/10/27 - 13:08:45 »
引用して返信

Makoron さん、ご返事ありがとうございます。
「SolidWorksでは、対角指定で図面ビューを選択する機能がないみたいです。」
とは知りませんでした。もしかしたら、選択フィルターによる方法では無理かもしれ
ないですね‥。但し、言い忘れてしまいましたが、現在試しているのは範囲選択
(対角指定)ではなく、単一選択(クリックでの選択)です。
pSldWorks->SetSelectionFilter( swSelDRAWINGVIEWS, TRUE );
を行っただけでは、選択状況に何ら変化がありません。
pSldWorks->SetSelectionFilter( swSelDIMENSIONS , FALSE );
pSldWorks->SetSelectionFilter( swSelNOTES, FALSE );
を行っても、寸法・注記ともに選択できますので、単純に選択フィルターの設定
方法が間違っている様に思います。対角指定での使用はともかく、この辺の誤解
だけは解いておきたいのですが‥ビューの範囲選択については、Makoron さん
の仰る方法にするかもしれません。
議長に報告する   記録済み
akichin
Full メンバー
***

オフライン

投稿: 32



I'm a llama!

プロファイルを見る メールアドレス
Re:図面内の範囲選択
« 返信 #8 投稿日: 2004/10/27 - 14:54:43 »
引用して返信

そうなんです。Makoron さんの仰る通り、
マウスイベントが見当たりませんので、指示した座標を取得するのが大変
(無理?)そうです。クリック選択で選択可能なアイテムを特定するだけなら
swDrawingNewSelectionNotify で既に作成してあるのですが、スクリー
ン座標から変換する関数はあるんでしょうか?
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:図面内の範囲選択
« 返信 #9 投稿日: 2004/10/27 - 15:11:18 »
引用して返信

'
引用元: akichin 投稿日 '.timeformat('1098850125').'   
'Makoron さん、ご返事ありがとうございます。

毎回、的はずれな返事ですみません...

'
引用元: akichin 投稿日 '.timeformat('1098850125').'   
'
「SolidWorksでは、対角指定で図面ビューを選択する機能がないみたいです。」
とは知りませんでした。もしかしたら、選択フィルターによる方法では無理かもしれ
ないですね‥。但し、言い忘れてしまいましたが、現在試しているのは範囲選択
(対角指定)ではなく、単一選択(クリックでの選択)です。
pSldWorks->SetSelectionFilter( swSelDRAWINGVIEWS, TRUE );
を行っただけでは、選択状況に何ら変化がありません。
pSldWorks->SetSelectionFilter( swSelDIMENSIONS , FALSE );
pSldWorks->SetSelectionFilter( swSelNOTES, FALSE );
を行っても、寸法・注記ともに選択できますので、単純に選択フィルターの設定
方法が間違っている様に思います。対角指定での使用はともかく、この辺の誤解
だけは解いておきたいのですが‥ビューの範囲選択については、Makoron さん
の仰る方法にするかもしれません。

SetSelectionFilterのコードは全然気にしていませんでした。

基本的に「選択フィルター」の使い方を勘違いしているみたいです。
選択フィルターはONになっているタイプだけを選択させる機能です。
何もONになっていない場合は、選択フィルター機能がOFFになっている事と同じになります。

今回の様に
pSldWorks->SetSelectionFilter( swSelDIMENSIONS , FALSE );
pSldWorks->SetSelectionFilter( swSelNOTES, FALSE );
でOFFにしても、全てのタイプがOFFになっていると、選択フィルター機能がOFFになっているので
選択できてしまうのです。
あくまでも「ONにしたタイプのみの選択」です。
もし、寸法・注記を選択させずに、それ以外を選択させたい場合は、寸法と注記以外のタイプを
ONにして、選択フィルター機能をONにする必要があると思います。

また、SetSelectionFilterやSetApplySelectionFilter で使えるタイプはSolidWorksの選択フィルタータイプにあるものしか
受け付けてくれないみたいです。

最後に、Solidworks2004用の選択フィルター設定マクロを添付しましたので、参考にしてみてください。

 SelFilter.lzh
議長に報告する   記録済み
akichin
Full メンバー
***

オフライン

投稿: 32



I'm a llama!

プロファイルを見る メールアドレス
Re:図面内の範囲選択
« 返信 #10 投稿日: 2004/10/27 - 16:10:04 »
引用して返信

Makoron さん、ありがとうございます。

上手く行かない原因がやっと解かりました‥一番の原因は、SetSelectionFilter
の第一引数で swSelDRAWINGVIEWS が効いていなかった事です。
「選択フィルタータイプにあるものしか受け付けてくれないみたいです。」と仰って
ますが、選択フィルタータイプとは、swSelectType_e ではないのでしょうか?
API Help には、swSelDRAWINGVIEWS:"DRAWINGVIEW" は確かに記載
されているのですが‥後は Makoron さんが教えてくれた様に、有効である寸法
・注記をOFFにしても、全てのタイプがOFFになっていると、選択フィルター機能が
OFFになっているので選択できてしまっていた様です。マクロまで付けて頂いて
ありがとうございました。ビューに対して使えない様では、選択フィルターを用いる
方法は断念するしかなさそうです。最初に Makoron さんが仰っていた様に、

「図面枠内にある全ての図面ビューのViewオブジェクトを取得する」
(1)Sheet::GetPropertiesで図面枠の高さと幅を取得する
(2)図面ドキュメントないのViewオブジェクトを検索し、View::PositionでXY座標
を取得して(1)の範囲内にあるかを判断

を行うしかないかもしれません。
議長に報告する   記録済み
Makoron
カタマリの王様!?
*****

オフライン

投稿: 1277



SW2011SP5.0

プロファイルを見る
Re:図面内の範囲選択
« 返信 #11 投稿日: 2004/10/27 - 16:23:17 »
引用して返信

'
引用元: akichin 投稿日 '.timeformat('1098861004').'   
'選択フィルタータイプとは、swSelectType_e ではないのでしょうか?

swSelectType_eはSelectionMgr::GetSelectedObject5などで扱う為のタイプの集まりだと思います。
選択フィルターのAPIでは、専用のタイプリストを作らずにswSelectType_eを流用しているだけだと思います。
私もAPIヘルプを見たときには、「使えるのか!」と思いましたが、そうではない見たいですね。

'
引用元: akichin 投稿日 '.timeformat('1098861004').'   
'ビューに対して使えない様では、選択フィルターを用いる方法は断念するしかなさそうです。

何か別の方法を思いついたら(そして、忘れなかったら)、また書き込みます。
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 図面内の範囲選択 前のトピック 次のトピック
ジャンプします: