25
Introduction to Visual Basic for Applications (VBA) TMKT57 Product Modeling

IntroVB

Embed Size (px)

Citation preview

Page 1: IntroVB

Introduction to

Visual Basic for

Applications (VBA)

TMKT57 Product Modeling

Page 2: IntroVB

2

Introduction (1/2)

VBA is an event-driven programming language by Microsoft

that allows the user to create customized features within MS

Office applications.

Short tutorials and examples can be found on the Internet

(i.e. www.vbtutor.net/VBA/vba_tutorial.html)

TMKT-57 VB Introduction

Page 3: IntroVB

3

Introduction (2/2)

This short tutorial will show:

How to record/edit macros in CATIA V5 and in Excel

How to debug macros in Excel

How to use Excel to debug scripts written in CATIA V5

How to use “watches” in Excel

How to find the address to features in the “Specification Tree” in

CATIA V5

TMKT-57 VB Introduction

Page 4: IntroVB

4

How to Record a Macro (1/4)

CATIA V5 has a built-in function that allows to record the

operations the user performs and save them in a VBA-script

called ”macro”. The macro can then be used or edited at will.

This is a very useful function that speeds up the learning

process: when you do not know how to write a script, try doing

with mouse clicks what you would like CATIA to do

automatically while recording everything in a macro. Then look

in the saved macro and understand the code!

Sadly this function does not always work. It is possible to record

only a limited set of operations…

TMKT-57 VB Introduction

Page 5: IntroVB

5

How to Record a Macro (2/4)

In this example we will record a macro that will create a new

part within an existing product.

In CATIA, start from an empty product:

1) Select Tools >

Macro > Start

Recording…

TMKT-57 VB Introduction

Page 6: IntroVB

6

How to Record a Macro (3/4)

In the window that opens:

1) Here it’s written in

which CATIA

document the macro

will be stored

2) Indicates the

language to be used in

the macro (CATScript

or MS VBScript)

3) The name to assign

the macro

4) Click on ”Start”.

This will start the

recording of all manual

operations until ”Stop”

is clicked!

TMKT-57 VB Introduction

Page 7: IntroVB

7

How to Record a Macro (4/4)

Right-click on ”Product1”

and choose Components >

New Part. A new CATPart

”Part1” is created.

Then click on”Stop” to

interrupt the macro

recording.

A macro has now been

created with the code

necessary to create a new

CATPart within a

CATProduct.

STOP

TMKT-57 VB Introduction

Page 8: IntroVB

8

How to Edit a Macro (1/2)

To inspect the macro choose Macro > Macros… from the Tools

menu: 1) The recorded macro

can be edited by

selecting it and

pressing ”Edit…” from

the menu on the right

TMKT-57 VB Introduction

Page 9: IntroVB

9

How to Edit a Macro (2/2)

The script will be presented in a new window:

1) Definition of the

Document where we

want to execute the

oprations.

2-3) Lists all products

in the CATProduct

4) Within product1

creates a new

component of type

CATPart

TMKT-57 VB Introduction

Page 10: IntroVB

10

The VBScript Code (1/3)

All VBA scripts are contained between the Sub and End Sub

statements

The basic concept of object is needed:

An object is a code “template”, grouping properties and methods

which can be retrieved or called

Ex.: dayWeather.Temperature from an object called “dayWeather”

we retrieve the property “Temperature”

Ex.: dayWeather.Update the object called “dayWeather” is updated

calling the method “Update”

Ex.: events can be programmed combining properties and methods

to obtain wanted behaviors

TMKT-57 VB Introduction

Page 11: IntroVB

11

The VBScript Code (2/3)

Let’s focus on the code in the VBScript, i.e.:

The code: Set JohnJr = Sugar.AddNewComponent("Part", "")

does exactly the same thing, but we have now called the object

containing the product where to create the CATPart “Sugar”

and the new part will be stored in the object “JohnJr”.

1) This is an object

that we decide to call

product2, but could

just as well have be

chair77 or jklfdklfjl…

2) This is the object

within which we want

to perfom and

operation (create new

Part). The name was

freely chosen in the

line above…

3) This is the method

that is applied to the

object products1 that

tells CATIA to create a

new component. The

type ”Part” is given as

an argument

Set product2 = products1.AddNewComponent("Part", "")

TMKT-57 VB Introduction

Page 12: IntroVB

12

The VBScript Code (3/3)

Other VBScript code examples:

Set SunGear_GS = SunGear_HB.Item("Geometrical Set.1")

To the object that we called “SunGear_HB” we apply the method “Item” which will

search for something called “Geometrical Set.1” whithin SunGear_HB. The result of the

search will be stored in an object that we call “SunGear_GS”

myNr = Worksheets("Sheet1").Range("Rib_1_Offset").Value In an Excel woksheet called “Sheet1” we search for the range called “Rib_1_Offset”

and store the value written in that cell in an object that we decided to call “myNr”

Please note that in the first example the code starts with the keyword “Set”. Set

is used for setting object references, as opposed to assigning a value. In other

terms, if using Set the created VB-object will continuously be “linked” to its

reference, while if Set is not used, the value is written when the line is executed

and not changed until a new assignment is executed.

TMKT-57 VB Introduction

Page 13: IntroVB

13

