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

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









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

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 2階層より下層にあるフィーチャーのハイライト方法 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 2階層より下層にあるフィーチャーのハイライト方法  (閲覧数 1567 回)
puh
新人さん
*

オフライン

投稿: 4



I'm a llama!

プロファイルを見る
2階層より下層にあるフィーチャーのハイライト方法
« 投稿日: 2009/10/09 - 17:46:50 »
引用して返信

いつもお世話になっております。
連投で申し訳ありませんが自力では分からなかったので質問させていただきます。

開発環境
Windows XP Professional
Visual Studio 2008(VB)
SolidWorks(R) Premium 2009 SP2.0


※ 以下の質問文において、[]で囲ったものは添付画像のフィーチャーを指しています。

[SubAssem]をアクティブなモデルドキュメントに設定した状態で、
[3dSketch]のフィーチャーを取得し、Feature.Select2メソッドで選択状態にすると図形がハイライトされます。

しかし、[MainAssem]をアクティブなモデルドキュメントに設定した状態で、
[3dSketch]のフィーチャーを取得し、Feature.Select2メソッドで選択状態にしても図形がハイライトされません。

[MainAssem]をアクティブなモデルドキュメントに設定した状態で[3dSketch]をハイライト状態にする方法はないのでしょうか?


解決方法が分かる方いらっしゃいましたら宜しくお願いします。
 Katamari_2.jpg
議長に報告する   記録済み

hisa
カタマリの王様!?
*****

オフライン

投稿: 507



PANDA-Z!!

プロファイルを見る WWW
Re:2階層より下層にあるフィーチャーのハイライト方法
« 返信 #1 投稿日: 2009/10/13 - 10:13:40 »
引用して返信

どの様な処理・手順で選択しているか分からないので何とも言えませんが、
Windows XP Pro+SolidWorks2008 SP5.0 のVBA(マクロ)では正しく
ハイライトされました。
(SW2009環境はないので・・・)

開発環境によるバグの可能性もあるので、SPを変更してみるとかしてみては
どうでしょうか

一応、SWのAPIヘルプにあった
Traversing Assembly at Component and Feature Levels Example (VB)
というサンプルに手を加えて、指定したフィーチャー名をアセンブリ全体から
(構成部品含んで)選択するマクロコードを添付しておきます

※手を加えた部分には、注釈を入れています。
 Select2FeatName.txt
議長に報告する   記録済み
puh
新人さん
*

オフライン

投稿: 4



I'm a llama!

プロファイルを見る
Re:2階層より下層にあるフィーチャーのハイライト方法
« 返信 #2 投稿日: 2009/10/13 - 16:40:19 »
引用して返信

>hisaさん
御回答、ありがとうございました。
教えて下さった方法で解決しそうです。

当方の処理手順、説明不足で申し訳ありませんでした。
3Dスケッチの内部IDを取得しておき、その内部IDより3Dスケッチを取得し選択状態にしていました。
(画面を表示し、3Dスケッチの一覧を表示し、画面一覧上で選択された3Dスケッチをハイライトさせる処理)

内部IDを取得する際のModelDocExtension.GetPersistReference3と
内部IDからオブジェクトを取得する際のModelDocExtension.GetObjectByPersistReference3は
ModelDocExtension直下のフィーチャーに対してのみ有効なのかもしれません。

2階層下のフィーチャーは内部ID取得は出来たのですが、内部IDからオブジェクトを取得する際に内部ID無効のエラーがでて取得できませんでした。
質問では「2階層より下層」と質問してしまいましたが「2階層以下層」の間違いでした。
失礼しました。
議長に報告する   記録済み
hisa
カタマリの王様!?
*****

オフライン

投稿: 507



PANDA-Z!!

プロファイルを見る WWW
Re:2階層より下層にあるフィーチャーのハイライト方法
« 返信 #3 投稿日: 2009/10/15 - 14:30:04 »
引用して返信

PersistReferenceは、アセンブリの場合トップのModelDoc2から取得する必要があるみたいです。

puhさん添付画像で例えると、SubSubAssem下の3Dスケッチ参照IDをMainAssemから取得する場合には、
SubSubAssem->ModelDoc->ModelDocExtension->GetPersistReference3 ではなく
MainAssem->ModelDoc->ModelDocExtension->GetPersistReference3 となります。
返される参照IDのByte配列個数も異なります。

返ってきた値を、
MainAssem->ModelDoc->ModelDocExtension->GetObjectByPersistReference3(参照ID)
としたら、ちゃんとフィーチャーが返ってきてSelect2出来ました。

一応、開いているアセンブリor部品内に存在する3Dスケッチをリスト表示して、リストから選択した
3Dスケッチを選択してハイライトさせるサンプルマクロを添付しておきます
 Search3DSketch.lzh
議長に報告する   記録済み
hisa
カタマリの王様!?
*****

オフライン

投稿: 507



PANDA-Z!!

プロファイルを見る WWW
Re:2階層より下層にあるフィーチャーのハイライト方法
« 返信 #4 投稿日: 2009/10/15 - 15:13:39 »
引用して返信

余談ですが、SW2008からFeatureManager上部にあるフィルターで、
添付画像の様な状態にすることも可能です
 Filter.PNG
議長に報告する   記録済み

ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 2階層より下層にあるフィーチャーのハイライト方法 前のトピック 次のトピック
ジャンプします: