| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Farbe ändern in einer Blockreferenz (4773 mal gelesen)
|
Frank136 Mitglied

 Beiträge: 45 Registriert: 06.04.2009 P4 WinXP Acad2004,2005,2008 Office2003
|
erstellt am: 24. Apr. 2009 15:30 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forum-teilnehmer  , eine letzte Frage vorm Wochenende hätte ich noch: Wie kann ich die Farbe eines Objektes ändern, welches in einer Blockreferenz eingefügt ist? Natürlich aus VBA raus... Danke im Vorraus Frank ------------------ Wenn das Wasser bis zum Hals steht, sollte man den Kopf nicht hängen lassen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2855 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2025 Plateia, Canalis Visual Basic
|
erstellt am: 24. Apr. 2009 15:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank136
Hallo Frank, Da mußt Du schon genauer fragen! Wie ist der Block erzeugt? Besteht er nur aus Zeichnungselementen? Hängen noch Attribute daran? Verschachtelter Block? Möchtest Du nur die Farbe eines eingefügten Blockes (Blockref) ändern? Oder alle Blöcke mit gleichem Namen? Manchmal hilft es wenn man einen Codeschnipsel einfügt, der (noch) nicht funktioniert oder wenn man eine Beispielzeichnung anhängt. Aber so Grüße, Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 24. Apr. 2009 16:47 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank136
|
Frank136 Mitglied

 Beiträge: 45 Registriert: 06.04.2009 P4 WinXP Acad2004,2005,2008 Office2003
|
erstellt am: 24. Apr. 2009 17:19 <-- editieren / zitieren --> Unities abgeben:         
Hallo Klaus, wow, das sind ja gleich 6 Wünsche auf einmal! Dann werd ich mal... Ich hab mir bis jetzt eine Blockdefinitionen erstellt und in die hab ich nur ein farbiges Rechteck(Polylinie) eingefügt. Ein Attribut hängt auch noch an der Blockdefinition. Jetzt möchte ich mehrere Blockreferenzen in die Zeichnung einfügen, wobei die Rechtecke in den Referenzen unterschiedliche Farben haben sollen. Und als Krönung möchte ich bei jeder Referenz noch das Attribut ändern, was aber schon funktioniert. kleiner Ausschnitt aus meinem Code: Dim Blo1 As AcadBlock 'Blockdefinition Dim BloRef As AcadBlockReference 'Blockreferenz Dim Rechteck1 As AcadPolyline 'Modul als Polylinie Dim Epkt1(0 To 2) As Double 'Einfügepunkt der Blockreferenz Dim Epkt3(0 To 14) As Double 'Eckpunkte des Rechtecks Dim Epkt5(0 To 2) As Double 'Einfügepunkt der Blockreferenz Dim Attri As AcadAttribute 'Attribut Dim varAttri1 As Variant 'Array, wo Attribute reingeschrieben werden Epkt1(0) = -10 + X-Versatz: Epkt1(1) = 10+ Y-Versatz: Epkt1(2) = 0 'variabler Einfügepunkt der Blockdefinition Epkt3(0) = -10: Epkt3(1) = 10: Epkt3(2) = 0 'Ergeben ein Rechteck 1mtr x 1.5mtr Epkt3(3) = -9 Epkt3(4) = 10: Epkt3(5) = 0 Epkt3(6) = -9 : Epkt3(7) = 8.5: Epkt3(8) = 0 Epkt3(9) = -10: Epkt3(10) = 8.5: Epkt3(11) = 0 Epkt3(12) = -10: Epkt3(13) = 10: Epkt3(14) = 0 Epkt5(0) = 20: Epkt5(1) = 5: Epkt5(2) = 0 'Einfügepunkt der Blockreferenz 'ersten Block erstellen Set Blo1 = ThisDrawing.Blocks.Add(Epkt1, "Modul") 'Modul in Block einfügen Set Rechteck1 = Blo1.AddPolyline(Epkt3) 'Modulfarbe auf ROT ändern Rechteck1.color = 10 'Attribut an Block anhängen Set Attri = Blo1.AddAttribute(1, mode, "", Epkt1, "ModulDaten", 0) In einer For-Schleife: 'Blockreferenz einfügen Set BloRef = ThisDrawing.ModelSpace.InsertBlock(Epkt5, "Modul", 1, 1, 1, 0) 'Attribute auslesen varAttri1 = BloRef.GetAttributes 'Attribute für neues Modul anpassen varAttri1(0).TextString = variable Zahl Ende vom Code! Wie bekomme ich die Farbe des "Moduls" in der Blockreferenz geändert??? gruß Frank ------------------ Wenn das Wasser bis zum Hals steht, sollte man den Kopf nicht hängen lassen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 24. Apr. 2009 20:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank136
Hallo Frank, du sollest dir nochmal anschauen wie man am besten Blöcke definiert. Stichwort: Layer "0" und Farbe "vonBlock" So wie du deinen Block definiert (Blockdefinition) hast wird das Rechteck, unabhängig davon was du als Eigenschaften für dein Insert (Blockreferenz), immer die Farbe 10 haben. Wenn du die Farbe 0 (ent.color=0 'vonLayer) verwendest, wird dein Rechteck die Farbe annehmen die der Layer hat auf dem der Block eingefügt wurde. Wenn du die Farbe 256 (ent.color=256 'vonBlock) verwendest, wird dein Rechteck die Farbe annehmen die beim Einfügen des Blockes aktuell ist bzw. die du der Blockreferenz als Color Eigenschaft zuweist. Ich würde vonBlock verwenden. So hast du alle Möglichkeiten, Wilfried Stelberg
------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2855 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2025 Plateia, Canalis Visual Basic
|
erstellt am: 24. Apr. 2009 21:16 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank136
|
Frank136 Mitglied

 Beiträge: 45 Registriert: 06.04.2009 P4 WinXP Acad2004,2005,2008 Office2003
