| 投稿者 |
メッセージ |
harness
登録日: 2005年10月 14日 記事: 30 所在地: 愛知県豊田市
|
日時: 2008.08.25 (月) 17:43 記事の件名: レイヤ番号変更マクロ |
|
|
今晩は、harnessです
ご存じの方があれば教えてください。
kantokuさんに
CATPart下のすべての形状セットの表示要素を
任意のレイヤ番号に一括変更するマクロ
は教えて頂いたのですが。
CATPart下の複数の形状セットに対し、
対話的に、ひとつまたは複数の形状セットを選択し
選択した形状セット内要素のみ(非表示要素も含む)を
任意のレイヤ番号に一括変更するマクロを作成したいのですが。
宜しくお願い致します。 |
|
|
| トップに戻る |
|
 |
kuni9215
登録日: 2007年9月 12日 記事: 46
|
日時: 2008.08.26 (火) 00:40 記事の件名: Re: レイヤ番号変更マクロ |
|
|
いま手元に実機がなくて試せないのですが、先に形状セットを(単数でも複数でも)選択しておいて、
| Code: | | Selection.Search "Type=*,sel" |
とすれば、Selectionにはそれ以下のものが全部入ります。 |
|
|
| トップに戻る |
|
 |
harness
登録日: 2005年10月 14日 記事: 30 所在地: 愛知県豊田市
|
日時: 2008.08.26 (火) 06:30 記事の件名: レイヤ番号変更マクロ |
|
|
kuni9215さん、有難うございます!
表示/非表示要素も関係なく選択できるの
今日早速試してみます |
|
|
| トップに戻る |
|
 |
harness
登録日: 2005年10月 14日 記事: 30 所在地: 愛知県豊田市
|
日時: 2008.08.30 (土) 06:30 記事の件名: レイヤ番号変更マクロ |
|
|
こんにちはharnessです
下記マクロをこのフォーラムでkuni9215さん、kantokuさんにアドバイスして頂き作成しましたが
次の様に改定したいので、宜しくお願い致します。
添付のように
前提条件
・実要素が格納されている形状セットは3階層目に必ずある
要望
・CATPart内の3階層目のすべての形状セット名を取得して、
UserFormなりで、各レイヤ番号指示で一発でレイヤ番号変更したい
| Quote: | CATPart内の3階層目のすべての形状セット名を取得するには
どうしたらいいのでしょうか? |
Language="VBSCRIPT"
Sub CATMain()
Dim InputDocType(0)
InputDocType(0)="AnyObject"
Set ActiveDoc = CATIA[/quote].ActiveDocument
Set ActDocSel = ActiveDoc.Selection
Do
ActDocSel.Clear
Result = ActDocSel.SelectElement2(InputDocType,("形状セットを選択 //[Esc]=Cancel"),False)
If Result = "Cancel" Then
Exit Do
End If
lay = InputBox("レイヤNo?")
Set Document = CATIA.ActiveDocument
Set Selection = Document.Selection
Selection.Search "Type=*,scr"
Set visProperties1 = Selection.VisProperties
visProperties1.SetLayer catVisLayerBasic, lay
Loop While Result "Normal"
ActDocSel.Clear
End Sub |
編集者: harness, 最終編集日: 2008.08.30 (土) 06:45, 編集回数: 6 |
|
| トップに戻る |
|
 |
harness
登録日: 2005年10月 14日 記事: 30 所在地: 愛知県豊田市
|
日時: 2008.08.30 (土) 06:30 記事の件名: Re: レイヤ番号変更マクロ |
|
|
こんにちはharnessです
下記マクロをこのフォーラムでkuni9215さん、kantokuさんにアドバイスして頂き作成しましたが
次の様に改定したいので、宜しくお願い致します。
添付のように
前提条件
・実要素が格納されている形状セットは3階層目に必ずある
要望
・CATPart内の3階層目のすべての形状セット名を取得して、
UserFormなりで、各レイヤ番号指示で一発でレイヤ番号変更したい
| Quote: | CATPart内の3階層目のすべての形状セット名を取得するには
どうしたらいいのでしょうか? |
Language="VBSCRIPT"
Sub CATMain()
Dim InputDocType(0)
InputDocType(0)="AnyObject"
Set ActiveDoc = CATIA[/quote].ActiveDocument
Set ActDocSel = ActiveDoc.Selection
Do
ActDocSel.Clear
Result = ActDocSel.SelectElement2(InputDocType,("形状セットを選択 //[Esc]=Cancel"),False)
If Result = "Cancel" Then
Exit Do
End If
lay = InputBox("レイヤNo?")
Set Document = CATIA.ActiveDocument
Set Selection = Document.Selection
Selection.Search "Type=*,scr"
Set visProperties1 = Selection.VisProperties
visProperties1.SetLayer catVisLayerBasic, lay
Loop While Result "Normal"
ActDocSel.Clear
End Sub |
|
|
| トップに戻る |
|
 |
