Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  MTexte (effktive Grenzen) ab AC2007

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  MTexte (effktive Grenzen) ab AC2007 (1089 mal gelesen)
Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


Sehen Sie sich das Profil von Proxy an!   Senden Sie eine Private Message an Proxy  Schreiben Sie einen Gästebucheintrag für Proxy

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 16. Sep. 2010 11:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.


Sehen Sie sich das Profil von Geos an!   Senden Sie eine Private Message an Geos  Schreiben Sie einen Gästebucheintrag für Geos

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Proxy 10 Unities + Antwort hilfreich


vorher.jpg


nachher.jpg

 
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


Sehen Sie sich das Profil von Proxy an!   Senden Sie eine Private Message an Proxy  Schreiben Sie einen Gästebucheintrag für Proxy

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 17. Sep. 2010 07:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 17. Sep. 2010 09:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Proxy 10 Unities + Antwort hilfreich

HAllo Proxy,
wie wäre es mit einem Würgaround: Arbeitkopie des Mtextes in Ursprung zerlegen, Texte einsammeln, über textbox die Eckpunkte der einzelnen Texte in eine Liste und dann nach min-max sortieren. nicht schön, sollte aber funzen.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Proxy 10 Unities + Antwort hilfreich

@Jörn:
das funktioniert nur dann, wenn die Mtexte KEINE eigene Formatierung haben (Font, Laufweite, Einzüge, Grösse).

Grüsse, Henning

------------------
zur Abstimmung

Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

      http://www.voxelman.de

[Diese Nachricht wurde von wronzky am 17. Sep. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 17. Sep. 2010 10:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Proxy 10 Unities + Antwort hilfreich

Hallo Henning,
wußte ich doch, daß die Sache einen Haken hat;-)

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


Sehen Sie sich das Profil von Proxy an!   Senden Sie eine Private Message an Proxy  Schreiben Sie einen Gästebucheintrag für Proxy

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, ...,
AutoCADs 200X, SWX 2kX

erstellt am: 17. Sep. 2010 11:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


rua_00322.zip

 
kleine Beispielzeichnung hinzugefügt, von den 'destruktiven' Methoden halte ich persönlich überhaupt Nix. 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Bauleiter (m/w/d) Sanitär-, Heizungs- und Klimatechnik

Die Salvia Gebäudetechnik ist ein mittelständisches, unabhängiges und familiengeführtes Unternehmen mit deutschlandweit mehr als 1700 Mitarbeitern. Als professioneller Multidienstleister bildet die Gruppe, an 29 Standorten in ganz Deutschland, den kompletten technischen Lebenszyklus von Gebäuden ab. Von der Planung bis zum Betrieb.

Bauleiter (m/w/d) Sanitär-, Heizungs- und Klimatechnik

...
Anzeige ansehenProjektmanagement
wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



Sehen Sie sich das Profil von wronzky an!   Senden Sie eine Private Message an wronzky  Schreiben Sie einen Gästebucheintrag für wronzky

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Proxy 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz