| |
| 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 neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Elemente eines Blocks (1956 mal gelesen)
|
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 22. Jul. 2008 10:30 <-- editieren / zitieren --> Unities abgeben:
Hallo! Endet die Schleife nach dem letzten Element mit NIL oder mit "ENDBLK"? (ENDBLK gibt's doch eigentlich gar nicht als entity, wird aber im DXF-Format als solches verwendet. Warum?) (DEFUN block-elemente ( / bl-obj bl )
(SETQ bl-obj (CDR (ASSOC -2 (tblsearch "BLOCK" (gc_dxf 2 (ENTGET (CAR (ENTSEL)))))))) (SETQ bl (ENTGET bl-obj)) (WHILE <------------------------------- nil oder ENDBLK?? (SETQ bl (ENTGET bl-obj)) (SETQ bl-obj (ENTNEXT bl-obj)) ) ) Ciao Georg ------------------ http://www.xx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13529 Registriert: 30.11.2003 .
|
erstellt am: 22. Jul. 2008 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
mal ein Codeschnipsel.. denke , die Formatierung bekommst du wieder hin (if(setq BLOCKDEF (tblsearch "BLOCK" BLOCKNAME)) ; Blockdefinition zum Blocknamen auslesen (progn (if(and (/=(logand(cdr(assoc 70 BLOCKDEF))4)4) ; ist Block kein kein XREF, und (or (/= (logand(cdr(assoc 70 BLOCKDEF))1)1) ; auch kein unbenannter Block wie (=(vl-string-search "*U" BLOCKNAME) 0) ; Bemassung , Schraffur ect. ... ) ) (progn (setq BLOCKELEMENT (cdr (assoc -2 BLOCKDEF))) ; Adresse der Blockelemente holen (while BLOCKELEMENT ; und solange nicht alle Blockelemente abgearbeitet sind ... ;"MACH WAS MIT BLOCKELEMENT" (setq BLOCKELEMENT (entnext BLOCKELEMENT)) ) ) ) ) ) ------------------ - 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1766 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: 22. Jul. 2008 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Hallo Georg, außerdem ist der Unterschied zwischen Block und Blockdefinition zu beachten. Wenn ich z.B. alle Attribute eines Blockes haben will, dann Code:
(setq obj (car (entsel))) (while(and(setq obj (entnext obj)) (/= (cdr(assoc 0 (entget obj)))"SEQEND")) (if (=(cdr(assoc 0 (entget obj)))"ATTRIB") (setq att_liste (cons obj att_liste))))
Wenn ich diese aber aus der Blockdefinition beziehen will, dann Code:
(setq obj (tblobjname "BLOCK" "Blockname")) (while (setq obj (entnext obj)) (if (=(cdr(assoc 0 (entget obj)))"ATTDEF") (setq att_liste (cons obj att_liste))))
Bei der Blockdefinion solange entnext bis nil zurückgegeben wird, dafür werden alle Blockelemente durchlaufen. Bei dem Block solange kein "SEQEND" auftaucht, es werden aber nur die Attribute durchlaufen, nicht die Geometrieobjekte. ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 22. Jul. 2008 11:42 <-- editieren / zitieren --> Unities abgeben:
Hallo! Das mit NIL dachte ich mir schon, war auch der Rückgabewert beim 1.Versuch, war mir blos nicht ganz sicher da im DXF und in der Hilfe immer von ENDBLK geschrieben wird. @Jörn Es gibt noch den dritten Fall dass in einem Block ein insert mit Attributen abgelegt ist. Dann befinden sich im übergeordneten Block auch Attribute und um das geht es mir eigentlich ..... Danke nochmal für die schnellen Infos! Ciao Georg
------------------ http://www.xx-tausend.info Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hans-Leo Müller Mitglied Lehrer an Berufsbildenden Schulen
Beiträge: 30 Registriert: 24.09.2003
|
erstellt am: 08. Feb. 2021 11:34 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Hallo Forum, Ich habe ein Problem mit dem Auslesen von Blöcken. Kann zwar die Liste erstellen mit den Objekteinträgen "SEQEND", es fehlt mir aber die Möglichkeit auf die Geometriedaten (z.B Kreis oder Bogen zuzugreifen. Ich habe es schon versucht mit assoc und tblsearch, leider kein Erfolg. Kann mir jemand dabei helfen ? Gruß Hans-Leo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |