| |
| 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: Layer Elemntliste (924 mal gelesen)
|
Boje51 Mitglied Dipl.Ing.
Beiträge: 15 Registriert: 09.02.2012 Windows7, Autocad 2011, Inventor 2011
|
erstellt am: 15. Aug. 2013 13:45 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Bin relativ neu in der LISP-Programmierung und brauche Ihre Hilfe: in einer Zeichnung auf einem bestimmten Layer legen verschiedene Texte. Wie könnte man eine Lisp-Datei erstellen die eine Liste dieser Texte im txt-Format ausgibt. Es sind z.B. die Bezeichnungen von eingebauten Kugelhähnen in einer R+I-Schema. Damit könnte man doppelte oder auch noch frei Bezeichnungen finden. Im voraus Danke Boje51 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13529 Registriert: 30.11.2003 .
|
erstellt am: 15. Aug. 2013 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für Boje51
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 15. Aug. 2013 14:24 <-- editieren / zitieren --> Unities abgeben: Nur für Boje51
Hallo Boje51, wie weit bist Du denn schon, oder wo klemmt es konkret? Hier im LISP Brett findest Du Hilfe beim programmieren, also gehe ich mal davon aus, dass Du Dich mit LISP beschäftigen und selbst was programmieren willst. Wenn dem nicht so ist, und Du eher was schon fertiges suchst, gibt s diverse Seiten wo man kleinere (oder auch größere) Lisp-Programme findet. Aber dann hilft Dir ja vielleicht auch schon der Befehl DATENEXTRAKTION. Gruß Thomas /edit/ und eh ich mich so ausgemääährt habe, hat CADmium schon fix was geproggt /edit/ [Diese Nachricht wurde von spider_dd am 15. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13529 Registriert: 30.11.2003 .
|
erstellt am: 15. Aug. 2013 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für Boje51
|
Boje51 Mitglied Dipl.Ing.
Beiträge: 15 Registriert: 09.02.2012 Windows7, Autocad 2011, Inventor 2011
|
erstellt am: 15. Aug. 2013 15:04 <-- editieren / zitieren --> Unities abgeben:
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 15. Aug. 2013 15:36 <-- editieren / zitieren --> Unities abgeben: Nur für Boje51
|
Boje51 Mitglied Dipl.Ing.
Beiträge: 15 Registriert: 09.02.2012 Windows7, Autocad 2011, Inventor 2011
|
erstellt am: 17. Aug. 2013 14:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, erstmals danke für die Hilfe und die Verweise auf die Lektüren! Es hat was gebracht! ich glaube ich habe es einigermaßen verstanden. Habe den Script um eine Ausgabe in die Datei ergänzt. Jetzt klemmt es bei gleichzeitiger Ausgabe auf'm Bildschirm und in die Datei: klappt immer nur eins von Beiden: ;listet alle Elemente ausgewählten Typ auf dem ausgewähltem Layer auf ; (defun C:LayElem ( / OBJ DATA AWS I listnam f) ;Ausgabe Datei für Elementen Liste auf dem ausgewählten Layer festlegen (setq listnam (getfiled "Liste anlegen" "LayerElem" "TXT" 1)) (setq f (open listnam "W")) (princ listnam) (if(and(setq OBJ(car(entsel "\nText auf Layer wählen:"))) (setq DATA(entget OBJ)) (setq AWS(ssget "_x" (list (cons 410(getvar "CTAB")) (assoc 0 DATA)(assoc 8 DATA)))) ) (mapcar '(lambda(X / D TXT) (if(and(=(type (cadr X))'ENAME) (setq D(entget (cadr X))) (setq TXT (cdr(assoc 1 D))) ) ;(princ (strcat "\n" TXT)) (write-line (strcat "\n" TXT ) f) ) ) (ssnamex AWS) ) ) (princ) (close f) ) Habe verschieden "Schreibweise" versucht - klappt nicht. Gruß Hans Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13529 Registriert: 30.11.2003 .
|
erstellt am: 18. Aug. 2013 09:06 <-- editieren / zitieren --> Unities abgeben: Nur für Boje51
(defun C:LayElem ( / OBJ DATA AWS I listnam f) ;Ausgabe Datei für Elementen Liste auf dem ausgewählten Layer festlegen (setq listnam (getfiled "Liste anlegen" "LayerElem" "TXT" 1)) (setq f (open listnam "W")) (princ listnam) (if(and(setq OBJ(car(entsel "\nText auf Layer wählen:"))) (setq DATA(entget OBJ)) (setq AWS(ssget "_x" (list (cons 410(getvar "CTAB")) (assoc 0 DATA)(assoc 8 DATA)))) ) (mapcar '(lambda(X / D TXT) (if(and(=(type (cadr X))'ENAME) (setq D(entget (cadr X))) (setq TXT (cdr(assoc 1 D))) ) (progn (princ (strcat "\n" TXT)) (write-line (strcat "\n" TXT ) f) ) ) ) (ssnamex AWS) ) ) (princ) (close f) ) ------------------ Also ich finde Unities gut ... und andere sicher auch --------------------------------------- - 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 |
Boje51 Mitglied Dipl.Ing.
Beiträge: 15 Registriert: 09.02.2012 Windows7, Autocad 2011, Inventor 2011
|
erstellt am: 18. Aug. 2013 12:15 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Thomas! Vielen Dank für die Funktion "progn", habe wieder was gelernt! Klappt jetzt alles prima! Will probieren diesen script zu erweitern: ausgeben alles was auf einem Layer legt, egal Text oder Block. Gruß Hans Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |