Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Breite von MTEXT

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:  Breite von MTEXT (2299 mal gelesen)
Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 21. Sep. 2005 11:44    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,

ich füge einen MText mit folgendem Code ein:

Code:

    Set Acad_Text = obj_ACAD_Modellbereich.AddMText(Startpunkt(), Textbreite, Text)

Hierzu ist die Angabe der Textbreite notwendig. Hieraus ergibt
sich der Rahmen um den Text. Die Breite errechne ich momentan
aus einem Faktor von Textlänge und Texthöhe.
Erstens passt die Breite nicht gut, ausserdem gibt es ein Problem
bei mehrzeiligen Texten.

Wie kann man die exakte Breite bestimmen ??

Stelli

------------------

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 21. Sep. 2005 12: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 Nur für Stelli1 10 Unities + Antwort hilfreich

object.AddMText(InsertionPoint, Width, Text) ...Width ist da die Textboxbreite, und da kannst du IMHO 0 übergeben und alles ist in Butter

------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 21. Sep. 2005 13:05    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 Thomas,

geht mit 0.
Der Text hat aber dann keine Box mehr drumherum.

Jetzt möchte ich zur Freistellung und den Text ein
Solid mit der Farbe 255 legen.
Wie kann ich den dann die notwendige Umgrenzung des
Solids berechnen ??
(Die Texte haben alle einen Winkel)

Stelli

------------------

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 21. Sep. 2005 13:09    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 Stelli1 10 Unities + Antwort hilfreich

dafür gibts die Methode getboundingbox ... soll aber mit Mtexten evtl. unkorrekte ergebnisse liefern.->http://ww3.cad.de/foren/ubb/Forum145/HTML/000078.shtml#000014
und http://www.foren.industrie24.com/read.php?5,20290,20295#msg-20295
in Lisp könnte ich dir noch die Funktion textbox anbieten.

------------------
    - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

[Diese Nachricht wurde von CADmium am 21. Sep. 2005 editiert.]

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 25. Sep. 2005 18:39    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


mtext.gif

 
So ich glaube ich habe eine Lösung:

Geht das so ???

Code:

Option Explicit

Sub Text_Einfügen()
Dim DummyMText As AcadMText
Dim MText As AcadMText
Dim solid As AcadSolid
Dim varTxPkt As Variant
Dim TxPkt(0 To 2) As Double
Dim Richtung As Double
Dim Breite As Double
Dim Text As String
Dim TextHöhe As Double
Dim Verbreiterung As Double

' Boundingboxpunkte
Dim p1 As Variant
Dim p2 As Variant

' Solid Eckpunkte
Dim S1(0 To 2) As Double
Dim S2(0 To 2) As Double
Dim S3(0 To 2) As Double
Dim S4(0 To 2) As Double

' SolidZentrum
Dim Z(0 To 2) As Double

Richtung = 1
TextHöhe = 7.5
Text = "Das ist ein langer Text, oder ???\P" _
     & "Eine zweite Zeile\Pund eine dritte Zeile hat er auch noch!\P\P" _
     & "{\H0.6667x;Eine Leerzeile und eine Zeile mit kleiner Schrift\P" _
     & "\H2.4x;und eine Große Schrift}\P" _
     & "Und ein passendes Solid untendrunter!"
TxPkt(0) = 50
TxPkt(1) = 50

Set DummyMText = ThisDrawing.ModelSpace.AddMText(TxPkt, 0, Text)
DummyMText.AttachmentPoint = acAttachmentPointMiddleCenter
DummyMText.Height = TextHöhe
' Nochmals Einfügepunkt da verschoben nach Attachmentpoint
DummyMText.InsertionPoint = TxPkt
DummyMText.Update

' Eckpunkte holen
DummyMText.GetBoundingBox p1, p2

' Zugabe für Solid
Verbreiterung = TextHöhe * 0.15

' Solidpunkte
S1(0) = p1(0) - Verbreiterung: S1(1) = p1(1) - Verbreiterung
S2(0) = p1(0) - Verbreiterung: S2(1) = p2(1) + Verbreiterung
S3(0) = p2(0) + Verbreiterung: S3(1) = p1(1) - Verbreiterung
S4(0) = p2(0) + Verbreiterung: S4(1) = p2(1) + Verbreiterung
' Solid einzeichnen
Set solid = ThisDrawing.ModelSpace.AddSolid(S1, S2, S3, S4)
solid.Color = 255
solid.Update

' Drehpunkt Solid
Z(0) = TxPkt(0)
Z(1) = TxPkt(1)

' Solid drehen
solid.Rotate Z, Richtung
solid.Update

' Text kopieren
Set MText = DummyMText.Copy
MText.Width = (p2(0) - p1(0)) + Verbreiterung
MText.Rotation = Richtung
MText.Update

' Dummytext entfernen
DummyMText.Delete

End Sub


Stelli

PS: so ein Mi...

------------------
 

[Diese Nachricht wurde von Stelli1 am 25. Sep. 2005 editiert.]

[Diese Nachricht wurde von Stelli1 am 25. Sep. 2005 editiert.]

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

sarotti
Mitglied
Bauingenieur


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

Beiträge: 74
Registriert: 14.07.2005

AutoCad 2022 64Bit
Windows 10-64Bit mit 32 GByte

erstellt am: 02. Apr. 2007 13:12    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 Stelli1 10 Unities + Antwort hilfreich

Hallo,

Als Ergänzung zu dem oben genannten, füge ich den Code für die Funktion "Textbreite" ein.
Ich hatte das Problem, das ein einzeilger Text passend unterstrichen werden sollte.
Möge es demjenigen weiterhelfen der danach sucht.

Gruß

Sarotti

Function Textbreite(Text As String, Optional Texthoehe As Double, Optional Textstil As String)
  'Ermittelt die Textbreite eines einzeligen Textfeldes
  Dim EinfügePkt(2) As Double
  Dim TextObj As AcadText
 
  EinfügePkt(0) = 0#
  EinfügePkt(1) = 0#
  EinfügePkt(2) = 0#
  If Texthoehe = 0 Then Texthoehe = 0.25
 
  Set TextObj = ThisDrawing.ModelSpace.AddText(Text, EinfügePkt, Texthoehe)
  On Error Resume Next
      TextObj.StyleName = "Standard"
  On Error GoTo 0
 
  TextObj.Alignment = acAlignmentBottomRight
  Textbreite = Abs(TextObj.InsertionPoint(0))
  TextObj.Delete
End Function

------------------
AutoCad 2005
Windows XP SP2

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