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

SMART User Group

Engineering since 1982. Cad user since 1991. SolidWorks user since 1998.

Active member since group started in 1999.

CAD Administrator

Lennys SolidWorks Resources website.

20+ people on site. Advise other sites.

Online Sept. 2003. New home Sept. 2006.

Interested in simplifying my job.

Make my computer do some of my work for me.

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


Visual C++ .Net Visual C++ Visual C

Visual Basic .Net. Visual Basic

Executable

Can start SolidWorks. Required for creating Add-Ins/DLLs.

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

SolidWorks Macro

Microsoft Visual Basic for Applications.

.swp file

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.

Edit Macro

New Macro

Create a new macro without using macro recorder. Enter macro name Visual Basic Editor automatically launched.

New Macro

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 Integer Long String Variant

- True or False - Whole numbers only - Any numerical value - Any text based value - Can be any type

Array()
VariantArray()

- Spreadsheet of data
- Spreadsheet of data of any type.

Writing a macro: Objects

Must name an object to access its properties


Meta-data Features - Info about object - Sub-objects

Multiple tiers Methods

Parent Child relationships

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. Proceed

Wrong type, warn user and end

Writing a macro: Typical Steps - User Form

User form

Preprocessing.

Display user form to user.

Set program defaults. Read data from document.

Wait for input


React to user input.

Action buttons

Read more data from document. Update user form. Update document. 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:

Click OK to complete

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.

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

Create a list of all components in a directory.

No drawing required.

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: 20+ Hours

Time comparison:

Time to modify macro: Automated: Saved first use:

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

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

Use existing code

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 Select Case ., End Case For . Next Do While . End Loop

True/False Response based on value. Set number of times to do. 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. Be specific!

SolidWorks API functionality only.

Repeatable problem.

Specific conditions lead to problem

Steps leading up 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

http://www.lennyworks.com/solidworks

Macros & Tips Macro Feature Macros Tutorials Macros API Tips

Mike Wilsons SolidWorks Modeling Techniques

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

Matt Lombard

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

Joe Jones at New Hampshire CAD http://www.nhcad.com/sw_macros/index.html Stefan Berlitzs SolidWorks Tools
http://www.swtools.de website.

SolidWorks Tips & Things http://www.solidworktips.com/

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


http://www.LennyWorks.com/solidworks
has moved to

You might also like