| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Layer-Leichen eliminieren (1390 mal gelesen)
|
Nano Mitglied
Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 12. Dez. 2006 11:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Mit Hilfe von Jörn konnte ich eine Bau-Zeichnung konvertieren, die mit verschachtelte Blöcke versehen waren. Nach der Konvertierung sind jedoch noch Layers auf der Zeichnung, die keine Elementen beinhalten. Habe es versucht mit Bereinigung der Zeichnung. GEHT NICHT! Nur mit Layerkonverter konnte ich die Layer-Leichen auf Layer "0" setzten. Kann mir Jemand helfen, wie ich mit ein Lisp-Programm die Leichen eliminieren kann?????? Als Beilage die Zeichnung (zip-Datei). Gruss Nano Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Dez. 2006 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
ja, bei dir hängen noch ne ganze Menge Layer am Blockend-Sequend ... kannst du bloß mit neudefinition der Blöcke lösen. z.B. soFunzt zumindest mit reinen ACAD-Objekten, (die sich entmaken lassen) zur Ergänzung noch was für 2D- und 3D-Polylinien ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nano Mitglied
Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 12. Dez. 2006 13:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas Habe mit diesem Bsp. getestet. geht bei mir nicht, warum? Befehlszeile: Ungültiger Feldtyp in 71 in (entmake) Kann Blockdefinitionen nicht verschachteln.nil (setq bl (tblnext "BLOCK" t)) (while bl (setq blname (cdr (assoc 2 bl))) (setq en (tblobjname "BLOCK" blname)) (setq ed (entget en)) (entmake (subst (cons 8 "0") (assoc 8 ed) ed)) (while (setq en (entnext en)) (entmake (entget en)) ) (entmake (list (cons 0 "BLOCK") (cons 8 "0"))) (setq bl (tblnext "BLOCK")) ) Gruss Nano Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Dez. 2006 16:02 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
wo kommt denn die dwg her? mach mal (entget(tblobjname "BLOCK" (cdr(assoc 2 (tblnext "BLOCK"))))) -> ((-1 . <Objektname: 7eff9dc0> ) (0 . "BLOCK") (330 . <Objektname: 7eff9db8> ) (5 . "38") (100 . "AcDbEntity") (67 . 0) (8 . "63") (62 . 254) (6 . "Continuous") (370 . 0) (100 . "AcDbBlockBegin") (70 . 1) (71 . 1) (10 0.0 0.0 0.0) (-2 . <Objektname: 7eff9dc8> ) (2 . "*O0") (1 . "")) und nach dxf-Spezifikation dürfte es in der Blockdefinition gar kein GC 71 geben... , deshalb geht das entmaken auch nicht (oder hab ich was überlesen?) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nano Mitglied
Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 12. Dez. 2006 16:35 <-- editieren / zitieren --> Unities abgeben:
Thomas geht es vielleicht mit append, Aber es geligt mir nicht. Habe ich etwas falsch gemacht? (setq bl (tblnext "BLOCK" t)) (while bl (setq blname (cdr (assoc 2 bl))) (setq en (tblobjname "BLOCK" blname)) (setq ed (entget en)) (SETQ liste (SUBST (CONS 8 "A_BAU")(assoc 8 ed) ed)) (IF (ASSOC 8 liste) (SUBST (CONS 8 "A_BAU")(assoc 8 liste) liste) (APPEND liste (LIST (CONS 8 "A_BAU"))) ) (setq bl (tblnext "BLOCK")) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 12. Dez. 2006 16:41 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
Zitat: Original erstellt von Nano: Thomas geht es vielleicht mit append, Aber es geligt mir nicht. Habe ich etwas falsch gemacht?
Ja, mich nicht verstanden
------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nano Mitglied
Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 12. Dez. 2006 17:12 <-- editieren / zitieren --> Unities abgeben:
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 13. Dez. 2006 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
Hallo Nano, du mußt nicht mit "entmake" arbeiten. Ich suche mir den Layernamen des entsprechenden Inserts und hangele mich dann durch die Attribute bis zum SEQEND-Objekt. Und dann mach ich das: (vlax-put-property (vlax-ename->vla-object ent_name) 'Layer lay ) Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 13. Dez. 2006 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für Nano
aber in der Blockdef ist auch ein anderer Layer als "0" referenziert.. Sie Bsp weiter oben ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |