Nic
Nic

Reputation: 1310

Export single CATIA body from CATPart as stl using VBA macro

Is it possible to export a single CATIA body as STL without creating a separate part with it?

For the time being, I have coded a script which loops through the CATParts present in a folder, fetches the contained bodies and create a single CATPart with each of them and export into stl format.

    Dim output_stl_path_HD As String
    Dim output_stl_path_MD As String
    Dim output_stl_path_SD As String
    Dim output_stl_path_via_points As String
    Dim output_transformations_path As String
    Dim input_path As String

    Sub CATMain()
    'Path for output file


    input_path = CATIA.ActiveDocument.path + "\"


    Dim it As Integer
    Dim prod As Product
    Dim t_p_ref(11)

    'List of part names to export
    Dim list As Collection
    Set list = New Collection


    'GET LIST OF CATPART IN FOLDER
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim i As Integer

    'Create an instance of the FileSystemObject
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Get the folder object
    Set objFolder = objFSO.GetFolder(input_path)
    i = 1
    'loops through each file in the directory and prints their names and path
    For Each objFile In objFolder.Files

        'print file name
        If (InStr(objFile.path, ".CATPart")) Then

            list.Add (objFile.name)

    '        Set objDocument = CATIA.Documents.Open(objFile.path)

            Dim srcDoc As PartDocument
            Set srcDoc = CATIA.Documents.Open(objFile.path)
            Dim srcPart As Part
            Set srcPart = srcDoc.Part

            Dim oSel As Selection
            Dim bodies1 As Bodies
            Dim body1 As body
    '
            Set bodies1 = srcPart.Bodies

            For Each single_body In srcPart.Bodies
                A = exportStl(single_body)
            Next
            Set body1 = srcPart.Bodies.Item(i)

    'Dim BoxProduct
    'BoxProduct = MsgBox("Quantity of the bodies found:" & srcDoc.Part.Bodies.Count & "", 64)

        End If
    Next

    End Sub



    Public Function exportStl(ByVal myBody As body)
        Dim oSrc As Part
        Dim oTgt As Part
        Dim oSrcDoc As PartDocument
        Dim oTgtDoc As PartDocument
        Dim oBod As body
        Dim oSel As Selection

        'Sets documents for Source and Target files
        Set oSrcDoc = CATIA.ActiveDocument
        Set oTgtDoc = CATIA.Documents.Add("Part")
        oTgtDoc.Product.PartNumber = myBody.name




        'Gets Body to copy
        Set oSrc = oSrcDoc.Part
        Set oTgt = oTgtDoc.Part
        Set oBod = myBody
        Set oSel = oSrcDoc.Selection

        'Copies Body
        oSel.Add oBod
        oSel.Copy
        Set oSel = oTgtDoc.Selection

        'Sets and Pastes in Target file as result with link
        oSel.Clear
        oSel.Add oTgt.Bodies.Item(1)
        oSel.Paste
        oSrcDoc.Selection.Clear


         CATIA.ActiveDocument.ExportData input_path + myBody.name, "stl"

         CATIA.ActiveDocument.Close


    End Function

Upvotes: 0

Views: 4344

Answers (1)

Sree Harsha
Sree Harsha

Reputation: 108

Catia V5 is capable of creating STL files from parts (CatiaPART files), but not from assemblies (CatiaPRODUCT files) or geometrical representations (car files). Therefore, source files, including those saved in a neutral format (STEP or IGES, for example), must be saved as parts. If the source design was saved as an assembly, it is imported to Catia as a product. -

Source : http://www.stratasys.com/customer-support/cad-to-stl/catia

I tried exporting CATBody but was unsuccessful. We must have a CATPart to generate STL

Upvotes: 1

Related Questions