hdyk_yamada
カタマリの王様!?
オフライン
投稿: 500
NIGHTINGALE
|
|
ツリーの展開
« 投稿日: 2005/07/04 - 21:17:06 » |
|
いつもお世話になります。
ツリーの展開のマクロを作ろうと思ったのですが、よくわかりません。 どなたか、教えてください。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:ツリーの展開
« 返信 #1 投稿日: 2005/07/05 - 22:46:41 » |
|
いろいろと調べてみたのですが、フィーチャツリーをコントロールするAPIは見つかりませんでした。
簡易的にでも実現できないかと思って、Featureオブジェクトを取得してSelectメソッドで選択、そしてSendKeys関数で+や−を送ってツリーの展開・収縮できないかと思ってやってみたのですが、これも思うように動作しませんんでした。
hdyk_yamadaさんがどの様なことをやられたいかはわからないのですが、参考までに簡単なツリー展開の手動操作を書いておきます。
ツリーのトップを選択してキーボードの「*」を押す。
これで、全ての子供のツリーが展開されます。 (SWに限らずほとんどのツリーコントロールで可能な方法です。)
|
|
|
|
hdyk_yamada
カタマリの王様!?
オフライン
投稿: 500
NIGHTINGALE
|
|
Re:ツリーの展開
« 返信 #2 投稿日: 2005/07/06 - 08:58:22 » |
|
わあ〜〜〜 こんな手で出来るなんて知りませんでした。 『*』を押すと、今表示しているツリー以降を展開 『-』を押すと収縮するんですね。 ありがとうございました。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ツリーの展開
« 返信 #3 投稿日: 2006/02/02 - 10:23:18 » |
|
hiroponです 私も現在、FeatureManagerのツリー操作でしたいことができません。 マクロ上で部品を選択させたときに、FeatureManagerでも選択させたいのですが カーソルが移動してくれません。サブアセンブリ内の部品であればサブアセンブリの 展開すらしてくれません。。。困りました。。。 どなたかご存知ないでしょうか。。。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:ツリーの展開
« 返信 #4 投稿日: 2006/02/02 - 11:02:27 » |
|
hisaです
FeatureManagerデザインツリーの展開の可否は、システムオプションの "FeatureManager"内にある"選択アイテムの自動表示"チェックのON/OFFに 左右されるみたいなので、APIでこのチェックをONにすれば対応出来ると 思います。
ざっとAPIで選択に関するメソッドを探ってもFeatureManagerに関する引数が 見当たらなかったので、とりあえずこんなところで…
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ツリーの展開
« 返信 #5 投稿日: 2006/02/02 - 11:39:11 » |
|
hiroponです hisaさんありがとうございます。 こんなチェックボックスがあったんですね。。。 ところがですねーー。このチェックがOnしていても マクロで部品を選択するとFeatureManagerのカーソルが 移動しないんです (手動で選択すると移動するんですが。。。) マクロ上でチェックOnにしないといけないのかなと思い SldObj.SetUserPreferenceToggle swUserPreferenceToggle_e.swFeatureManagerEnsureVisible, True を追加したんですが同じでした 困りました
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:ツリーの展開
« 返信 #6 投稿日: 2006/02/02 - 12:04:16 » |
|
引用:マクロで部品を選択するとFeatureManagerのカーソルが 移動しないんです (手動で選択すると移動するんですが。。。)
|
丁度作成中のマクロにも選択の処理(Select2)があったので確認してみましたら… 確かに展開されてません
どうやらSelectByIDであれば有効のようです。←誤情報 マクロの記録で確認しただけだったので中途半端な情報になってしまいましたね
もう少し探ってみようと思います
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ツリーの展開
« 返信 #7 投稿日: 2006/02/02 - 12:32:19 » |
|
SelectByID有効でしたか? 私、 PModelObj.Extension.SelectByID2(CompObj(CompIndex).SelectPassName, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0) というような感じで、(座標からではなく)構成部品の名称から、選択しているんですが、 この方法でも、展開されませんでした。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:ツリーの展開
« 返信 #8 投稿日: 2006/02/02 - 13:48:21 » |
|
確かに…COMPONENTでは展開されませんね…… 度々中途半端な情報でスミマセン…
更に探ってみたところ、デザインツリーの展開が機能するのは 一部の種類の要素を選択したときのみ有効のようです。(面と原点は確認済み) 『SelectByIDだから〜』の件は誤った情報です。スミマセンm(__)m
ですので、選択した構成部品(COMPONENT)からボディを取得(GetBody)して 更にボディから最初の面を取得(GetFirstFace)した後、取得した面の選択(Select2) すると展開されます。(これはしっかりと検証をしました )
上記の方法以外に面以外の有効な要素の取得などもっと合理的な手段があるかも しれませんが、とりあえずこんなところで…
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ツリーの展開
« 返信 #9 投稿日: 2006/02/02 - 14:16:02 » |
|
こちらこそ深く検証いただき有難うございます。 そうゆうことだったのかーー 面や原点を選択だったとは 思いつきませんでした。。。 ありがとうございます。助かります ということは、サブアセンブリを選択してFeatureManagerでのカーソルを 移動させようとすると、原点を選択するってことになるのかな 調査が必要ですね。 サブアセンブリもできてくれないと 機能のメリットが半減するので できてほしい! hisaさん、本当に助かりました。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ツリーの展開
« 返信 #10 投稿日: 2006/02/02 - 14:40:45 » |
|
思いのほか、早く調査が完了しました。 原点を選択して ツリー展開およびカーソルの移動が可能でした。 私の方は SlectById2 関数を使用し、第一引数 Nameに 目的部品の原点をあらわす 文字列を入力することで 実現できました。 サブアセンブリにも対応しました。 ありがとうございました。
|
|
|
|
hdyk_yamada
カタマリの王様!?
オフライン
投稿: 500
NIGHTINGALE
|
|
Re:ツリーの展開
« 返信 #11 投稿日: 2006/02/06 - 20:54:20 » |
|
出来ましたか? 私はまだ出来ません。 記録で取ると『"COMPONENT"』が出ていたのでやってみたのですが、うまくいきませんでした。 もう少し詳しく教えてください。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ツリーの展開
« 返信 #12 投稿日: 2006/02/07 - 15:06:17 » |
|
hdyk_yamadaさん コンポーネントでなく原点をまず選択します boolstatus = PModelObj.Extension.SelectByID2("点1@原点@" & ”部品コンポーネント", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
でまず原点選択
boolstatus = PModelObj.Extension.SelectByID2( ”部品コンポーネント", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
で部品選択でいけます。 ツリー展開だけなら、2つめの部品選択はいらないかもしれません 原点選択の場合は 第二引数は"EXTSKETCHPOINT"にします 。。。
|
|
|
|
hdyk_yamada
カタマリの王様!?
オフライン
投稿: 500
NIGHTINGALE
|
|
Re:ツリーの展開
« 返信 #13 投稿日: 2006/02/07 - 16:29:41 » |
|
ありがとうございます。
早速やってみます。
|
|
|
|
hdyk_yamada
カタマリの王様!?
オフライン
投稿: 500
NIGHTINGALE
|
|
Re:ツリーの展開
« 返信 #14 投稿日: 2006/02/07 - 17:11:16 » |
|
SW2004では、SelectByID2が存在しないのでSelectByIDでやってみたんですが、何も起こらなかった。
|
|
|
|
hiropon
Sr. メンバー
オフライン
投稿: 84
I'm a llama!
|
|
Re:ツリーの展開
« 返信 #15 投稿日: 2006/02/07 - 17:59:24 » |
|
そうですかーー :- 私のは2005なので問題ないのかなぁー 2004を使っている人はいないから、確認のしようが ないです。ごめんなさい hisaさんのおっしゃる Select2ではどうです?
あとは、ちゃんと選択できてます?(できてたらごめんなさい ) しっかり選択できているかは
boolstatus = PModelObj.Extension.SelectByID2("点1@原点@" & ”部品コンポーネント", "EXTSKETCHPOINT", 0, 0, 0, True, 0, Nothing, 0)
の返り値 boolstatusで確認できますよ(TrueならOK)
|
|
|
|