Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks Enterprise PDM
  automatisierte STEP-Erstellung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
PLM TechnologieForum Bamberg
Autor Thema:  automatisierte STEP-Erstellung (2229 mal gelesen)
Fredy-Steady
Mitglied
Techniker


Sehen Sie sich das Profil von Fredy-Steady an!   Senden Sie eine Private Message an Fredy-Steady  Schreiben Sie einen Gästebucheintrag für Fredy-Steady

Beiträge: 18
Registriert: 12.07.2011

Windows 10 Professional
Intel Xeon X5650 @2.67GHz
32 GB RAM
NVIDIA Quadro 4000
SWX 2019 x64 Edition, SP 4
SOLIDWORKS PDM 2019 (SP 4.0) 27.4 (B72)

erstellt am: 23. Jun. 2020 16:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo PDM-Gemeinde, ich bin auf der Suche nach einer Möglichkeit, um automatisiert STEP-Dateien von Bauteilen bei Freigabe zu erstellen. Und zwar nur von Konfigurationen, welche den Namen *STEP enthalten. Dies funktioniert soweit super mit einem Task. Nun habe ich das Problem, dass, wenn mehrere Konfigurationen vorhanden sind, diese am Ende des Dateinamens mit einer Nummer versehen werden. Beispielsweise heisst die STEP-Datei der ersten Konfiguration Z-032024_322.75.0215_0, die zweite Konfiguration Z-032024_322.75.0445_1, die dritte Z-032024_322.75.0475_3 usw.
Dies ist insofern problematisch, wenn ich bei einem Bauteil nachträglich zusätzliche Konfigurationen hinzufüge, die jeweilige STEP nicht überschrieben wird bzw. plötzlich mehrere STEP-Dateien mit dem gleichen Namen vorhanden sind (Ausnahme natürlich die letzte Ziffer). Der Ausgabe-Dateiname soll lauten: "Zeichnungsnummer"_"Artikelnummer".
Irgenwie krieg ich's nicht hin, dass am Ende keine Nummer steht, weder bei einem Bauteil mit einer Konfiguration noch bei einem Teil mit x Konfigurationen.....
Untenstehend der VBA-Code:

'SOLIDWORKS PDM 2019 - Default Convert Task Script
'-----------------------------------------------
Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim swDrawing As SldWorks.DrawingDoc
Dim swAssembly As SldWorks.AssemblyDoc
Dim swExtension As SldWorks.ModelDocExtension
Dim swConfMgr As SldWorks.ConfigurationManager
Dim swPDFExport As SldWorks.ExportPdfData
Dim swDocSpecification As SldWorks.DocumentSpecification
Dim FileSystemObj as Object
Dim errors As Long
Dim warnings As Long
Dim Is3dPDF As Boolean
Const ForAppending = 8
Const TriStateDefault = -2

#If VBA7 Then
    Private Declare PtrSafe Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExW" (ByVal hwnd As Long, ByVal pszPath As LongPtr, ByVal psa As Any) As Long
    Private Declare PtrSafe Function PathIsRelative Lib "shlwapi.dll" Alias "PathIsRelativeW" (ByVal pszPath As LongPtr) As Long
#Else
    Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExW" (ByVal hwnd As Long, ByVal pszPath As LongPtr, ByVal psa As Any) As Long
    Private Declare Function PathIsRelative Lib "shlwapi.dll" Alias "PathIsRelativeW" (ByVal pszPath As LongPtr) As Long
#End If

Function PathAppend(path, more) As String
    If Not Right(path, 1) = "\" Then
        path = path & "\"
    End If
    If Left(more, 1) = "\" Then
        more = Mid(more, 2)
    End If
    PathAppend = path & more
End Function

Sub Log(message)
    Dim errorLogFolder As String
    Dim errorLogPath As String
    ' Determine error log output path
    errorLogFolder = "[ErrorLogPath]"
   
    ' Trim \ from the start
    If Left(errorLogFolder, 1) = "\" Then
        errorLogFolder = Mid(errorLogFolder, 2)
    End If

    ' Build full root
    If PathIsRelative( StrPtr(errorLogFolder) ) = 1 Then
        errorLogPath = PathAppend("<VaultPath>", errorLogFolder)
    Else
        errorLogPath = errorLogFolder
    End If
   
    ' Create directory if not exists
    SHCreateDirectoryEx ByVal 0&, StrPtr(errorLogPath), ByVal 0&
    errorLogPath = PathAppend(errorLogPath, "<TaskInstanceGuid>.log")

    ' Write error to output file
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFile = oFSO.OpenTextFile(errorLogPath, ForAppending, TriStateDefault)
    oFile.WriteLine message
    oFile.Close
End Sub

Sub CreatePath(path)
    ' Create directory if not exists
    result = SHCreateDirectoryEx(ByVal 0&, StrPtr(path), ByVal 0&)
End Sub

Function GetExtension(docType, fileFormat)
    first = InStr(1, fileFormat, "(")
    last = InStr(first, fileFormat, ")")
    extensions = Mid(fileFormat, first + 1, last - first - 1)
   
    Is3dPDF = (StrComp(Mid(fileFormat, 1, first - 1), "3D PDF - MBD ") = 0)
   
    If InStr(1, extensions, ";") > 0 Then
        Dim all As Variant
        all = Split(extensions, ";")
     
        If UBound(all) >= docType - 1 Then
            ext = all(docType - 1)
        Else
            ext = "*." ' Nothing
        End If
    Else
        ext = extensions
    End If
   
    GetExtension = Mid(Trim(ext), 2)
End Function

