Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 51

Automating SolidWorks with Excel

Robert Mengel, Design Automation Consultant


Paul Gimbel, Business Process Sherpa
Razorleaf Corporation

Not Sure If You Should Stay or Go To Redneck Workarounds?


We will cover:

Creating fast, robust, and FREE user interfaces for SolidWorks automation
Accessing Visual Basic for Applications (VBA) through Excel
Connecting Excel to SolidWorks through VBA
Building SolidWorks VBA code for use in Excel
Accessing Excel references through VBA
Driving SolidWorks automatically and bulk processing with loops

*We know that VBA is not truly object-oriented, but for those that would choose
Excel as a programming environment over Visual Studio 2010, its close enough.

DISCLAIMER!!!

More information is available

There is so much that you can do with this stuff!!


We wanted to spend adequate time and detail on what we do cover.
Everything is documented in the PowerPoint

Download it from the SolidWorks World Site

Download it from the Razorleaf Site (link on the handout)

Give me a business card and Ill email it to you

Read the Presenter Notes


Come on up after the session with any questions
Take our business cards...take a few and hand them around
Check out some of our other presentations on these and other topics

www.razorleaf.com

or

www.slideshare.net

BACKGROUND

Razorleaf Corporation

SolidWorks Service Partner

Services ONLY (were not trying to sell you any products, were neutral)

Data Management (EPDM, Enovia, SmarTeam, Aras, V6, MatrixOne)

Design Automation (DriveWorks, Tacton, Custom Programmed API)

Workflow Automation (Microsoft SharePoint and Tools)

Bob Mengel
Mechanical Engineer and Automation Developer/Implementer
Paul Gimbel (aka The Sherpa)

Mechanical Engineer, SolidWorks Demojock, Automation Implementer


All Razorleaf presentations will be available at www.razorleaf.com
and on www.slideshare.net

Your Options

Pure SolidWorks functionality


SolidWorks Macros
Microsoft Excel (and some VBA, of course)
Maximized use of Excel and VBA
Custom developed application
Commercially available solution partner product
AutoDesk Invennah, who are we kidding.

Pure SolidWorks

Configurations
Design Tables
Configuration Publisher
Smart Components
Mate References
DriveWorksXpress
Design Checker
SolidWorks Task Scheduler

What Do You Mean SolidWorks Has Limitations!?!?


All of these functions require interaction with the user
SolidWorks is required

Great for your reseller, not so great for your budget

Puts non-engineers in an uncomfortable environment

Requires at least some SolidWorks training

Do you really want a salesperson opening your models!?!?


Data management issues

One file with tons of configurations?


How big is that file, eh?
Multiple people can not edit one file at the same time
Multiple people can potentially crush your carefully constructed model
Revision questions

Save As Copy every time?


What about updates?

SolidWorks Macros
Run completely inside of SolidWorks

Requires SolidWorks licenses for all involved

May not be the best environment for all users

Anything thats not in SolidWorks has to be coded


Designed to drive the SolidWorks User Interface

Not all that automation-friendly


OK to use for small functions

Some 5 or 6 step operation that you want to hotkey


Can be tough to share due to peoples individual settings
VSTA (.NET) macros require some programmatic acumen

The Road To Excel


Design Tables alone dont address

User Interface

Input values as opposed to output values

Advanced Excel functionality


Leverage Excel

Use Excel User Interface tools

Add-Ins (Analysis Pack, Solver, etc.)

Data validation

User Defined Functions

Macros

Excel and SolidWorks So Happy Together


Three Methods To Integrate SolidWorks and Excel

Design Table
Embedded in the SolidWorks model
Must edit through SolidWorks
Edit Table In New Window to gain access to Excel
MUST BE IN THE DESIGN TABLE SHEET WHEN YOU EXIT!!

External Spreadsheet with Macro to drive SolidWorks


Requires SolidWorks API programming
Separates workbook from SolidWorks model
Does not require SolidWorks (until macro is run)
Shareable (through Excel Share Workbook functionality)
Can be used to drive multiple SolidWorks files
Can be used to drive other things as well, not just SW

Spreadsheet with Macro Inserted as OLE Object

What Excel Brings To The Party (a six pack?)


User Interfaces

Powerful and flexible formatting

Charts and support for graphics

Dynamic tools to help user inputs and selections


Advanced equation functionality
VBA

Custom

functions

Macros
Object-Oriented

Programming (well, sort of)

Just A Little Bit Of Work Makes A Huge Difference

Some Peoples
Idea of an Excel
User Interface

Less Than Twenty


Minutes Of Work

Building User Interfaces in Excel

Data Validation
Lists, error and warning dialogs, tool tips

In-Cell Dropdowns

Input
Messages

Error Messages

Warning Messages

Building User Interfaces in Excel

Data Validation
Lists, error and warning dialogs, tool tips
Conditional Formatting
Control users attention based on input

Building User Interfaces in Excel

Data Validation
Lists, error and warning dialogs, tool tips
Conditional Formatting
Control users attention based on input
Tools, Protection
Unlock/show only cells you want them to be able to change

