VBA-macro om vliegtuigstuklijst te wijzigen

Hallo

In een macro zou ik verschillende elementen van een plannomenclatuur willen wijzigen.

1-) De symmetrische configurationDefault of configuratie waarnaar in het plan wordt verwezen ->Ok

Gebruikte code: https://www.codestack.net/solidworks-api/document/drawing/bom-tables-update-referenced-configuration/

! [](upload://ukhwxSXVFt6vjiJ1XNKMqV6Q7N3.png)

2-) De kolombreedte na het wijzigen van de configuratie voor de hoeveelheidskolom (deze breedte verandert door een bug)

! [](upload://eg2sXRpMa4geUFZmvlT0m2BHKNs.png)

3- )Verander de lettergrootte van dezelfde kolom naar 16 in plaats van 11 vanwege de vorige bug.

Voor punt 1 zou ik ermee weg moeten komen dankzij de gevonden code, als iemand aanknopingspunten heeft voor punten 2 en 3.

 

Bedankt

Voor punt 2 ook gevonden:

Dim swApp As Object
Sub main()
  Dim swModel As ModelDoc2
  Dim swdraw As DrawingDoc
  Dim tab1 As TableAnnotation
 
   
  Set swApp = Application.SldWorks
  Set swModel = swApp.ActiveDoc
  Set swdraw = swModel
 
  Set tab1 = swdraw.SelectionManager.GetSelectedObject6(1, 0)
  SetColumnWith tab1
 
End Sub



Sub SetColumnWith(swTable As TableAnnotation)
        Dim index As Integer
        Dim swAnnotation As Annotation
        Dim swDislplayData As DisplayData
        'Dim TextWidth As Double

       
        Set swAnnotation = swTable.GetAnnotation
        Set swDislplayData = swAnnotation.GetDisplayData

        For i = 0 To swTable.ColumnCount - 1
        Dim ColumnWidth As Double
        ColumnWidth = swTable.GetColumnWidth(i)
        
        Debug.Print i & ":" & ColumnWidth * 1000
        If i = 1 Then
            'bRet = swTable.SetColumnWidth (i)
            Dim ColWd As Double
            ColWd = swTable.GetColumnWidth(i)
            Debug.Print ColWd
            retHt = swTable.SetColumnWidth(i, 0.0135, 0)
        End If
        Next
    End Sub

Dit wijzigt mijn kolom goed of ik heb het probleem van de breedte en een ander lettertype.

Er is alleen nog punt 3-) over om dit lettertype te wijzigen.

Optie 1 wijzig het in de nomenclatuur door het lettertype van de kolom te wijzigen (geen idee hoe dit te doen

of optie 2 wijzig de optie in gereedschapsoptie/Documenteigenschappen/Tabellen/Nomenclatuur/Lettertype

Als iemand een oplossing heeft om een van deze 2 mogelijke opties te bereiken.

Bedankt

Hallo sbadenis
In theorie zou uw tekendocument al de juiste instellingen moeten hebben (tekensjabloon)....

Heeft u geprobeerd "SetTextFormat"? (Solidworks Help: SetTextFormat-methode)
Met:     waarde = instantie. SetTextFormat(UseDoc, TextFormat)

Gebruik Doc
Waar om de documentinstelling te gebruiken, onwaar om niet
Tekstformaat
ITextFormat-object
Vriendelijke groeten
1 like

Bedankt @Maclane voor de leiding. Uiteindelijk, aangezien het probleem komt van mijn documentsjabloon, waar het lettertype is ingesteld op 16 in plaats van 10, gaf ik er de voorkeur aan om de wijziging op documentniveau aan te brengen, zelfs als uw oplossing waarschijnlijk ook werkte, maar leek het mij minder logisch voor mijn behoeften.

Voor degenen die geïnteresseerd zijn, is hier de gekozen oplossing:

Dim swDraw As DrawingDoc
Dim swAnnotation As Annotation
Dim UserPref As Integer
Dim UserPrefOption As Integer
Dim swTextFormat As SldWorks.TextFormat
Dim bRet As Boolean

        Set swTextFormat = swAnnotation.GetTextFormat(1)
            swTextFormat.CharHeightInPts = "10"
            swTextFormat.TypeFaceName = "Arial"
            swTextFormat.Bold = False
            swTextFormat.Italic = False

        bRet = swDraw.Extension.SetUserPreferenceTextFormat(swUserPreferenceTextFormat_e.swDetailingBillOfMaterialTextFormat, swDetailingBillOfMaterial, swTextFormat)

 

 

1 like