Sub SetConversionOptions(ext)
    ' PDF options
    If LCase(ext) = ".pdf" Then
        swApp.SetUserPreferenceToggle swPDFExportInColor, [PdfInColor]
        swApp.SetUserPreferenceToggle swPDFExportEmbedFonts, [PdfEmbedFonts]
        swApp.SetUserPreferenceToggle swPDFExportHighQuality, [PdfHighQuality]
        swApp.SetUserPreferenceToggle swPDFExportPrintHeaderFooter, [PdfPrintHeaderFooter]
        swApp.SetUserPreferenceToggle swPDFExportUseCurrentPrintLineWeights, [PdfUsePrinterLineWeights]
    ' IGES
    ElseIf LCase(ext) = ".igs" Then
        swApp.SetUserPreferenceToggle swIGESExportSolidAndSurface, [IgesExportSolidSurface]
        swApp.SetUserPreferenceIntegerValue swIGESRepresentation, [IgesRepresentation]
        swApp.SetUserPreferenceToggle swIGESExportAsWireframe, [IgesExportWireframe]
        swApp.SetUserPreferenceIntegerValue swIGESCurveRepresentation, [IgesCurveRepresentation]
        swApp.SetUserPreferenceIntegerValue swIGESSystem, [IgesSystem]
        swApp.SetUserPreferenceToggle swIGESExportFreeCurves, [IgesExportFreeCurves]
        swApp.SetUserPreferenceToggle swIGESExportSketchEntities, [IgesExportSketchEntities]
        swApp.SetUserPreferenceToggle swIGESHighTrimCurveAccuracy, [IgesHighCurveAccuracy]
        swApp.SetUserPreferenceToggle swIGESComponentsIntoOneFile, [IgesComponentsIntoOneFile]
        swApp.SetUserPreferenceToggle swIGESFlattenAssemHierarchy, [IgesFlattenAssemblyHierarchy]
    ' ACIS
    ElseIf LCase(ext) = ".sat" Then
        swApp.SetUserPreferenceIntegerValue swAcisOutputGeometryPreference, [AcisGeometry]
        swApp.SetUserPreferenceIntegerValue swOutputVersion, [AcisVersion]
        swApp.SetUserPreferenceIntegerValue swAcisOutputUnits, [AcisOutputAsUnit]
    ' STEP
    ElseIf LCase(ext) = ".step" Then
        swApp.SetUserPreferenceIntegerValue swAcisOutputGeometryPreference, [StepGeometry]
        swApp.SetUserPreferenceIntegerValue swStepAP, [StepVersion]
    ' Parasolid
    ElseIf LCase(ext) = ".x_t" Or LCase(ext) = ".x_b" Then
        swApp.SetUserPreferenceIntegerValue swParasolidOutputVersion, [ParasolidVersion]
        swApp.SetUserPreferenceToggle swXTAssemSaveFormat, [ParasolidFlattenHierarchy]
    ' VRML
    ElseIf LCase(ext) = ".wrl" Then
        swApp.SetUserPreferenceIntegerValue swExportVrmlUnits, [VrmlOutputAsUnit]
        swApp.SetUserPreferenceToggle swExportVrmlAllComponentsInSingleFile, [VrmlSaveAssemblyAsOneFile]
    ' STL
    ElseIf LCase(ext) = ".stl" Then
        swApp.SetUserPreferenceToggle swSTLBinaryFormat, [StlOutputAs]
        swApp.SetUserPreferenceIntegerValue swExportStlUnits, [StlOutputAsUnit]
        swApp.SetUserPreferenceIntegerValue swSTLQuality, [StlQuality]
        swApp.SetUserPreferenceToggle swSTLDontTranslateToPositive, [StlDontTranslatePositive]
        swApp.SetUserPreferenceToggle swSTLComponentsIntoOneFile, [StlComponentsIntoOneFile]
        swApp.SetUserPreferenceToggle swSTLCheckForInterference, [StlCheckForInterferences]
    ' TIF or PSD
    ElseIf LCase(ext) = ".tif" Or LCase(ext) = ".psd" Then
        swApp.SetUserPreferenceIntegerValue swTiffImageType, [TifImageType]
        swApp.SetUserPreferenceIntegerValue swTiffCompressionScheme, [TifCompressionScheme]
    ' eDrawings
    ElseIf LCase(ext) = ".eprt" Or LCase(ext) = ".easm" Or LCase(ext) = ".edrw" Then
        swApp.SetUserPreferenceToggle swEDrawingsOkayToMeasure, [EdrwOkayToMeasure]
        swApp.SetUserPreferenceToggle swEDrawingsExportSTLOkay, [EdrwAllowExportOfSTL]
        swApp.SetUserPreferenceToggle swEDrawingsSaveShadedDataInDrawings, [EdrwSaveShadedData]
        swApp.SetUserPreferenceToggle swEDrawingsSaveBOM, [EdrwSaveBOM]
        swApp.SetUserPreferenceToggle swEDrawingsSaveAnimationOkay, [EdrwSaveMotionStudies]
        swApp.SetUserPreferenceToggle swEDrawingsSaveAnimationToAllConfigs, [EdrwSaveMotionStudiesToAllConfs]
        swApp.SetUserPreferenceToggle swEDrawingsSaveAnimationRecalculate, [EdrwRecalcMotionStudies]
    End If
End Sub

Function ReplaceVarTags(convFileName, conf)
Dim varDictionary: Set varDictionary = CreateObject("Scripting.Dictionary")

<VarReplacerScript>

localConf = conf

If conf = "" Or conf = "All sheets" Or conf = "All" Then
    localConf = "@"
End If

resultFileName = convFileName

If varDictionary.Exists(localConf) Then

    For Each elem In varDictionary(localConf)
        resultFileName = Replace(resultFileName, "%" & elem & "%", varDictionary(localConf).Item(elem))
    Next