Building User Interfaces in Excel

Data Validation
Lists, error and warning dialogs, tool tips
Conditional Formatting
Control users attention based on input
Tools, Protection
Unlock/show only cells you want them to be able to change
Control Toolbox
VB-style input devices that can fill in your cells

Building User Interfaces in Excel


dMax

Data Validation
Lists, error and warning dialogs, tool tips

Conditional Formatting
Control users attention based on input
Tools, Protection
Unlock/show only cells you want them to be able to change
Control Toolbox

VB-style input devices that can fill in your cells

Pictures, Diagrams, Charts


Help users understand what information they need to input

What Excel Brings To The Party (a six pack?)


User Interfaces

Powerful and flexible formatting

Charts and support for graphics

Dynamic tools to help user inputs

and selections
Advanced equation functionality
VBA

Custom

functions

Macros
Object-Oriented

Programming (well, sort of)

Calculations in Excel
Name Your Cells and Ranges
Just as in SolidWorks, it makes equations easier to read
Add Comments

In adjoining cells or with the comment tool


Keep your formulas simple whenever possible

Multiple calculation steps are easier to troubleshoot


Intelligent Layouts

Dont scatter stuff all over the place

Consider cells that may need to be adjacent for lookups, etc.

Give this collection of cells a single name

Working with Ranges in Excel


Index: Return the value at row n, column m
Match: Which row is this value in?

Specify which order values are in (asc/desc) or exact matches

Combine with Index to do a lookup on any column

VLookup/HLookup: Find value in first column/row

RangeLookup = FALSE: No, I only want exact matches

RangeLookup = TRUE: Yes, find me the closest match

Voltage
110
240
360

Impedance
1.73
2.9
3.48

VLookup(110,VoltageRange,2,FALSE) = 1.73
VLookup(290,VoltageRange,2,FALSE) = #N/A
VLookup(359,VoltageRange,2,TRUE) =
Searches until it finds a value that is
greater than the search value, then
goes back to take the previous one.

2.9

Dealing With Unknown Quantities

Count/CountA: Count the numbers/non-blanks in the range?


CountIf: How many in the range meet the criteria?
Columns/Rows: How many columns/rows are in the range?
DGet: Return any value in a range based on criteria
Range Holes
DGet(Holes,Dia,Criteria1) = 0.250
DGet(Holes,Number,Criteria2) = 2
DGet(Holes,Number,Criteria3) = #NUM!
DGet(Holes,Dia,Criteria4) = #VALUE!

Criteria1

Criteria2

Criteria3 Criteria 4

More Cool Excel Functions


Indirect: Display range/cell based on a formula
Ceiling/Floor: Rounds up/down to the next multiple
SumIf: Totals all of the values in a range that meet a criteria
=SumIf(ThicknessRange,>0.25,PriceRange)
DSum: Add values from records that meet a criteria
Error Trapping:
IsErr
IsLogical
IsError
IsNumber
Error.Type
IsNA
IsText
IsBlank
IsNonText
Type

What Excel Brings To The Party (a six pack?)

Formatting
Charts
Design Binder
Easy User Interfaces
Advanced equation functionality
VBA

Custom

functions

Macros
Object-Oriented

Programming (well, sort of)

Finding your way through Excel

GETTING TO VBA

OK, Enough Easy StuffOn To The VBA


Use VBA to AUGMENT Excel

Custom functions

Macros

Connections to other programs (like SolidWorks)


Do As Much As You Can In Excel

Easier to troubleshoot

Easier to maintain

Faster to develop

Accessing VBA

Run or edit a macro from a list


Enter the Visual Basic for Applications Development Environment

Where to Stick your Code


You can place code in any worksheet
Its best to create your own module
You can just think of a module as a code folder

VBA Code: Purpose #1

USER DEFINED FUNCTIONS

Custom Functions Repetitive Calculations


Tired of typing in the same equations?
Public Function CylVolume(Radius As Double, Height As Double) As Double
Dim Pi As Double
Pi = 4 * Atn(1)
ArcTangent of 1 = pi/4I think
CylVolume = Pi * Radius * Raidus * Height
End Function
Now you can just use:
= CylVolume(Radius, Height)
or
=CylVolume($B$4, C5)
(if you havent been paying attention and you dont know that youre supposed to
name your cell ranges)

Custom Functions Fill in Excel Gaps


Excel missing a function you want? No problem!
Public Function Divisible(Value As Double, Divisor As Double) As Boolean
Dim Compare As Integer
Compare = CInt(Value / Divisor)
If Compare = (Value / Divisor) Then
Divisible = True
Else
Divisible = False
End If
End Function
Now all I do is put THIS in my cell:
=If(Divisible(Length,StdSpacing),Length / StdSpacing,0)

Note: Because were converting a Double to an Integer, this only works for numbers
up to 32767. This was not an issue in my application as the model only supported up
to 48. But you may want to put a check in there so you dont get overflow errors.

