You are on page 1of 37

SolidWorks API

Demystified

Leonard Kikstra
Designer / CAD Administrator
RITE-HITE Products Corporation
Milwaukee, WI
Lennys SolidWorks Resources
http://www.lennyworks.com/solidworks

Who am I?

Product Designer

Engineering since 1982.


Cad user since 1991.
SolidWorks user since
1998.

Active member since


group started in 1999.

Interested in simplifying
my job.

Make my computer do
some of my work for me.

Lennys SolidWorks
Resources website.

Online Sept. 2003.


New home Sept. 2006.

CAD Administrator

20+ people on site.


Advise other sites.

SMART User Group

Programmed over 30
macros for use in
SolidWorks

Most of these are


available for free on
the Internet.

What is covered here.

General Information

What is the SolidWorks API?


Benefits of learning/using the API.

Getting Started.

Create and modify macros.


Finding your way.
When and Why.

Program examples
Justification

Where to get help.

What is the SolidWorks


API?

Application Programming Interface.

Allows other programs to access SolidWorks data and/or


control SolidWorks.
Examples: SolidWorks Add-Ins

Cosmos, Toolbox, PhotoWorks, PDM Works, PDM Works


Enterprise

Why?

Allow third party vendors to build applications that access


SolidWorks and SolidWorks data.
Lets SolidWorks focus on their core products.

SolidWorks Add-Ins have APIs.


eDrawings
FeatureWorks
PDMWorks
PhotoWorks

SolidWorks ToolBox
SolidWorks Utilities
SolidWorks Routing

How can the API benefit


you?

Automate common and repetitive tasks.

Increase productivity.
Save time and money.
Standardize procedures.

Consistently retrieve or export data that


already exists in the SolidWorks
documents.

Develop useful tools to meet your


specific needs.

Customize SolidWorks.

Add commands, change settings, etc

Access the SolidWorks


API

Stand alone application

Executable

Visual C++ .Net Visual Basic .Net.


Visual C++
Visual Basic
Visual C

Programming environment outside of


SolidWorks.
Must be compiled to use outside of
programming environment.

Can start SolidWorks.


Required for creating Add-Ins/DLLs.

SolidWorks Macro .swp file

Microsoft Visual Basic for Applications.

SolidWorks Program (.swp) is a single file.


Must be launched from within SolidWorks.
Installed with SolidWorks.
No compiling
Some limitations.

SolidWorks Macros

The macro recorder.

Start recorder.
Complete tasks.
Some settings in dialog boxes are not
recorded.
Pause if needed.
Stop recorder and save new macro.

Stop Record / Pause

Running a macro

Run Macro
Select macro
Macro will automatically run

Run

SolidWorks Macros

Edit macro.

Select macro.
Visual Basic Editor automatically launched.
Make changes.
Test Macro
F5 to run macro
F8 to step thru the macro line by line
Save macro.
Exit Visual Basic editor.

New Macro

Edit Macro

Create a new macro without using macro recorder.


New Macro
Enter macro name
Visual Basic Editor automatically launched.

Visual Basic Editor:


Environment

Project:

SolidWorks Objects.
Definitions of SolidWorks
Objects.

Forms.

Object based interface for


user interaction.
Custom code programmed for
each object in form.

Modules.

Modules that only contain


code for the macro.
Common modules used in
many macros.

Visual Basic Editor:


References

Access via Tools |


References menu
selections in the VB Editor.

Attach objects from another


application to your project.
Standard descriptions of
object types, properties
and methods.

Selections are specific to


each macro.

SolidWorks Type Libraries


are version specific.

Writing a macro:
Variables

Local

Value retained only while in module or procedure where


defined.
Value can change
Same variable name can be defined locally in multiple
modules.

Global

Value retained through out all modules and procedures.


Value can change
Can be used set fixed values for common reference later.
Pi = 4 * Atn(1) ' The infamous pi value

Constants

Assign a specific value to variable name.


Set once
CAN NOT be changed
CAN NOT use formula to define

Writing a macro:
Variable Types

Boolean

- True or False

Integer

- Whole numbers only

Long

String

- Any text based value

Variant

- Can be any type

