Autor
|
Thema: Makro für Groups (DMU Navigator) (2358 mal gelesen)
|
Jannis1988 Mitglied
Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 19. Jul. 2012 14:59 <-- editieren / zitieren --> Unities abgeben:
Seit längerem versuche ich ein Makro in dem Workbench "DMU Navigator" zu erstellen. Leider finde ich nicht viele Befehle zu diesem Bereich. Ich wär euch sehr dankbar wenn jemand evtl. eine Methodik weiß wie man mit einem Befehl/Funktion, alle Objekte innerhalb einer Gruppe anwählen kann? (die Anzahl der Parts variert, d.h. es ist eine dynamische Gruppe, es kommen immer wieder neue Parts hinzu und alte werden entfernt) Ich bin mir nicht sicher ob das möglich ist, da die Group-Applications nur Verlinkungen zu den jeweiligen Parts beinhalten und ich jeweils immer nur die momentan vorhanden Parts erfassen kann. Zur Vollständigkeit: Das weitere Vorgehen wäre die angewählten Objekte zu kopieren und in ein neues Product einzufügen. Dieser Schritt ist mir verständlich. Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DasDon Mitglied Konstruktuer
Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 19. Jul. 2012 20:11 <-- editieren / zitieren --> Unities abgeben: Nur für Jannis1988
|
Jannis1988 Mitglied
Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 20. Jul. 2012 13:23 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort! Wenn ich unterschiedliche Gruppen habe, wähle ich diese mit einem Makro erst an und lass den Befehl dann erst laufen? Wie schaut so ein Text ungefähr aus? Grüße
[Diese Nachricht wurde von Jannis1988 am 20. Jul. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 20. Jul. 2012 15:26 <-- editieren / zitieren --> Unities abgeben: Nur für Jannis1988
Hallo, Code:
'----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------- '-------------------------------------------------Activate Component------------------------------------------------------------------------------------------------------ 'Author: Daniel Frauenrath 'Mail: daniel.frauenrath@gmail.com 'Release: 20.07.2012 'Version: 1.1 ' '************************************************************************************************************************************************************************* '<<<<<<<<<<<<<<<<Beschreibung / Discription>>>>>>>>>>>>>>>>>>>> '************************************************************************************************************************************************************************** ' 'DE: Komponenten Aktivieren (Gruppen (Group) werden direkt unterstuetzt) ' ' '************************************************************************************************************************************************************************* '<<<<<<<<<<<<<<<<Veränderungen / Change log>>>>>>>>>>>>>>>>>>>> '************************************************************************************************************************************************************************** 'Autor: Datum: Zeile/Line: Modul / UserForm: Anmerkung/Remark: '-------------------------------------------------------------------------------------------------------------------------- 'Daniel Frauenrath 20.07.12 alle alle Änderung für CAD.de ' '**************************************************************************************************************************************************** '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<Hauptfunktion>>>>>>>>&g t;>>>>>>>>>>>>>>>>>>>>>>>> '****************************************************************************************************************************************************Sub CATMain() '***DEKLARATIONEN Dim objProdDoc As ProductDocument Dim objSel As Object Dim strSelFilter(0) Dim strSelState As String Dim i As Long Dim objSelObject As Object Dim strSelObjName As String Dim objProductCol As New Collection Dim objGroupCol As New Collection Dim objProdSel As Object Dim objSelGroup As Object Dim objMsgBoxRes As VbMsgBoxResult Dim objRefProduct As Product '***FEHLERBAHANDLUNG On Error GoTo ErrHandler '***OBJKETE INSTANZIEREN Set objProdDoc = CATIA.ActiveDocument Set objSel = objProdDoc.Selection '***KEINE PRESELEKTION VORHANDEN If objSel.Count = 0 Then strSelFilter(0) = "Product" strSelState = objSel.SelectElement3(strSelFilter, "Select an Component / Group | ESC to Cancel", False, CATMultiSelTriggWhenUserValidatesSelection, True) If strSelState <> "Normal" Then Exit Sub Else For i = 1 To objSel.Count If CATIA.ActiveDocument.Product Is objSel.Item(i).Value And strModus <> "deaktivieren" Then objMsgBoxRes = MsgBox("Das Root-Product wurde selektiert!" + vbNewLine + "Die kann zu einem Absturz der Software führen" + vbNewLine + vbNewLine + _ "Wollen Sie mit der Aktivierung / Deaktivierung fortfahren?", vbQuestion + vbYesNo + vbDefaultButton2, "ACHTUNG!") If objMsgBoxRes = vbNo Then Exit Sub End If End If Next End If End If '***SELEKTION IN ARRAY VERSCHIEBEN For i = 1 To objSel.Count On Error Resume Next Set objSelObject = objSel.Item(i).Value If Err.Number <> 91 Then 'Kein TypeName aus Variable auslesbar On Error GoTo ErrHandler If TypeName(objSelObject) = "Group" Then CATIA.StartCommand "Load" objGroupCol.Add objSelObject ElseIf TypeName(objSelObject) = "Product" Then If objSelObject.Products.Count > 0 Then On Error Resume Next Set objRefProduct = objSelObject.ReferenceProduct If Err.Number <> 0 Then CATIA.StartCommand "Load" GoTo ErrHandler Else On Error GoTo ErrHandler End If End If objProductCol.Add objSelObject End If Else On Error GoTo ErrHandler Err.Clear End If Next '***SELEKTION LEEREN Set objSelObject = Nothing objSel.Clear '***AKTIVIEREN / DEAKTIVIEREN (OHNE GRUPPEN) For Each objProdSel In objProductCol objSel.Add objProdSel Next If objSel.Count > 0 Then ExecuteFunc strModus End If '***SELEKTION LEEREN Set objSelObject = objProductCol objSel.Clear '***ARRAY DURCHLAUFEN UND NACH GRUPPEN SUCHEN For Each objSelGroup In objGroupCol objSelGroup.FillSelWithExtract ExecuteFunc "aktivieren" Next '***LAUFZEITFEHLER UND BEENDIGUNG DES SKRIPTES ErrHandler: CATIA.StartCommand "Select objects" Exit Sub End Sub '***FUNKTION ZUM AKTIVIEREN DER GRUPPE Private Function ExecuteFunc(ByVal strModus As String) Select Case strModus Case "aktivieren" CATIA.StartCommand "Activate Terminal Node" End Select End Function
Das ist ein VBA-Code. Hiermit es es möglich entweder über ein Vorselektion bzw. über eine interaktive Selektion (Während der Makro Laufzeit) entweder Produkte (im Assembly-Kontext werden Parts so benannt) oder eben Gruppen (Group) zu aktivieren. Es werden dabei nur die Bauteile welche in den Gruppen sind aktiviert! HTH ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jannis1988 Mitglied
Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 23. Jul. 2012 09:32 <-- editieren / zitieren --> Unities abgeben:
|