y4yama

登録日: 2005年1月 07日 記事: 559
|
日時: 2008.09.02 (火) 07:46 記事の件名: Re: レイヤ番号変更マクロ |
|
|
harnessさん、こんちは
>Set Document = CATIA.ActiveDocument
>Set Selection = Document.Selection
は、その前にも定義してるのに、また無駄に作ったらよくないですよ(整理・整頓しましょう)
>次の様に改定したいので、宜しくお願い致します。
丸投げしても実力は身に付かないですよ
基本的なとこを押さえれば、簡単なのです。まずは、automation manual で、
Part - HybridBodies - HybridBody - HybridBodies - HybridBody という階層があるのを理解しましょう
そうすればHybridBody (形状セット)を次々に取り出せます(記憶違いがあったらスミマセン)  |
|
|
| トップに戻る |
|
 |
harness
登録日: 2005年10月 14日 記事: 30 所在地: 愛知県豊田市
|
日時: 2008.09.02 (火) 23:51 記事の件名: Re: レイヤ番号変更マクロ |
|
|
y4yamaさん、返事遅くなり申し訳ありません
確かに丸投げですね、有難うございます。 |
|
|
| トップに戻る |
|
 |
kuni9215
登録日: 2007年9月 12日 記事: 46
|
日時: 2008.09.05 (金) 11:13 記事の件名: Re: レイヤ番号変更マクロ |
|
|
y4yamaさんと意図することは同じですが、このようなツリーを作って形状セット.3をオブジェクトレゾリューションしてみればすぐにわかりますよ。
| Code: |
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part
Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies
Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("形状セット.1")
Dim hybridBodies2 As HybridBodies
Set hybridBodies2 = hybridBody1.HybridBodies
Dim hybridBody2 As HybridBody
Set hybridBody2 = hybridBodies2.Item("形状セット.2")
Dim hybridBodies3 As HybridBodies
Set hybridBodies3 = hybridBody2.HybridBodies
Dim hybridBody3 As HybridBody
Set hybridBody3 = hybridBodies3.Item("形状セット.3")
|
|
|
|
| トップに戻る |
|
 |
harness
登録日: 2005年10月 14日 記事: 30 所在地: 愛知県豊田市
|
日時: 2008.09.06 (土) 23:36 記事の件名: Re: レイヤ番号変更マクロ |
|
|
kuni9215さん、返事が遅くなり申し訳ありません。
ありがとうございます!!  |
|
|
| トップに戻る |
|
 |
iwap
登録日: 2008年8月 27日 記事: 2
|
日時: 2008.10.20 (月) 10:04 記事の件名: Re: レイヤ番号変更マクロ |
|
|
いつも参考にさせていただいています。
先日、レイヤー番号を設定するマクロを作ったのですが、
そのマクロを使用したデータを「.model」で保存しようとすると、
3D形状の面の一部が変換できなくなるエラーが起こる確率が、かなり高くなります。
Selection.Searchをメインで使うものと、
形状セットの中身を再起呼び出しして、Selection.Addをメインで使うものと
2つ作りましたが、同じようなことが起こりました。
マクロを使用するとそういった不具合が出るものなのでしょうか?
この症状は、マクロを使用後にデータを上書きして、CATIAを立ち上げ直して、
再度データを開き、.modelに保存し直すと回避できるようですが、
なぜこのようなことが起こるのか原因がわかれば教えていただきたいです。
よろしくお願いします。 |
|
|
| トップに戻る |
|
 |
|