Bonjour,
Je souhaiterais dans une macro modifier plusieurs éléments d'une nomenclature plan.
1-) La configuration en symétrieDéfaut ou configuration reférencé dans le plan ->Ok
Code trouvé: https://www.codestack.net/solidworks-api/document/drawing/bom-tables-update-referenced-configuration/
![](upload://ukhwxSXVFt6vjiJ1XNKMqV6Q7N3.png)
2-) La largeur de colonne après changement de configuration pour la colonne quantité (cette largeur se modifie en raison d'un bug)
![](upload://eg2sXRpMa4geUFZmvlT0m2BHKNs.png)
3- )Modifier la taille de police de cette même colonne qui passe à 16 au lieu de 11 à cause du précédent bug.
Pour le point 1 je devrait m'en tirer sans problème grâce au code trouvé, si quelqu'un à des pistes pour les points 2 et 3.
Merci
Pour le point 2 trouvé aussi:
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
Cela modifie bien ma colonne ou j'ai le soucis de largeur et police différente.
Il reste plus que le point 3-) Pour changer cette police.
Option 1 la modifier dans la nomenclature en changeant la police de la colonne (aucune idée sur la manière d'y arriver
ou option 2 modifier l'option dans outil option/Propriétés du document/Tables/Nomenclature/Police
Si quelqu'un a une solution pour réaliser l'une de ces 2 option possible.
Merci
Bonjour sbadenis
En theorie ton Document de Mise en plan doit deja avoir les reglages adequats (Modele de mises en plan)....
As-tu essayé "SetTextFormat" ? (Aide Solidworks : SetTextFormat Methode)
Avec : value = instance.SetTextFormat(UseDoc, TextFormat)
- UseDoc
- True to use the document setting, false to not
- TextFormat
- ITextFormat object
- Cordialement
1 « J'aime »
Merci @Maclane pour la piste. Au finale comme le soucis vient plutôt de mon modèle de document ou la police est parametré en 16 au lieu de 10, j'ai préféré apporté la modification au niveau du document, même si ta solution fonctionnait sûrement aussi, mais me paraissait moins logique pour mon besoin.
Pour ceux que cela intéresserait voici la solution retenue:
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 « J'aime »