End If
'replace duplicated slash and backslash that can be created if user include variables into directory path
While InStr(1,resultFileName,"\\",1) > 0 or InStr(1,resultFileName,"//",1) > 0
    resultFileName = Replace(resultFileName,"\\","\")
    resultFileName = Replace(resultFileName,"//","/")
WEnd
'SPR 1100578 for network UNC path we need \\ on the begin of path
If InStr(resultFileName, "\") = 1 Or InStr(resultFileName, "/") = 1 Then
resultFileName = Replace(resultFileName, "\", "\\", 1, 1)
resultFileName = Replace(resultFileName, "/", "//", 1, 1)
End If

ReplaceVarTags = resultFileName

End Function

Function GetFullFileName(convFileName, conf, i, itemCount)
    ' Configuration name may include backslash. Remove it since otherwise saving will
    ' fail due a missing directory
    conf = Replace(conf, "\", "")
    conf = Replace(conf, "/", "")
   
    finalFileName = Replace(convFileName, "<Configuration>", conf)
   
    ' If no configuration
    If finalFileName = convFileName And itemCount > 0 Then
        finalFileName = Left(convFileName, InStrRev(convFileName, ".") - 1) & "_" & i & Mid(convFileName, InStrRev(convFileName, "."))
    End If

    ' Remove illegal characters from filename
    finalFileName = Replace(finalFileName, "<", "")
    finalFileName = Replace(finalFileName, ">", "")
    finalFileName = Left(finalFileName, 2) + Replace(finalFileName, ":", "", 3) ' Don't start from begin since drive has :
    finalFileName = Replace(finalFileName, "*", "")
    finalFileName = Replace(finalFileName, "?", "")
    finalFileName = Replace(finalFileName, """", "")
    finalFileName = Replace(finalFileName, "|", "")

    finalFileName =  ReplaceVarTags(finalFileName, conf)
    convFilePath = FileSystemObj.GetParentFolderName(finalFileName)
    CreatePath convFilePath
    GetFullFileName = finalFileName
End Function

Sub Convert(docFileName)
   
    ' Constants for some SolidWorks error/warning returns that may be encountered during a convert operation.       
    Const swerr_InvalidFileExtension = 256  ' the file extension differs from the SW document type.
    Const swerr_SaveAsNotSupported = 4096    ' the options selected for this convert aren't supported, output may be incomplete.
    Const swwarn_MissingOLEObjects = 512    ' the document contains OLE objects and must be opened and converted in SolidWorks.

    ' Determine type of SolidWorks file based on file extension
    If LCase(Right(docFileName, 7)) = ".sldprt" Or LCase(Right(docFileName, 4)) = ".prt" Then
        docType = swDocPART
    ElseIf LCase(Right(docFileName, 7)) = ".sldasm" Or LCase(Right(docFileName, 4)) = ".asm" Then
        docType = swDocASSEMBLY
    ElseIf LCase(Right(docFileName, 7)) = ".slddrw" Or LCase(Right(docFileName, 4)) = ".drw" Then
        docType = swDocDRAWING
    Else
        docType = swDocNONE
        If bIsSupportedExtension(Mid(docFileName, InStrRev(docFileName, ".") + 1)) = False Then
            Log "The file extension '" & Mid(docFileName, InStrRev(docFileName, ".") + 1) & "' is not supported."
            Exit Sub
        End If       
    End If
       
    ' Open document
    If docType = swDocNONE Then
        Set swModel = swApp.LoadFile4(docFileName, "", Nothing, errors)
        docType = swModel.GetType
    Else 
        Set swDocSpecification = swApp.GetOpenDocSpec(docFileName)
        swDocSpecification.DocumentType = docType
        swDocSpecification.ReadOnly = True
        swDocSpecification.Silent = True
        swDocSpecification.ConfigurationName = ""
        swDocSpecification.DisplayState = ""
        swDocSpecification.IgnoreHiddenComponents = True 'SPR 682792, 538578, 651998
        Set swModel = swApp.OpenDoc7(swDocSpecification)
        errors = swDocSpecification.Error

      ' Set swModel = swApp.OpenDoc6(docFileName, docType, swOpenDocOptions_Silent Or swOpenDocOptions_ReadOnly, "", errors, warnings)
    End If
   
    If errors = swFutureVersion Then
        Log "Document '" & docFileName & "' is future version."
        Exit Sub
    End If

    ' Load failed?
    If swModel Is Nothing Then
        Log "Method call ModelDoc2::OpenDoc7 for document '" & docFileName & "' failed. Error code " & errors & " returned."
        Exit Sub
    End If
   
    If Val(Left(swApp.RevisionNumber, 2)) >= 18 Then
      swApp.Frame.KeepInVisible = True
    End If

    swApp.ActivateDoc2 docFileName, True, errors
    modelPath = swModel.GetPathName()
    If modelPath = "" Then
      modelPath = docFileName
    End If
    modelFileName = Mid(modelPath, InStrRev(modelPath, "\") + 1)
    modelFileName = Left(modelFileName, InStrRev(modelFileName, ".") - 1)
    modelExtension = Mid(modelPath, InStrRev(modelPath, ".") + 1)

    ' Build destination filenames
    convFileName = "[OutputPath]"
   
    Dim convFileName2 As String
    convFileName2 = "[OutputPath2]"
    Dim convFilePath2 As String
    Dim convFileNameTemp2 As String
   
    Dim bSecondOutput As Boolean
    bSecondOutput = False
    If (Len(convFileName2) > 0) Then
        bSecondOutput = True
    End If
       
    ext = GetExtension(docType, "[FileFormat]")
   
    If (True = Is3dPDF And docType = swDocDRAWING) Then
        Log "The file extension '" & Mid(docFileName, InStrRev(docFileName, ".") + 1) & "' is not supported."
        Exit Sub
    End If

    convFileName = Replace(convFileName, "<Filename>", modelFileName)
    convFileName = Replace(convFileName, "<Extension>", modelExtension)
    convFileName = convFileName & ext
   
    If bSecondOutput = True Then
        convFileName2 = Replace(convFileName2, "<Filename>", modelFileName)
        convFileName2 = Replace(convFileName2, "<Extension>", modelExtension)
        convFileName2 = convFileName2 & ext
    End If
   
    ' Set conversion options
    SetConversionOptions ext
   
    Set swExtension = swModel.Extension
   
    If docType = swDocDRAWING Then
        Dim vSheetNames As Variant
        Set swDrawing = swModel
       
        ' All sheets?
        If ([OutputSheets] And 2) = 2 Then
            vSheetNames = swDrawing.GetSheetNames
        ' Last active sheet?
        ElseIf ([OutputSheets] And 4) = 4 Then
            ReDim vSheetNames(0 to 0) As Variant
            vSheetNames(0) = swDrawing.GetCurrentSheet.GetName()
        ' Named sheet
        ElseIf ([OutputSheets] And 8) = 8 Then
            Dim vSheetNamesTemp As Variant
            vSheetNamesTemp = swDrawing.GetSheetNames
            removed = 0
           
            For i = 0 To UBound(vSheetNamesTemp)
                vSheetNamesTemp(i-removed) = vSheetNamesTemp(i)
                sheetName = vSheetNamesTemp(i)
               
                If Not sheetName Like "[NamedSheet]" Then
                    removed = removed + 1
                EndIf
            Next i
           
            If (UBound(vSheetNamesTemp) - removed) >= 0 Then
                ReDim Preserve vSheetNamesTemp(0 To (UBound(vSheetNamesTemp) - removed))
                vSheetNames = vSheetNamesTemp
            End If
        End If

        If Not IsEmpty(vSheetNames) Then
            ' Save sheets one per file
            If ([FileSheets] And 4) = 4 Then
                For i = 0 To UBound(vSheetNames)
                    Dim varSheetName        As Variant
                    swDrawing.ActivateSheet vSheetNames(i)

                    convFileNameTemp = GetFullFileName(convFileName, vSheetNames(i), i, UBound(vSheetNames))

                    If LCase(ext) = ".pdf" Then
                        Set swPDFExport = swApp.GetExportFileData(1)
                        varSheetName = vSheetNames(i)
                        swPDFExport.SetSheets swExportData_ExportSpecifiedSheets, varSheetName
                    ElseIf LCase(ext) = ".edrw" Then
                        swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveActive 
                    End If

                    ' Convert the document
                    Success = swExtension.SaveAs(convFileNameTemp, swSaveAsCurrentVersion, swSaveAsOptions_Silent + swSaveAsOptions_UpdateInactiveViews, swPDFExport, errors, warnings)
                   
                    ' Save failed?
                    If Success = False Then
                        If errors = swerr_InvalidFileExtension Then
                            Log "The file '" & docFileName & "' and sheet '" &  vSheetNames(i) & "' can't be converted to the file extension '" & ext & "'."
                        Else
                            Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp & "' and sheet '" & vSheetNames(i) & "' failed. Error code " & errors & " returned."
                            If (((errors And swerr_SaveAsNotSupported) <> 0) And ((warnings And swwarn_MissingOLEObjects) <> 0)) Then
                                Log "This document contains OLE objects. Such objects can't be converted outside of SolidWorks. Please open the document and perform the conversion from SolidWorks."
                            End If
                        End if 
                    End If
                   
                    If bSecondOutput = True Then
                        convFileNameTemp2 = GetFullFileName(convFileName2, vSheetNames(i), i, UBound(vSheetNames))
                        Success = swExtension.SaveAs(convFileNameTemp2, swSaveAsCurrentVersion, swSaveAsOptions_Silent + swSaveAsOptions_UpdateInactiveViews, swPDFExport, errors, warnings)
                        ' Save failed?
                        If Success = False Then
                            If errors = swerr_InvalidFileExtension Then
                                Log "The file '" & docFileName & "' and sheet '" &  vSheetNames(i) & "' can't be converted to the file extension '" & ext & "'."
                            Else
                                Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp2 & "' and sheet '" & vSheetNames(i) & "' failed. Error code " & errors & " returned."
                                If (((errors And swerr_SaveAsNotSupported) <> 0) And ((warnings And swwarn_MissingOLEObjects) <> 0)) Then
                                    Log "This document contains OLE objects. Such objects can't be converted outside of SolidWorks. Please open the document and perform the conversion from SolidWorks."
                                End If
                            End if
                        End If
                    End If
                Next i
            ' Save PDF sheets to one file
            ElseIf ([FileSheets] And 2) = 2 Then
           
                If LCase(ext) = ".pdf" Then
                    Set swPDFExport = swApp.GetExportFileData(swExportPdfData)
                    swPDFExport.SetSheets swExportData_ExportSpecifiedSheets, vSheetNames
                ElseIf LCase(ext) = ".edrw" Then
                    If ([OutputSheets] And 2) = 2 Then ' All sheets?
                        swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveAll
                    ElseIf ([OutputSheets] And 4) = 4 Then ' Last active sheet?
                        swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveActive 
                    ElseIf ([OutputSheets] And 8) = 8 Then ' Named sheet
                        swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveSelected
                        selectedSheets = Join(vSheetNames, vbLf)
                        swApp.SetUserPreferenceStringListValue swEmodelSelectionList, Trim(selectedSheets)
                    End If
                End If
               
                convFileNameTemp = GetFullFileName(convFileName, "All", 0, 0)
               
                ' Convert the document
                Success = swExtension.SaveAs(convFileNameTemp, swSaveAsCurrentVersion, swSaveAsOptions_Silent + swSaveAsOptions_UpdateInactiveViews, swPDFExport, errors, warnings)
               
                ' Save failed?
                If Success = False Then
                    Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp & "' failed. Error code " & errors & " returned."
                End If
               
                If bSecondOutput = True Then
                    convFileNameTemp2 = GetFullFileName(convFileName2, "All", 0, 0)
                    Success = swExtension.SaveAs(convFileNameTemp2, swSaveAsCurrentVersion, swSaveAsOptions_Silent + swSaveAsOptions_UpdateInactiveViews, swPDFExport, errors, warnings)
                    ' Save failed?
                    If Success = False Then
                        Log "Method call ModelDocExtension::SaveAs for document '" & convFileNameTemp2 & "' failed. Error code " & errors & " returned."
                    End If
                End If
            End If
        Else
            Log "Document '" & docFileName & "' didn't contain any sheets named '[NamedSheet]'."
        End If

    ElseIf (True = Is3dPDF) Then
    #If ("<Supported_2017SW>") Then
        Dim swMBDPdfData As SldWorks.MBD3DPdfData
        Dim ThemeName As String
        Dim ViewsChecks As Long
        Dim PrimaryViews As Long
       
        If (swDocPART = docType) Then
            ThemeName = "[Part3DPDFThemePath]"
            ViewsChecks = [PartThemeAndViewsChecks]
            PrimaryViews = [PartPrimaryViews]
        ElseIf (swDocASSEMBLY = docType) Then
            ThemeName = "[Asm3DPDFThemePath]"
            ViewsChecks = [AsmThemeAndViewsChecks]
            PrimaryViews = [AsmPrimaryViews]
        End If
       
        Set swMBDPdfData = swExtension.GetMBD3DPdfData
        Set swConfMgr = swModel.ConfigurationManager
        Dim vConfName As Variant
        Dim convFilePathTemp As Variant

        vConfName = swConfMgr.ActiveConfiguration.Name

        If Not IsEmpty(vConfName) Then
            convFilePathTemp = GetFullFileName(convFileName, vConfName, 0, 0)
        Else
            convFilePathTemp = convFileName
        End If
        'Set output path and file name for SOLIDWORKS MBD 3D PDF
        swMBDPdfData.FilePath = convFilePathTemp
        'Dont Display SOLIDWORKS MBD 3D PDF after creation
        swMBDPdfData.ViewPdfAfterSaving = False
        'Set SOLIDWORKS MBD 3D PDF theme path
        swMBDPdfData.ThemeName = ThemeName
       
        ' IF Primary views selected
        If (ViewsChecks And 2) Then
            Dim standardViews As Variant
            Dim viewIDs(9) As Long
            Dim index As Integer
            index = 0
            'Set standard views for SOLIDWORKS MBD 3D PDF
            If (PrimaryViews And 4) Then
                viewIDs(index) = swStandardViews_e.swFrontView
                index = index + 1
            End If
            If (PrimaryViews And 8) Then
                viewIDs(index) = swStandardViews_e.swBackView
                index = index + 1
            End If
            If (PrimaryViews And 16) Then
                viewIDs(index) = swStandardViews_e.swTopView
                index = index + 1
            End If
            If (PrimaryViews And 32) Then
                viewIDs(index) = swStandardViews_e.swBottomView
                index = index + 1
            End If
            If (PrimaryViews And 64) Then
                viewIDs(index) = swStandardViews_e.swLeftView
                index = index + 1
            End If
            If (PrimaryViews And 128) Then
                viewIDs(index) = swStandardViews_e.swRightView
                index = index + 1
            End If
            If (PrimaryViews And 256) Then
                viewIDs(index) = swStandardViews_e.swIsometricView
                index = index + 1
            End If
            If (PrimaryViews And 512) Then
                viewIDs(index) = swStandardViews_e.swDimetricView
                index = index + 1
            End If
            If (PrimaryViews And 1024) Then
                viewIDs(index) = swStandardViews_e.swTrimetricView
            End If

            standardViews = viewIDs
            swMBDPdfData.SetStandardViews (standardViews)
        End If
           
        '3D views(CustomViews) selected?
        If (ViewsChecks And 4) Then
            Dim vViewNames As Variant
            Dim status As Long
            vViewNames = swExtension.Get3DViewNames
           
            'Create and set custom views for SOLIDWORKS MBD 3D PDF
            swMBDPdfData.SetMoreViews (vViewNames)
        End If

        Dim TextAndCustomProperties As Variant
        TextAndCustomProperties = swMBDPdfData.GetTextAndCustomProperties
       
        'Create SOLIDWORKS MBD 3D PDF
        status = swExtension.PublishTo3DPDF(swMBDPdfData)
         
        If bSecondOutput = True Then
                If Not IsEmpty(vConfName) Then
                    convFilePathTemp = GetFullFileName(convFileName2, vConfName, 0, 0)
                Else
                    convFilePathTemp = convFileName2
                End If

                swMBDPdfData.FilePath = convFilePathTemp
                ' if primary saved successfully then Second Output 3DPDF
                If status = swPublishTo3DPDF_Success Then     
                    status = swExtension.PublishTo3DPDF(swMBDPdfData)
                End If
        End If
                       
        ' Save failed?
        If status = swPublishTo3DPDF_InvalidPath Then
            Log "3D PDF - Invalid path."
        ElseIf status = swPublishTo3DPDF_InvalidTheme Then
            Log "Couldn’t access Theme file"
        ElseIf status = swPublishTo3DPDF_MBDLicenseNotAvailable Then
            Log "Failed to load SOLIDWORKS MBD. Verify that SOLIDWORKS MBD is installed and necessary license is available."
        ElseIf status = swPublishTo3DPDF_UnknownError Then
            Log "3D PDF - Unknown error."
        ElseIf status = swPublishTo3DPDF_NothingToPublish Then
            Log "The source file '" & docFileName & "' does not contain any view(s) to publish."
        End If
      #Else
        Log "Unsupported SOLIDWORKS version found on the task host "
      #End If
    Else
        Dim vConfNames As Variant
        Set swConfMgr = swModel.ConfigurationManager
       
        ' All configurations?
        If ([OutputConfs] And 2) = 2 Then
            vConfNames = swModel.GetConfigurationNames
        ' Last active conf?
        ElseIf ([OutputConfs] And 4) = 4 Then
            ReDim vConfNames(0 to 0) As Variant
            vConfNames(0) = swConfMgr.ActiveConfiguration.Name
        ' Named confs
        ElseIf ([OutputConfs] And 8) = 8 Then
            Dim vConfNamesTemp As Variant
            vConfNamesTemp = swModel.GetConfigurationNames
            removed = 0
           
            For i = 0 To UBound(vConfNamesTemp)
                vConfNamesTemp(i-removed) = vConfNamesTemp(i)
                confName = vConfNamesTemp(i)
               
                If Not confName Like "[NamedConf]" Then
                    removed = removed + 1
                EndIf
            Next i
           
            If (UBound(vConfNamesTemp) - removed) >= 0 Then
                ReDim Preserve vConfNamesTemp(0 To (UBound(vConfNamesTemp) - removed))
                vConfNames = vConfNamesTemp
            End If
        End If
       
        If Not IsEmpty(vConfNames) Then
            If ([FileConfs] And 4) = 4 Then
                ' Save configurations
                For i = 0 To UBound(vConfNames)
                    swModel.ShowConfiguration vConfNames(i)

                    convFileNameTemp = GetFullFileName(convFileName, vConfNames(i), i, UBound(vConfNames))
                    DoSave convFileNameTemp, docFileName, docType, ext, vConfNames(i)
                   
                    If bSecondOutput = True Then
                        convFileNameTemp2 = GetFullFileName(convFileName2, vConfNames(i), i, UBound(vConfNames))
                        DoSave convFileNameTemp2, docFileName, docType, ext, vConfNames(i)
                    End If
                Next i
            ElseIf ([FileConfs] And 2) = 2 Then
                If LCase(ext) = ".eprt" Or LCase(ext) = ".easm" Then
                    If ([OutputConfs] And 2) = 2 Then ' All confs?
                        swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveAll
                    ElseIf ([OutputConfs] And 4) = 4 Then ' Last active conf?
                        swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveActive 
                    ElseIf ([OutputConfs] And 8) = 8 Then ' Named confs
                        swApp.SetUserPreferenceIntegerValue swEdrawingsSaveAsSelectionOption, swEdrawingSaveSelected
                        selectedConfs = Join(vConfNames, vbLf)
                        swApp.SetUserPreferenceStringListValue swEmodelSelectionList, Trim(selectedConfs)
                    End If
                End If
               
                convFileNameTemp = GetFullFileName(convFileName, "All", 0, 0)
                DoSave convFileNameTemp, docFileName, docType, ext, "All"
               
                If bSecondOutput = True Then
                    convFileNameTemp2 = GetFullFileName(convFileName2, "All", 0, 0)
                    DoSave convFileNameTemp2, docFileName, docType, ext, "All"
                End If
            End If
        Else
            Log "Document '" & docFileName & "' didn't contain any configurations named '[NamedConf]'."
        End If
    End If

    ' Process virtual components
    If docType = swDocASSEMBLY Then
        Dim vComponents As Variant
        Set swAssembly = swModel
       
        vComponents = swAssembly.GetComponents(True)
       
        If Not IsEmpty(vComponents) Then
          For i = 0 To UBound(vComponents)
              Dim swComponent As SldWorks.Component2
              Set swComponent = vComponents(i)
             
              If swComponent.IsVirtual Then
                  Convert swComponent.GetPathName()
              End If
          Next i
      End If
    End If

    ' Close document
    swApp.QuitDoc swModel.GetTitle
End Sub

Function DoSave(convFilePath, docFileName, docType, ext, config)

        If LCase(ext) = ".dwg" Or LCase(ext) = ".dxf" Then
                If docType = swDocPART Then

                Dim bUseMapping as Boolean
                bUseMapping = [EnableMapFile]

                    If(bUseMapping = True) Then

                        Dim MapFilePath As String
                        Dim RootPath as String
                        Dim bShowMapOriginal as Boolean
                        Dim Idx As Integer
                        Dim MapFiles As String

                        MapFilePath= "[MapFilePath]"

                        'store original info
                        bShowMapOriginal = swApp.GetUserPreferenceToggle(swDXFDontShowMap)
                        bUseMappingOriginal = swApp.GetUserPreferenceToggle(swDXFMapping)
                        MapFiles = swApp.GetUserPreferenceStringListValue(swDxfMappingFiles)
                        Idx = swApp.GetUserPreferenceIntegerValue(swDxfMappingFileIndex)
                        swApp.SetUserPreferenceToggle swDXFDontShowMap, False
                        swApp.SetUserPreferenceToggle swDxfMapping, True
                        swApp.SetUserPreferenceStringListValue swDxfMappingFiles, MapFilePath

                        swApp.SetUserPreferenceIntegerValue swDxfMappingFileIndex, 0 'only one map file

                    End If
                    #If ("<Supported_2018SW>") Then
                        Dim dataAlignment(11) As Double
                        Dim varAlignment As Variant
                        Dim MultiBodyExport As Boolean
                        MultiBodyExport = [SheetMetalExportAs]
                        dataAlignment(0) = 0#
                        dataAlignment(1) = 0#
                        dataAlignment(2) = 0#
                        dataAlignment(3) = 1#
                        dataAlignment(4) = 0#
                        dataAlignment(5) = 0#
                        dataAlignment(6) = 0#
                        dataAlignment(7) = 1#
                        dataAlignment(8) = 0#
                        dataAlignment(9) = 0#
                        dataAlignment(10) = 0#
                        dataAlignment(11) = 1#
                        varAlignment = dataAlignment
                        Set swPart = swModel
                        Dim featureMgr As SldWorks.FeatureManager
                        Dim flatPatternFolder As SldWorks.flatPatternFolder
                        Dim feat As SldWorks.Feature
                        Dim featArray As Variant
                        Dim i As Long
                        Set swPart = swModel
                        Set featureMgr = swPart.FeatureManager
                        Set swExtension = swPart.Extension
                        Set flatPatternFolder = featureMgr.GetFlatPatternFolder
                        If Not (flatPatternFolder Is Nothing) Then
                            featArray = flatPatternFolder.GetFlatPatterns
                            If IsArray(featArray) Then
                                For i = LBound(featArray) To UBound(featArray)
                                    Set feat = featArray(i)
                                    Success = swExtension.SelectByID2(feat.Name, "BODYFEATURE", 0, 0, 0, True, 0, Nothing, 0)
                                Next i
                            End If
                        End If
                        Options = [SheetMetalOptions]
                        Success = swPart.ExportToDWG2(convFilePath, docFileName, swExportToDWG_ExportSheetMetal, Not(MultiBodyExport), varAlignment, False, False, Options, Null)
                        If Success = False Then
                            If config = "All" Then
                                Log "The file '" & docFileName & "' and configuration '" & config & "' can't be converted to the file extension '" & ext & "'."
                            Else
                                Log "The file '" & docFileName & "' can't be converted to the file extension '" & ext & "'."
                            End If
                        End If
                    #Else
                        Log "Unsupported version ( SOLIDWORKS 2017 or earlier) is found on the task host"
                    #End If

                    'restore original values
                    If(bUseMapping = True) Then
                      swApp.SetUserPreferenceToggle swDXFDontShowMap, bShowMap
                      swApp.SetUserPreferenceToggle swDxfMapping, bUseMapping
                      swApp.SetUserPreferenceStringListValue swDxfMappingFiles, MapFiles
                      swApp.SetUserPreferenceIntegerValue swDxfMappingFileIndex, Idx
                    End If

                Else
                    Log "Unsupported SOLIDWORKS file extension "
                End If
    Else
        ' Convert the document
        Success = swExtension.SaveAs(convFilePath, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, errors, warnings)

        ' Save failed?
        If Success = False Then
            If config = "All" Then
                If errors = swerr_InvalidFileExtension Then
                    Log "The file '" & docFileName & "' and configuration '" & config & "' can't be converted to the file extension '" & ext & "'."
                Else
                    Log "Method call ModelDocExtension::SaveAs for document '" & docFileName & "' and configuration '" & config & "' failed. Error code " & errors & " returned."
                    If (((errors And swerr_SaveAsNotSupported) <> 0) And ((warnings And swwarn_MissingOLEObjects) <> 0)) Then
                        Log "This document contains OLE objects. Such objects can't be converted outside of SolidWorks. Please open the document and perform the conversion from SolidWorks."
                    End If
                End If
            Else
                Log "Method call ModelDocExtension::SaveAs for document '" & docFileName & "' failed. Error code " & errors & " returned."
            End If
        End If
    End If

DoSave = Success

End Function

Function bIsSupportedExtension(oExtension) As Boolean
   
    oExtension = LCase( oExtension )
   
    If oExtension = "prt" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "asm" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "drw" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "dxf" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "dwg" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "psd" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "ai" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "lfp" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "sldlfp" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "prtdot" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "asmdot" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "drwdot" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "x_t" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "x_b" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "xmt_txt" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "xmt_bin" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "igs" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "iges" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "step" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "stp" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "sat" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "vda" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "wrl" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "stl" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "cgr" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "wrl" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "xpr" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "xas" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "ipt" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "iam" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "par" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "psm" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "ckd" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "emn" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "brd" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "bdf" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "idb" Then
      bIsSupportedExtension = True
    ElseIf oExtension = "3dm" Then
      bIsSupportedExtension = True
    Else
        bIsSupportedExtension = False
    End If
     
End Function

Sub main()
   
    On Error GoTo Fail:

    Set FileSystemObj = CreateObject("Scripting.FileSystemObject")
    docFileName = "<Filepath>"
   
    ' Get SW interface object
    Set swApp = Application.SldWorks
    swApp.Visible = True
    Convert docFileName
   
    Exit Sub
     
Fail:
    Log "Error while converting file '" & docFileName & "': " & vbCrLf & _
        "An unexpected error occurred while executing the generated script. Script syntax error?" & vbCrLf & _
        "Error number: " & Err.Number & vbCrLf & _
        "Error description: '" & Err.Description & "'" & vbCrLf
End Sub

Besten Dank für Tipps und hinweise jeglicher Art

Gruss Fredy

------------------
Gruss Fredy

________________________
Das einzig stetige ist die änderung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

riesi
Mitglied
CAD-Admin


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1073
Registriert: 06.05.2002

SWX Office Pre. 2020-Sp5

erstellt am: 24. Jun. 2020 10:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fredy-Steady 10 Unities + Antwort hilfreich

Ich würde von allen Konfigurationen immer neue Steps erzeugen und die zuvor erzeugten zum Modell löschen. So machen wir es. Wie willst Du sicherstellen, ob irgendein Feature nicht doch die Geometrie der z.B. der ersten Konfigurationen ändert.

Und dann noch eine grunsätzliche Frage: Woher wissen andere Kollegen nach dem Konstrukteur/-in, welches das richtige Step ist?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Fredy-Steady
Mitglied
Techniker


Sehen Sie sich das Profil von Fredy-Steady an!   Senden Sie eine Private Message an Fredy-Steady  Schreiben Sie einen Gästebucheintrag für Fredy-Steady

Beiträge: 18
Registriert: 12.07.2011

Windows 10 Professional
Intel Xeon X5650 @2.67GHz
32 GB RAM
NVIDIA Quadro 4000
SWX 2019 x64 Edition, SP 4
SOLIDWORKS PDM 2019 (SP 4.0) 27.4 (B72)

erstellt am: 24. Jun. 2020 11:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Riesi

Danke für Deine Rückmeldung. Es geht genau darum, dass in einem Verzeichnis (Laufwerk Q) jeweils die aktuellste Version der STEP-Datei vorhanden ist. Diese soll immer dann neu erstellt werden, wenn das Teil freigegeben wird. Es ist in der Vergangenheit regelmässig vorgekommen, dass ein Bauteil revisioniert wurde, der Konstrukteur jedoch vergessen hat, die STEP neu auszuschreiben. Der Einkauf hat anschliessend das Teil beschafft, aufgrund der alten STEP hat der Lieferant jedoch nicht bemerkt, das da was geändert wurde (die PDF-Zeichnung wird bei vielen Laserteil-Lieferanten nicht wirklich angeschaut).
Die Automatisierung funktioniert soweit, das bei jedem Freigabe-Übergang eines Bauteils der Task "Freig_STEP" ausgelöst wird. Dieser Task erstellt von allen Bauteil-Konfigurationen, die in der Benennung am Schluss den Text "_STEP" enthält, die jeweilige STEP. Diese Datei ist mit Zeichnungsnummer_Artikelnummer eindeutig benannt (Bsp. Z-032024_322.75.0215). Mein Problem ist nun, dass SWX bei mehreren Konfigurationen, die ausgeschrieben werden müssen, am Ende ein _ und eine fortlaufende Ziffer hinzugefügt wird. Diese Ziffer ist jedoch ein reiner Zähler, sie hat keine Verbindung zur Konfiguration. Wenn nun ein Bauteil ergänzt, Konfigurationen hinzukommen oder gelöscht werden, kann es sein, dass eine bestehende Konfiguration einen neue "End"-Ziffer erhält und somit doppelt im Verzeichnis Q erscheint.
Als Beispiel: Bei der Datei Z-032024 wird zuerst eine Konfiguration ausgeschrieben, diese STEP hat den Namen Z-032024_322.75.0215. Zu einem späteren Zeitpunkt kommt eine neue Konfiguration hinzu (die ausgeschrieben werden muss), nun benennt der Task die erste STEP neu Z-032024_322.75.0215_0, die zweite, neue Datei Z-032024_322.75.0245_1.
Wenn ich nun die Nummerierung am Schluss wegkriege, wird die STEP Z-032024_322.75.0215 neu generiert bzw. die bestehende überschrieben.
Zusammenfassend funktioniert alles wie angedacht, einzig der Zähler am Schluss macht den Prozess nicht 100% sicher.

Danke für alle Inputs

Gruss Fredy

------------------
Gruss Fredy

________________________
Das einzig stetige ist die änderung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Fredy-Steady
Mitglied
Techniker


Sehen Sie sich das Profil von Fredy-Steady an!   Senden Sie eine Private Message an Fredy-Steady  Schreiben Sie einen Gästebucheintrag für Fredy-Steady

Beiträge: 18
Registriert: 12.07.2011

Windows 10 Professional
Intel Xeon X5650 @2.67GHz
32 GB RAM
NVIDIA Quadro 4000
SWX 2019 x64 Edition, SP 4
SOLIDWORKS PDM 2019 (SP 4.0) 27.4 (B72)

erstellt am: 24. Jun. 2020 11:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ach ja, hab ich ganz vergessen: die Kollegen im Betrieb bzw. ausserhalb der Konstruktion wissen durch die Artikelnummer, welche STEP die richtige ist (zweiter Teil des Dateinamens, im Beispiel "_322.75.0215"). Und es ist immer nur die neuste STEP vorhanden, alte Versionen werden nicht als STEP archiviert. Bei Bedarf kann ein alter Stand eines Teils mit "Version holen" und manuellem Ausschreiben erstellt werden.

------------------
Gruss Fredy

________________________
Das einzig stetige ist die änderung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 24. Jun. 2020 12:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fredy-Steady 10 Unities + Antwort hilfreich

Hallo,
wegen dieser Problematik haben alle unsere Exportformate neben dem Zeichnungsnamen noch den Revisionsstand im Dateinamen. So werden PDF-Zeichnungen als auch STEPs etc. mehrfach gespeichert, für jede Revision getrennt und somit auch archiviert.
Der Lieferant muss nun zum PDF das passende STEP haben, dann stimmt alles.
(In der SW-Zeichnung wird natürlich die Revision in der Revisionstabelle angezeigt)

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

Fredy-Steady
Mitglied
Techniker


Sehen Sie sich das Profil von Fredy-Steady an!   Senden Sie eine Private Message an Fredy-Steady  Schreiben Sie einen Gästebucheintrag für Fredy-Steady

Beiträge: 18
Registriert: 12.07.2011

Windows 10 Professional
Intel Xeon X5650 @2.67GHz
32 GB RAM
NVIDIA Quadro 4000
SWX 2019 x64 Edition, SP 4
SOLIDWORKS PDM 2019 (SP 4.0) 27.4 (B72)

erstellt am: 24. Jun. 2020 15:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Anmerkung2020-06-24155143.jpg

 
Hallo Andi
Danke für die Rückmeldung. Bei uns sind die PDF-/STEP-Dateien nur ein Abbild der neusten Version. Die Revisionierung läuft ausschliesslich auf CAD.
Wie läuft das bei Euch bei Bauteilen mit mehreren Konfigurationen, werden diese mittels Artikelnummer unterschieden? Wird von jeder Konfiguration eine STEP erstellt (nehm ich mal an).
Und habt ihr die Zählziffer nicht im Dateiname, wenn der Index angehängt wird?
Wäre noch interessant zu wissen, was SWX macht, wen zum Beispiel die Revision angehängt wird (vgl. Bild), ob dann der Name auch mit "_1" ergänzt wird...…..
So long.

------------------
Gruss Fredy

________________________
Das einzig stetige ist die änderung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2572
Registriert: 02.10.2006

erstellt am: 24. Jun. 2020 22:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fredy-Steady 10 Unities + Antwort hilfreich


Dateinamen-mit-Rev-1.JPG


Dateinamen-mit-Rev-2.JPG

 
Zitat:
Original erstellt von Fredy-Steady:

Wie läuft das bei Euch bei Bauteilen mit mehreren Konfigurationen, werden diese mittels Artikelnummer unterschieden?

Hallo Fredy,
das ist bei uns eine lang gewachsene Struktur.
Ja, wir Arbeiten mit Konfigurationen, welche einen unterschiedlichen Artikel darstellen. Schau dir das Bild 1 an.

Eine Baugruppe mit 3 Konfigurationen und 3 Zeichnungen:
00-05-99-003.SLDASM
00-05-99-003-01.SLDDRW
00-05-99-003-02.SLDDRW
00-05-99-003-03.SLDDRW
Diese werden so im SW-PDM-Prof mit Versionen gespeichert.
Die eigentliche Revision wird in jeder Konfiguration individuell als Dateieigenschaft geschrieben. Im 2ten Bild siehst du ein Makro von uns, mit dem wir unsere Dateieigenschaften eintragen, so auch die Revision und den Änderungsvermerk. Erzeuge ich eine neue Zeichnung, öffne ich dieses Makro und trage nur Namen und Datum ein. Beim Beenden des Makros wird automatisch die Zeichnung mit dem richtigen Namen (incl. Konfig) im entsprechenden Ordner gespeichert. Beim Einchecken der Zeichnung in den Tresor wird die Revisionstabelle durch das PDM ausgefüllt, und zwar mit den Informationen der Dateieigenschaften aus den Konfigs. Auch die anderen Dateieigenschaften werden hier der Zeichnung mit übergeben.
Im Schriftkopf siehst du unten Rechts die Revision aus der Konfig angezeigt.
In der Revisionszeile wird die Revision der Zeichnung dargestellt.
Normalerweise sollten diese beiden identisch sein, was übrigens ebenfalls in verschiedenen Makros überprüft wird.

Möchte ich nun ein beliebiges Exportformat erzeugen, verwende ich hier ebenfalls das Makro aus Bild 2. In Abhängigkeit von Zeichnung oder Model werden mir auf Knopfdruck vollautomatisch die entsprechenden Dokumente erzeugt, im richtigen Ordner mit dem richtigen Namen incl. Revision.
00-05-99-003-01-Rev-A-01.pdf
00-05-99-003-01-Rev-A-01-Model.pdf
00-05-99-003-01-Rev-A-01-Model-3D.pdf
Es wird immer nur die aktive Konfig exportiert.
Hat sich die Revision nicht verändert, wird ein altes Dokument überschrieben.
Hat sich die Revision verändert, wird ein neues Dokument erzeugt.

Jede Konfiguration eines Parts bzw. einer Baugruppe wird dem ERP-System  mit allen Dateieigenschaften übergeben. Dort wird ein Artikel incl. der Revision verwaltet.
Erhöht sich die Revision, gibt es einen neuen Artikel.
Indem wir mit Konfigs arbeiten, sind auch ähnliche Artikel schnell gefunden, da ja alle die gleiche Grundnummer haben.

Uns ist bewusst, dass diese Arbeitsweise mit unterschiedlichen Revisionen für jede Konfig sehr riskant ist. Mit Validierung darfst du uns nicht kommen. Dies ist auch kein Verfahren, welches ich Firmen mit hohen Stückzahlen empfehlen kann. Wir sind im Sondermaschinenbau mit Einzelteil- und Kleinserienfertigung. Da ist ein irrtümliches Ändern einer falschen Konfiguration verschmerzbar.
Der Vorteil von Konfigurationen überwiegt bei uns eindeutig.
Uns ist auch noch kein drastischer Fehler unterlaufen, der schmerzhaft war.
Sorgfalt ist hier das A und O und wird auch zur Routine.

Ach ja, zum Zeichnung und PDFs öffnen habe ich separate Makros geschrieben.
Ein Knopfdruck und sie sind da. 

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

Fredy-Steady
Mitglied
Techniker


Sehen Sie sich das Profil von Fredy-Steady an!   Senden Sie eine Private Message an Fredy-Steady  Schreiben Sie einen Gästebucheintrag für Fredy-Steady

Beiträge: 18
Registriert: 12.07.2011

Windows 10 Professional
Intel Xeon X5650 @2.67GHz
32 GB RAM
NVIDIA Quadro 4000
SWX 2019 x64 Edition, SP 4
SOLIDWORKS PDM 2019 (SP 4.0) 27.4 (B72)

erstellt am: 25. Jun. 2020 07:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Andi
Danke für die ausführliche Antwort. Sehr interessant, wie Ihr arbeitet. Bei uns ist das ähnlich, bin im Fahrzeugbau tätig. Vieles auftragsspezifisch, aber auch Standart-Teile, die dann und wann Änderungswünsche erhalten. Und weil bei uns hin und wieder die CAD-Daten Abweichungen haben zu den Bestell-Unterlagen (weil der Konstrukteur vergessen hat, die PDF und/oder STEP auszuschreiben), will ich dies automatisieren. Wenn der Konstrukteur ein Teil (und nur bei sldprt) freigibt, soll ein STEP erstellt werden. Das Gleiche funktioniert schon tadellos bei den Zeichnungen, nun sind die Parts dran. Wie beschrieben funktioniert es eigentlich schon, nur mit dem Überschreiben happert's wegen der SWX-Nummer am Schluss noch ein wenig.
Mal schauen, irgendwie kriegen wir das schon gebacken....  

------------------
Gruss Fredy

________________________
Das einzig stetige ist die änderung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz