| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Layer aus Abdeckung aus Block in Block (587 / mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.

 Beiträge: 3882 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 03. Jul. 2024 17:25 <-- editieren / zitieren --> Unities abgeben:         
Weiss der Kuckuck wo das herkommt, aber ich habe eine Zeichnung wo das folgende Problem laufend bei fast allen Inserts vorkommt: - Ein Block auf Layer 0 -- bestehend aus einem Block mit fast gleichem Namen auf Layer 0 --- bestehend aus verschiedenen Elementen auf Layer 0 und Farbe XY und einem Wipeout mit sinnvollem Namen sinnvollem Layernamen Ich müsste jetzt bei jedem Block den sinnvollen Namen ermitteln und den Hauptblock auf diesen Layer setzen. Ich stehe mit Block in Block irgendwie auf der Leitung; hat jemand eine Lösung oder einen Ansatz in der Schublade liegen? Schönen Abend Peter [Diese Nachricht wurde von Peter2 am 03. Jul. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Jul. 2024 17:47 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Hi, ich habe ein Problem mit dem Post, irgendwie ist das für mich als ob jemand 2 Geschichten erzählt, statt nur einer!? >>"Weiss der Kuckuck wo das herkommt, aber ich habe eine Zeichnung wo das folgende Problem laufend vorkommt:" 1. Zeichnung HABEN, okay, aber "laufend vorkommt" würde für mich bedeuten das IHR das Produziert? Also Du selbst in der Datei arbeitest und was-auch-immer passiert dann. 2. "sinnvoller Name" Da wipeouts keine Namen haben, meinst du wohl den Layer auf den Referenziert wird? "MIW-SEK Schlammsammler"
PS: Der übergeordnete Block enthält nicht nur eine Blockreferenz, sondern selbst auch noch einmal eine Abdeckung (auf diesem sinnvollen Layer(namen). Ich vermute ganz stark das der Layer immer derselbe ist wie auch in dem Verschachtelten Block. EDIT: Ein Block auf Layer 0 -- bestehend aus einem Block mit fast gleichem Namen auf Layer 0 UND EINEM WIPEOUT auf Layer mit sinnvollem Namen --- bestehend aus verschiedenen Elementen auf Layer 0 und Farbe XY und einem Wipeout mit sinnvollem Namen sinnvollem Layernamen
3. >>"Ich müsste jetzt bei jedem Block den sinnvollen Namen ermitteln und den Hauptblock auf diesen Layer setzen." Macht ja alles keinen Sinn, aber okay. Durchlaufe die Blocktabelle, schau nach ob der Blockinhalt eine Blockreferenz ist + eine Abdeckung(in der Annahme das diese immer gleich sind im Hauptblock und dem verschachtelten block), und ermittel den Layer. Durchlaufe Modellbereich und Layouts, setze alle Blockreferenzen dieses Blockes auf den ermittelten Layer. und zum nächsten Block.
Sicher das das so okay ist? Da liegt doch ein Fehler vor, ziemlich sicher.
Da nutzt jemand ein Tool zum Abdecken von Blöcken, oder einfach nur zum einfügen von Blockreferenzen, oder gar nur ein simples Makro / Werkzeugpalette. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
  
 Beiträge: 991 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 03. Jul. 2024 17:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
Zitat: Original erstellt von Peter2: Weiss der Kuckuck wo das herkommt, aber ich habe eine Zeichnung wo das folgende Problem laufend vorkommt:- Ein Block auf Layer 0 -- bestehend aus einem Block mit fast gleichem Namen auf Layer 0 --- bestehend aus verschiedenen Elementen auf Layer 0 und Farbe XY und einem Wipeout mit sinnvollem Namen Ich müsste jetzt bei jedem Block den sinnvollen Namen ermitteln und den Hauptblock auf diesen Layer setzen. Ich stehe mit Block in Block irgendwie auf der Leitung; hat jemand eine Lösung oder einen Ansatz in der Schublade liegen? Schönen Abend Peter
Vielleicht hilft Dir diese Funktion weiter. Sie gibt alle Elemente der Blockdefinition aus, mit dem Enamen der Blockdefinition als erstem Element. In dieser Liste kannst Du dann ja Deine Blöcke suchen und passend abändern.
Code:
(defun at-blockentities (name / en result space el) (setq result (list (setq en (tblobjname "BLOCK" name)))) (if en (progn (setq space (assoc 410 (entget en))) (while (and (setq en (entnext en)) (setq el (entget en)) (equal space (assoc 410 el))) (setq result (cons en result)) ) ) ) (reverse result) )
Und zum Ändern dieser Elemente (egal ob in einer BlockDef oder im Zeichnungsbereich selbst) kannst Du das hier verwenden: Code:
(defun ss-modent (ename dxf val) (entmod (at-subst (cons dxf val) (entget ename) ) ) )(defun at-subst (ntok lst / temp) (cond ((not lst) (list ntok) ; lst existiert nicht ) ((not (assoc (car ntok) lst)) (reverse (cons ntok (reverse lst))) ) ( 'T (subst ntok (assoc (car ntok) lst) lst) ) ) )
Auruf z.B. (ss-modent en 62 1) ändert den DXF-Code des Entitys für die Farbe (62) auf rot (1). Du kannst hier auch einfach die Referenz des Inserts auf eine andere Blockdefinition ändern, mit (ss-modent en 2 "NeuerBlockName"). In dem Fall solltest Du dann noch ein (entupd en) hinterherschieben, damit das auch gleich angezeigt wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Jul. 2024 17:53 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
|
Peter2 Ehrenmitglied V.I.P. h.c.

 Beiträge: 3882 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 03. Jul. 2024 17:56 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von cadffm: ..ich habe ein Problem mit dem Post, irgendwie ist das für mich als ob jemand 2 Geschichten erzählt, statt nur einer!?...
"Laufend": schlecht formuliert, habe es korrigiert "Wipeout Namen": schlecht formuliert, habe es korrigiert Vielleicht habe ich auch da unpräzise formuliert, aber 1500 Block-Inserts auf Layer 0 sind nicht sehr handlich.
Zitat: Original erstellt von archtools: Vielleicht hilft Dir diese Funktion weiter. ...
Werde schauen und berichten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Jul. 2024 17:58 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
1. Deine Strukturbeschreibung war FALSCH 2. Meine zuerst gepostete auch, daher habe ich oben noch einmal editiert! 3. 1500 Block-Inserts auf Layer 0 sind nicht sehr handlich. INSERTS sind keine Blöcke! sonndern Blockreferenzen. Wenn es nur 1500 Blockreferenzen eines Blockes wären, dann wählst du einfach alle 1500 und änderst den Layer, fertig. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.

 Beiträge: 3882 Registriert: 15.10.2003 Win 10 bzw. 11 / 64 Pro AutoCAD MAP 3D 2023 BricsCAD 24
|
erstellt am: 03. Jul. 2024 18:06 <-- editieren / zitieren --> Unities abgeben:         
|

| |
cadffm Moderator 良い精神
       

 Beiträge: 22497 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Jul. 2024 19:00 <-- editieren / zitieren --> Unities abgeben:          Nur für Peter2
|