slectByID2
新人さん
オフライン
投稿: 5
I'm a llama!
|
|
面、エッジのプロパティの名称について
« 投稿日: 2009/01/13 - 16:13:36 » |
|
面、エッジのプロパティの名称について教えていただきたいことがあるのですが、マクロで自動的に任意の名称をつけるプログラムを組みたいのですが、うまくいきません。参考のプログラムを組んでいただければありがたいのですが… よろしくお願いします。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:面、エッジのプロパティの名称について
« 返信 #1 投稿日: 2009/01/13 - 16:46:01 » |
|
slectByID2さん、こんにちは。
.SelectByID について というスレッドに添付されている、 AKIRAさんが作成されたサンプルファイルは、役に立つのではないでしょうか? (かなり昔の内容なのでうる覚えですが、どうでしょうか・・・。) また、わからない事や問題点があれば、サンプルマクロのどの部分がわからないかを書いてくれると、説明もしやすくなると思います。
|
|
|
|
slectByID2
新人さん
オフライン
投稿: 5
I'm a llama!
|
|
Re:面、エッジのプロパティの名称について
« 返信 #2 投稿日: 2009/01/15 - 13:37:05 » |
|
Makoronさん回答ありがとうございます。
AKIRAさんのプログラム参考になりました。 このAKIRAさんのプログラムでは、エッジに名称をつけエッジどうしの合致(同心円)になることがわかりました。 私はこのプログラムを応用して、面に面プロパティによって名称をつけ面同士の一致をしようと試みましたがうまくいきませんでした。 GetBody.GetEdges→GetBody.GetFacesのように変更すれば面の選択ができると思いましたが、こんな単純なプログラム変更ではいかないのでしょうか?
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:面、エッジのプロパティの名称について
« 返信 #3 投稿日: 2009/01/15 - 17:08:27 » |
|
残念ながら Body2オブジェクトに対するGetFacesというメソッドは存在しません。
swBody.GetFirstFaceにて最初の面を取得した後に、GetNextFaceを使って ボディ内の面を巡回して操作するのが一般的です。
詳しくは、APIヘルプでBody2::GetFirstFaceの項に例が出ているので参考にしてみて下さい
|
|
|
|
slectByID2
新人さん
オフライン
投稿: 5
I'm a llama!
|
|
Re:面、エッジのプロパティの名称について
« 返信 #4 投稿日: 2009/01/15 - 17:24:22 » |
|
hisaさん回答ありがとうございます。
APIヘルプなんですが私は英語が苦手で・・・調べてみたのですが理解できませんでした。 SWJのサイトもライセンスの関係でサービスが受けられません。 もし参考のプログラムを添付していただけたらありがたいのですが
|
|
|
|
hisa
カタマリの王様!?
オフライン
投稿: 507
PANDA-Z!!
|
|
Re:面、エッジのプロパティの名称について
« 返信 #5 投稿日: 2009/01/15 - 18:07:20 » |
|
APIヘルプのSelect All Faces of Component Example (VB)を参考に作ってみました。
For i = 0 To UBound(vChild)
'構成部品から全ボディ取得 vBodyArr = vChild(i).GetBodies2(swSolidBody) 'ボディが見付かったか判断 If Not IsEmpty(vBodyArr) Then For Each vBody In vBodyArr 'ボディから最初の面を取得 Set swFace = vBody.GetFirstFace Do While Not swFace Is Nothing If vChild(i).GetModelDoc.GetEntityName(swFace) = "Face1" Then bRet = swFace.Select4(True, Nothing) Exit For End If '次の面を取得 Set swFace = swFace.GetNextFace Loop Next End If Next i
マルチボディの場合も考慮して、Component2::GetBodyでは無く、Component2::GetBodies2にしています。 (構成部品名の判断文ははしょっちゃいました )
ちなみに、APIヘルプのサンプルコードは日本語版ヘルプでも英語表記です(笑)
|
|
|
|
slectByID2
新人さん
オフライン
投稿: 5
I'm a llama!
|
|
Re:面、エッジのプロパティの名称について
« 返信 #6 投稿日: 2009/01/15 - 18:25:20 » |
|
hisaさんありがとうございます!!
これを参考にしてまたがんばってみます。
|
|
|
|