| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Texthöhe ändern in Abhängigkeit von der Ausgangshöhe (1942 mal gelesen)
|
Musicus Mitglied Staatl. gepr. Techniker
Beiträge: 688 Registriert: 26.07.2005 AutoCAD 2018 Linear, CATS Windows 10
|
erstellt am: 22. Feb. 2012 11:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, wahrscheinlich ist es mal wieder ganz einfach, aber ich krieg's nicht hin. Problem: Ich habe in einer Zeichnung Texte mit verschiedenen Texthöhen, die in Abhändigkeit vom Ausgangswert geändert werden sollen (250 auf 125, 750 auf 550, 500 auf 350, 300 auf 150). Das hab ich schon (erstmal nur für eine Texthöhe):
Code:
(defun c:THOEHE ( / AWS OBJ) (setq AWS (ssget "X" '((0 . "*TEXT")(40 . 250))) ) (setq OBJ(entget AWS) ) (if (assoc 40 OBJ) (setq OBJ (subst (cons 40 125)(assoc 40 OBJ)OBJ)) );end if )
AutoCAD quittiert das mit: Code:
Befehl: THOEHE ; Fehler: Fehlerhafter Argumenttyp: lentityp <Selection set: 70>
Kann mir jemand auf die Sprünge helfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 22. Feb. 2012 12:10 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
shit, ich habe mein eigenes Posting hier versaut, jetzt gibt es nur noch eine Kurzform dazu: Acad(entget) erwartet einen Objektnamen, du gibst aber einen Auswahlsatz(ssget) oder auch nichts - die Fehlerquelle würde es auch noch geben. (setq n 0) (repeat (sslength (setq AWS (ssget "_X" '((40 . 250))))) ;===================================== (setq OBJ (entget(ssname AWS n))) ; irgendwasmachenmitdemObjekt ;===================================== (setq n (1+ n)) ) Die drei Dinge, repeat sslength ssname sind sehr gut dokumentiert in der VLisp-Hilfe. [Diese Nachricht wurde von cadffm am 22. Feb. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 22. Feb. 2012 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
|
Musicus Mitglied Staatl. gepr. Techniker
Beiträge: 688 Registriert: 26.07.2005 AutoCAD 2018 Linear, CATS Windows 10
|
erstellt am: 22. Feb. 2012 12:26 <-- editieren / zitieren --> Unities abgeben:
Danke für eure schnellen Antworten. cadffm, den Ansatz habe ich verstanden und werde damit noch weiter rumspielen. Cadmium, das scheint ja alles auf einmal zu erschlagen, wenns funktioniert, werde ich das erstmal so weiterverwenden, aber zum Verstehen muss ich mehr Zeit investieren. Sind auf jeden Fall zwei Ansätze, die ich mal noch für mich auseinander pflücken werde (Verstehen = mein Interesse, Funktionieren = Firmeninteresse). [Diese Nachricht wurde von Musicus am 22. Feb. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 22. Feb. 2012 12:29 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
|
Musicus Mitglied Staatl. gepr. Techniker
Beiträge: 688 Registriert: 26.07.2005 AutoCAD 2018 Linear, CATS Windows 10
|
erstellt am: 22. Feb. 2012 13:12 <-- editieren / zitieren --> Unities abgeben:
Einen Teilerfolg habe ich erreicht. Cadmiums Code funktioniert einwandfrei, danke dafür. Dann habe ich mit ssname, sslength und repeat was versucht mit leicht veränderter Aufgabenstellung (es kam der Wunsch, auch noch die Textbreite auf 0.8 zu setzen (dürfte bei Mtexten nicht gehen). Funktioniert auch, allerdings nur einmal, wenn ich das richtig verstanden habe, sollte repeat so oft wiederholen, wie sslength vorgibt, was wiederum die Anzahl der Objekte im Auswahlsatz wiedergibt. Ich habe in meiner Testdatei 4 Texte, es wird aber nur einer geändert. Code: (defun c:TBREITE ( / AWS OBJ) (setq n 0) (repeat (sslength (setq AWS (ssget "_X" '((0 . "TEXT"))))) (setq OBJ (entget (ssname AWS n))) (setq n (1+ n)) ) (if (assoc 41 OBJ) (setq OBJ (subst (cons 41 0.8) (assoc 41 OBJ) OBJ)) ) (entmod OBJ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 22. Feb. 2012 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Da ich hier keine Editor erklären möchte (bei dem ich selbst der schlechteste Anwender bin): lasse den Code doch mal so ablaufen: Code: (defun c:TBREITE ( / AWS OBJ) (setq n 0) (repeat (sslength (setq AWS (ssget "_X" '((0 . "TEXT"))))) (setq OBJ (entget (ssname AWS n))) (setq n (1+ n)) (alert(strcat "Schleife für OBJ Nr." (rtos n 2 0))) ) (if (assoc 41 OBJ) (setq OBJ (subst (cons 41 0.8) (assoc 41 OBJ) OBJ)) ) (alert "vor Entmod von der aktuellen 'OBJ'Liste ") (entmod OBJ) (alert "nach Entmod von der aktuellen 'OBJ'Liste ") )
------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 22. Feb. 2012 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
so sollte es funktionieren (ein paar klammern neu gesetzt): Code: (repeat (sslength (setq AWS (ssget "_X" '((0 . "TEXT"))))) (setq OBJ (entget (ssname AWS n))) (setq n (1+ n)) (if (assoc 41 OBJ) (progn (setq OBJ (subst (cons 41 0.8) (assoc 41 OBJ) OBJ))) (entmod OBJ) ) ) )
gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Musicus Mitglied Staatl. gepr. Techniker
Beiträge: 688 Registriert: 26.07.2005 AutoCAD 2018 Linear, CATS Windows 10
|
erstellt am: 22. Feb. 2012 14:54 <-- editieren / zitieren --> Unities abgeben:
|
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 27. Okt. 2017 17:18 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Hi Leute Das LISP von CADmium könnte ich gut gebrauchen, allerdings möchte ich alle Texte, welche kleiner als 1.5 sind auf 1.5 ändern:
Zitat: Original erstellt von CADmium: (defun c:THOEHE ( / AWS SUBSTLIST) (setq SUBSTLIST '((250 125)(750 550)(500 350)(300 150))) (if(setq AWS (ssget "X" '((0 . "*TEXT")))) (mapcar '(lambda(X / OBJ OBJDATA TH NEWTH) (if(and(setq OBJ(cadr X)) (setq OBJDATA(entget OBJ)) (setq TH(cdr(assoc 40 OBJDATA))) (setq NEWTH(cadr(assoc TH SUBSTLIST))) ) (entmod (subst(cons 40 NEWTH)(assoc 40 OBJDATA)OBJDATA)) ) ) (ssnamex AWS) ) ) )
So hab ich die zweite Zeile verändert:
Code: (setq SUBSTLIST '((<1.5 1.5)))
Leider funktioniert das nicht :-( wie sollte das richtig lauten? Besten Dank für alle Inputs. ------------------ Welcome to the Real [Diese Nachricht wurde von neo4matrix am 27. Okt. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 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: 27. Okt. 2017 17:27 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
Hallo Neo, nur schnell getippt, ausprobieren mußt Du selber (erst alle Texte wählen, und nur wenn in GC 40 kleiner 1.5, dann auf 1.5 setzen mit ENTMOD) Code:
(defun c:THOEHE ( / AWS)(if(setq AWS (ssget "X" '((0 . "*TEXT")))) (mapcar '(lambda(X / OBJ OBJDATA TH NEWTH) (if(and(setq OBJ(cadr X)) (setq OBJDATA(entget OBJ)) (setq TH(cdr(assoc 40 OBJDATA))) (< TH 1.5) ) (entmod (subst(cons 40 1.5)(assoc 40 OBJDATA)OBJDATA)) ) ) (ssnamex AWS) ) ) )
------------------ viele Grüße Jörn http://www.bosse-engineering.com Liniensignaturen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 27. Okt. 2017 17:30 <-- editieren / zitieren --> Unities abgeben: Nur für Musicus
|