Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Text-Justify Voreinstellung

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:  Text-Justify Voreinstellung (1198 mal gelesen)
egug
Mitglied
 


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

Beiträge: 42
Registriert: 11.11.2001

erstellt am: 15. Nov. 2004 19:45    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 alle

wie kann ich in Acad-2004 mit vba die Text-Justify Voreinstellung ändern ?

Besten Dank für Tips

Gruss Ernst

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

mapcar
Mitglied
CADmin



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

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 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 egug 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von egug:
wie kann ich in Acad-2004 mit vba die Text-Justify Voreinstellung ändern?

Was sind Text-Justify-Voreinstellungen? Da kann ich mich jetzt nicht so direkt erinnern... Meinst du die Einstellungen für Textstile?

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


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

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 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 egug 10 Unities + Antwort hilfreich

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
 


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

Beiträge: 42
Registriert: 11.11.2001

erstellt am: 16. Nov. 2004 18:54    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 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



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

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 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 egug 10 Unities + Antwort hilfreich

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


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

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 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 egug 10 Unities + Antwort hilfreich

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



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

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 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 egug 10 Unities + Antwort hilfreich

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 >>)

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