souma
カタマリの王様!?
オフライン
投稿: 318
|
|
穴ウィザードの穴に色付け
« 投稿日: 2009/12/15 - 10:21:25 » |
|
いつもお世話様になっております。 過去スレの「フェース色の変更」に似た質問なのですが、マクロは素人のため ご教授頂けるとありがたいのですが・・・。
早速ですが、穴ウィザードで明けた穴部分に、色付けは可能でしょうか? 具体的には、下記の2種類の穴に色付けしたいのですが
1)JISの、ねじ穴−−緑色 2)ISOの、穴 −−−青色
上記穴&その他の穴を加工後に、それぞれのマクロ実行すると穴部分に色づけされる。 実際のマクロコードを示して頂けると、とても嬉しいです。 無理な御願いですが、どなたかお助け頂けると助かります。
宜しくお願い致します。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:穴ウィザードの穴に色付け
« 返信 #1 投稿日: 2009/12/15 - 12:41:27 » |
|
ザックリ作ってみました
アセンブリから全ての構成部品にも対応できるように、APIヘルプのサンプル Traversing Assembly at Component and Feature Levels Example を流用して、穴ウィザード判別→色づけとしています。 (もちろん、部品単体でも実行可能です)
Select Caseのところで、穴のタイプからRGB値を変えているので、必要に応じて 条件とRGB値を追加・変更することが出来ます
あと、サンプルにあるDebug.Printはそのまま残しているので、いらなければ削除して下さい
|
|
|
|
souma
カタマリの王様!?
オフライン
投稿: 318
|
|
Re:穴ウィザードの穴に色付け
« 返信 #2 投稿日: 2009/12/15 - 14:55:14 » |
|
hisaさん、いつもありがとうございます。
実行時エラーが発生します。 たぶんSW2007ですので、ダメだと思うのですが・・・。
「実行時エラー'438’ オブジェクトは、このプロパティまたはメソドをサポートしていません」 客先の都合で、SW2008&2009は未インストールです。 先日SW2010も送られてきました。(いつのことやらです)
出来ればSW2006&2007で走るようになれば、良いのですが・・・ さらなるお手数を御掛けしますが、宜しくお願い致します。
|
|
|
|
souma
カタマリの王様!?
オフライン
投稿: 318
|
|
Re:穴ウィザードの穴に色付け
« 返信 #3 投稿日: 2009/12/15 - 15:08:57 » |
|
自己レスです。 SW2006にて、実行できました。
TypeName2の2を削除しました。 動作も、ばっちりです。 hisaさん、本当にありがとうございました。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:穴ウィザードの穴に色付け
« 返信 #4 投稿日: 2009/12/15 - 17:01:29 » |
|
引用:
スミマセン、ワナを仕掛けてしまいましたね ご推察の通り、TypeName2はSW2008からのメソッドなのでSW2007以前は TypeNameでOKです (TypeName2との違いは、返すフィーチャーの種類が増えただけみたいです)
|
|
|
|
souma
カタマリの王様!?
オフライン
投稿: 318
|
|
Re:穴ウィザードの穴に色付け
« 返信 #5 投稿日: 2009/12/16 - 11:05:19 » |
|
hisaさん、もう一つ教えて頂けますでしょうか?
SW2006でOKと自己レスしたのですが、2007の間違いでした。 で、2006でマクロを実行したところ、その下でエラー発生 APIヘルプ見たら、FastenerType2は2007からのようですのでFastenerTypeに変更しました。 こんどは、エラー出ないのですが色が付きません。ヘルプを見ながら怪しそうな所を探ったのですが、変化有りませんでした。 大変ご迷惑を御掛けしますが、2006に対応するための変更箇所を教えて頂きたく、御願い致します。
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:穴ウィザードの穴に色付け
« 返信 #6 投稿日: 2009/12/16 - 12:39:12 » |
|
FastenerTypeはFastenerType2と違って、穴の種類を示す文字列が返ってきます。 (FastenerType2は、穴の規格+種類を示すLong値が返っきます) 色が変わらなかった理由は、Select CaseでFastenerType2が返すLong値を 比較しているので、条件に当てはまらない=処理されないといった状態になります。
なので、SW2006の場合は穴規格を返すWizardHoleFeatureData2::Standardも 使用して、穴規格判別→穴種類判別という処理に変える必要があります。
具体的には、If swFeat.GetTypeName = "HoleWzd" Then から Set swFeat = swFeat.GetNextFeatureの手前までを以下のように変更します。
Code: ' 穴ウィザード判断 If swFeat.GetTypeName = "HoleWzd" Then Set swWizHoleFeat = swFeat.GetDefinition ' 穴規格判別(まずはStandardで規格を判断) If swWizHoleFeat.Standard = "JIS" Then ' 穴種類判別(FastenerType2と違って文字列で判断) Select Case swWizHoleFeat.FastenerType Case "ねじ穴", "仕上げねじ穴" ' 緑に着色 SetHoleColor swFeat, 0, 255, 0, pModel End Select End If ' 穴規格判別(まずはStandardで規格を判断) If swWizHoleFeat.Standard = "ISO" Then ' 穴種類判別(FastenerType2と違って文字列で判断) Select Case swWizHoleFeat.FastenerType Case "ドリル サイズ", "ねじすきま", "ねじ下穴ドリル" ' 青に着色 SetHoleColor swFeat, 0, 0, 255, pModel End Select End If End If
|
これでSW2006でもいけると思います
|
|
|
|
souma
カタマリの王様!?
オフライン
投稿: 318
|
|
Re:穴ウィザードの穴に色付け
« 返信 #7 投稿日: 2009/12/16 - 15:18:16 » |
|
hisaさん、ありがとうございます。 さっそく修正してみました。OKです。(バッチグー チョット古いか?)
お忙しいところ、ご親切にありがとうございました。 感謝・感謝です。
時間を見つけて、コードの違いを勉強してみます。
|
|
|
|