|
erstellt am: 25. Apr. 2009 14:11 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich hab das mit der Farbe 'vomBlock mal probiert, aber irgendwie funktioniert das noch nicht so ganz... Beim Erstellen der Blockdefinition habe ich dem Rechteck die Farbe 256 zugewiesen: Rechteck1.color = 256 Wenn ich nun eine Blockreferenz einfüge und sage: Rechteck1.color = 10 , dann macht er mir das Rechteck auch rot. Ich jetzt aber noch einmal die gleiche Blockreferenz einfügen mit einem grünen Rechteck, das funktioniert bei mir nicht. Ich kann zwar Rechteck1.color = 90 vorgeben, aber er macht mir weiterhin ein rotes Rechteck. Kann man da was machen oder sollte ich mir ne zweite Blockdefinition anlegen mit ner anderen Farbe? gruß Frank ------------------ Wenn das Wasser bis zum Hals steht, sollte man den Kopf nicht hängen lassen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 25. Apr. 2009 15:39 <-- editieren / zitieren -->
Hi, byBlock ist ColorIndex 0 (und nicht 256) - alfred - ------------------ www.hollaus.at |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2855 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2025 Plateia, Canalis Visual Basic
|
erstellt am: 27. Apr. 2009 09:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Frank136
Hallo, Du mußt unterscheiden zwischen Blockdefinition und Blockreferenz. In der Blockdefinition stellst Du ein wie der Block erscheinen soll. Dort also Rechteck.color=0 (byBlock) Beim Einfügen stellst Du ein wie der Block gezeichnet werden soll Dort als BloRef.color = 90 Grüße, Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank136 Mitglied

 Beiträge: 45 Registriert: 06.04.2009 P4 WinXP Acad2004,2005,2008 Office2003
|
erstellt am: 27. Apr. 2009 10:04 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |