Autor
|
Thema: PartBody Farbe wechsel (7213 mal gelesen)
|
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 13. Jun. 2013 14:15 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich will im CatProduct alle CATPart PartBody die Farbe geändert, nuer die Partbody rest nicht. Ich habe diese code gemacht aber funktionier nicht. Bitte Hilfe. Entschuldigung für mein Deutsch. Vielen Danke Das meine code: Language="VBSCRIPT" '------------------------------------------------------------------------ ' Prozedur CATMain '------------------------------------------------------------------------ ' Seleccionar todo lo que esta en color gis STD CATIA (210,210,255) ' y pasarlo al color Amarillo (244,226,90) ' ------------------------------------------------------------------------ Sub CATMain() Set ProductDocument1 = CATIA.ActiveDocument Set Product1 = ProductDocument1. Product Dim ProductDoc1_As_Document Set ProductDoc1 = Catia.ActiveDocument Dim Selection1_As_Selection Set Selection1 = ProductDoc1.Selection '------------------------------------------------------------------------ ' Pasarlo al color Amarillo (244,226,90) '------------------------------------------------------------------------ Selection1.Search "CATGmoSearch..PartBody,all" Set visPropertySet1 = Selection1.visProperties visPropertySet1.SetRealColor 244,226,90,1 Selection1.Clear End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 13. Jun. 2013 15:10 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Hallo, da ich es nicht hinbekommen habe, explizit nach Hauptkörpern zu suchen (geht das überhaupt?) sind mir zwei Ansätze eingefallen: 1. Das Produkt rekursiv durchlaufen und dann bei jedem gefundenen Part den Hauptkörper selektieren (part.mainbody) und die Farbe anwenden.. 2. Alle Körper suchen, bei jedem Körper zum dazugehörigen Part hochhangeln und falls es der Hauptkörper ist, zu einer Liste hinzufügen.. Dann alle Elemente dieser Liste der Selektion hinzufügen und die Farbe anwenden.. Ich habe jetzt mal Variante 2 umgesetzt, wobei das mit der Rekursion sicher die bessere Variante ist.. Funktioniert hat es trotzdem, habe es aber nur im VBA Editor getestet.. Code:
Sub CATMain()Dim productDocument1 As ProductDocument Dim selection1 As Selection Dim vispropertyset1 As VisPropertySet Dim body1 As Body Dim part1 Dim bodycol As New Collection Set productDocument1 = CATIA.ActiveDocument Set selection1 = productDocument1.Selection Set vispropertyset1 = selection1.VisProperties selection1.Search "CATPrtSearch.BodyFeature,all" 'Alle Bodies im aktiven Dokument suchen For i = 1 To selection1.Count Set body1 = selection1.Item(i).Value Set part1 = body1 Do While Not TypeName(part1) = "Part" 'Zugehöriges Part ermitteln Set part1 = part1.parent Loop If part1.MainBody.GetItem("ModelElement").InternalName = body1.GetItem("ModelElement").InternalName Then 'Überprüfen ob Body = MainBody bodycol.Add body1 'Zu MainBody Collection hinzufügen End If Next selection1.Clear For i = 1 To bodycol.Count 'Gefundene MainBodies selektieren selection1.Add (bodycol.Item(i)) Next vispropertyset1.SetRealColor 244, 226, 90, 1 'Farbe anwenden End Sub
Edit: Noch ein paar Kommentare eingefügt.. ------------------ Seid nicht dumm, lest drin rum! [Diese Nachricht wurde von geekv5 am 13. Jun. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 15. Jun. 2013 08:53 <-- editieren / zitieren --> Unities abgeben:
Hallo geekv5! Vielen Danke, das ist sehr, sehhhhr Gut wie Du funktioniert perfekt, nuer eine Hilfe mehr, Du hat gemacht mit CatProduct aber für direkt im eine CatPart who ist die modifikation code zu machen?. Noch mal, entschuldigen mich für mein Deutsch, das eine schwear sparche für mich, ich immer in meine sprache denken und die konstruktion ist komplet false und schlecht. m.f.G. Manuel 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: 15. Jun. 2013 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Servus Vermutlich reicht es die Zeile Code: Dim productDocument1 As ProductDocument
inCode: Dim productDocument1 As Document
zu ändern.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 19. Jun. 2013 10:38 <-- 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: 19. Jun. 2013 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Hallo Manuel, wenn du den Code so änderst wie von Bernd vorgeschlagen, muss das aktive Dokument ein CATPart sein, also NICHT in einem Produkt.. Gruß Stefan ------------------ Seid nicht dumm, lest drin rum! 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: 19. Jun. 2013 12:27 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Servus Stefan Sicher? Es sollte meiner Ansicht nach bei allen Dokumenten laufen bzw kein Fehler bringen. Aber bei zB einer Drawing macht es natürlich wenig Sinn. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 19. Jun. 2013 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Hallo Bernd, klar hast Recht, habe mich verlesen War der Meinung, du hättest das als PartDocument deklariert und nicht als Document.. Gruß Stefan ------------------ Seid nicht dumm, lest drin rum! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 20. Jun. 2013 09:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd & Stefan" Nuer eine Frage, welche code, nr. usw ist das Farbe "Automatic" weil ich muss die alte Farbe nach dia Automatic Farbe wechsel und nacher nach blue oder andere und mit diese code funktioniert nich. Vielen Danke PDTA: Meine Prozes Macro alle CATPart am CATProduct Farbe Wechsel nach Automatic (sauber wie original CATPart) Macro alle CATPart(Wie original) am CATProduct Farbe Automatic nach Farbe Blue, Gelb, oder andere in Partbody. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 20. Jun. 2013 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Hallo Manuel, die Standardfarbe hast du doch schon in deinem ersten Beitrag stehen 210,210,255 Eine andere Möglichkeit, als über diese RGB Codes ist mir nicht bekannt.. Gruß Stefan ------------------ Seid nicht dumm, lest drin rum! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xyon126 Mitglied Ingenieur
Beiträge: 74 Registriert: 07.11.2011
|
erstellt am: 20. Jun. 2013 19:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan! Vielen Dank, aber das code nummer 210,210,255 das ist RGB code und nich das Farbe Automatic, die Farbe ende graphich ist gleich aber im Partbody bleib nicht wie Automatic sondem wie RGB 210,210,255 und wann die Partbody hat andere Farbe, kann nicht richtig. Ich brauche wie muss ob ist Möglich Automatic CATIA Farbe. M.f.G. Manuel 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: 20. Jun. 2013 19:19 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
|
DasRelikt Mitglied Dipl.-Ing. Maschinenbau
Beiträge: 16 Registriert: 04.01.2005 Windows 7 x64 CATIA V5R21 SP3 x64 ENOVIA V5 VPM V5R21
|
erstellt am: 21. Jun. 2013 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Hallo, ich habe den Code von geekv5 als CATScript gespeichert. Nun bekomme ich bereits bei der folgenden Zeile einen Fehler:
Code: Dim bodycol As New Collection
Nach Änderung in Dim bodycol As Collection ist bei Zeile:bodycol.Add body1 Schluß. Wo liegt der Fehler (am Unwissenden)? Vielen Dank @Bernd: Danke, jetzt habe ich es verstanden [Diese Nachricht wurde von DasRelikt am 21. Jun. 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: 21. Jun. 2013 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
Servus Der Fehler kommt, da es in CATScript keine Collection gibt. Kopiere den Code in VBA, dann sollte dieser laufen. (oder du verwendest statt der Collection einen Array) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ferdo Mitglied engineer
Beiträge: 34 Registriert: 15.04.2009 Windows 7, 64 CATIA v5r25 , 3DEXPERIENCE on cloud
|
erstellt am: 22. Jun. 2013 00:34 <-- editieren / zitieren --> Unities abgeben: Nur für xyon126
In CATScript... Sub CATmain () CATIA.DisplayFileAlerts = False ' What do you want to select Dim EnableSelectionFor(0) EnableSelectionFor(0) = "AnyObject" ' Reset the Selection Set sSEL = CATIA.ActiveDocument.Selection sSEL.Clear ' Define Selection MsgBox "Please Select the element from which you want to get the color" UserSelection = sSEL.SelectElement2(EnableSelectionFor, "Please Select the element from which you want to get the color", False) ' Evaluation if the selection is correct or not If UserSelection <> "Normal" Then MsgBox "Error with the selection" Exit Sub Else End If '//////getting rgb color of a selected feature in the tree Dim visProperties1 As VisProperty Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties Dim r, g, b r = CLng(0) g = CLng(0) b = CLng(0) visProperties1.GetRealColor r, g, b MsgBox "r = " & r & " g = " & g & " b = " & b Dim response response = MsgBox ("- If you want to color ALL PARTS inside Active CATPRODUCT with CATIA default color click YES" & Chr(13) & Chr(13) & "- If you want to reset color to default of ALL PARTS colored with previously selection inside Active CATPRODUCT click NO" & Chr(13), vbYESNO) If response = vbYES THEN Dim productDocument1 As Document Set productDocument1 = CATIA.ActiveDocument Dim selection1 As Selection Set selection1 = productDocument1.Selection selection1.Search "CATPrtSearch.MechanicalFeature,all" Set visPropertySet1 = selection1.VisProperties visPropertySet1.SetRealColor 210,210,255,1 Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties visProperties1.SetRealOpacity 255,1 selection1.Clear selection1.Search "CATAsmSearch.Part,all" Set visPropertySet1 = selection1.VisProperties visPropertySet1.SetRealColor 210,210,255,1 Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties visProperties1.SetRealOpacity 255,1 selection1.Clear Else Dim productDocument2 As Document Set productDocument2 = CATIA.ActiveDocument Dim oselection1 As Selection Set oselection1 = productDocument2.Selection '~ instead of using select all rgb color elements '~ oselection1.Search "Color='(255,128,192)',all" myString = "" & "Color" & "=" & "'" &"(" & r & "," & g & "," & b & ")" & "'" & "," & "all" & "" MsgBox myString oselection1.Search myString oselection1.Search "CATPrtSearch.MechanicalFeature,sel" Set visPropertySet1 = oselection1.VisProperties visPropertySet1.SetRealColor 210,210,255,1 Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties visProperties1.SetRealOpacity 255,1 oselection1.Clear oselection1.Search "CATAsmSearch.Part,sel" Set visPropertySet1 = oselection1.VisProperties visPropertySet1.SetRealColor 210,210,255,1 Set visProperties1 = CATIA.ActiveDocument.Selection.VisProperties visProperties1.SetRealOpacity 255,1 oselection1.Clear End If End Sub ------------------ Best regards Fernando
[Diese Nachricht wurde von ferdo am 22. Jun. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |