|  |  | 
|  | 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 PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung 
 | 
| Autor | Thema:  MTexte (effktive Grenzen) ab AC2007  (1298 mal gelesen) | 
 | Proxy Ehrenmitglied
 Stateless-DHCP v6-Paketfragmentierer
 
      
 
      Beiträge: 1629Registriert: 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: 1017Registriert: 21.09.2001
 ACAD Map 2010, Win 7 Proeigene 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: 1629Registriert: 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 und AutoLISPler
 
      
 
      Beiträge: 1781Registriert: 11.10.2004
 Window 11ACAD 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: 2154Registriert: 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 und AutoLISPler
 
      
 
      Beiträge: 1781Registriert: 11.10.2004
 Window 11ACAD 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: 1629Registriert: 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: 2154Registriert: 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 JesseVoxelManufaktur
 Computer-Dienstleistungen für Architekten und Ingenieure
   http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |