Unofficial CATIA User Forum


レイヤ番号変更マクロ

 
新しいトピックを投稿   トピックに返信    Unofficial CATIA User Forum フォーラム一覧 -> CAAテクニカル
投稿者 メッセージ
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 (形状セット)を次々に取り出せます(記憶違いがあったらスミマセン) Razz
トップに戻る
ユーザー情報を表示 プライベートメッセージを送信
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さん、返事が遅くなり申し訳ありません。
ありがとうございます!! Very Happy
トップに戻る
ユーザー情報を表示 プライベートメッセージを送信
iwap



登録日: 2008年8月 27日
記事: 2

記事日時: 2008.10.20 (月) 10:04    記事の件名: Re: レイヤ番号変更マクロ 引用付きで返信

いつも参考にさせていただいています。

先日、レイヤー番号を設定するマクロを作ったのですが、
そのマクロを使用したデータを「.model」で保存しようとすると、
3D形状の面の一部が変換できなくなるエラーが起こる確率が、かなり高くなります。

Selection.Searchをメインで使うものと、
形状セットの中身を再起呼び出しして、Selection.Addをメインで使うものと
2つ作りましたが、同じようなことが起こりました。

マクロを使用するとそういった不具合が出るものなのでしょうか?

この症状は、マクロを使用後にデータを上書きして、CATIAを立ち上げ直して、
再度データを開き、.modelに保存し直すと回避できるようですが、
なぜこのようなことが起こるのか原因がわかれば教えていただきたいです。

よろしくお願いします。
トップに戻る
ユーザー情報を表示 プライベートメッセージを送信
特定期間内の記事を表示:   
新しいトピックを投稿   トピックに返信    Unofficial CATIA User Forum フォーラム一覧 -> CAAテクニカル All times are GMT +9:00
Page 1 of 1

 
移動先:  
新規投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
投票参加: 不可
このフォーラムで添付ファイルを投稿 できません
このフォーラムでファイルをダウンロード できません

© Tadas Talaikis, oashy, 2005
Powered by phpBB © 2001, 2005 phpBB Group
WP Theme by Sebastian Schmieg. phpBB Conversion by Branwen.net