Array()

- Spreadsheet of data

VariantArray()

- Spreadsheet of data of any type.

- Any numerical value

Writing a macro:
Objects

Must name an object to access its properties


Meta-data
Features

- Info about object


- Sub-objects

Multiple tiers

Parent Child relationships

Methods

Command and syntax that provides access to objects


properties

Accessors

Roadmap that shows how to get to object.


Command and syntax how to get to object from parent.

SolidWorks
ModelDoc2

Writing a macro:
Routines

Sub (Procedures)

Private - Can only access


from module it resides in
Public
- Can be accesses
from any module
Run from top-down until
completed
Can be access many times.
Can launch other routines.
Can pass variables between
routines.

Function Special Procedure


Must pass a variable to
Function
Returns a value to variable
in the calling procedure.

Writing a macro:
Testing and Running

Testing macro or procedure


F5
F8

Run macro
Step thru code
line-by-line.
Start in current procedure.

Automatic starting point

Last procedure, in last inserted


module
Not module name specific.
Not procedure name specific.

Writing a macro:
Typical Steps - Launch

Launch Macro

Load type libraries


Set global variables and
constants
Attach to SolidWorks

Is a document open in
SolidWorks?

No, warn user that you need


one, then end.

Get document type.

Wrong type, warn user and


end

Proceed

Writing a macro:
Typical Steps - User Form

User form

Preprocessing.

Set program defaults.


Read data from document.

Display user form to user.

Wait for input

React to user input.

Read more data from


document.
Update user form.
Update document.

Action buttons

OK / Process
Cancel
Help
Other

Writing a macro:
Typical Steps Processing

Process user requests based


on form values.

Inform user of status during


processing.

Inform user of errors


encountered.

Inform user of status upon


completion.
Wait for user OK.

Writing a macro:
Typical Steps Completion

Close forms

Clear out objects and


variables.

Close macro

Macro Feature:

Embed macro as a feature in the model.

Overview of Macro Feature

See SolidWorks API Help File

Assigning a macro to a
Toolbar Button.

Must have document open in


SolidWorks

How To:

Rt. Click toolbar, Customize


Commands tab, Category: Macro
Drag icon and drop on toolbar.
Select an image to use on toolbar.
Fill out fields in dialog box:

Tooltip
- Balloon tip at
arrow.
Prompt
- Help info in
status bar.
Macro - Name and full path.
Method
- Module and
procedure.
Shortcut
- Key combo to
launch macro.

Click OK to complete

When should I write my


own macro?

Consistent retrieval & exporting of data.

Remove manual tasks and retyping errors.


Consistent results with consistent
formatting.
Examples:

Retrieve and export a BOM from the assembly


No drawing required.

Create a list of all components in a directory.

Automating common or repetitive tasks.


Save valuable time and money.
Examples:

Exports SolidWorks documents to different file


types.
Print all drawings in the current directory.
Print all drawings for all components in a
current assembly.
Retrieve and export a BOM for multiple
configurations.

When should I write my


own macro?

Enforce compliance with standard


procedures.

Provide an automated method to follow


standards.
Consistent document appearance.
Examples:

Preset SolidWorks settings to your company


standards.
Set annotations in document to use document
defaults.
Copy document settings from master
document to current document.
Simplifies adding standardized notes to
drawings.

Need a special tool to automate a specific


task.

Justification to write a
macro:

Define your needs.

What is the purpose of macro?


How often will you use it?

The more you use it, the more time


you will save

Does it already exist?

Is there something available thats


close to what I need?
Can I modify something I already
have?
Examples files:

Help file
SolidWorks Website
Lennys SolidWorks Resources

Justification to write a
macro:

Example #1 - New Macro - Document Export


Scope:

* Export documents to different file types.


* Drawings, Models, Configurations
* 20 models to create 300 exported files

Problems via manual way - Manual process, Repetitive,


Time consuming, user input required at all steps!

Did I export all configurations?


Selecting file type by hand every time.
Consistent configuration naming.
Estimate time to complete:
12-14 Hours

Time comparison:

Time to write:
Automated:
Saved first use:

8 Hours
1.5 Hours
10-12 Hours

Macro can be reused many, many times.

Justification to write a
macro:

Example #1 Modify Macro Change custom property


value.
Scope: * All documents require change, addition or
removal of a custom property.
* 1000s of files.
* Found macro on internet, can modify for use.

Problems via manual way - Manual process, Repetitive, Time


consuming, user input required at all steps!

Did I change all documents?


Did I make the right changes?
Estimate time to complete:

Time comparison:

Time to modify macro:


Automated:
Saved first use:

20+ Hours

15 Minutes
2.5 Hours
17+ Hours

Macro can be customized and reused many, many times.

Tips: Learning

Learn by example.

Find a good macro, and study how it works.


Use [F8] in VB Editor to step thru code line-by-line.

Experiment

Write do nothing macros for Visual Basic or SolidWorks


API

Learn functions you havent used before.


Develop your own functions or common routines.
Test What If scenarios.

Save your code for later use.

Start small and work your way up.

Write and test small portions of code before continuing to


larger portions.
Start with a basic program, then add more functionality
and flexibility later.

Tips: Sample Code

Add comments to your code

Use existing code

Helps you and others understand what you did, and why.
Helps you remember what you did.
Identify what routines are doing.

Dont re-invent the wheel.


Saves time and your effort.
Keep sample code on hand for later use.

Know that there are multiple ways to complete tasks.


Conditional statements

If Then, Else, End If - True/False


Select Case ., End Case
- Response based
on value.
For . Next
- Set number of times to do.
Do While . End Loop - Dont know how many times.

Tips: Distribution

Think about other people who may be using your


macros.

Used for other needs than initially intended.

User customization of existing macro.

Not ever user will know how to modify your macro.


External settings file for modifiable default settings.

Macro defaults if settings file is not found.

Different companies have standards, procedures and


needs.

Capable of running on different versions of SolidWorks


API can check what version of SolidWorks is in use.

Tips: Getting Help

SolidWorks API Help File

Help forums.

SolidWorks API Support.

SolidWorks API functionality only.

Be specific!

Repeatable problem.

Steps leading up to problem

Specific conditions lead to problem

Identify specific conditions.

Identify specific problem you are experiencing.


Dont send complete macro. Provide simple code to
demonstrate.

Dont expect help with programming techniques.

Resources for learning


more:

Installed with SolidWorks


SolidWorks API

Application Programming Interface

SolidWorks API and Add-Ins help file

Explains object structure and command syntax.


Many ready to use examples.
Best help file I have seen for writing macros.

Visual Basic for Applications version 6

SolidWorks 2001Plus and later


Visual Basic for Applications Help File.

Online Tutorial - SolidWorks API

Record, Save, Edit a macro.

Resources for learning


more?

SolidWorks web site:


API programming tips and updated help files.
SolidWorks Express Newsletter - API Examples
Download projects, sample programs and macros.
SolidWorks Developer Kit.

Not required
Contains working sample programs.

Presentations

Local VAR / SolidWorks Reseller


SolidWorks API Training classes

Resources for learning


more?
Other Websites - API
Lennys SolidWorks Resources
Macros & Tips

Lennys SolidWorks Resources

Mike Wilsons SolidWorks Modeling Techniques


Macro Feature

http://www.lennyworks.com/solidworks

http://www.mikejwilson.com/solidworks/solidworks_files.htm

Matt Lombard

http://mysite.verizon.net/mjlombard/

Joe Jones at New Hampshire CAD


Tutorials
http://www.nhcad.com/sw_macros/index.html

Stefan Berlitzs SolidWorks Tools

Macros & Tips

http://www.swtools.de website.

SolidWorks Tips & Things


Tips
http://www.solidworktips.com/

Macros

Macros
API

Resources for learning


more?
Visual Basic

Websites

Tutorial and Lessons


May be Visual Basic Specific.
Do not provide help with specific applications.

Forums

May be Visual Basic Specific.


Do not be able to provide help with specific
applications.

Too many to list.

Some provide better explanation and examples.

SolidWorks API
Demystified

Thank You!

Lennys SolidWorks Resources


has moved to

http://www.LennyWorks.com/solidworks

You might also like