You are on page 1of 37

SolidWorks API

Demystified

Leonard Kikstra
Designer / CAD Administrator
RITE-HITE Products Corporation
Milwaukee, WI

Lenny’s SolidWorks Resources


http://www.lennyworks.com/solidworks
Who am I?

 Product Designer  SMART User Group


– Engineering since 1982. – Active member since
group started in 1999.
– Cad user since 1991.
– SolidWorks user since 1998.
 Lenny’s SolidWorks
 CAD Administrator Resources website.
– Online Sept. 2003.
– 20+ people on site.
– New home Sept. 2006.
– Advise other sites.

 Interested in simplifying my  Programmed over 30


macros for use in
job. SolidWorks
– Make my computer do some – Most of these are available
of my work for me. 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 API’s.


eDrawings SolidWorks ToolBox
FeatureWorks SolidWorks Utilities
PDMWorks SolidWorks Routing
PhotoWorks
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/DLL’s.

 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. Stop Record / Pause
– Complete tasks.
– Some settings in dialog boxes are not
recorded.
– Pause if needed.
– Stop recorder and save new macro.

 Running a macro
– Run Macro
– Select macro
– Macro will automatically run Run
SolidWorks Macros

 Edit macro.
– Select macro. Edit 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
– 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 - Any numerical value

 String - Any text based value

 Variant - Can be any type

 Array() - Spreadsheet of data

 VariantArray() - Spreadsheet of data of any type.


Writing a macro:
Objects
 Must name an object to access it’s properties
– Meta-data - Info about object
– Features - Sub-objects

 Multiple tiers
– Parent – Child relationships

 Methods
 Command and syntax that provides access to object’s 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 Run macro
– F8 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 that’s close
to what I need?
– Can I modify something I already have?
– Examples files:
 Help file
 SolidWorks Website
 Lenny’s 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: 8 Hours
 Automated: 1.5 Hours
 Saved first use: 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.
* 1000’s 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: 15 Minutes
 Automated: 2.5 Hours
 Saved first use: 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 haven’t 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


– Don’t 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 - Don’t 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.
– Don’t send complete macro. Provide simple code to demonstrate.

 Don’t 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
 Lenny’s SolidWorks Resources Macros & Tips
– http://www.lennyworks.com/solidworks

 Mike Wilson’s SolidWorks Modeling Techniques Macro Feature


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

 Matt Lombard Macros


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

 Joe Jones at New Hampshire CAD Tutorials


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

 Stefan Berlitz’s SolidWorks Tools Macros


– http://www.swtools.de website.

 SolidWorks Tips & Things API Tips


– 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!

Lenny’s SolidWorks Resources


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

You might also like