今日までは暇なので、こちらの動画を見ていました。
www.youtube.com
Productのリオーダーをマクロでどうやるのか知らなかったのですが、
動画に表示されているコードを見ると、単にカット&ペーストで処理するだけ
なんですね。(動画のReorder_Tree関数部分)
単純にTreeを逆にするだけですが、マネしてみました。
'vba ReverseAssyTree Sub CATMain() 'Doc取得 Dim ProDoc As ProductDocument: Set ProDoc = CATIA.ActiveDocument 'オプション変更 Dim AssyMode As AsmConstraintSettingAtt Set AssyMode = CATIA.SettingControllers.Item("CATAsmConstraintSettingCtrl") Dim OriginalMode As CatAsmPasteComponentMode OriginalMode = AssyMode.PasteComponentMode 'オプション切り替え AssyMode.PasteComponentMode = catPasteWithCstOnCopyAndCut 'カット Dim Pros As Products: Set Pros = ProDoc.Product.Products Dim Sel As Selection: Set Sel = ProDoc.Selection Dim i& Sel.Clear For i = Pros.Count To 1 Step -1 Sel.Add Pros.Item(i) Next Sel.Cut 'ペースト With Sel .Clear .Add Pros .Paste .Clear End With 'オプション戻し,UpDate AssyMode.PasteComponentMode = OriginalMode ProDoc.Product.Update End Sub
動画のコードでは、Selectionを2個使用していますが、理解していれば
1個だけで十分だとわかります。
(マクロの記録を取ると確かに2個利用したものになりました)
実際に試してみると、オプションの切り替えが肝のようです。
これ自体に利用価値は無いと思いますが、任意の順に(アルファベット順とか)
Selection.Addすれば良いだけなのです。