| |
| 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: MTexte (effktive Grenzen) ab AC2007 (1133 mal gelesen)
|
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, ..., AutoCADs 200X, SWX 2kX
|
erstellt am: 16. Sep. 2010 11:36 <-- editieren / zitieren --> Unities abgeben:
Hiho, bin auch mal wieder im vlide-forum gelandet, ich hab da ein schönes und vor allem funktionierendes Lisp welches mir die Griffe von MTEXTen auf wirklich das Minimum modifiziert (Einsatz in AC2006). Leider hat es Probleme mit neuen AutoCADs da ein paar Funktionen, Eigenschaften GCs hinzugekommen und die Logik abgeändert worden ist. Wäre schön wenn einer bei Adesk die auch fehlerfrei aktualisiert, erweitert hätte. Das Thema "boundingbox" usw. hat sich aufgrund von Fehlern erledigt. Hier der bisheriger Code der vielleicht von euch 'verbessert' / auf AC>2010 aktualisiert werden könnte oder mir paar Tipps geben könntet. Code:
(defun c:mtext_box_size_fix (/ sset en el ymt nmt mtwidth mtcont) (setq sset (ai_aselect)) (if (null sset) (progn (princ "\nKein(e) wurde(n) Objekt(e) ausgewählt.") (exit) ) ;_ ende von progn ) ;_ ende von if (setq COUNT 0) (setq ymt 0) (setq nmt 0) (if (/= sset nil) (setq EN (ssname sset COUNT)) (setq EN nil) ) ;_ ende von if (WHILE (/= EN nil) (setq mtcont nil) (setq nel nil) (setq EL (entget EN)) (if (= (cdr (assoc 0 EL)) "MTEXT") (progn (setq mtwidth (* (cdr (assoc 42 el)) 1.015)) (setq EL (subst (cons 41 mtwidth) (assoc 41 EL) EL)) (progn (setq nel el) (while (/= (assoc 3 nel) nil) (setq mtcont (if (= mtcont nil) (cdr (assoc 3 nel)) (strcat mtcont (cdr (assoc 3 nel))) ) ;_ ende von if ) ;_ ende von setq (setq nel (vl-remove (assoc 3 nel) nel)) ) ;_ ende von while (if (= mtcont nil) (setq mtcont (cdr (assoc 1 nel))) (setq mtcont (strcat mtcont (cdr (assoc 1 nel)))) ) ;_ ende von if (setq el nel) ) ;_ ende von progn (setq EL (subst (cons 1 mtcont) (assoc 1 EL) EL)) (if (= (cdr (assoc 90 EL)) 2) (setq el (vl-remove (assoc 90 EL) EL)) ) ;_ ende von if (entmod EL) (entupd en) (setq el (entget en '("ACAD"))) (if (/= (assoc -3 el) nil) (progn (setq oheight (assoc 1040 (cdadr (assoc -3 el)))) (setq nheight (cons 1040 (cdr (assoc 43 el)))) (setq n-3 (list (cons -3 (list (subst nheight oheight (cadr (assoc -3 el)))) ) ;_ ende von cons ) ;_ ende von list ) ;_ ende von setq (setq el (vl-remove (assoc -3 el) el)) (setq el (append el n-3)) ) ;_ ende von progn ) ;_ ende von if (entdel (cdr (assoc -1 el))) (entmake el) (setq COUNT (1+ COUNT)) (setq EN (SSNAME sset COUNT)) (setq ymt (1+ ymt)) ) ;_ ende von progn (progn (setq COUNT (1+ COUNT)) (setq EN (SSNAME sset COUNT)) (setq nmt (1+ nmt)) ) ;_ ende von progn ) ;_ ende von if ) ;_ ende von WHILE (prompt (strcat "\n" (itoa ymt) " M-Text(e) wurde(n) angepasst, und " (itoa nmt) " Objekt(e) war(en) kein(e) M-Text(e)." ) ;_ ende von strcat ) ;_ ende von prompt (princ) ) ;_ ende von defun
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 16. Sep. 2010 20:07 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
Also bei mir läuft das zumindest ohne Fehler durch. Fragt sich, ob es auch das bewirken soll, was auf den Bildern zu sehen ist? Ansonsten erscheints mir so leserlicher: Code: (defun c:mtext_box_size_fix (/ sset en el ymt nmt mtwidth mtcont) (setq COUNT 0) (setq ymt 0) (setq nmt 0) (if (setq sset (ai_aselect)) (setq EN (ssname sset COUNT)) (progn (setq EN nil) (princ "\nKein(e) wurde(n) Objekt(e) ausgewählt.") (exit) );progn );if (while EN (setq mtcont nil) (setq nel nil) (setq EL (entget EN)) (if (= (cdr (assoc 0 EL)) "MTEXT") (progn (setq mtwidth (* (cdr (assoc 42 el)) 1.015)) (setq EL (subst (cons 41 mtwidth) (assoc 41 EL) EL)) (setq nel el) (while (assoc 3 nel) (setq mtcont (if mtcont (strcat mtcont (cdr (assoc 3 nel))) (cdr (assoc 3 nel)) ); if ); setq (setq nel (vl-remove (assoc 3 nel) nel)) ); while (if mtcont (setq mtcont (strcat mtcont (cdr (assoc 1 nel)))) (setq mtcont (cdr (assoc 1 nel))) ); if (setq el nel) (setq EL (subst (cons 1 mtcont) (assoc 1 EL) EL)) (if (= (cdr (assoc 90 EL)) 2) (progn (entmod (vl-remove (assoc 90 EL) EL)) (entupd en) );progn ); if (setq el (entget en '("ACAD"))) (if (assoc -3 el) (progn (setq oheight (assoc 1040 (cdadr (assoc -3 el)))) (setq nheight (cons 1040 (cdr (assoc 43 el)))) (setq n-3 (list (cons -3 (list (subst nheight oheight (cadr (assoc -3 el)))) ); cons ); list ); setq (setq el (vl-remove (assoc -3 el) el)) (setq el (append el n-3)) ); progn ); if (entdel (cdr (assoc -1 el))) (entmake el) (setq COUNT (1+ COUNT)) (setq EN (SSNAME sset COUNT)) (setq ymt (1+ ymt)) ) ;_ ende von progn (progn (setq COUNT (1+ COUNT)) (setq EN (SSNAME sset COUNT)) (setq nmt (1+ nmt)) ); progn ); if ); WHILE (prompt (strcat "\n" (itoa ymt) " M-Text(e) wurde(n) angepasst, und " (itoa nmt) " Objekt(e) war(en) kein(e) M-Text(e)." ); strcat ); prompt (princ) ); defun
z.B.: (if (/= sset nil) ... entspricht (if sset ... ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, ..., AutoCADs 200X, SWX 2kX
|
erstellt am: 17. Sep. 2010 07:37 <-- editieren / zitieren --> Unities abgeben:
Hiho, hab da mal eine Nacht drüber gepennt, momentaner Stand ist dass ich noch mit dynamischen Spalten kämpfen muss, z.B.: Code:
(1 . "\\pxt33;RuA auf CAD.DE\\P\nRuA auf CAD.DE\\P\nRuA auf CAD.DE\\P\nRuA auf CAD.DE\nRuA auf CAD.DE\nRuA auf CAD.DE\nRuA auf CAD.DE\nRuA auf CAD.DE\nRuA auf CAD.DE\nRuA auf CAD.DE\nRuA auf CAD.DE\nRuA auf CAD.DE\nRuA auf CAD.DE\n\\P\n")
ich nicht den 'echten' Platzverbrauch rausbekomme, sondern immernoch die 'falschen' Kackgriffe. Eigentlich versuche ich eine Funktion zu erstellen die mir die intersects /Schnittpunkte von Texten (echten Aussenrahmen) mit z.B. Punkten anzeigt.
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: 17. Sep. 2010 09:58 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 17. Sep. 2010 10:31 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
|
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: 17. Sep. 2010 10:59 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
|
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, ..., AutoCADs 200X, SWX 2kX
|
erstellt am: 17. Sep. 2010 11:49 <-- editieren / zitieren --> Unities abgeben:
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 17. Sep. 2010 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für Proxy
Ich glaube, da hat sich seit VIELEN JAHREN nichts getan. Die einzige (halbwegs) zuverlässige Methode wäre mit der Methode aus txtexpl (wmfout - wmfin) den Text in Einzelteile = Geometrien zu zerlegen, diese einzeln zu analysieren, und anschliessend aus dem Analyseergebnis die Min/Max-Werte ziehen. Grüsse, Henning ------------------ zur Abstimmung Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |