Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - aktuelle Schrifttype und Größe einer Stückliste auslesen

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
  
Bechtle Competence Days | Online
Autor Thema:  API - aktuelle Schrifttype und Größe einer Stückliste auslesen (1000 mal gelesen)
Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 30. Mrz. 2018 17:07    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 möchte die aktuelle Schrifttype und Größe der Stückliste einer Zeichnung auslesen.
Momentan bekomme ich immer "Arial" und "8" als feste Größe zurück, obwohl ich die Werte in der Tabelle verändere.
Es scheint mir, dass das die Standardwerte der Tabellenvorlage sind.

Mein Code in Auszügen:

Code:

    Dim swSheetView    As SldWorks.View
    Dim swBomFeatures() As SldWorks.BomFeature
    Dim vTables        As Variant
    Dim swTableAnn      As SldWorks.TableAnnotation
    Dim swBomTableAnn  As SldWorks.BomTableAnnotation
    Dim i              As Integer
    Dim j              As Integer
    Dim isArrInit      As Boolean
    Dim sFontName      As String
    Dim lSchrifthoehe  As Long

          vTables = swSheetView.GetTableAnnotations()           
             
            If Not IsEmpty(vTables) Then                         
           
                For j = 0 To UBound(vTables)                       
                   
                    Set swTableAnn = vTables(j)                   
                   
                    If swTableAnn.Type = swTableAnnotationType_e.swTableAnnotation_BillOfMaterials Then
                   
                        If False = isArrInit Then
                            isArrInit = True
                            ReDim swBomFeatures(0)                                         
                        Else
                            ReDim Preserve swBomFeatures(UBound(swBomFeatures) + 1)
                        End If
                       
                        Set swBomTableAnn = swTableAnn                                     
                        Set swBomFeatures(UBound(swBomFeatures)) = swBomTableAnn.BomFeature
                       
                        Dim swTextFormat    As SldWorks.TextFormat
                        Set swTextFormat = swBomTableAnn.GetTextFormat()

                        sFontName = swTextFormat.TypeFaceName
                        lSchrifthoehe = swTextFormat.CharHeightInPts         
                       
                    End If 
                Next
          End If


Ich habe noch eine andere Variante gefunden, die aber ebenfalls nicht die aktuellen Werte liefert.

Code:

          Dim TextFormatObj As Object
          Dim ModelDocExtension As ModelDocExtension
          Set ModelDocExtension = swDraw.Extension
          Set TextFormatObj = ModelDocExtension.GetUserPreferenceTextFormat(swUserPreferenceTextFormat_e.swDetailingBillOfMaterialTextFormat, 0)
          Set swTextFormat = TextFormatObj
          sFontName = swTextFormat.TypeFaceName
          lSchrifthoehe = swTextFormat.CharHeightInPts


Immer wenn ich andere Bezüge auswähle, bekomme ich Fehlermeldungen wie Typen unverträglich.

Wer kann mir da weiterhelfen?

Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 01. Apr. 2018 23:37    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 Andi Beck 10 Unities + Antwort hilfreich

Zitat:
... die aktuelle Schrifttype und Größe der Stückliste einer Zeichnung auslesen.
Momentan bekomme ich immer "Arial" und "8" als feste Größe zurück, obwohl ich die Werte in der Tabelle verändere.
Es scheint mir, dass das die Standardwerte der Tabellenvorlage sind...

Hallo Andi,

habe gerade etwas Lust zu raten ... 
Frage: ist für die ganze Tabelle etwas anderes eingestellt, oder für einzelne Einträge? oder möglicherweise innerhalb eines einzelnen Eintrags?
habe neulich mal etwas gesehen wie "hasMultipleFonts" oder so. vielleicht hilft das ja?

Gruß, Christian

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 02. Apr. 2018 08: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


Schrifttype-Liste.JPG

 
Frohe Ostern Christian,
ich meinte schon die ganze Tabelle, so wie im Bild zu sehen.

Aber du bringst mich da auf einen Gedanken, der sogar der bessere Weg ist.
Da ich sowieso jede einzelne Zelle anspreche und nach der benötigten Breite des Inhalts frage, kann ich evtl. auch gleich dort nach der Type und Größe fragen.
An unterschiedliche Einstellungen habe ich gar nicht gedacht, da ich das nicht praktiziere.
Jedoch ist das natürlich möglich, und deshalb sollte man natürlich auch darauf Rücksicht nehmen.

Mal sehen, ob ich darüber weiter komme.
Aber meine obige Frage nach der Abfrage der Einstellung der ganzen Tabelle ist schon noch Interessant.

Bis dahin, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 02. Apr. 2018 17:14    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 Christian,
also aus der einzelnen Zelle kann ich die Type und Größe auslesen.

Wen es Interessiert, hier der Code in Auszügen:

Code:

        Dim swBomFeat      As SldWorks.BomFeature
        Dim SwBomTab        As SldWorks.BomTableAnnotation
        Dim SwTabAnn        As SldWorks.TableAnnotation
        Dim swTextFormat    As SldWorks.TextFormat
        Dim sFontName      As String
        Dim lSchrifthoehe  As Double
        Dim k              As Integer
        Dim l              As Integer
       
        swBomFeat.SetConfigurations False, vConfVis, vConfNames
       
        Set SwBomTab = swBomFeat.GetTableAnnotations(0)
        Set SwTabAnn = SwBomTab
           
        For k = 0 To SwTabAnn.ColumnCount - 1                      'durch alle Spalten gehen

            For l = 0 To SwTabAnn.RowCount - 1                      'durch alle Zeilen gehen
                   
                Set swTextFormat = SwTabAnn.GetCellTextFormat(l, k) 'Ruft die Informationen des verwendeten Schriftfonts ab
                sFontName = swTextFormat.TypeFaceName              'Name des Schriftfont der Zelle
                lSchrifthoehe = swTextFormat.CharHeightInPts        'Ruft die Höhe des Schriftfont in Punkten der Zelle ab
                 
            Next l

        Next k


Bis dann, Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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