Reaction Writing Shortcut (1/3)

When writing a Reaction you can automatically get the code

that gives you access to a particular geometrical feature you

are interested in manipulating through the script.

An example will help clarify: assume you

have a CATProduct that contains a

CATPart in which there is a Plane that

you want to interact with through a

Reaction.

TMKT-57 VB Introduction

Page 14: IntroVB

14

Reaction Writing Shortcut (2/3)

1) Choose the

Knowledge Advisor

workbench in the

Knowledgeware folder

2) Click on the

Reactions tool

3) Choose ”VB action”

then click ”Edit

action…”

TMKT-57 VB Introduction

Page 15: IntroVB

15

Reaction Writing Shortcut (3/3)

1) Click ”Insert object

resolution” and then

click on Plane.1 in the

Specification Tree

3) The code necessary

to access the Plane

will be automatically

generated

TMKT-57 VB Introduction

Page 16: IntroVB

16

Debugging Code (1/9)

It happens rarely that a script works as planned from the very

start. Most of times it is necessary to test and modify it several

times, or debugging it. Sadly CATIA V5 student version does

not have the VB Editor. The only thing CATIA will do is

executing the script or show an error message telling the user

in which line the error may be. This rises two issues:

The only type of errors CATIA will recognize are “syntax errors”

Even if no syntax errors are present the script may produce faulty

results due to logical errors in the operations described

Thus it is by far much easier to carry out the debugging and

testing of a VBScript using the VB editor in Excel, simply

copy/pasting the code in an Excel macro.

TMKT-57 VB Introduction

Page 17: IntroVB

17

Debugging Code (2/9)

Assume that the following is a reaction that you want to debug:

Set documents1 = CATIA.Documents

Set partDocument1 = documents1.Item("Manual_Instances.CATPart")

Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies

Set parameters1 = part1.Parameters

Set Relations1 = part1.Relations

Set selection1 = partDocument1.Selection

selection1.Clear

Set old_nr_ins = parameters1.Item("Old_Nr_Of_Instances")

Set new_nr_ins = parameters1.Item("New_Nr_Of_Instances")

if old_nr_ins.value < new_nr_ins.value then

For I_nr = old_nr_ins.value +1 To new_nr_ins.value

Set hybridBody1 = hybridBodies1.Add()

hybridBody1.name

="Instance." & I_nr

Next

old_nr_ins.Value = new_nr_ins.Value

part1.Update ' Updates part

end if

End sub

1) To be able to run

the script you need a

Sub statement (which

is implicit in the CATIA

VBScript editor)

2) Also needed is an

instruction defining

what the object

”CATIA” is

TMKT-57 VB Introduction

Page 18: IntroVB

18

Debugging Code (3/9)

What you need to do is:

copy/paste the previous code from the CATIA Reactions editor

window into an Excel VB Editor

add a Sub-statement at the top of the script, for example: Sub Script_to_be_tested()

add a definition for the object “CATIA”: Set CATIA = GetObject("", "CATIA.Application")

The GetObject method can be applied to most applications: not

only CATIA, but MS Word, MatLab, SolidWorks, etc. can be

linked with the similar code.

TMKT-57 VB Introduction

Page 19: IntroVB

19

Debugging Code (4/9)

It should look like this:

TMKT-57 VB Introduction

Page 20: IntroVB

20

Debugging Code (5/9)

The VB Editor offers at least two very useful features:

Pressing F8 (Step Into) the script will be run one line at the time,

which allows you to have full control of what the script is doing

Righ-clicking on an object and selecting “Add Watch…” allows you

to monitor how the content of an object during the execution of the

script. This feature is best used in conjunction with the step into

function. An example will clarify the use of the Add Watch feature.

TMKT-57 VB Introduction

Page 21: IntroVB

21

Debugging Code (6/9): Add Watch

1) Right-click on

”Relations1” in the

code…

2) Select ”Add

Watch..”

3) The values in this

windows can then be

left as they are. Just

press ”OK” to create a

watch…

TMKT-57 VB Introduction

Page 22: IntroVB

22

Debugging Code (7/9): Add Watch

The watch is added at the bottom of the editor window and it

can be seen that the object Relations1 is empty at first.

TMKT-57 VB Introduction

Page 23: IntroVB

23

Debugging Code (8/9): Add Watch

If you now step into the code, as soon as the code line that sets

the value of Relations1 is executed, the watch will show what is

contained inside:

1) The line setting the

value for the object

”Relations1” has just

been executed…

2) The watch now

shows all the

information that can

be accessed via VB

script

TMKT-57 VB Introduction

Page 24: IntroVB

24

Debugging Code (9/9): Add Watch

TMKT-57 VB Introduction

Browsing through the watch you can find almost all the

elements that you see in the Specification Tree. The watch can

give you an idea of what method to use…

Page 25: IntroVB

25

Conclusions

To get started with a VBScript you can try:

Recording a macro in CATIA

Using “Insert Object Resolution” within the Reaction editor in CATIA

Both methods can give you a good starting point.

When you encounter problems and/or need to find the source of

errors it can be very useful to take advantage of Excel’s VB

editor environment. Some of the debugging capabilities have

been presented in this short introduction:

Step Into (F8)

Add Watch…

TMKT-57 VB Introduction