Autor
|
Thema: Elemente in Drawing: Farbe ändern (1624 mal gelesen)
|
wumpel Mitglied
Beiträge: 108 Registriert: 20.10.2006 V5 R20SP7 Win 7 SP1 x64
|
erstellt am: 30. Okt. 2008 08:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich versuche mich seit einiger Zeit daran in einer CATDrawing alle Elemente mit der Farbe "orange" in "schwarz" zu ändern. Es klappt aber nicht. Mittlerweile glaube ich nicht mehr an den Erfolg. Eine ähnliche Aktion führe ich im 3D aus - klappt wunderbar. Nur im Drawing macht das Script nicht das, was ich möchte. Kann mir jemand die Zeilen umstricken, die ich vermasselt habe? Irgendwo hierdrin habe ich mich verrannt:
Code: Dim DrawingDocument1 As Document Set DrawingDocument1 = CATIA.ActiveDocument Dim drawing1 As Drawing Set drawing1 = DrawingDocument1.Drawing Set oDoc = Catia.ActiveDocument ' = DrawingDocument Set oDraw = oDoc.Drawing Set oSelection = oDoc.Selection Set oVisPropertySet = oSelection.VisProperties sRGB_OldDraw = "255,128,0" 'orange aRGB_OldDraw = FUNC_RGBDraw(sRGB_OldDraw) sRGB_NewDraw = "0,0,0" 'schwarz aRGB_NewDraw = FUNC_RGBDraw(sRGB_NewDraw) oSelection.Search ("Type=*,all") Dim aElement() ReDim aElement(oSelection.Count) For iDraw = 1 To oSelection.Count Set aElement(iDraw) = oSelection.Item(iDraw) Next ' oSelection.Clear Dim RDraw, GDraw, BDraw ,iCountDraw iCountDraw = 0 For iDraw = 1 To UBound(aElement) oSelection.Clear oSelection.Add(aElement(iDraw).Reference) oVisPropertySet.GetRealColor RDraw, GDraw, BDraw If RDraw = CLng(aRGB_OldDraw(0)) And GDraw = CLng(aRGB_OldDraw(1)) And BDraw = CLng(aRGB_OldDraw(2)) Then oVisPropertySet.SetRealColor CLng(aRGB_NewDraw(0)), CLng(aRGB_NewDraw(1)), CLng(aRGB_NewDraw(2)), 0 iCountDraw = iCountDraw + 1 End If Next if not iCountDraw = "0" then MsgColor_Draw = iCountDraw & " Elemente wurden umgefärbt." else MsgColor_Draw = "Keine Änderung durchgeführt" end if Dim iJ For iJ = 1 To DrawingDocument1.Sheets.Count DrawingDocument1.Sheets.Item(iJ).ForceUpdate DrawingDocument1.Sheets.Item(1).activate Next
Function FUNC_RGBDraw(sRGBDraw) Dim bErrDraw bErrDraw = true aRGBDraw = Split(sRGBDraw, ",") If UBound(aRGBDraw) = 2 then 'And bErrDraw Then For i = 0 To UBound(aRGBDraw) If Not (aRGBDraw(i)) = "" then 'And bErrDraw Then If Not IsNumeric(aRGBDraw(i)) Or Int(aRGBDraw(i)) < 0 Or Int(aRGBDraw(i)) > 255 then 'Or Not bErrDraw Then bErrDraw = false End If Else bErrDraw = false End If Next Else bErrDraw = false End If If Not bErrDraw Then MsgBox "Fehler in der Funktion 'Func_RGBDraw'. Bitte informieren Sie Ihren Administrator. Abbruch.", 48, "Error" Exit Function Else FUNC_RGBDraw = aRGBDraw End if End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan82 Mitglied
Beiträge: 21 Registriert: 24.09.2007 Dell Precision M6400 Pentium P8700, 2.53GHz, 16GB RAM CATIA V5R19SP5 + V5R20SP1 Windows 7 SP1
|
erstellt am: 30. Okt. 2008 15:25 <-- editieren / zitieren --> Unities abgeben: Nur für wumpel
Hallo , Code: Dim ElementDoc As Object Dim CATIA As INFITF.Application Dim Documents As INFITF.Documents Dim UserSelection As INFITF.Selection CATIA = GetObject(, "CATIA.Application") Documents = CATIA.Documents ElementDoc = CATIA.ActiveDocument UserSelection = ElementDoc.Selection UserSelection.Search("Color='(0,0,0)',all") Dim visPropertySet1 As VisPropertySet visPropertySet1 = UserSelection.VisProperties visPropertySet1.SetRealColor(255, 128, 0, 0)
... diese Code mir funktionierte. Du musst nur bis Script korrigieren , ich benuzte VB2008.
Grüße Jan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wumpel Mitglied
Beiträge: 108 Registriert: 20.10.2006 V5 R20SP7 Win 7 SP1 x64
|
erstellt am: 30. Okt. 2008 15:48 <-- editieren / zitieren --> Unities abgeben:
|
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 30. Okt. 2008 16:02 <-- editieren / zitieren --> Unities abgeben: Nur für wumpel
Hallo, was der kollege da macht ist folgendes: Er sucht alle Elemente die eine bestimmte Farbe haben. In deinem Fall wäre das Orange (255,128,0) Diese Element färbt er dann einfach über die Selection um. Habe das mal mit dem Rekorder aufgezeichnet: Sub CATMain() Set drawingDocument1 = CATIA.ActiveDocument Set selection1 = drawingDocument1.Selection selection1.Search "Color='(255,128,0)',all" Set selection2 = drawingDocument1.Selection selection2.Search "Color='(0,0,0)',all" End Sub Ich hoffe du kannst damit mehr anfangen. ------------------ MfG Randle ! It's not a bug, it's a feature ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jan82 Mitglied
Beiträge: 21 Registriert: 24.09.2007 Dell Precision M6400 Pentium P8700, 2.53GHz, 16GB RAM CATIA V5R19SP5 + V5R20SP1 Windows 7 SP1
|
erstellt am: 30. Okt. 2008 20:44 <-- editieren / zitieren --> Unities abgeben: Nur für wumpel
Hallo , Code: Sub CATMain() Set ElementDoc = CATIA.ActiveDocument Set UserSelection = ElementDoc.Selection UserSelection.Search("Color='(0,0,0)',all") Set visPropertySet1 = UserSelection.VisProperties visPropertySet1.SetRealColor 255, 128, 0, 0 End Sub
Diese Code ist schon , fuer Dich richtig , kannst Du kopieren... Grüße Jan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wumpel Mitglied
Beiträge: 108 Registriert: 20.10.2006 V5 R20SP7 Win 7 SP1 x64
|
erstellt am: 03. Nov. 2008 09:53 <-- editieren / zitieren --> Unities abgeben:
hi, vielen Dank für die Lösungen. Haben wunderbar funktioniert. Was an meinem Code falsch zu sein scheint ist die Schleife. Ich wollte für jede Änderung einer orangenen Farbe in schwarz einen Wert hochzählen um den Anwendern mitzuteilen, wie viele Änderungen durchgeführt wurden. Quasi als Wink mit dem Zaunpfahl :-) 10Us for you PS: Habe einfach "oSelection.count" verwendet. Soviel zum Thema "Wald - Bäume..." [Diese Nachricht wurde von wumpel am 03. Nov. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|