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

 Beiträge: 31 Registriert: 11.03.2007
|
erstellt am: 05. Aug. 2009 11:47 <-- editieren / zitieren --> Unities abgeben:         
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 / zitieren -->
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 |

| |
Sagu Mitglied Dipl - Ing

 Beiträge: 31 Registriert: 11.03.2007
|
erstellt am: 06. Aug. 2009 12:33 <-- editieren / zitieren --> Unities abgeben:         
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 >>)
 |