Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Elemente in Drawing: Farbe ändern

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Elemente in Drawing: Farbe ändern (1624 mal gelesen)
wumpel
Mitglied



Sehen Sie sich das Profil von wumpel an!   Senden Sie eine Private Message an wumpel  Schreiben Sie einen Gästebucheintrag für wumpel

Beiträge: 108
Registriert: 20.10.2006

V5 R20SP7
Win 7 SP1 x64

erstellt am: 30. Okt. 2008 08:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Jan82 an!   Senden Sie eine Private Message an Jan82  Schreiben Sie einen Gästebucheintrag für Jan82

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für wumpel 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von wumpel an!   Senden Sie eine Private Message an wumpel  Schreiben Sie einen Gästebucheintrag für wumpel

Beiträge: 108
Registriert: 20.10.2006

V5 R20SP7
Win 7 SP1 x64

erstellt am: 30. Okt. 2008 15:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Jan82,
vielen Dank für die, leider bisher einzige, Antwort.
Aber ich komme damit nicht klar ?!?!

Was soll ich wohin kopieren? Ich arbeite mit CATScript. 20087 steht mir nicht zur Verfügung.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Randle
Mitglied
CAD/PLM Consultant


Sehen Sie sich das Profil von Randle an!   Senden Sie eine Private Message an Randle  Schreiben Sie einen Gästebucheintrag für Randle

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 30. Okt. 2008 16:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für wumpel 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Jan82 an!   Senden Sie eine Private Message an Jan82  Schreiben Sie einen Gästebucheintrag für Jan82

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für wumpel 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von wumpel an!   Senden Sie eine Private Message an wumpel  Schreiben Sie einen Gästebucheintrag für wumpel

Beiträge: 108
Registriert: 20.10.2006

V5 R20SP7
Win 7 SP1 x64

erstellt am: 03. Nov. 2008 09:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz