Integration: Änderung der Grundkarte + PDF-Erstellung

Hallo ihr alle!

Ich könnte ein wenig Hilfe bei der Nutzung von Integration gebrauchen.
Ich möchte es für meine Pläne nutzen:

  • Ändern Sie die Hintergrundkarte aller Blätter, um sie an mein Format anzupassen
  • Erstellen Sie eine PDF-Datei in dem Ordner, in dem sich das Dokument befindet

So weit, so gut, nicht zu kompliziert. Auf der anderen Seite hätte ich gerne meinen Plan. SLDDRW wird nicht mit dieser neuen Grundkarte gespeichert. In den Aktionseinstellungen habe ich jedoch die Option "Speichern" deaktiviert.
image

Ich habe versucht, den Hintergrundplan nach dem Speichern der .pdf zu ändern, aber die Ausführung dauert zwangsläufig doppelt so lange.

Vielen Dank für Ihre Hilfe, einen schönen Tag!

Hallo c_vuillaume,
Es hat vielleicht nichts damit zu tun, aber ich habe es im Internet gefunden, in der Hoffnung, dass es helfen könnte. => https://www.youtube.com/watch?v=T7xHvbgzSOs
oder vielleicht das =>Grundkarten anpassen - 2022 - SOLIDWORKS Hilfe
@+.
AR.

1 „Gefällt mir“

Wir benötigen die Details der Operationen, die unter Integration angefordert werden, sowie die Version der verwendeten MycadTools-Tools (auch die von Solidworks):
Achten Sie auch auf die Optik vor den Operationen...

image

Es ist nicht unmöglich, dass die Anmeldung von der Art der Eröffnung abhängig ist...

3 „Gefällt mir“

Vielen Dank für Ihr Feedback, es löst mein Problem im Moment nicht, aber es gibt Ihnen Wege, die Sie trotz allem erkunden können =)

Fürs Protokoll: Ich reproduziere das Problem tatsächlich. (Die Änderung des Hintergrunds des Plans erfordert das Öffnen des Dokuments, das nicht betroffen ist.)
Für mich ist das ein Fehler, da die Option nicht speichern angehakt ist, es sollte nicht nach dem pdf die Änderung des Hintergrunds in der MEP gespeichert werden.
Ich wäre du, ich würde ein Ticket zur Hotline machen.

Auf der anderen Seite mache ich etwas Ähnliches für meine dxf über den Makrohintergrundaustausch, dann den Export und keine Sorge (daher der bestätigte Fehler)

2 „Gefällt mir“

Vielen Dank für Ihr Feedback. Hier sind meine Versionen:
Mycadtools 2024 SP1.0 und SW2022 SP5.0

image

Diese Geschichte wird wahrscheinlich auf Makroebene enden :slight_smile:

2 „Gefällt mir“

Das werde ich wahrscheinlich tun, danke für deine Antwort :wink:

2 „Gefällt mir“

Während Sie auf eine Antwort von Visiativ auf den Fehler warten, finden Sie hier ein Makro, das die Grundkarten ersetzt, den PDF-Export beibehält und das Dokument schließt, ohne es zu speichern:

Option Explicit
'Site avec exemple: https://www.lynkoa.com/forum/mises-en-plan/modifier-une-note-sur-un-fond-de-plan-solidworks-avec-une-macro
Public Enum swDocumentTypes_e
    swDocNONE = 0       ' Used to be TYPE_NONE

    swDocPART = 1       ' Used to be TYPE_PART

    swDocASSEMBLY = 2   ' Used to be TYPE_ASSEMBLY

    swDocDRAWING = 3    ' Used to be TYPE_DRAWING
End Enum

Dim swSheet         As SldWorks.Sheet
Dim swApp           As Object
Dim swModel         As SldWorks.ModelDoc2
Dim swDraw          As SldWorks.DrawingDoc
Dim swModelDocExt   As ModelDocExtension
Dim sTemplate       As String
Dim stemplatepath   As String
Dim Count           As Integer
Dim vSheetNameArr   As Variant
Dim vSheetName      As Variant
Dim vSheetProps     As Variant
Dim bRet            As Boolean
Dim tolerie         As Boolean
Dim swView          As SldWorks.View
Dim userName        As String
Dim cDirTemplate    As String
Dim cTemplateA4     As String
Dim cTemplateA4_Laser As String
Dim cTemplateA3     As String
Dim cTemplateA2     As String
Dim cTemplateA1     As String
Dim cTemplateA0     As String
Dim cTemplateA0plus As String







Sub main()
'Variable à remplacer lors d'un changement de fond de plan
'Constantes à remplacer lors de changement de fond de plan
cDirTemplate = "C:\xxx\xxx\Fond de plan C\" 'Mettre le chemin d'accès aux fonds de plans sous ce format: C:\xxx\xxx\
cTemplateA4 = "a4-c.slddrt" 'A renommer si vos templates s'appelle autrement
cTemplateA4_Laser = "a4-DECOUPE-c.slddrt"
cTemplateA3 = "a3-c.slddrt"
cTemplateA2 = "a2-c.slddrt"
cTemplateA1 = "a1-c.slddrt"
cTemplateA0 = "A0-c.slddrt"
cTemplateA0plus = "A0+-c.slddrt"


'On récupère les infos sur le nom de session windows
'userName = Environ("USERNAME")
'userName = Replace(userName, ".", " ")
'userName = StrConv(userName, vbProperCase)
'Debug.Print "Nom de session windows:" & userName

'If userName = "xxx" Or userName = "xxx1" Then
        'Constantes à remplacer lors de changement de fond de plan
        'cDirTemplate = "C:\xxx\xxx\Test\Fond de plan C\" 'Mettre le chemin d'accès aux fonds de plans sous ce format: C:\xxx\xxx\
        'cTemplateA4 = "a4-c.slddrt" 'A renommer si vos templates s'appelle autrement
        'cTemplateA4_Laser = "a4-DECOUPE-c.slddrt"
        'cTemplateA3 = "a3-c.slddrt"
        'cTemplateA2 = "a2-c.slddrt"
        'cTemplateA1 = "a1-c.slddrt"
        'cTemplateA0 = "A0-c.slddrt"
        'cTemplateA0plus = "A0+-c.slddrt"
'End If


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

If swModel Is Nothing Then
    MsgBox ("Pas de document ouvert")
    Else
        If swModel.GetType <> 3 Then
            MsgBox ("Il ne s'agît pas d'une mise en plan")
        Else
        Set swDraw = swModel
                Set swModelDocExt = swModel.Extension

        vSheetNameArr = swDraw.GetSheetNames
                For Each vSheetName In vSheetNameArr
                Debug.Print vSheetName
                
                        bRet = swDraw.ActivateSheet(vSheetName): Debug.Assert bRet
                        Set swSheet = swDraw.GetCurrentSheet
                        
                        'Ajout SD test nom template pas utile dans la macro (pour version future?):
                        Set swSheet = swDraw.GetCurrentSheet
                        sTemplate = Mid(swSheet.GetTemplateName, InStrRev(swSheet.GetTemplateName, "\") + 1)
                        Debug.Print sTemplate
                        
                        Set swView = swDraw.GetFirstView
                        Set swView = swView.GetNextView
                        'On récupère le nom de la config de la vue
                        Debug.Print "Nom de la vue" & swView.Name
                        Debug.Print "Configuration" & swView.ReferencedConfiguration
                        
                        
                        
                        vSheetProps = swSheet.GetProperties
                        Debug.Print "vSheetProps(0)=" & vSheetProps(0)
                        If vSheetProps(0) = "7" And swView.ReferencedConfiguration Like "*FLAT-PATTERN" Then 'A4
                            stemplatepath = cDirTemplate & cTemplateA3
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            stemplatepath = cDirTemplate & cTemplateA4_Laser
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            swModel.ForceRebuild3 (False)
                        ElseIf vSheetProps(0) = "7" Then 'A4
                            stemplatepath = cDirTemplate & cTemplateA3
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            stemplatepath = cDirTemplate & cTemplateA4
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            swModel.ForceRebuild3 (False) 'A2
                        ElseIf vSheetProps(0) = "8" Then 'A3
                            stemplatepath = cDirTemplate & cTemplateA4
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            stemplatepath = cDirTemplate & cTemplateA3
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            swModel.ForceRebuild3 (False) 'A2
                        ElseIf vSheetProps(0) = "9" Then
                            stemplatepath = cDirTemplate & cTemplateA4
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            stemplatepath = cDirTemplate & cTemplateA2
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            swModel.ForceRebuild3 (False)
                        ElseIf vSheetProps(0) = "10" Then 'A1
                            stemplatepath = cDirTemplate & cTemplateA4
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            stemplatepath = cDirTemplate & cTemplateA1
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            swModel.ForceRebuild3 (False)
                        ElseIf vSheetProps(0) = "11" Then 'A0
                            stemplatepath = cDirTemplate & cTemplateA4
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            stemplatepath = cDirTemplate & cTemplateA0
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            swModel.ForceRebuild3 (False)
                        ElseIf vSheetProps(0) = "11" Then 'A0+
                            stemplatepath = cDirTemplate & cTemplateA4
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            stemplatepath = cDirTemplate & cTemplateA0plus
                            bRet = swDraw.SetupSheet4(swSheet.GetName, vSheetProps(0), 12, vSheetProps(2), vSheetProps(3), True, stemplatepath, 0#, 0#, "")
                            swModel.ForceRebuild3 (False)
            ElseIf vSheetProps(0) <> "7" Then 'Pour les formats un peu exotiques non gérés
                            If vSheetProps(0) <> "8" Then
                            If vSheetProps(0) <> "9" Then
                            If vSheetProps(0) <> "10" Then
                            If vSheetProps(0) <> "11" Then
                            If vSheetProps(0) <> "12" Then
                                MsgBox "Le fond de plan ne correspond à aucune trame connue" & vbCrLf & "Aucun changement appliqué"
                                Exit Sub
                            End If: End If: End If: End If: End If
                        End If
                    Next
    End If
End If
'Remplacer ici par l'export pdf et fermeture du document sans sauvegarder
'swModel.Save2 (True) 'Sauvegarde des changements
End Sub


3 „Gefällt mir“