Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Führungslinientext formatieren

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:  Führungslinientext formatieren (129 / mal gelesen)
Bluejay
Mitglied
Ingenieur


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

Beiträge: 203
Registriert: 14.05.2007

Inventor 2011 for Simulation<P>Microsoft Windows XP Professional<P>Dell Precision T3400
Intel(R) Core(TM)2 Duo CPU
E6750 @2,66 GHz
3,00 GB RAM

erstellt am: 21. Jun. 2024 09:25    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

Guten Morgen zusammen,
ich benutze folgendes Makro um den Text aller Führungslinientexte einer Zeichnung zu formatieren. Leider schreibt das Makro alles Texte in eine Zeile - ich möchte gerne alle Zeilen des Führungslinientextes erhalten. Könnt ihr mir hiermit helfen? Vielen Dank schon mal im voraus
LG

Sub LeaderNoteTextSize2()

Dim oDoc As DrawingDocument
Set oDoc = ThisApplication.ActiveDocument

Dim oLeaderNote As LeaderNote

Dim oFormattedText As String


For Each oLeaderNote In oDoc.ActiveSheet.DrawingNotes.LeaderNotes
     
    oText = oLeaderNote.Text
    oTextSize = oLeaderNote.Text
   
   
    oFormattedText = "<StyleOverride FontSize='" & 0.3 & "'>" & oText & "</StyleOverride>"
   
     
    oLeaderNote.FormattedText = oFormattedText
 

Next
End Sub

------------------
MFG

BlueJay

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2505
Registriert: 15.11.2006

Windows 10 x64, AIP 2023

erstellt am: 21. Jun. 2024 23: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 Bluejay 10 Unities + Antwort hilfreich

Moin

Kein Wunder, du bügelst alle Formatierungen weg und setzt nur den reinen Text in deinen FontSize Tag. Du musst hier ein XML-Objekt erzeugen und in der XML-Struktur deine FontSize einfügen. Ich hab mal auf die Schnelle was gebastelt. Verweis auf "Microsoft XML, v6.0" im VBA-Editor unter "Extras" --> "Verweise" setzen nicht vergessen.

Code:

Option Explicit

' Verweis auf "Microsoft XML, v6.0" setzen
' add reference to "Microsoft XML, v6.0"

Private Sub SetFontSizeTag()

Dim oDrawDoc As DrawingDocument
Set oDrawDoc = ThisApplication.ActiveDocument

Dim oSheet As Sheet
Set oSheet = oDrawDoc.ActiveSheet

Dim oLeaderNote As LeaderNote

For Each oLeaderNote In oSheet.DrawingNotes.LeaderNotes
    Dim objXML As MSXML2.DOMDocument60
    Set objXML = New MSXML2.DOMDocument60

    ' FormattedText um root-Node erweitern
    ' stellt sicher, das in oberster Ebene nur ein Element existiert (XML-Standard)
    Dim sXML As String
    sXML = "<root>" & oLeaderNote.FormattedText & "</root>"

    Dim oAttr As IXMLDOMAttribute
    Dim oStyleOverrideNode As IXMLDOMNode
    Dim oTextNode As IXMLDOMNode
    Dim oRootNode As IXMLDOMNode
    Dim oNode As IXMLDOMNode
    Dim oChildNode As IXMLDOMNode

    ' create StyleOverride node
    Set oStyleOverrideNode = objXML.createNode(MSXML2.NODE_ELEMENT, "StyleOverride", "")
    'create font size attribute
    Set oAttr = objXML.createAttribute("FontSize")
    oAttr.Value = "0,3"
    'Add the attribute to the node.
    Call oStyleOverrideNode.Attributes.setNamedItem(oAttr)

    ' create XML document or die
    If Not objXML.loadXML(sXML) Then  'sXML is the string with XML'
        Call MsgBox("Error reading formatted text.", vbCritical, "Add StyleOverride")
        Exit Sub
    End If
   
    Set oRootNode = objXML.FirstChild

    For Each oNode In oRootNode.ChildNodes
        Select Case oNode.baseName
        Case "Parameter", "Property", "":
            Set oTextNode = oNode
               
            Dim oSONode As IXMLDOMNode
            Set oSONode = objXML.createNode(MSXML2.NODE_ELEMENT, "StyleOverride", "")
            Set oAttr = objXML.createAttribute("FontSize")
            oAttr.Value = "0,3"

            ' add the attribute to the node.
            Call oSONode.Attributes.setNamedItem(oAttr)

            ' replace original node with  StyleOverride Node
            Call oNode.ParentNode.replaceChild(oSONode, oNode)
       
            ' append original node to StyleOverride node
            Call oSONode.appendChild(oTextNode)
       
        Case "StyleOverride":
            ' set FontSize attribute
            Dim oNodeAttr As IXMLDOMAttribute
            Set oNodeAttr = oNode.Attributes.getNamedItem("FontSize")
            If oNodeAttr Is Nothing Then
                Set oAttr = objXML.createAttribute("FontSize")
                oAttr.Value = "0,3"
                Call oNode.Attributes.setNamedItem(oAttr)
            Else
                oNodeAttr.Value = "0,3"
            End If
        End Select
    Next

    'write back XML string to LeaderNote
    'remove added root note tag and CRLF at line end
    sXML = Replace(objXML.XML, "<root>", "")
    sXML = Replace(sXML, "</root>", "")
    sXML = Replace(sXML, Chr(13) & Chr(10), "")
   
    oLeaderNote.FormattedText = sXML
Next

End Sub


------------------
MfG
Ralf

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

Bluejay
Mitglied
Ingenieur


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

Beiträge: 203
Registriert: 14.05.2007

Inventor 2011 for Simulation<P>Microsoft Windows XP Professional<P>Dell Precision T3400
Intel(R) Core(TM)2 Duo CPU
E6750 @2,66 GHz
3,00 GB RAM

erstellt am: 24. Jun. 2024 15: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

Vielen Dank für die schnelle Hilfe!
Das macht genau das was ich benötige!
LG

------------------
MFG

BlueJay

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