| |
| 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: SEQEND von Insert hat anderen Layer (1137 mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 17. Sep. 2007 22:17 <-- editieren / zitieren --> Unities abgeben:
Ich hatte letztens Blöcke in (sehr alten) Zeichnungen, bei denen der DXF-Code von SEQEND auf einem anderen Layer lag als das INSERT. Damit war ein Layer vom Bereinigen ausgeschlossen, und erst mit dem Wechseln der Blöcke (Insert) auf Layer 0 und dann wieder zurück hat die Sache wieder gepasst. Ich kenne die Sache schon von Polylinien, die auch am SEQEND andere Layer hatten; die Ursache war damals eine unsaubere Erstellung mit entmake. Kennt jemand das Problem mit den Inserts? Ist das auch ein Fehler oder steckt da ev. ein tieferer Sinn dahinter, der sich mir nicht erschließt? Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 17. Sep. 2007 22:51 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 17. Sep. 2007 22:55 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo Peter, das mit dem Sequenzende kann man beheben. Das Lisp ist zwar schon älter (geht sicher auch einfacher), aber es funktioniert. Viel Spass damit Gruß Andreas (defun c:seqend_ok (/ filter satz n ent_name ent_data att_name att_data dummy_list ent lay ) (setq filter (list (cons 0 "INSERT") (cons 66 1) (cons 410 (getvar "ctab")) ) ) (setq satz (ssget "x" filter)) (if satz (progn (setq n (1- (sslength satz))) (repeat (sslength satz) (princ (strcat "\r" (itoa n) " ")) (setq ent_name (ssname satz n)) (setq ent_data (entget ent_name)) (setq lay (cdr (assoc 8 ent_data))) (setq att_name ent_name) (setq att_data (entget att_name)) (while (not (equal (cdr (assoc 0 att_data)) "SEQEND")) (setq att_name (entnext att_name)) (setq att_data (entget att_name)) ) (vlax-put-property (vlax-ename->vla-object att_name) 'Layer lay ) (setq n (1- n)) ) ) ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 18. Sep. 2007 20:17 <-- editieren / zitieren --> Unities abgeben:
Danke Andreas sehe ich das Programm richtig, dass es alle Attributblöcke erfasst, dann jeden Block bis zu Seqend durchläuft und dort den Namen des Ausgangslayers anhängt? Wie ich oben geschrieben habe, funktioniert die händische Reparatur, wenn man den Layers des Inserts auf irgendwas und dann wieder zurück ändert. Wäre da der Ansatz
Code: (command "chprop" ... layer 0) (command "chprop" ... layer altlayer)
nicht schlanker?Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 18. Sep. 2007 23:56 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von CAD-Huebner: Ja, Ja, Nein
Das letzte Nein musst Du durch ein Jein ersetzen, denn das kann durchaus Sinn gemacht haben. Früher erforderte es ziemlichen Aufwand, wenn man als Anwendungsprogrammierer größere Datenmengen in einer Zeichnung speichern wollte. Es gab nicht wenige Anwendungsprogramme, die beispielsweise Polylinien mit nur einem Vertex oder leere Textelemente erstellten, um an denen XDATA zu speichern. Für ähnliche Zwecke haben andere Anwendungsprogrammierer Layer erstellt, die man mit dem genannten Trick vor dem Bereinigen schützen konnte. Tom Berger 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: 19. Sep. 2007 07:54 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo Peter, sicher wäre das schlanker aber ich glaube das wäre auch langsamer. Allerdings hab ich das noch nicht mit der Stoppuhr gecheckt. Bei Zeichnungen mit einigen tausen Blöcken (hab ich) ist auch Geschwindigkeit interessant. Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 19. Sep. 2007 11:15 <-- editieren / zitieren --> Unities abgeben:
@Tom: Danke - interessante Überlegungen. @Andreas: Richtig - ab einer nennenswerten Elementzahl spürt man die Langsamkeit der Command Befehle. Bei meinen 20-30 Stück dürfte dass kaum vorkommen. Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |