Appliquer un modèle de document à un ancienne pièce ou assemblage

Bonjour,

Est-il possible d’appliquer un modèle de document à une ancienne pièce ou assemblage ?

En gros j’aimerais pouvoir mettre à jour les propriétés du document (option => Propriétés du document => Norme d’habillage, …) et ajouter l’ensemble des propriétés personnalisé au modèle sans supprimer les anciennes propriétés personnalisées.

Merci pour vos retours

Bonjour,
Nativement ce n’est pas possible (on peut au mieux avec le planificateur de tâches ajouter des propriétés).
Par macro ou peut-être dans les outils Visiativ (MyCadTool) je ne vois pas d’autre solution.

2 « J'aime »

Via Intégration tu dois pouvoir le faire.
Pour la norme:
image
Pour les propriétés:
image
Ci-joint l’aide d’Intégration c’est un utilitaire Visiativ payant, mais possible de le tester un mois de mémoire.
Sinon via macro c’est réalisable puisque l’utilitaire basé sur l’API solidworks le fait, mais il va falloir rechercher l’équivalent tout fait ou bien l’écrire, si rien d’équivalent.

Edit: un exemple de macro pour changer l’Hgabillage:
https://help.solidworks.com/2022/english/api/sldworksapi/Change_Drafting_Standard_to_Custom_Example_VB.htm

3 « J'aime »

Bonjour;
Il n’y a pas de solution simple sur ce sujet…
cependant, et si cela ne concerne pas un grand nombre de fichier, il est possible d’utiliser ma solution abordée dans le topic:


Bonjour;

Pour un Assemblage, il est toujours possible de le glisser dans un modèle de document *.SLDASM (nouveau document Assemblage), puis de le décomposer (clique Droit) pour retrouver son Arborescence (FeatureTree) d’origine.
image

… et sauvegarder le nouvel assemblage.

Pour les pièces c’est légèrement plus compliqué (mais pas tant que cela).
Insérez votre composant dans un nouveau document pièce (modèle de document) comme si vous faisiez une pièce derivée, Cochez l’option « Rompre le lien avec la pièce d’origine »:


Et (éventuellement) supprimer le répertoire crée dans le featureTree.
image
Puis sauvegardez.

Cordialement.

1 « J'aime »

C’est ingénieux comme techniques, par contre pour les pièces me semble que c’est pas aussi simple que vous l’avez décrit, j’imagine que tout lien vers assemblage ou fonction dans le contexte , pièce dérivée enfant ou mise en plan sera perdu

1 « J'aime »

@Lynkoa15
Effectivement, cela implique de « briser » toutes les références externes et de ré-associer les mises en plans et Assemblages .

Pour les plus « MACRO-teux » cette macro fait aussi une bonne partie du JOB: A personnaliser selon vos emplacement des fichiers Normes et templates…
-Pour utilisateurs avertis uniquement…

Dim Part            As Object
Dim swApp           As SldWorks.SldWorks
Dim swModel         As SldWorks.ModelDoc2
Dim swModExt        As SldWorks.ModelDocExtension
Dim NormeActive     As String
Dim DefaultSlotMate As String


Sub Norme()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModExt = swModel.Extension

NormeActive = swModExt.GetUserPreferenceString(SwConst.swDetailingDimensionStandardName, SwConst.swDetailingNoOptionSpecified) 'Ecrit la Norme existante du fichier ouvert dans la variable
Debug.Print NormeActive

ModelDoc = swModel.GetUserPreferenceStringValue(swUserPreferenceStringValue_e.swDefaultTemplateAssembly)
Debug.Print ModelDoc

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
filetype = swModel.GetType 'Donne le type de document ouvert avec :0=swDocNONE;1=swDocPART;2=swDocASSEMBLY;3=swDocDRAWING

If filetype = 1 Then
boolstatus = Part.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\Emplacement de votre modele PRT.sldstd") '<- Emplacement exacte du fichier sldstd pour vos pièces
End If

If filetype = 2 Then 'Si le fichier ouvert est un Assemblage
boolstatus = Part.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\Emplacement de votre modele ASM.sldstd") '<- Emplacement exacte du fichier sldstd pour vos Assemblages
defaultTemplate = "W:\Modeles_solidworks\Assemblage .asmdot"
    
End If

