Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: GetTextFormat / SetTextFormat

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 SOLIDWORKS
  
SPS
Autor Thema:  API: GetTextFormat / SetTextFormat (2067 mal gelesen)
KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 30. Sep. 2003 10:27    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 zusammen,
ich habe mal wieder ein kleines Problem:

Ich sollte in einer Drawing das Schrift-Format eines Textes bzw. Bezugshinweises auslesen bzw. vor allem setzen.

Das Beispiel von der SolidWorks-API-Support Seite "How to retrieve the text formatting for sketch text" bezieht sich auf Bezugshinweise in Parts.

Ich habe etwas Schwierigkeiten, das auf Zeichungen umzusetzen- noch dazu haben diese Zeichnungen keine Zeichenansichten, sondern die Texte stehen in der Vorlage oder eben direkt auf dem Zeichenblatt.

Die Aufgabe ist eigentlich ganz einfach:
Einen bestimmten Text an eine bestimmte Stelle im Blatt schreiben (klappt) und dann formatieren (klappt nicht).

so sieht das bisher aus:

Sub SetzeText(TXT As String, X As Long, Y As Long)
'TXT wird an der Stelle X/Y abgesetzt.

    Set note = Part.InsertNote(TXT)
    Set Annotation = note.GetAnnotation()
    If Not Annotation Is Nothing Then
      'Kein Bezugspfeil
      longstatus = Annotation.SetLeader2(False, 0, True, False, False, False)
      'Schieben an Position (X, Y in m)
      boolstatus = Annotation.SetPosition(X / 1000, y / 1000, 0)
           
'und jetzt würde ich gerne das Format auslesen
'weiss aber nicht, wie (was muss z.B. bei GetTextFormat als Index stehen?).
      swTextFormat = Annotation.GetTextFormat() ' ???
'und wie sieht dann das dazugehörige SetTextFormat aus?
    End If


Hat da jemand schon mal etwas gemacht oder kann mit jemand einen Tipp geben, wie ich da zum Ziel komme? 


Bitte sagt alle JA


------------------
Klaus Massler,
Alois Kober GmbH
www.al-ko.de
privat www.masslers.de

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 30. Sep. 2003 11:00    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 KMassler 10 Unities + Antwort hilfreich

Hallo Klaus,

mit GetTextFormat bekommst du ein Objekt zurück, eben das Textformat, also in jedem Fall musst du das entsprechend deklarieren und mit Set zuweisen.

Hab mal ein Beispiel gestrickt, dass alle selektierten Beschriftungen auf Arial, 20 Pt setzt:

Code:

' **********************************************************************
' * Makro setzt für alle selektierten Beschriftungen das Textformat.
' *
' * 30.09.2003 Stefan Berlitz (stefan.berlitz@solidworks.cad.de)
' * http://solidworks.cad.de
' * http://swtools.cad.de
' **********************************************************************

' zunächst mal ein paar Deklarartionen die gebraucht werden
Dim swApp As Object
Dim ModelDoc As Object
Dim SelMgr As Object
Dim SelCount As Long
Dim Note As Object
Dim TextFormat As Object

Dim i As Long

' aus der swconst.bas
Const swSelNOTES = 15        '  "NOTE"

Sub main()

    Set swApp = CreateObject("SldWorks.Application")
    Set ModelDoc = swApp.ActiveDoc

    ' die selektierten Objekte abklappern
    Set SelMgr = ModelDoc.SelectionManager
    ' wenn überhaupt was selektiert ist
    SelCount = SelMgr.GetSelectedObjectCount
    For i = 1 To SelCount
        ' wenn nix selektiert war wird die Schleife gar nicht durchlaufen
        ' ansonsten ein Objekt nach dem anderen holen und
        ' schauen, ob es eine Beschriftung ist
        If (SelMgr.GetSelectedObjectType(i) = swSelNOTES) Then
           
            Set Note = SelMgr.GetSelectedObject4(i)
            ' dann das Textformatobjekt vorbereiten, in dem wir die
            ' aktuellen Werte holen
            Set TextFormat = Note.GetTextFormat
           
            ' zur Info auf das Direktfenster ausgeben
            Debug.Print TextFormat.BackWards
            Debug.Print TextFormat.Bold
            Debug.Print TextFormat.CharHeight
            Debug.Print TextFormat.CharHeightInPts
            Debug.Print TextFormat.Escapement
            Debug.Print TextFormat.IsHeightSpecifiedInPts
            Debug.Print TextFormat.Italic
            Debug.Print TextFormat.LineLength
            Debug.Print TextFormat.LineSpacing
            Debug.Print TextFormat.ObliqueAngle
            Debug.Print TextFormat.Strikeout
            Debug.Print TextFormat.TypeFaceName
            Debug.Print TextFormat.Underline
            Debug.Print TextFormat.UpsideDown
            Debug.Print TextFormat.Vertical
            Debug.Print TextFormat.WidthFactor
       
            ' dann das Ändern, was man möchte, z.B. die Texthöhe und den Font
            TextFormat.TypeFaceName = "Arial"
            TextFormat.CharHeightInPts = 20
       
            ' und dann wieder zuweisen
            MsgBox Note.SetTextFormat(0, TextFormat)
       
        End If
    Next i
   
End Sub



Ich hoffe, du verstehst wie ich das gemeint habe und es hilft dir weiter.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite
http://solidworks.cad.de

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 01. Okt. 2003 09:32    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

Hervorragend,

meinen herzlichen Dank!

Ich habe das mit dem Objekt mal wieder übersehen, da sieht man mal wieder, dass mir das mit dem "objektorientierten Programmieren" wohl noch nicht so richtig in Fleisch und Blut übergegangen ist   .

Aber mit dem Hinweis hats geklappt, also ist vielleicht doch noch nicht Hopfen und Malz verloren.

ciao

------------------
Klaus Massler,
Alois Kober GmbH
www.al-ko.de
privat www.masslers.de

PS: Und der Trick mit dem "MsgBox" am Ende ist alleine schon 10 U's wert! Auf so'ne Idee muß man erst mal kommen.

[Diese Nachricht wurde von KMassler am 01. Oktober 2003 editiert.]

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 08. Okt. 2003 11: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

Hallo Stefan,

noch ein kleiner Hinweis, falls es jemand auch nutzen will.

Was vielleicht für Ottonormalprogrammierer nicht ganz klar ist:
Der Wert Textformat.ObliqueAngle ist keineswegs den Winkel des Textes, wie er im Eigenschaftmanager bei Bezugshinweisen angegeben wird.
Wenn man z.B. einen Text senkrecht schreiben will, dann muss man den Winkel im Bogenmaß der Eigenschaft Textformat.Escapement zuweisen.
Also bei 90 Grad (vereinfacht): TextFormat.Escapement = 90/57

Ciao

------------------
Klaus Massler,
Alois Kober GmbH
www.al-ko.de
privat www.masslers.de

PS: Was der Parameter .ObliqueAngle sein soll, ist mir allerdings noch nicht klar geworden.

[Diese Nachricht wurde von KMassler am 08. Oktober 2003 editiert.]

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)2024 CAD.de | Impressum | Datenschutz