Autor
|
Thema: Löschen von Relations und Parameters (4397 mal gelesen)
|
J.Streit Mitglied
Beiträge: 5 Registriert: 22.10.2008 MS Windows XP Prof. x64 3,0 GHz DualCore Proz. Nvidia Quadro Fx1700
|
erstellt am: 22. Okt. 2008 16:50 <-- editieren / zitieren --> Unities abgeben:
Hallo erstmal an die Gemeinde, Bin neu hier (zumindest als Mitglied, nicht als Leser) und versuche auf diesem Wege Hilfe zu bekommen. Ich habe zur Aufgabe, produktübergreifend aus Parts und Products verschiedene Parameters und Relations zu entfernen. Bislang habe ich das mit der Suchfunktion von Hand realisiert. Dieses ist auch soweit okay, läuft leider nicht automatisch durch, da bei Hidden Relations bzw. Hidden Parameters eine Warnmeldung im Catia erscheint, welche man bestätigen muss, um auch versteckte Objekte zu löschen. Ich habe nun seit einigen Tage die Lektüre von Herrn Ziehten und hänge leider an einem Punkt. Folgendes habe ich schon erreicht. ############## Sub CATMain() Dim partDocument1 As Document Set partDocument1 = CATIA.ActiveDocument 'Set of Relations suchen------------------------------------------------------------------------------- Dim Liste1 As Selection Set Liste1 = CATIA.ActiveDocument.Selection Liste1.Clear Liste1.Search "CATKnowledgeSearch.AdvisorRelationSet.NameInGraph=Relations;all" 'Set of Relations definieren und leeren-------------------------------------------------------------- Dim USel1 As Selection Set USel1= CATIA.ActiveDocument.Selection
'Gefundene 'Set of Relations selektieren und entfernen------------------------------------------ USel1.Cut 'Parameters suchen------------------------------------------------------------------------------- Dim Liste2 As Selection Set Liste2 = CATIA.ActiveDocument.Selection Liste2.Clear Liste2.Search "(CATKnowledgeSearch.AdvisorParameterSet.NameInGraph!=Parameters & CATKnowledgeSearch.AdvisorParameterSet.NameInGraph!=Stueckliste),all" 'Parameters definieren und leeren-------------------------------------------------------------- Dim USel2 As Selection Set USel2= CATIA.ActiveDocument.Selection
'Gefundene Parameters selektieren und entfernen------------------------------------------ USel2.Cut End Sub ############ Solange sich keine versteckten Parameter bzw. Relations in der Selektion befinden, läuft mein Script durch und entfernt die Auswahl. Wenn keine gesuchten Relations bzw. Parameters vorhanden, bzw. einige oder Alle als Hidden deklariert sind, hängt sich das Script auf. Ich bin vielleicht noch nicht weit genug in dem Buch vorwärts gekommen und alle swürde sich von selbst erklären. Die Aufzeichnung des ganzen mit dem Macrorecorder hat mich auch nicht weiter gebracht. Also falls jemand Lust hat, sich mit mir darüber Gedanken zu machen, wäre ich sehr dankbar. Ansonsten finde ich das Forum seit Jahren schon echt klasse, sehr sachlich und informativ. Gruß Jan ------------------ Wenn hier jemand glaubt, ich sei verrückt, dann hat der Recht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 22. Okt. 2008 17:27 <-- editieren / zitieren --> Unities abgeben: Nur für J.Streit
Hallo Jan, ich habe gleich zwei Vorschäge für dich. Der erste basiert auf einer Schleife in der alle Parameter/Relations des Parts durchlaufen werden. In dem If-Block (siehe Code) kannst du dann einen Namen bestimmen. Der Parameter/Relation der den Namen trägt wird gelöscht. Sollen mehrere Parameter/Relations mit unterschiedlichen Namen gelöscht werden muss der If Block mit einem -> or erweitert werden (siehe Code Kommentar) Code:
Sub CATMain()Set oDoc = CATIA.ActiveDocument Set partDoc = oDoc.Part Set oSel = oDoc.Selection Set oPara = partDoc.Parameters Set oRel = partDoc.Relations oSel.Clear Dim i As Integer For i = 1 To oPara.Count Set aktiPara = oPara.Item(i) If aktiPara.Name = "Adapter\Length.1" Then 'or aktiPara.Name = "xxx" ... usw. (das or muss natürlich vor dem THEN stehen) oSel.Add aktiPara oSel.Delete End If Next oSel.Clear
For j = 1 To oRel.Count Set aktiRel = oRel.Item(j) If aktiRel.Name = "DesignTable.1" Then 'or aktiRel.Name = "xxx" ... usw. (das or muss natürlich vor dem THEN stehen) oSel.Add aktiRel oSel.Delete End If Next oSel.Clear End Sub
Mein zweiter Vorschlag baut auf deinem auf. Du sagtest ja du hast Probleme mit "hidden" Parameter. Wenn du es so machen willst wie du schon angefangen hast, emfiehlt sich erst in einer Schleife alle Parameter/Relation abzulaufen und die Eigenschaft "HIDDEN" auf "FALSE" zu stellen (siehe Code). Damit werden erst alle Parameter / Relations wieder sichtbar gemacht. Dann sollte dein Makro ja laufen Code:
Sub CATMain()Set oDoc = CATIA.ActiveDocument Set partDoc = oDoc.Part Set oPara = partDoc.Parameters Set oRel = partDoc.Relations Dim i As Integer For i = 1 To oPara.Count Set aktiPara = oPara.Item(i) aktiPara.Hidden = False Next
For j = 1 To oRel.Count Set aktiRel = oRel.Item(j) aktiRel.Hidden = False Next End Sub
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
J.Streit Mitglied
Beiträge: 5 Registriert: 22.10.2008 MS Windows XP Prof. x64 3,0 GHz DualCore Proz. Nvidia Quadro Fx1700
|
erstellt am: 23. Okt. 2008 08:39 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, vielen Dank für die schnelle Hilfe. Wie schon in meinem ersten Beitrag beschrieben, bin ich Neuling im Thema der Scripte. Ich kann mit der Schleifenfunktion noch nicht viel anfangen, zumindest beim Einbau ins Script. Also habe ich mich für die 2. Variante entschieden und blende nun erst die Parameters und Relations ein. Dies passiert problemlos bis zu der Zeile: USel1.cut Ich denke aber, dass ich noch einen Fehler beim Setzen der Variablen habe und werde es vorerst mal allein versuchen. Wenns laufen sollte, stell ichs hier ins Forum. Das Ganze soll später natürlich im Product ausgeführt werden und jedes Part einbeziehen. Sollte ich nicht zurecht kommen, würde ich gern nochmal auf Unterstützung zurück greifen. Jedenfalls nochmals Danke. Gruß Jan ------------------ Wenn hier jemand glaubt, ich sei verrückt, dann hat der Recht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
J.Streit Mitglied
Beiträge: 5 Registriert: 22.10.2008 MS Windows XP Prof. x64 3,0 GHz DualCore Proz. Nvidia Quadro Fx1700
|
erstellt am: 23. Okt. 2008 10:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, ich bitte nochmal um Hilfe. Ich wollte erstmal versuchen, nur alle Hidden Parameters und Relations einzublenden. Im einzeln geöffneten Part funktioniert das auch ohne Probleme. Nun möchte ich das ganze von aktivierten RootProduct machen, wobei er in jedem geladenen Part suchen und einblenden soll. Welche Variable muss ich dafür setzen. Hier nochmal das bisherige: ############################### Sub CATMain() Set oDoc = CATIA.ActiveDocument Set partDoc = oDoc.Part Set oPara = partDoc.Parameters Set oRel = partDoc.Relations Dim i As Integer Dim j As Integer For i = 1 To oPara.Count Set aktiPara = oPara.Item(i) aktiPara.Hidden = False Next For j = 1 To oRel.Count Set aktiRel = oRel.Item(j) aktiRel.Hidden = False Next End Sub ####################### Vielleicht hast Du eine Lösung oder wer anders. Danke im Voraus. Gruß Jan ------------------ Wenn hier jemand glaubt, ich sei verrückt, dann hat der Recht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 23. Okt. 2008 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für J.Streit
Hallo Jan, du hast doch in deinem ersten Beitrag erwähnt das du gerade ein Buch durcharbeitest. Ich würde dir emfehlen zuerst das Buch durchzuarbeiten, denn das ganze in einem Produkt zu realisieren ist ein bisschen komplizierter. Dazu braucht man schon ein bisschen Erfahrung. Im Forum gibt es schon ein fertiges Makro das eine Produktstruktur rekursiv durchläuft. In dieses Makro müsstest du dann dein eigenes einbauen. Warum willst du überhaupt die Parameter und Relation ausschneiden. Ch dachte du willst sie löschen? Ich denke mal es liegt am xxx.CUT. Versuch einfach mal xxx.DELETE ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
J.Streit Mitglied
Beiträge: 5 Registriert: 22.10.2008 MS Windows XP Prof. x64 3,0 GHz DualCore Proz. Nvidia Quadro Fx1700
|
erstellt am: 23. Okt. 2008 16:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, Ich glaub auch, dass es mir eigentlich nichts bringt, wenn ich nicht allein dahinter steig. Werde Deinen Rat befolgen. Problem bei mir ist leider, dass ich mein Geld eigentlich mit Großwerkzeugkonstruktion verdiene, nicht mit Programmierung. Werde das Forum mal durchsuchen. Als Anregung ist was Fertiges oft nützlich. DELETE hatte ich auch schon versucht, gleiches Ergebnis. Also, nochmals Dank. Gruß Jan ------------------ Wenn hier jemand glaubt, ich sei verrückt, dann hat der Recht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 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: 23. Okt. 2008 16:59 <-- editieren / zitieren --> Unities abgeben: Nur für J.Streit
Hallo, Code:
... Liste1.Clear Liste1.Search "CATKnowledgeSearch.AdvisorRelationSet.NameInGraph=Relations;all" 'Set of Relations definieren und leeren-------------------------------------------------------------- Dim USel1 As Selection Set USel1= CATIA.ActiveDocument.Selection
'Gefundene 'Set of Relations selektieren und entfernen------------------------------------------ USel1.Cut ...
USel1.Cut kann nicht funktionieren da in der Selektion nicht drinnen ist! Mit Liste1.Cut bzw. Liste1.Delete sollte es gehen, da in dieser Selektion die Werte liegen.------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Elektroplaner (m/w/d) Fertigung und Montage | Technologien auf das nächste Level zu heben, sich Herausforderungen zu stellen und an den Innovationen von morgen zu arbeiten - dafür benötigen wir bei FERCHAU Expert:innen wie dich: als ambitionierte Kolleg:innen, die wie wir Technologien auf die nächste Stufe bringen möchten. Wir realisieren spannende Projekte für namhafte OEMs und Zulieferer der Automobilindustrie und übernehmen Verantwortung für komplexe Entwicklungsprojekte.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
J.Streit Mitglied
Beiträge: 5 Registriert: 22.10.2008 MS Windows XP Prof. x64 3,0 GHz DualCore Proz. Nvidia Quadro Fx1700
|
erstellt am: 23. Okt. 2008 17:13 <-- editieren / zitieren --> Unities abgeben:
Daniel, das hat geholfen. Es funzt im Part. Um das Pruduktübergreifende kümmere ich mich anschließend. DANKE, DANKE, DANKE Jan ------------------ Wenn hier jemand glaubt, ich sei verrückt, dann hat der Recht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|