Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  BricsCAD
  Lisp: TextBox vs. BoundingBox

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 BricsCAD
Autor Thema:  Lisp: TextBox vs. BoundingBox (1663 mal gelesen)
Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 27. Dez. 2014 10:34    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


ACAD-LK.jpg


ACAD-NK.jpg


ACAD-RK.jpg

 
Hallo!

Ich habe merkwürdige und zu ACAD abweichende Ergebnisse bei Texten mit Neigungswinkeln erhalten. Das kann man mit einem einzeiligen waagrechten Text, der bei (0 0 0) eingefügt wurde, testen. Dabei können etwaige Fehler durch Drehung des Textes oder der ganzen Zeichnung ausgeschlossen werden. Als Font habe ich ROMANS.SHX verwendet.

Lediglich bei der Einstellung ohne Neigungswinkel (nicht kursiv) sind die Umgrenzungsrahmen korrekt und bei ACAD (2011) und BCAD (V12) identisch.

Links-kursiver Text:
ACAD: grüne Text-Box korrekt, rote Bounding-Box beidseitig zu lang
BCAD: Text- und Bounding-Box kongruent, jedoch beidseitig zu kurz

Rechts-kursiver Text:
ACAD: grüne Text-Box korrekt, rote Bounding-Box rechts zu lang
BCAD: Text- und Bounding-Box kongruent, jedoch rechts zu lang

Mit anderen SHX- oder Truetype-Fonts habe ich nicht mehr getestet, weil ich annehme, dass da die Abweichungen mglw. noch größer sind, die Ursache aber wo anders liegt.

Mit diesem Code kann man's testen:
(defun C:Text-Box (/ en ed)
  (if (and (setq en (car (entsel "\nEinzeiligen Text klicken: ")))
          (= (cdr (assoc 0 (setq ed (entget en)))) "TEXT")
      )
      ((lambda (ms tb)
        ((lambda (lo)
            (vla-put-Closed lo ':vlax-true)
            (vla-put-Color lo 3)
          )
          (vlax-invoke ms 'AddLightweightPolyline
            (list (caar tb) (cadar tb)    (caar tb) (cadadr tb)
                  (caadr tb) (cadadr tb)  (caadr tb) (cadar tb)
            )
          )
        )
        (vla-getBoundingBox (vlax-ename->vla-object en) 'p1 'p2)
        ((lambda (p1 p2)
            ((lambda (lo)
              (vla-put-Closed lo ':vlax-true)
              (vla-put-Color lo 1)
            )
            (vlax-invoke ms 'AddLightweightPolyline
              (list (car p1) (cadr p1)  (car p1) (cadr p2)
                    (car p2) (cadr p2)  (car p2) (cadr p1)
              )
            )
            )
          )
          (vlax-safearray->list p1)
          (vlax-safearray->list p2)
        )
      )
      (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object)))
      (textbox ed)
      )
  )
  (princ)
)

V.G.
Arcuso

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 27. Dez. 2014 10:38    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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 27. Dez. 2014 10:41    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


Text-Box.dwg

 
Nachtrag für DEMO-DWG zum Testen.

Könnte der Datei-Upload auch einfacher sein ?

V.G.
Arcuso

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 29. Dez. 2014 14:13    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

Hallo !

Bei MText-Objekten konnte ich nun auch unterschiedliche Ergebnisse mit (getBoundingBox) feststellen:
Während mir AutoCAD immer die Diagonale des Brutto-Rahmens liefert, erhalte ich bei BricsCAD die Diagonale der Netto-Box, also den Rahmen um die tatsächlich dargestellten Strings, unabhängig vom Breiten- und Höhen-Wert des MText-Objektes.

Da ich öfters den Platzbedarf von Text- und Block-Objekten für Masken etc. brauche, habe ich mir für alle bisher genannten Probleme entsprechende Lisp-Funktionen geschaffen, die meinen Bedarf zufriedenstellend decken. Einziger Schönheitsfehler dabei ist, dass ein MText-Objekt keine Explode-Methode kennt und ich daher nur über (command ...) das Ziel erreiche, auf die Einzelzeilen des MTextes zugreifen zu können.

Abschließend möchte ich nur noch Anregungen für zwei VLE-Funktionen geben, über die sich eventuell auch andere Lisp-Programmierer freuen würden:

vle-Explode
Zerlegt nicht nur Block-Referenzen sondern auch MText-Objekte und liefert die erhaltenen Einzelteile gleich in einer Object- oder Entity-Liste.
Option könnte event. noch sein, ob das Original-Objekt erhalten bleiben soll.

vle-Boundary
U.a. für Attribute, Text- und MText-Objekte (Neigungswinkel korrigiert), sowie Block-Referenzen (Option event., dass nur aktuell sichtbare Attribute einbezogen werden).
Vorteilhaft wäre die Rückgabe einer Liste mit allen 4 Eckpunkten (aber zum Objekt und nicht zur Achse vom WKS ausgerichtet). Damit kann man sich auch die tatsächliche Text-Länge, Text-Höhe und den Zentrumspunkt ableiten.

V.G.
Arcuso

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

Arcuso
Mitglied
Vermessung


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

Beiträge: 70
Registriert: 25.07.2011

Windows 7/64 prof.
AutoCAD 2011
BricsCad v12

erstellt am: 02. Jan. 2015 12: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

Hallo !

Bin jetzt draufgekommen, dass in den Elementdaten eines MTextes unter GC 42 die Netto-Breite und unter GC 43 die Netto-Höhe abgefragt werden kann. In Abhängigkeit vom Basispunkt und mit der Text-Richtung kann also der Netto-Rahmen berechnet werden, ohne den MText zu sprengen.

V.G. Arcuso

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