If filetype = 3 Then 'Si le fichier ouvert est une Mise en plan

Call Formats
End If

End Sub

-> Dans un nouveau Module

Dim vSheetProps     As Variant
Dim nErrors         As Long
Dim nTemplatePath   As String
Dim swPaperWidth    As String
Dim swPaperHeight   As String


' Repertoire contenant les modeles des fonds de plans
Const sTemplatePath As String = "W:\Modeles_solidworks\Fonds_de_plans_2023"

' Formats des differents fond de plans disponibles dans le Repertoire ci-dessous
Const A0HTemplateName As String = "A0H.slddrt"
Const A1HTemplateName As String = "A1H.slddrt"
Const A1VTemplateName As String = "A1V.slddrt"
Const A2HTemplateName As String = "A2H.slddrt"
Const A2VTemplateName As String = "A2V .slddrt"
Const A3HTemplateName As String = "A3H.slddrt"
Const A3VTemplateName As String = "A3V.slddrt"
Const A4HTemplateName As String = "A4H.slddrt"
Const A4VTemplateName As String = "A4V.slddrt"

Sub Formats()

 Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swDraw As SldWorks.DrawingDoc
    Dim swSheet As SldWorks.Sheet
    Dim vSheetProps As Variant
   

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    Set swSheet = swDraw.GetCurrentSheet
    

        'swModel.ActivateSheet vSheetName
            Set swSheet = swModel.GetCurrentSheet
            vSheetProps = swSheet.GetProperties
            swPaperWidth = vSheetProps(5)
            swPaperHeight = vSheetProps(6)
        Select Case swPaperWidth & swPaperHeight ' Comparaison de la Longueur et de la Largeur du fond de plan present (Unité en Metres)
        
Case "1,189" & "0,841" ' Format A0H
        nTemplatePath = sTemplatePath & "\" & A0HTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A0.sldstd")
       
Case "0,841" & "0,594" ' Format A1H
        nTemplatePath = sTemplatePath & "\" & A1HTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A1.sldstd")
        
Case "0,594" & "0,841" ' Format A1V
        nTemplatePath = sTemplatePath & "\" & A1VTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A1.sldstd")

Case "0,594" & "0,42" ' Format A2H
        nTemplatePath = sTemplatePath & "\" & A2HTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A2.sldstd")

Case "0,42" & "0,594" ' Format A2V
        nTemplatePath = sTemplatePath & "\" & A2VTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A2.sldstd")

Case "0,42" & "0,297" ' Format A3H
        nTemplatePath = sTemplatePath & "\" & A3HTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A3.sldstd")

Case "0,297" & "0,42" ' Format A3V
        nTemplatePath = sTemplatePath & "\" & A3VTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A3.sldstd")

Case "0,297" & "0,21" ' Format A4H
        nTemplatePath = sTemplatePath & "\" & A4HTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A4.sldstd")

Case "0,21" & "0,297" ' Format A4V
        nTemplatePath = sTemplatePath & "\" & A4VTemplateName
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\A4.sldstd")

        Case Else
        nTemplatePath = sTemplatePath & "\" & A2HTemplateName 'Format par défaut si le fond de plan present n'est pas dans la liste ci-dessus
        boolstatus = swModel.Extension.LoadDraftingStandard("W:\Modeles_solidworks\Normes_de_mise_en_plans\ISO-REVTECH_A2.sldstd")
        
End Select
        
   'On Supprime le fond de plan initial
    swModel.SetupSheet5 swSheet.GetName, swDwgPapersUserDefined, swDwgTemplateNone, vSheetProps(2), vSheetProps(3), vSheetProps(4), "", vSheetProps(5), vSheetProps(6), "Default", True
    
    'On Recharge le nouveau fond de plan
    swModel.SetupSheet5 swSheet.GetName, swDwgPapersUserDefined, swDwgTemplateCustom, vSheetProps(2), vSheetProps(3), vSheetProps(4), nTemplatePath, vSheetProps(5), vSheetProps(6), "Default", True
            
    swModel.ViewZoomtofit2
    
End Sub

Attention à bien remplacer tous les emplacements des fichiers de nomes et de mises en plans…
Pour la seconde partie de cette macro, j’utilise des comparaisons de formats pour déterminer
quelle « fond de plan » et Norme de MEP à utiliser.

Cordialement.

3 « J'aime »