| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| | |
 | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
|
Autor
|
Thema: Blöcke: Attributwerte löschen - Block sprengen (58 / mal gelesen)
|
sponk-mg Mitglied

 Beiträge: 39 Registriert: 10.10.2011 AutoCAD 2020 Architecture
|
erstellt am: 09. Jan. 2026 10:24 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe folgende Fragestellung. Ich habe auf 2 Layern Blöcke, die gesprengt werden sollen. Die Geometrie soll erhalten bleiben. Attributwerte und Attributnamen sollen gelöscht werden. Ich habe folgenden Code, den ich mehrfach geändert habe. Ich erhalte immer die Fehlermeldung "zu wenig Argumente" Woran könnte dies liegen. (defun c:BlockSprengenUndAttributeLoeschen (/ layerList lay ss i ent) (setvar "CMDECHO" 0) ;; Befehlsausgaben unterdrücken (setq layerList '("BV-VK-SYM" "BT-BM-SYM")) (foreach lay layerList (if (tblsearch "layer" lay) (progn ;; 1. Blöcke sammeln und einzeln sprengen (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 8 lay)))) (if ss (progn (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) ;; Native Version ohne ActiveX-Fehleranfälligkeit (command "_.explode" ent) (setq i (1+ i)) ) ) ) ;; 2. Texte, MTexte und Attributdefinitionen löschen (setq ss (ssget "X" (list (cons 0 "TEXT,MTEXT,ATTDEF") (cons 8 lay)))) (if ss (progn (setq i 0) (repeat (sslength ss) (entdel (ssname ss i)) (setq i (1+ i)) ) ) ) ) (princ (strcat "\nLayer nicht gefunden: " lay)) ) ) (setvar "CMDECHO" 1) (princ "\nVerarbeitung abgeschlossen.") (princ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
     
 Beiträge: 3150 Registriert: 26.08.2002 ACAD R11 - 2022/2024 (Revit und Recap 2024) ACAD LT 2013- 2022 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 11 / 64 Bit<P>Prozessor Intel(R) Xeon(R) w5-2445 3.10 GHz RAM 256 GB Platte c: 1 TB Platte d: 8 TB<P>Dell U3818DW + Dell U2412M Monitor
|
erstellt am: 09. Jan. 2026 10:30 <-- editieren / zitieren --> Unities abgeben:          Nur für sponk-mg
Hy sponk-mg was soll das heißen Block , sprengen aber Geometrie erhalten ? es soll also ein Block bleiben , nur die Attribute sollen gelöscht werden ? dann brauchst du dazu keine Lisp außer jeder Block hat einen anderen Namen cu cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist nur die Spitze des Berges der da treibt ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
     

 Beiträge: 2001 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 09. Jan. 2026 10:49 <-- editieren / zitieren --> Unities abgeben:          Nur für sponk-mg
Grundsätzlich funktioniert das Lisp. Folgendes gebe ich einmal zu Bedenken: - Es werden pro Durchlauf die Blockrefs des angegebenen Layers gesucht, wenn gefunden aufgelöst und das Gleiche mit den Attributdefs gemacht. - Liegen die Attdefs auf anderen Layern als die Blockdefs, funktioniert das Lisp nicht. - Unter Architecture kann es sein, dass sich die command Aufrufe andes verhalten als unter AutoCAD Vanilla. ------------------ Gruß
CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22744 Registriert: 03.06.2002 Alles
|
erstellt am: 09. Jan. 2026 11:23 <-- editieren / zitieren --> Unities abgeben:          Nur für sponk-mg
Hi, zum weiteren aufblasen, wie gesperrte Layer berücksichtigen, oder statt Attdefs auch (M)Texte löschen usw, hier mein 3zeiler für dich: Code: (if (ssget "_X" (list'(0 . "INSERT")'(8 . "*")(cons 410 (getvar 'CTAB)))) (progn (initcommandversion) (command "_.EXPLODE" "_p" "") (if (ssget "_p" '((0 . "ATTDEF"))) (command "_.ERASE" "_p" "")) ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Andreas Kraus Ehrenmitglied Elektrotechniker
    
 Beiträge: 1527 Registriert: 11.01.2006 WIN 11 ACAD 2022 BricsCAD V25.1.07
|
erstellt am: 09. Jan. 2026 12:13 <-- editieren / zitieren --> Unities abgeben:          Nur für sponk-mg
Wenn du einen Block sprengst kannst du mit "vorher" auf die entstandenen Objekte zugreifen. (ssget "_p" '(( 0 . "TEXT,MTEXT,ATTDEF"))) sollte eigentlich alles greifen was du löschen möchtest. Sofern die Layer entsperrt sind. ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |