| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Farbe von Attributen ändern (2067 / mal gelesen)
|
MB-fab Mitglied Techniker - Elektrotechnik
Beiträge: 34 Registriert: 18.10.2016 Autocad 2016, MEP 2016, PIT 2016, MS V8i
|
erstellt am: 29. Sep. 2017 16:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich glaube das Thema wurde schon behandelt - vor Jahren - aber ich finde es einfach nicht mehr. Das Problem: Wir haben ca. 100 Blockdefinitionen in denen Attribute mit den Einstellungen: Layer = 0 Farbe = 7 liegen. Jetzt müsste ich diese Farbe auf 250 setzten. Warum!? -> Die .ctb ist so gestrickt, vom Kunden, dass die Farbe 7 183,183,183 wird Gab es da nicht mal eine Lisp!? Grüße Fab Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 29. Sep. 2017 22:45 <-- editieren / zitieren --> Unities abgeben: Nur für MB-fab
Hier mal ein Anfang. Code: (setq aws(car(entsel))) (while (= "Attribut" (getpropertyvalue (setq aws (entnext aws)) "LocalizedName")) (setpropertyvalue aws "Color" 250) )
------------------ Gruß Wolfgang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MB-fab Mitglied Techniker - Elektrotechnik
Beiträge: 34 Registriert: 18.10.2016 Autocad 2016, MEP 2016, PIT 2016, MS V8i
|
erstellt am: 13. Okt. 2017 15:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, super vielen Dank. Leider habe ich überhaupt keine Routine im Programmieren und kann nicht viel mit dem Schnipsel anfangen. Könnte mir noch einer ein bisschen weiterhelfen? Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 13. Okt. 2017 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für MB-fab
Hi, also momentan schlecht da URLAUB Aber deine Abgaben sich mager z.B. alle Blöcke in der Zeichnung, nur bestimmte, nur ausgewählte usw. Meine zeilen müssetet du nur in ein Defun packen und du hättest ein tolle um einen block zu ändern also so etwa (defun c:meinTool () ........hier die Zeilen.......... ) ------------------ Gruß Wolfgang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MB-fab Mitglied Techniker - Elektrotechnik
Beiträge: 34 Registriert: 18.10.2016 Autocad 2016, MEP 2016, PIT 2016, MS V8i
|
erstellt am: 16. Okt. 2017 13:42 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke für deine Rückmeldung. Ich müsste alle Blockdefinitionen in der Zeichnung bearbeiten. Ob das in einem Arbeitsschritt geht oder die Blöcke einzeln ausgewählt werden müssen wäre mir erstmal egal. Bin auch schon hingegangen und habe deine Zeilen in das Schema gepackt, aber da kommt der Fehler 'nil' raus. Schönen Urlaub noch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 16. Okt. 2017 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für MB-fab
Hallo Fab, ich habe von Wolfgang den Code mal in eine Schleife gepackt, Blöcke auswählen und dann sollten alle Attribute die Farbe 250 haben: Code:
(defun c:test ( / AWS AWSBLOCK N) (if (and (princ "\nBlöcke auswählen:") (setq awsBlock (ssget (list (cons 0 "INSERT"))))) (progn (setq n 0) (repeat (sslength awsBlock) (setq aws (ssname awsBlock n)) (while (= "Attribut" (getpropertyvalue (setq aws (entnext aws)) "LocalizedName")) (setpropertyvalue aws "Color" 250) ) (setq n (+ n 1)))) ) (princ) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MB-fab Mitglied Techniker - Elektrotechnik
Beiträge: 34 Registriert: 18.10.2016 Autocad 2016, MEP 2016, PIT 2016, MS V8i
|
erstellt am: 16. Okt. 2017 15:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, das ist natürlich sehr gut. Ich glaube da wäre ich nicht drauf gekommen. Was meint ihr, kann man auch soweit in die Blockdefinition eingreifen um das Attribut auf Farbe 250 legen. Also nicht über den Erweiterten Attributs-Editor, sondern so wie wenn man im Blockeditor die Attribute anwählt und auf die Farbe 250 legt. Für mich ist immer das Problem, wenn man hin geht und Attsync macht, dann ist die ganze Einstellung wieder auf Ursprung. Grüße Fab Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 16. Okt. 2017 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für MB-fab
Hallo Fab, lass mich auch mal Das hier setzt alle Attribute in alle Blöcken auf die Farbe 250 Wenn du die Blöcke wählen möchtest geht das mit einem kleinen Umbau auch. (vl-load-com) (vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-for obj blk (if (= (vla-get-ObjectName obj) "AcDbAttributeDefinition") (vla-put-color obj 250) ) ) ) ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MB-fab Mitglied Techniker - Elektrotechnik
Beiträge: 34 Registriert: 18.10.2016 Autocad 2016, MEP 2016, PIT 2016, MS V8i
|
erstellt am: 19. Okt. 2017 13:03 <-- editieren / zitieren --> Unities abgeben:
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 19. Okt. 2017 14:26 <-- editieren / zitieren --> Unities abgeben: Nur für MB-fab
|
MB-fab Mitglied Techniker - Elektrotechnik
Beiträge: 34 Registriert: 18.10.2016 Autocad 2016, MEP 2016, PIT 2016, MS V8i
|
erstellt am: 19. Okt. 2017 14:46 <-- editieren / zitieren --> Unities abgeben:
ach.. ich bin auch nicht selten blöd. Natürlich, habe alles gemacht und hat auch optimal funktioniert. Vielen vielen Dank! Wie müsste man das Progrämmchen noch anpassen um dann einzelne Blocks zu wählen? Vielleicht lerne ich dann ja auch nach dem dummy Prinzip so was zu erstellen, wenn ich ein Gerüst habe.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 19. Okt. 2017 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für MB-fab
|
MB-fab Mitglied Techniker - Elektrotechnik
Beiträge: 34 Registriert: 18.10.2016 Autocad 2016, MEP 2016, PIT 2016, MS V8i
|
erstellt am: 19. Okt. 2017 15:32 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 19. Okt. 2017 16:02 <-- editieren / zitieren --> Unities abgeben: Nur für MB-fab
|
MB-fab Mitglied Techniker - Elektrotechnik
Beiträge: 34 Registriert: 18.10.2016 Autocad 2016, MEP 2016, PIT 2016, MS V8i
|
erstellt am: 20. Okt. 2017 08:57 <-- editieren / zitieren --> Unities abgeben:
Bei den Klammern kann man aber auch die Übersicht verlieren, also ich zumindest. Habe jetzt mal alles zusammen gebaut, aber geht leider nicht: Fehler Automatisierungsfehler Schlüssel nicht gefunden (vl-load-com) (vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) (setq blk (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object) ) ) "MeinBlockName") ) (vlax-for obj blk (if (= (vla-get-ObjectName obj) "AcDbAttributeDefinition") (vla-put-color obj 250) ) ) ) Wenn einer einer mal einem DAU die Augen öffnen würde. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 20. Okt. 2017 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für MB-fab
Hallo Fab, ich glaube, da hast Du zwei Sachen ungünstig gemischt. Entweder Du läßt die vlax-for-Schleife für alle vorhandenen Blockdefinition durchlaufen, oder Du nimmst nur eine Blockdefinition mit vla-item. Vielleicht wird folgendes deutlicher (ist wieder ungetestet und nur schnell getippt, ich hoffe, die Funktionsnamen erklären alles):
Code:
(defun AlleBlockDefinitionen ( / ) (vl-load-com) (vlax-for blk (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) (vlax-for obj blk (if (= (vla-get-ObjectName obj) "AcDbAttributeDefinition") (vla-put-color obj 250) ) ) ) )(defun NurEinBlock (BlockName / ) (vl-load-com) (setq blk (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object) ) ) BlockName)) (vlax-for obj blk (if (= (vla-get-ObjectName obj) "AcDbAttributeDefinition") (vla-put-color obj 250) ) ) ) (defun c:testAlle ( / ) (AlleBlockDefinitionen) ) (defun c:testEinzel ( / ) (NurEinBlock "MeinBlockName") )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |