Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
Autor Thema:  Farbe ändern (2996 mal gelesen)
Sagu
Mitglied
Dipl - Ing


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

Beiträge: 31
Registriert: 11.03.2007

erstellt am: 05. Aug. 2009 11:47    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 Forum,

nachdem 40 Zeichnungen erstellt wurden, ist festgestellt worden, dass die "True-Color" Farben von ca. 500 Objekten in jeder Zeichnung geändert werden müssen. Ich hab bereits gelesen, dass es hierzu ein Programm gibt, wollte es aber selbst mit einem kleinen Makro ausprobieren-
Auszug:

Code:
Set AcadApp = GetObject(, "autocad.application")
   
    With ThisWorkbook.Worksheets("Temp")
        RotAlt = .Range("E7")
        GrünAlt = .Range("E8")
        BlauAlt = .Range("E9")
        RotNeu = .Range("E10")
        GrünNeu = .Range("E11")
        BlauNeu = .Range("E12")
    End With
   
    Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.17")
   
    Call color.SetRGB(RotAlt, GrünAlt, BlauAlt)

 
    With AcadApp.ActiveDocument
        For Each entity In AcadApp.ActiveDocument.ModelSpace
            If entity.TrueColor = color Then
                Call colorNeu.SetRGB(RotNeu, GrünNeu, BlauNeu)
                entity.TrueColor = colorNeu
            End If
        Next
    End With


Dieses Makro ist aus einer Excel-Datei geschrieben worden, um die Farben in Excel einzugeben und die Zeichnungen nacheinander zu öffnen Farben der Objekte verändern und die Zeichnungen wieder zu schließen. Das Makro zeigt in der Zeile "If entity.TrueColor = color Then" diesen Fehler an: "Objekt unterstützt diese Eigenschaft oder Methode nicht". Ich nehme an, dass die If Then Anweisung mit meinem Vergleich nichts anfangen kann.

Wie kann ich diesen Vergleich der 3 RGB-Farben anders abfragen?

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


Ex-Mitglied

erstellt am: 05. Aug. 2009 16:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Du kannst nicht Klassen-Einzeleigenschaften vergleichen solange kein 'Comparer' dafür definiert ist, und der ist seitens Autodesk nicht definiert.

Also Vergleich über die Farbwerte .Red .Green .Blue (oder wenn es Colorindex-bezogene Farben sind, dann über .ColorIndex).

Ich nehme an, Dein Code ist sehr gekürzt und mittendrin ausgeschnitten, sonst würde einiges anderes auch nicht funktionieren:

Set color = AcadApplication.GetInterfa...
'AcadApplication nicht deklariert und nicht initialisiert
Call colorNeu.SetRGB(RotNeu, GrünNeu, BlauNeu) 'colorNeu nicht deklariert und nicht initialisiert

HTH, - alfred -

------------------
www.hollaus.at



Anzeige:Infos zum Werbeplatz >>

AVC Smart Leader CAD APP für Messestände, Allgemeine Werkzeuge, Möbel

MLeaders looking for an object under the arrow and fill the text for itself

Sagu
Mitglied
Dipl - Ing


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

Beiträge: 31
Registriert: 11.03.2007

erstellt am: 06. Aug. 2009 12:33    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

Vielen Dank für die Hilfe.

Ja es ist wie gesagt nur ein Auszug. Das Programm ist nicht viel größer. Ich habe es über die TrueColor Bestandteile Rot Grün und Blau hinbekommen. Das Programm vergleicht die Vorgaben mit der Farbe des gewählten Objektes und wenn diese übereinstimmen wird ein wird es auf einen neuen Layer gelegt. So kann dem Layer eine neue Farbe zugewiesen werden. Es ist nicht schön, da die Objekte nicht mehr auf den ursprünglichen Layern liegen, sondern nur noch auf ihren Farben entsprechenden Layern sich befinden. Für meinen Zweck reicht es und es geht wesentlich schneller als per Hand die Farben der einzelnen Objekte zu ändern. Hier mal der verwendete Code-Ausschnitt:

Code:
With AcadApp.ActiveDocument
        For Each entity In AcadApp.ActiveDocument.ModelSpace
            If entity.TrueColor.Red = RotAlt Then
                If entity.TrueColor.Green = GrünAlt Then
                    If entity.TrueColor.Blue = BlauAlt Then
                       
                        entity.Layer = "Farbe" & ColorInd
                       
                    End If
                End If
            End If
           
        Next
    End With

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)2025 CAD.de | Impressum | Datenschutz