| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Texte nach Inhalt in Layer verschieben (1700 / mal gelesen)
|
blue75 Mitglied
Beiträge: 110 Registriert: 29.06.2005 Autocad Civil 3D 2015, Windows 7
|
erstellt am: 08. Mrz. 2016 08:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute mal als erstes ich bin absolut grün hinter den Ohren was LSIP betrifft ;-) Frage 1: Ich würde gerne diesen Strang der eigentlich als Makro eigentlich auch funktioniert in ein eigenständiges LISP fügen.
Code:
^C^C_chprop;(ssget "X" (list (cons 0 "*Text")(cons 1 "SM*")));;_LA;0;; ^C^C_chprop;(ssget "X" (list (cons 0 "*Text")(cons 1 "3D*")));;_LA;1;;
Nur habe ich überhaupt keine Ahnung was da im Voraus bzw. am Ende stehen sollte. Mein Ziel währe es das LISP aufrufen und schwups sind die Texte mit entsprechendem Inhalt in den Layern 0 oder 1. Was muss ich machen das mein LISP das macht? Frage 2: bei meinem DWG das ich erhalte sind in den MTexten auch ein Schriftstil enthalten und dann funktioniert der Befehl leider nicht. Sobald ich die Mtexte sprenge bzw. die Schriftstile rausnehme laufen die Befehle. (siehe Mtext.jpg) Gibt es eine Möglichkeit den Befehl anzupassen damit diese auch bei solchen MTexten funktioniert? Falls mir jemand helfen kann währe ich euch sehr dankbar. Gruss Blue Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 08. Mrz. 2016 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
Zitat: Original erstellt von blue75:Was muss ich machen das mein LISP das macht?
Hallo Blue! a) Du willst das Lisp selber machen? Dann: 1) Du solltest Dich mit dem VLisp-Editor beschäftigen, (Anleitung z. B. hier) 2) Du solltest Dich mit Grundlagen der Lisp-Programmierung beschäftigen, (gutes Tutorial z. B. hier) 3) Du kannst mal schauen, was es alles für Lisp-Funktionen gibt (z. b. hier) Fürs eine erste schnelle Lösung könnten Dir die Funktionen (defun c: ) und (command ) schon ausreichen. 4) Du kannst dann hier weitere Fragen stellen. b) Du willst es schnell gemacht haben. Dann: Bitte hier darum, eine schnelle "quick & dirty" Lösung wird Dir dann villeicht einer der fleißigen Helferlein zaubern. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 08. Mrz. 2016 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
|
blue75 Mitglied
Beiträge: 110 Registriert: 29.06.2005 Autocad Civil 3D 2015, Windows 7
|
erstellt am: 08. Mrz. 2016 10:29 <-- editieren / zitieren --> Unities abgeben:
@ThomasDanke für Deine Antwort, so wie ich das sehe muss ich mal nach meinem Feierabend mich mit den Anleitungen befassen die Du mir schmackhaft gemacht hast, würde doch sehr gerne in die Erfinder der LISP Kommune Aufsteigen. @CADmium Dein Quick&Dirty ist ja TOP.... Der funzt super bei normalen Texten und Mtexten. Bei den Mtexten bei denen in der Definition einen Textstil vergeben wurde funktioniert das leider nicht. Aber da muss ich halt einfach diese Mtexte sprengen. (ein kleiner zwischenschritt habe nicht so tragisch) Danke Euch nochmals Gruss Beat (der der gerne bei den LISP den Durchblick hätte)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.
|
erstellt am: 08. Mrz. 2016 10:59 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
Zitat: Original erstellt von blue75:
Bei den Mtexten ... funktioniert das leider nicht.
Vllt. hilft diese Korrektur (ungetestet): ... '(lambda(X / Y) (if(and(=(type (cadr X))'ENAME)(setq Y(entget (cadr X)))(or (=(cdr(assoc 0 Y))"TEXT")(=(cdr(assoc 0 Y))"MTEXT"))) ... Jürgen
------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 08. Mrz. 2016 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 08. Mrz. 2016 11:59 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
Hallo, @CADchup dafür musst du aber trotzdem all Formatierungen kennen. Entweder man benutzt das externe Prog textstripe oder wie in meinem beispiel habe den code von Cadmium entwas umgebaut.
Code: (defun TEXT2LAYER (MATCHSTR LAYER / DOC AWS) (or (= (type MATCHSTR) 'STR) (setq MATCHSTR "*")) (or (= (type LAYER) 'STR) (setq LAYER "TEXTLAYER")) (or (tblobjname "LAYER" LAYER)(vl-cmdf "_-layer" "_m" LAYER "")) (if (setq AWS (ssget "_x"(list '(0 . "*TEXT")(cons 410 (getvar "CTAB"))))) (mapcar '(lambda (X / Y) (if (and (= (type (cadr X)) 'ENAME) (setq Y (entget (cadr X))) (cond ((= (cdr (assoc 0 Y)) "TEXT")(wcmatch (getpropertyvalue (cadr X) "TextString")MATCHSTR)) ((= (cdr (assoc 0 Y)) "MTEXT")(wcmatch (getpropertyvalue (cadr X) "Text") MATCHSTR))) ) (entmod (subst (cons 8 LAYER) (assoc 8 Y) Y)) ) ) (ssnamex AWS) ) ) )
------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 08. Mrz. 2016 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 08. Mrz. 2016 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
Ja die können mehr und viel einfacher und kürzer wes der übersichtlichkeit zu gute kommt. Was mir letzten noch aufgefallen ist war es ja immer ein Prob. war den xref pfad zu ändern (nur vl )damit ganz easy. ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.
|
erstellt am: 08. Mrz. 2016 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
Zitat: Original erstellt von Meldin: habe den code von Cadmium entwas umgebaut.... ((= (cdr (assoc 0 Y)) "TEXT")(wcmatch (getpropertyvalue (cadr X) "TextString")MATCHSTR)) ((= (cdr (assoc 0 Y)) "MTEXT")(wcmatch (getpropertyvalue (cadr X) "Text") MATCHSTR))) ...
[OT, gehört eigentlich ins LISP-Brett] @Wolfgang; Textobjekte haben eine mit getpropertyvalue auszulesende Eigenschaft "TextString", so weit klar. Woher hast Du die Kenntnis, daß MTextobjekte hingegen die Eigenschaft "Text" besitzen? Wenn ich in der Hilfe (Objektmodell -> MText -> Properties) nachschaue, finde ich dort eine Eigenschaft "TextString", aber nicht "Text". Ist das ein Fehler in der Dokumentation, oder interpretiere ich die Dokumentation falsch, oder ...? Falls ersteres, hast Du dann nur geraten (weil "(getpropertyvalue MTextelement "TextString")" ja nicht funktioniert) oder steht das irgendwo dokumentiert? Jürgen ------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 08. Mrz. 2016 15:03 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
Ich denke du hast die falsche Dokumentation Das was ein entity beinhaltet gibt dir dumpallproperties preis allerdings nur im ACAD fenster. Diese kannst du dann mit den folgenden befehlen bearbeiten. AutoCAD 2011 New dumpallproperties - Retrieves an entity’s supported properties. getpropertyvalue - Returns the current value of an entity’s property. ispropertyreadonly - Returns the read-only state of an entity’s property. setpropertyvalue - Sets the property value for an entity. ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.
|
erstellt am: 08. Mrz. 2016 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für blue75
|