How To Program In VBA

The Ultimate Process For Non-Programmers:


1.
2.

Determine what you want your program/code snippet to do


Think of some keywords to describe it (if you know the functions you
need to use, youre ahead of the game)

3.

http://www.google.com (add

4.
5.
6.

Ctrl-C
Ctrl-V
Tweak

VBA and/or Excel to search)

Also check out


www.krugle.org
Also look to Excel VBA and SW API Help files. Theyre actually helpful.
I know! I was shocked, too.

VBA and SolidWorks: Link #2

CONNECTING TO SOLIDWORKS

Connecting to SolidWorks
Add the SolidWorks library to your project

Tools, Macros, Visual Basic Editor

Tools> References>

SldWorks 2011 Type Library


Now you have SW Intellisense
Define your SolidWorks App
Dim swApp As SldWorks.SldWorks
Establish a SolidWorks object

Attaches to an existing session

Launches SW if it is not open


Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True

<<Insert Basics of the SolidWorks API Session here>>

Demo #1: Getting Code Into Excel

BUILDING SOLIDWORKS API CODE


FOR USE IN EXCEL

VBA and SolidWorks: The First Link

ACCESSING EXCEL DATA FROM VBA

Getting Around In Excel With VBA


To access a named cell (you named them all, right!!?!?)

Thickness = Range(TestCell).Value
Running through the cells in a named range

Dim MyCell As Excel.Range Even a single cell is treated as a range


For Each MyCell in Range(TestRange)
Total = Total + MyCell.Value
Next MyCell Looping through the TestRange
What if you have rows (i.e. a multi-column range)?

Dim MyRow As Excel.Range Were going to cycle through the rows


For Each MyRow in Range(TestRange).Rows
Total = Total + MyRow.Cells(1,3).Value Row 1, Column 3 of the range
Next MyRow Looping through the TestRange

Absolute Row and Column References


Can I just put in Row and Column references, like:
Thickness = Worksheets(Sheet1).Range(A1:A1).Value
Thickness = Worksheets(Sheet1).Cells(4,9).Value
Sure, but I would have to slap you silly

ReadabilityMinus 10 style points

What if the range movesMinus 10 style points

DebuggingMinus 10 style points

ScalabilityMinus 10 style points

PortabilityMinus 10 style points

Chances of anyone else understanding your codeMinus 30!

Demo #2: Driving SolidWorks with Excel Values

DRIVING SOLIDWORKS MODELS


WITH EXCEL INFORMATION

Heres the Audience Participation Portion of the Show

QUESTIONS
(AND HOPEFULLY ANSWERS)

A Practical Sample In Microsoft Excel/VBA

THE SIMULATION AUTOTESTER

The Autotest Tool What It Does

Enter model information at the top


Fill in column 1 with test case names
Fill in row 1 of the table with parameter and result names
Choose types in row 3
Fill in values
Push the button
Sit back
Be amazed
Go get some coffee
Be amazed some more
Call a supplier
Be more amazed (and a bit tired)
Use Excel to chart your results

The Process

Gather Simulation Objects

Add-In

Simulation

Document

Study Manager

Parse Excel Information

Parameters to Drive

Results to Return

Feature Suppression

Run Analysis

Create Mesh

Drive Model

Drive Dimensions

Study

Run

Gather Results

Report Information Back To Excel


Extract Results

Format Results

Push Results to Cells

The Internal Structure

Wrapper Functions, Not RAPPER Functions


Wrapper A custom-designed function used to execute an API call
Why use wrappers?

Easier to read main code

Easier to reuse (in the same project) code

Easier to repurpose code (other projects)

More control

Build error-trapping right into the calls

Object-Oriented Programming (or

some facsimile

thereof)

One of the hardest, most confusing concepts in programming (Or so Im told)


Class A definition of something like a window or bolt
Property A parameter value that an object has
Method Something that an object can do
Collection A bunch of objects, like an array, just of objects
Dot (.) Something you will type a lot of

Separates an object from its property or method

Ex. Bolt.Length or Window.Pane.item(top).Glass.Thickness


Instantiate To make a real thing as defined by a class

Ex. Upper Flange Bolt #3 or Kitchen Window Over Sink


Those are then called instances and objects

Everything in OOP and the SolidWorks API, is


performed ON or BY an object.

Our Classes

Parameter
Parameters

Parameter
Parameter

Test Case

Result
Results
Result

Test Cases

Parameter
Parameters
Parameter

Test Case
Results

Result

Classes, Methods and Properties

Off to the code!

DEMO AND REVIEW OF CODE

Heres the Audience Participation Portion of the Show

QUESTIONS
(AND HOPEFULLY ANSWERS)

Still Open For Questions!!!


PLEASE!!
Lets see if they really read the evaluation forms
In the comments section, after your commentseveryone write

Where did he find a USB arc welder? I want one.


For the complete version of the presentation, including presenter notes, full
code and models, visit www.razorleaf.com after the show! Yes, its free.

You might also like