Option Explicit ' COPYRIGHT DASSAULT SYSTEMES 2001 Dim Language as String Language="VBScript" ' *********************************************************************** ' Purpose: This macro: ' 1 - Checks whether the active document is a CATPart ' 2 - Checks whether the xls file containing the design table ' exists ' 3 - Creates a design table from an existing Excel file ' 4 - Creates two associations ' 5 - Applies a new configuration to the document ' 6 - Add a new row to the design table ' ' Assumptions: This macro only operates on Windows NT ' This macro is intended to be run on the ' KwrMacro0.CATPart document. ' This macro uses as an input data the KwrMacTable.xls file ' You must replace the value of the sFolderPath variable with the path ' of the file where this Excel table has been downloaded. ' ' ' ' Author: Carole ROULLE , Pierre Grignon ' Languages: VBScript ' Locales: English (United States) ' CATIA Level: V5R6 ' Revision : V5R13 ' *********************************************************************** Sub CATMain() ' ----------------------------------------------------------- ' Optional: allows to find the sample wherever it's installed dim sDocPath As String sDocPath=CATIA.SystemService.Environ("CATDocView") If (Not CATIA.FileSystem.FolderExists(sDocPath)) Then Err.Raise 9999,,"No Doc Path Defined" End If ' ----------------------------------------------------------- ' Open the Part document Dim sFilePath sFilePath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _ "online\CAAScdKniUseCases\samples\KwrMacro0.CATPart") Dim oDoc As Document set oDoc = CATIA.Documents.Open(sFilePath) ' Set the CATIA popup file alerts to False ' It prevents to stop the macro at each alert during its execution CATIA.DisplayFileAlerts = False ' Retrieve your active document - CATIA is your application ' You get the active document by using the ActiveDocument property ' on your application object Dim oActiveDoc As Document Set oActiveDoc = CATIA.ActiveDocument ' Check whether the document is a CATPart ' InStr is a standard VB function If (InStr(oActiveDoc.Name,".CATPart")) <> 0 Then ' Set the file system object containing the folder Dim oFileSys As FileSystem Set oFileSys = CATIA.FileSystem ' Define the design table path Dim sFolderPath As String sFolderPath = CATIA.FileSystem.ConcatenatePaths(sDocPath, _ "online\CAAScdKniUseCases\samples\KwrMacTable.txt") ' Test whether the design table file exists ' if it does not exist a message box is displayed ' if it exists the design table is created in the document if (oFileSys.FileExists(sFolderPath) = False) then MsgBox sFolderPath & " doesn't exist" else ' Retrieve the collection object which contains ' all the document relations. ' The statements below are only valid when the active ' document is a CATPart Dim oRelations As Relations Set oRelations = oActiveDoc.Part.Relations ' Just to be clean before creating relations ' Scan the collection of relations and remove the relations ' with name "DesignTable.1" Dim i As Integer For i = 1 To oRelations.Count if oRelations.Item(i).Name = "DesignTable.1" then oRelations.Remove oRelations.Item(i).Name end if Next ' Create the "DesignTable.1" design table ' by using the Relations.CreateDesignTable method ' Argument 1: Design table name ' Argument 2: Comment (empty here below) ' Argument 3: Allows you to specify whether you want to copy the ' design table data in the document or not. Set this argument ' to True whenever you work on a platform (NT/Unix) ' and intend to reuse your document on another platform ' (Unix/NT). Otherwise, set this argument to False ' Argument 4: design table path Dim oDesignTable As DesignTable Set oDesignTable = oRelations.CreateDesignTable("DesignTable.1","",_ False,_ sFolderPath) ' Retrieve the collection object which contains ' all the part bodies Dim oBodies As Bodies Set oBodies = oActiveDoc.Part.Bodies ' Scan the Bodies collection to determine ' whether a PartBody feature exists ' if the PartBody exists - creates two associations Dim j As Integer For j = 1 to oBodies.Count if oBodies.Item(j).Name = "PartBody" then ' Retrieve the "PartBody" item from the Bodies collection Dim oPartBody As AnyObject Set oPartBody = CATIA.ActiveDocument.Part.Bodies.Item("PartBody") ' Check there is at least one shape in the Part Dim oShapes As Shapes Set oShapes = oPartBody.Shapes if (oShapes.Count <> 0) then ' Retrieve the Pad.1 object Dim Pad2 As AnyObject Set Pad2 = oPartBody.Shapes.Item("Pad.1") ' Creates two associations oDesignTable.AddAssociation Pad2.FirstLimit.Dimension, "A" oDesignTable.AddAssociation Pad2.SecondLimit.Dimension, "B" ' Apply the third configuration of the design table ' to your document oDesignTable.Configuration = 3 else msgbox "no shapes" end if ' Add a new row ' A new row is added to the design table each time the ' macro is replayed on the document ' A limit of 10 rows is specified msgbox oDesignTable.ConfigurationsNb If (oDesignTable.ConfigurationsNb < 10) Then oDesignTable.AddNewRow() else msgbox "configuration number = 10" end if else msgbox "A PartBody feature is required" end if Exit For Next ' Update the document CATIA.ActiveDocument.Part.Update End If else MsgBox "The active document must be a CATPart" End If End Sub