| | | 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
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 / zitieren --> Unities abgeben:
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)
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 / zitieren --> Unities abgeben: Nur für Andi Beck
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
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 / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben:
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 >>)
|