Autor
|
Thema: Set of Relation Löschen (1766 mal gelesen)
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 03. Mai. 2013 10:19 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, habe mir ein Makro zusammengebastelt, das mir die Relations in allen Parts und Produkten löscht. Funktioniert soweit sehr gut. Bei großen Baugruppen dauert das schon ein wenig Zeit. Wollte nun alle Set of Relation löschen. Wie kann ich dies umsetzen. Hier mein Code zum löschen der Relations.
Code: Function FuncDelete_Relations(RefDoc As Document, Prod As Product) As Integer Dim iCount As Integer Dim PartProd As Part Dim oRel As Relations Dim boolParam1 As Parameter If TypeName(RefDoc) = "PartDocument" Then Set PartProd = RefDoc.Part Set oRel = PartProd.Relations Set oSel = RefDoc.Selection ElseIf TypeName(RefDoc) = "ProductDocument" Then Set oRel = RefDoc.Product.Relations Set oSel = RefDoc.Selection Else MsgBox "Unerwarteter Dokumententyp!", vbExclamation, "DOKUMENT: FEHLER" End If FOR EACH aktiRel IN oRel oSel.Add aktiRel oSel.Delete Next On Error GoTo 0 End Function
------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 03. Mai. 2013 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Vielleicht kannst du ohne die Verwendung der Selektion die Relations schneller entfernen: Code: For iCount = 1 To oRel.Count oRel.Remove iCount Next
Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 03. Mai. 2013 14:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, ich wollte mir die zählerei der Relations ersparen. mehrere 100 Stück Von den "Set of Relation" sind weniger vorhanden. Ca. 6-8 Stück Das sollte doch dann viel schneller gehen? ------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 03. Mai. 2013 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Uwe Die einzige Idee die ich noch habe, ist die verwenden der Suche: Code: selection2.Search "CATKnowledgeSearch.AdvisorRelationSet,all" selection2.Delete
Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 03. Mai. 2013 14:48 <-- editieren / zitieren --> Unities abgeben:
|
geekv5 Mitglied Konstrukteur
Beiträge: 214 Registriert: 13.07.2011 Notebook<P>MSI GX660R Intel Core i5 460M 8GB DDR3 1GB Mobility HD5870 80GB Intel X25-M Postville 250GB HDD<P>Desktop<P>AMD Phenom II X4 965 1GB HD4890@ FirePro V8700 8GB DDR3-1600 2,5TB HDD<P>Belinea 2485 S1W 24" MVA
|
erstellt am: 07. Mai. 2013 09:04 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Hallo Uwe, müsste doch dann eigentlich so langen, kanns aber gerade nicht testen und bin noch stark angeschlagen vom gestrigen Abend: Code:
Sub Delete_Relations(RefDoc As Document)Set oSel = CATIA.ActiveDocument.Selection Select Case TypeName(RefDoc) Case "PartDocument","ProductDocument" Case Else MsgBox "Unerwarteter Dokumententyp!", vbExclamation, "DOKUMENT: FEHLER" Exit Sub End Select oSel.clear oSel.Add RefDoc oSel.search "CATKnowledgeSearch.AdvisorRelationSet,sel" oSel.Delete End Sub
Aus der Function habe ich mal eine Prozedur gemacht, da du ja eh keinen Wert zurückgibst.. Gruß Stefan ------------------ Seid nicht dumm, lest drin rum! [Diese Nachricht wurde von geekv5 am 07. Mai. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 14. Mai. 2013 16:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, habe jetzt erst gesehen, das du geantwortet hast. Hab das mal probiert einzubauen. Leider ohne Erfolg. "The Methode add Failed" ist die Fehlermeldung Kannst du mir noch einern Tipp geben. Code: Function FuncDelete_Relations(RefDoc As Document, Prod As Product) As Integer Dim iCount As Integer Dim PartProd As Part Dim oRel As Relations Dim boolParam1 As Parameter '***BESTIMMUNG DES DOKUMENTENTYPES If TypeName(RefDoc) = "PartDocument" Then Set PartProd = RefDoc.Part Set oRel = PartProd.Relations Set oSel = RefDoc.Selection ElseIf TypeName(RefDoc) = "ProductDocument" Then Set oRel = RefDoc.Product.Relations Set oSel = RefDoc.Selection Else MsgBox "Unerwarteter Dokumententyp!", vbExclamation, "DOKUMENT: FEHLER" End If oSel.clear oSel.Add RefDoc oSel.search "CATKnowledgeSearch.AdvisorRelationSet,sel" oSel.Delete On Error GoTo 0 End Function
"The Methode add Failed" ist die Fehlermeldung
------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 14. Mai. 2013 21:17 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Für was übergibst du RefDoc und Prod an die Funktion? Bei welchem Domententyp kommt der Fehler? Schon mal probiert das Part bzw das Product zu selektieren? (oSel.Add RefDoc.Part bzw oSel.Add RefDoc.Product) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 14. Mai. 2013 21:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, Zitat: Für was übergibst du RefDoc und Prod an die Funktion?
Weiß ich nicht so genau!? Es werden recursiv alle Parts und Produkte durchgegangen. Ich hab das so verstanden, das die Funktion bei einem Part und auch bei einem Produkt funktioniert. ------------------ Gruß Uwe Auch Catia ist nur ein Mensch! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 14. Mai. 2013 21:36 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Stefans Code läuft wenn du folgende Zeile änderst: osel.Add RefDoc.ProductAllerdings kommt teilweise eine Abfrage ob auch das Beziehungsset gelöscht werden soll? (ggf ist das von den Settings abhängig oder kommt nur bei ausgeblendeten Beziehungen vor) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 15. Mai. 2013 09:22 <-- editieren / zitieren --> Unities abgeben:
|
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 12. Dez. 2013 12:59 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich möchte das Thema wieder auffrischen. Wie schon geschrieben funtioniert das Makro nun bis auf die Fehlermeldung,ob die im NoShow stehenden Relations gelöscht werden sollen. Habe jetzt versucht die Relations vor dem Löschen in Show zu bekommen. Leider mit minderem Erfolg. Könnte sich das jemand mal anschauen und mir einen Tip, besser noch eine Lösung dazu geben.
Code: Function FuncDelete_Relations(RefDoc As Document, Prod As Product) As Integer Dim iCount As Integer Dim PartProd As Part Dim oRel As Relations Dim boolParam1 As Parameter '***BESTIMMUNG DES DOKUMENTENTYPES If TypeName(RefDoc) = "PartDocument" Then Set PartProd = RefDoc.Part Set oRel = PartProd.Relations Set oSel = RefDoc.Selection ElseIf TypeName(RefDoc) = "ProductDocument" Then Set oRel = RefDoc.Product.Relations Set oSel = RefDoc.Selection Else MsgBox "Unerwarteter Dokumententyp!", vbExclamation, "DOKUMENT: FEHLER" End If ************************* das ist mein Versuch********************************************************** FOR EACH aktiRel IN oRel oSel.Add aktiRel oSel.Hidden = false ********************************************************************************************************* oSel.clear oSel.Add RefDoc.Product oSel.search "CATKnowledgeSearch.AdvisorRelationSet,sel" oSel.Delete End Function
Vielen Dank schon mal für eure Mühe. ------------------ Gruß Uwe Auch Catia ist nur ein Mensch! [Diese Nachricht wurde von moppesle am 12. Dez. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 12. Dez. 2013 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Edit: Kommando zurück! Meine Annahme mit dem Next war falsch, der Code wär so in Ordnung. Nächste Vermutung wäre, dass Deine Selection nicht global ist oder Du erst in die entsprechende Workbench (z.B. PartDesign) wechseln musst. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 12. Dez. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
moppesle Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3418 Registriert: 28.05.2009 CATIA V5 R19 SP9 WIN 7 64bit
|
erstellt am: 12. Dez. 2013 14:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, grundlegend funktioniert das Makro schon. Nur das ich für jedes Relations-Set bestätigen muß das es nun gelöscht werden soll. (Siehe Bild von meinem letzten Beitrag) Wenn alle Relations im Show stehen kommt die Meldung halt nicht. Das ist bei 5-8 Relations pro Part und einigen 50- 100 Parts dann nicht zumutbar für den Anwender. ------------------ Gruß Uwe Auch Catia ist nur ein Mensch!
[Diese Nachricht wurde von moppesle am 12. Dez. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Dez. 2013 17:51 <-- editieren / zitieren --> Unities abgeben: Nur für moppesle
Servus Uwe Müsste es nicht reichen wenn du deinen Code so anpasst (ungetestet)?
Code: FOR EACH aktiRel IN oRel aktiRel.Hidden = false next
Wie rufst du deine Function auf? Warum verwendest du eine Function, wenn du keinen Wert zurück lieferst? Hast du ein rekursives Makro durch das Product oder eine Schleife über die Douments-Collecton? (ggf habe ich noch Verbesserungsideen) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |