' COPYRIGHT DASSAULT SYSTEMES 2006 ' *********************************************************************** ' Purpose : This macro allows you to print the part 2D layout ' Author : TBU ' Languages : VBScript ' Locales : English ' CATIA Level : V5R17 ' *********************************************************************** Sub CATMain() ' Define the application default printer CATIA.ActivePrinter = CATIA.Printers.Item("Printer TIF") Dim oDocument As Document ' Retrieve the active document Set oDocument = CATIA.ActiveDocument ' Look for the document type, if it is not a product document the macro stops If TypeName(oDocument) = "ProductDocument" Then Dim oProductDocument As ProductDocument Set oProductDocument = oDocument Else MsgBox "This macro can be run with a product document only." Exit Sub End If ' Call the procedure to search the parts in document Call SearchPartsInProduct(oProductDocument.Product) End Sub Sub SearchPartsInProduct(ProductParent As Object) Dim oProduct As Product Dim oProductReference As Product Dim oShapeRepresentation As CATBaseDispatch Dim oPart As Part Dim oLayout2DRoot As Layout2DRoot Dim oLayout2DSheets As Layout2DSheets Dim oLayout2DSheet As Layout2DSheet ' Search for the parts in the product structure For Each oProduct In ProductParent.Products ' Look for product children If oProduct.Products.Count <> 0 Then ' Call the procedure to search the parts in document Call SearchPartsInProduct(oProduct) Else ' Retrieve the reference product Set oProductReference = oProduct.ReferenceProduct ' Look for the product existence If Not oProductReference Is Nothing Then ' Look for the product shape representation If oProduct.HasAMasterShapeRepresentation Then ' Retrieve the shape representation Set oShapeRepresentation = oProduct.GetMasterShapeRepresentation(False) ' Look for the shape representation document type If Right(oShapeRepresentation.Name, 7) = "CATPart" Then ' Retrieve the part Set oPart = oShapeRepresentation.Part ' Retrieve the 2D Layout Set oLayout2DRoot = oPart.GetItem("CATLayoutRoot") ' Look for the 2D Layout existence If Not oLayout2DRoot Is Nothing Then ' Retrieve the sheet collection Set oLayout2DSheets = oLayout2DRoot.Sheets ' Retrieve the sheets contained in the collection For iSheet = 1 To oLayout2DSheets.Count ' Retrieve the sheet Set oLayout2DSheet = oLayout2DSheets.Item(iSheet) ' Print the sheet in a TIFF file oLayout2DSheet.PrintToFile "F:\tmp\2D3DDesign\print\" + oLayout2DSheet.Name + ".tif", _ catRenderQuickHiddenLinesRemovalWithHiddenEdgesWithOutlinesWithoutVertices Set oLayout2DSheet = Nothing Set oLayout2DSheets = Nothing Next Set oLayout2DRoot = Nothing Set oShapeRepresentation = Nothing End If Set oPart = Nothing End If End If End If Set oProductReference = Nothing End If Next End Sub