| | ![](https://ww3.cad.de/php/image.php?resolution=width:20050) | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Text-Justify Voreinstellung (1198 mal gelesen)
|
egug Mitglied
![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für egug](/foren/ubb/pmimages/gbu.gif) Beiträge: 42 Registriert: 11.11.2001
|
erstellt am: 15. Nov. 2004 19:45 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
|
mapcar Mitglied CADmin
![](/foren/avatars/mapcar.gif)
![Schreiben Sie einen Gästebucheintrag für mapcar](/foren/ubb/pmimages/gbu.gif) Beiträge: 1250 Registriert: 20.05.2002 Die Phönizier haben das Geld erfunden - aber warum so wenig? (Johann Nepomuk Nestroy)
|
erstellt am: 15. Nov. 2004 21:41 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für egug
|
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Headcase](/foren/ubb/pmimages/gbu.gif) Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 15. Nov. 2004 21:44 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für egug
Hallo Ernst! Also als feste Voreinstellung lässt sich das glaub ich nicht ändern, du kannst aber auf die Eigenschaft des jeweiligen Textobjektes mittels VBA zugreifen: Bei MText (mehrzeilig): Objektname.AttachmentPoint=Wert Wert kann hier sein: acAttachmentPointTopLeft acAttachmentPointTopCenter acAttachmentPointTopRight acAttachmentPointMiddleLeft acAttachmentPointMiddleCenter acAttachmentPointMiddleRight acAttachmentPointBottomLeft acAttachmentPointBottomCenter acAttachmentPointBottomRight Bei Text (einzeilig): Objektname.Alignment=Wert Wert kann sein: acAlignmentLeft (*) (Standart) acAlignmentCenter acAlignmentRight acAlignmentMiddle acAlignmentTopLeft acAlignmentTopCenter acAlignmentTopRight acAlignmentMiddleLeft acAlignmentMiddleCenter acAlignmentMiddleRight acAlignmentBottomLeft acAlignmentBottomCenter acAlignmentBottomRight acAlignmentAligned (**) acAlignmentFit (**) Die ersten 4 Konstanten beziehen sich übrigens auf die Linie direkt unter dem Text (wie im Schulheft), während sich Bottom... auf die ganz untere Linie bezieht (Linie unter den Bögen von g,y usw.). Die anderen sind eigentlich selbsterklärend. Bei (*) wird der in der InsertionPoint-Eigenschaft gespeicherte Punkt verwendet, bei dem Rest der Punkt aus der TextAlignmentPoint-Eigenschaft. Ausnahme bilden (**), da werden beide Punkte berücksichtigt. So ich hoffe, das war eine kleine Hilfe, ansonsten mal in der AutoCad VBA-Reference nachschauen, da gibts auch was dazu. Grüße! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
egug Mitglied
![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für egug](/foren/ubb/pmimages/gbu.gif) Beiträge: 42 Registriert: 11.11.2001
|
erstellt am: 16. Nov. 2004 18:54 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Hallo Axel habe meine Routine mal so abgeändert, leider ändert sich an der Textorientierung nichts und ist immer links justiert. Bin neu im ACAD Bereich und habe bisher mit c# in Bravo-CAD programmiert. Private Sub CommandButton5_Click() Dim textObj As AcadText Dim MTextObj As AcadMText Dim plp As Variant Dim insertionPoint(0 To 2) As Double Dim texthoehe As String texthoehe = Replace(ComboBox4.SelText, ",", ".") First_Form.Hide plp = ThisDrawing.Utility.GetPoint(, "Plazierungspunkt") insertionPoint(0) = plp(0): insertionPoint(1) = plp(1): insertionPoint(2) = plp(2) ThisDrawing.SendCommand ("Textsize " + texthoehe & vbCr) If (CheckBox1 = True) Then Set textObj = ThisDrawing.ModelSpace.AddText(TextBox2.Text, insertionPoint, texthoehe) Select Case ComboBox4.SelText Case "Links" textObj.Alignment = acAlignmentLeft Case "Mitte" textObj.Alignment = acAlignmentCenter Case "Rechts" textObj.Alignment = acAlignmentRight End Select Else Set MTextObj = ThisDrawing.ModelSpace.AddMText(insertionPoint, 1, TextBox2.Text) Select Case ComboBox4.SelText Case "Links" MTextObj.AttachmentPoint = acAttachmentPointBottomLeft Case "Mitte" MTextObj.AttachmentPoint = acAttachmentPointBottomCenter Case "Rechts" MTextObj.AttachmentPoint = acAttachmentPointBottomRight End Select End If ThisDrawing.Regen acAllViewports First_Form.Show End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
![](/foren/avatars/mapcar.gif)
![Schreiben Sie einen Gästebucheintrag für mapcar](/foren/ubb/pmimages/gbu.gif) Beiträge: 1250 Registriert: 20.05.2002 Die Phönizier haben das Geld erfunden - aber warum so wenig? (Johann Nepomuk Nestroy)
|
erstellt am: 16. Nov. 2004 20:29 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für egug
Es geht also gar nicht um Voreinstellungen, sondern um Text-Eigenschaften. Deinen Code kann ich nicht prüfen - er ist nicht vollständig. Fehler sehe ich aber auf Anhieb nicht - er scheint sogar korrekter zu sein als dieses Beispiel aus der AutoCAD-Hilfe: Code:
Sub Example_AttachmentPoint() Dim MTextObj As AcadMText Dim width As Double Dim text As String Dim count As Integer Dim attachPoint As String Dim corner(0 To 2) As Double corner(0) = 3#: corner(1) = 3#: corner(2) = 0# width = 10 text = "Hello, World." ' Creates a MText object in model space Set MTextObj = ThisDrawing.ModelSpace.AddMText(corner, width, text) For count = 1 To 9 MTextObj.AttachmentPoint = count ' Gets the attachment point of an MText object attachPoint = Choose(MTextObj.AttachmentPoint, "TopLeft", "TopCenter", "TopRight", "MiddleLeft", "MiddleCenter", "MiddleRight", "BottomLeft", "BottomCenter", "BottomRight") ThisDrawing.Regen True MsgBox "The attachment point of the MText is now: " & attachPoint, vbInformation, "AttachmentPoint Example" Next End Sub
Da sehe ich auf Anhieb Fehler: ThisDrawing.Regen True ist sicherlich falsch, es wird eine Konstante erwartet, und insgesamt krankt das Beispiel daran, dass hier überhaupt die numerischen Werte von Konstanten direkt verwendet werden, nämlich die Zahlen von 0 - 9. Das läuft zwar, aber nur versionsabhängig, und es widerspricht völlig dem Prinzip symbolischer Konstanten. Na ja, VBA hat nicht die Möglichkeiten von C#, was Enumerationen betrifft, aber ein Array hätte es ja auch getan. Trotzdem zeigt das Programm aber, dass die Sache funktioniert, wenn auch mit kleinen Einschränkungen. Vielleicht ist es einfach dein Denkfehler, dass du annimmst, ein rechtsbündig eingefügter Text müsste links vom Einfügepunkt sitzen und umgekehrt? Das ist nicht so, lediglich das, was du mit Ofang Basispunkt bekommst, verändert sich. Eigentlich sollte ja nach Ende dieses Beispielprogramms (die letzte Einstellung ist 'rechts unten') der Text links oberhalb des Punktes 3,3,0 sitzen - das macht AutoCAD aber nicht. Der Basispunkt des Textes ist also gar nicht identisch mit dem verwendeten Einfügepunkt. Schlimmer noch: Man sollte nun Erwarten, dass der Text während der 9 Durchgänge des Programms fest an seiner Einfügeposition stehen bleibt und nur der Ofang-Basispunkt sich verändert. Das ist aber auch nicht so - der Text bewegt sich doch, aber nur minimal! Man sieht es eigentlich erst richtig, wenn man sich am Punkt 3,3,0 eine Hilfslinie einfügt und das Ganze genau beobachtet. Dieses leichte Verspringen beim Ändern des Einfügepunkts passiert übrigens auch beim (nicht-programmierten) Arbeiten mit AutoCAD, und wenn du z.B. über das Eigenschaften-Fenster den Einfügepunkt veränderst, passiert genau das selbe wie im Programm, d.h. der Text bewegt sich nicht - bis auf die leichte Verschiebung. Ich denke, ursprünglich sollte sich der Text bewegen, aber die Implementierung ist buggy. Diese Spur von Bewegung beruht also auf einem Rechenfehler. Aber da das Verhalten seit vielen Jahren so ist, bleibt der Bug eben drin - sonst laufen ja die ganzen Programme nicht mehr, die ein Workaround benutzen (nachträgliches Verschieben). Du hast einfach das Pech gehabt, dass dein erster Versuch mit Acad VBA gleich ein tiefer Griff ins Klo geworden ist. Gruß, Axel Strube-Zettler ------------------ (defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für Headcase](/foren/ubb/pmimages/gbu.gif) Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 17. Nov. 2004 19:39 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für egug
Hallo Ernst! Für einzeilige Texte gilt: Nur die Ausrichtung Links nutzt den Insertionpoint zur Positionierung, die anderen beziehen sich auf den TextAlignmentPoint! Deshalb musst du dem TextAlignmentPoint die Koordinaten vom Einfügepunkt zuweisen. Dann sollte es klappen. Beim MText wird der Text nicht neu positioniert, sondern die Koordinaten des Insertionpoint ändern sich je nach Attachmentpoint-Einstellung. Wenn du danach dem Insertionpoint die ursprünglichen Koordinaten erneut zuweist, müsste sich der Text eigentlich ordentlich platzieren (kann es leider zu Hause nicht testen) Grüße! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
![](/foren/avatars/mapcar.gif)
![Schreiben Sie einen Gästebucheintrag für mapcar](/foren/ubb/pmimages/gbu.gif) Beiträge: 1250 Registriert: 20.05.2002 Die Phönizier haben das Geld erfunden - aber warum so wenig? (Johann Nepomuk Nestroy)
|
erstellt am: 17. Nov. 2004 20:15 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für egug
Zitat: Original erstellt von Headcase: Für einzeilige Texte gilt: Nur die Ausrichtung Links nutzt den Insertionpoint zur Positionierung, die anderen beziehen sich auf den TextAlignmentPoint! Deshalb musst du dem TextAlignmentPoint die Koordinaten vom Einfügepunkt zuweisen. Dann sollte es klappen.
Ich hab's in VBA noch nicht probiert. In Lisp entspricht das GC 10 und GC 11, und ich hab's da nicht sauber hingekriegt. Zitat: Beim MText wird der Text nicht neu positioniert, sondern die Koordinaten des Insertionpoint ändern sich je nach Attachmentpoint-Einstellung. Wenn du danach dem Insertionpoint die ursprünglichen Koordinaten erneut zuweist, müsste sich der Text eigentlich ordentlich platzieren
Genau das meinte ich ja mit dem Workaround 'nachträgliches Verschieben': Es wird auch unsauber. Gruß, Axel Strube-Zettler ------------------ (defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
![](https://ww4.cad.de/books/view.php?what=zone:12591&n=s12591BB) |