The script that appears at the end of this section is an example that uses the Abaqus for CATIA V5 automation interface. The script attempts to load a part and an analysis document from the default location of the Abaqus for CATIA V5 documentation. The example script links the analysis to the part and creates a load, a boundary condition, a step, and an analysis job. Output from the analysis is written to the CATTemp directory, which is determined by reading the CATIA V5 environment variable. You may need to change the path of the computation and scratch directories to match your installation.
This task shows you how to create and run the example script:
Select Tools>Macro>Macros... to open the Macros dialog box.
Click Macro Libraries, select VBA projects as the library type, and select Create new library from the dialog box that appears.
Accept the default project name or enter a new name, and click OK.
Click Close in the Macro libraries dialog box.
The Macros dialog box displays the new library name.
Click Create in the Macros dialog box to open the Create a new macro dialog box.
Click OK to accept the default macro language (MS VBA) and macro name (Module1).
Click Edit in the Macros dialog box to open the Module1 document in the Microsoft Visual Basic editor.
Copy the complete text of the example script from the end of this section and paste it into the Module1 document, replacing the existing Sub CATMain() and End Sub.
Select Run>Run Sub/UserForm in Visual Basic to run the script.
If the script fails to load the part and the analysis document, do the following before proceeding:
Open the .CATPart file by clicking on the following link: sample01a.CATPart. (If a dialog box appears in your browser, toggle on the option that opens the file.)
Create a Nonlinear Structural Analysis Case, and save it in a file named sample01a.CATAnalysis.
Use the following script to complete this example:
Sub CATMain()
' An example of using the automation interface.
' Create a new CATIA document.
'
Dim mainDoc As Documents
Set mainDoc = CATIA.Documents
' Name of .CATPart and .CATAnalysis
'
Dim partName As String, abqAnalysisName As String
partName = "sample01a.CATPart"
abqAnalysisName = "sample01a.CATAnalysis"
' Check if the correct models are in the session and issue appropriate
' warnings if they are not.
'
On Error GoTo EmptyFile
Dim i As Integer
i = 0
For Each doc In mainDoc
If doc.Name = partName Or doc.Name = abqAnalysisName Then
i = i + 1
End If
Next doc
Dim a As Integer
If i <> 2 Then
a = MsgBox(partName + " and " + abqAnalysisName + _
" will be loaded into session from default " + _
"documentation location. Press OK to continue or " + _
"Cancel to cancel macro.", vbOKCancel)
If (a = 1) Then
GoTo EmptyFile
Else
Exit Sub
End If
Else
GoTo DocumentLoaded
End If
' No file in session. Load file from the default location.
'
EmptyFile:
On Error GoTo UnableToOpenFile
Dim pathToFile As String, pathToPFile As String, pathToAFile As String
pathToFile = CATIA.SystemService.Environ("CATDocView")
If InStr(pathToFile, "\doc") <> 0 Then
pathToPFile = Left$(pathToFile, InStr(pathToFile, "\doc")) + _
"doc\online\samples\" + partName
pathToAFile = Left$(pathToFile, InStr(pathToFile, "\doc")) + _
"doc\online\samples\" + abqAnalysisName
Else
GoTo UnableToOpenFile
End If
Dim sample01PartDoc As PartDocument, sample01AnaDoc As AnalysisDocument
Set sample01PartDoc = mainDoc.Open(pathToPFile)
Set sample01AnaDoc = mainDoc.Open(pathToAFile)
GoTo DocumentLoaded
' File not found. Issue warning and end the macro.
'
UnableToOpenFile:
MsgBox "File " + partName + " or " + abqAnalysisName + " not found. " + _
"Please load model into session and run macro again", vbOKOnly
Exit Sub
' File loaded correctly.
'
DocumentLoaded:
On Error GoTo generalError
' Navigate to the Analysis Model.
'
Dim activeDoc As Document
Set activeDoc = CATIA.Documents.Item(abqAnalysisName)
activeDoc.Activate
Dim analysisManager1 As AnalysisManager
Set analysisManager1 = activeDoc.ANALYSIS
' Import .CATPart into analysis.
'
Dim arrayOfVariantOfShort1(0)
arrayOfVariantOfShort1(0) = 0
Set analysisManager1Variant = analysisManager1
analysisManager1Variant.ImportDefineFile partName, _
"CATAnalysisImport", arrayOfVariantOfShort1
Dim specsAndGeomWindow1 As SpecsAndGeomWindow
Set specsAndGeomWindow1 = CATIA.ActiveWindow
Dim viewer3D1 As Viewer3D
Set viewer3D1 = specsAndGeomWindow1.ActiveViewer
viewer3D1.Reframe
' Get the analysis model.
'
Dim analysisModels1 As AnalysisModels
Set analysisModels1 = analysisManager1.AnalysisModels
Dim analysisModel1 As AnalysisModel
Set analysisModel1 = analysisModels1.Item(1)
Dim abqModel As ABQAnalysisModel
Set abqModel = analysisModel1.GetItem("ABQVBAnalysisModel")
' Set up the publications.
'
Set analysisLinkedDocuments1 = analysisManager1.LinkedDocuments
Set analysisLinkedDocument1 = analysisLinkedDocuments1.Item(1)
Set sample01Product = analysisLinkedDocument1.Product
' Create an Abaqus analysis case.
'
Dim abqCases As ABQAnalysisCases
Set abqCases = abqModel.Cases
Dim abqCase As ABQAnalysisCase
Set abqCase = abqCases.Add("STRUCTURAL")
abqCase.Name = "Nonlinear-Structural-Case-1"
' Create an Abaqus step.
'
Dim abqStepList As ABQSteps
Set abqStepList = abqCase.Steps
Dim stepType As String
stepType = "ABQGeneralStaticStep"
Dim generalstaticstep As ABQGeneralStaticStep
Set generalstaticstep = abqStepList.Add(stepType)
generalstaticstep.Name = "Static Step-1"
generalstaticstep.NLGeom = True
' Define the boundary conditions.
'
Dim abqBCs As ABQBoundaryConditions
Set abqBCs = generalstaticstep.BoundaryConditions
Dim clamp1 As ABQClampBC
Set clamp1 = abqBCs.Add("ABQClamp")
clamp1.Name = "clamp-1"
Dim clamp2 As ABQClampBC
Set clamp2 = abqBCs.Add("ABQClamp")
clamp2.Name = "clamp-2"
Dim dispBC As ABQDisplacementBC
Set dispBC = abqBCs.Add("ABQDisplacementBC")
dispBC.Name = "displacement-1"
dispBC.U3 = -0.00254
' Get the part objects and the part.
'
Dim sample01Part As Part
Set sample01Part = sample01Product.Parent.Part
Dim bodies1 As Bodies
Set bodies1 = sample01Part.Bodies
Dim body1 As Body
Set body1 = bodies1.Item("PartBody")
Dim shapes1 As Shapes
Set shapes1 = body1.Shapes
Dim pad1 As Pad
Set pad1 = shapes1.Item("Pad.1")
Dim mirror1 As Mirror
Set mirror1 = shapes1.Item("Mirror.1")
' Set the region to which the clamp boundary condition is applied.
'
Dim refString As String
refString = "Selection_RSur:" + _
"(Face:(Brp:(Pad.1;0:(Brp:(Sketch.1;6)));None:();" + _
"Cf11:());Chamfer.2_ResultOUT;Last;Z0;G1751)"
Dim reference1 As Reference
Set reference1 = sample01Part.CreateReferenceFromName(refString)
refString = "Selection_RSur:" + _
"(Face:(Brp:(Pad.1;0:(Brp:(Sketch.1;23)));None:();" + _
"Cf11:());Chamfer.3_ResultOUT;Last;Z0;G1751)"
Dim reference2 As Reference
Set reference2 = sample01Part.CreateReferenceFromName(refString)
refString = "Selection_RSur:" + _
"(Face:(Brp:(Mirror.1;(Brp:(Pocket.3;0:" + _
"(Brp:(Sketch.4;8)))));None:();Cf11:());" + _
"Chamfer.6_ResultOUT;Z0;G1751)"
Dim reference3 As Reference
Set reference3 = sample01Part.CreateReferenceFromName(refString)
' Set the region to which the pressure load is applied.
'
clamp1.AddSupportFromProduct sample01Product, reference1
clamp2.AddSupportFromProduct sample01Product, reference2
dispBC.AddSupportFromProduct sample01Product, reference3
' Create a Job called "Job-1". The temp directory
' is taken from variable CATTemp. This location is used for
' both the computation and temp directories.
'
Dim abqJobs As abqJobs
Set abqJobs = abqCase.Jobs
Dim job1 As ABQJob
Set job1 = abqJobs.Add
job1.Name = "Job-1"
job1.Type = ANALYSIS
job1.Description = "AutomatedJob"
pathToTemp = CATIA.SystemService.Environ("CATTemp")
job1.ComputationDir = pathToTemp
job1.Scratch = pathToTemp
job1.ModelConsistencyCheck = False
job1.EchoPrint = True
job1.ContactPrint = False
job1.ModelPrint = False
job1.HistoryPrint = True
job1.NumCpus = 2
job1.PreMemory = 200
job1.StandardMemory = 500
job1.StandardMemoryPolicy = MINIMUM
job1.ParallelizationMethodStandard = SUPER_NODE
Exit Sub
generalError:
MsgBox "A general error has occurred. " + _
"Please contact support for more information."
End Sub