Automating SolidWorks with Excel

51
Automating SolidWorks with Excel Robert Mengel, Design Automation Consultant Paul Gimbel, Business Process Sherpa Razorleaf Corporation

description

When design tables just won't cut it, a little bit of programming can give you the power to leverage Microsoft Excel. As a powerful calculation engine and easy user interface creator, Excel is a great way to create basic to incredibly complex automation tools.

Transcript of Automating SolidWorks with Excel

Page 1: Automating SolidWorks with Excel

Automating SolidWorks with ExcelRobert Mengel, Design Automation Consultant

Paul Gimbel, Business Process Sherpa

Razorleaf Corporation

Page 2: Automating SolidWorks with Excel

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, it’s close enough.

Page 3: Automating SolidWorks with Excel

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 I’ll 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

Page 4: Automating SolidWorks with Excel

BACKGROUND

• Razorleaf Corporation SolidWorks Service Partner

Services ONLY (we’re not trying to sell you any products, we’re 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

Page 5: Automating SolidWorks with Excel

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 Inven…nah, who are we kidding.

Page 6: Automating SolidWorks with Excel

Pure SolidWorks

•Configurations

•Design Tables

•Configuration Publisher

•Smart Components

•Mate References

•DriveWorksXpress

•Design Checker

•SolidWorks Task Scheduler

Page 7: Automating SolidWorks with Excel

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?

Page 8: Automating SolidWorks with Excel

SolidWorks Macros

• Run completely inside of SolidWorks

Requires SolidWorks licenses for all involved

May not be the best environment for all users

Anything that’s 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

Page 9: Automating SolidWorks with Excel

The Road To Excel

• Design Tables alone don’t 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

Page 10: Automating SolidWorks with Excel

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

Page 11: Automating SolidWorks with Excel

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)

Page 12: Automating SolidWorks with Excel

Just A Little Bit Of Work Makes A Huge Difference

Some People’s Idea of an Excel User Interface

Less Than Twenty Minutes Of Work

Page 13: Automating SolidWorks with Excel

Building User Interfaces in Excel

Data Validation– Lists, error and warning dialogs, tool tips

Input Messages

Error Messages

Warning Messages

In-Cell Dropdowns

Page 14: Automating SolidWorks with Excel

Building User Interfaces in Excel

Data Validation– Lists, error and warning dialogs, tool tips

Conditional Formatting– Control user’s attention based on input

Page 15: Automating SolidWorks with Excel

Building User Interfaces in Excel

Data Validation– Lists, error and warning dialogs, tool tips

Conditional Formatting– Control user’s attention based on input

Tools, Protection– Unlock/show only cells you want them to be able to change

Page 16: Automating SolidWorks with Excel

Building User Interfaces in Excel

Data Validation– Lists, error and warning dialogs, tool tips

Conditional Formatting– Control user’s 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

Page 17: Automating SolidWorks with Excel

Building User Interfaces in Excel

• Control Toolbox

VB-style input devices that can fill in your cells

Data Validation– Lists, error and warning dialogs, tool tips

Conditional Formatting– Control user’s attention based on input

Tools, Protection– Unlock/show only cells you want them to be able to change

Pictures, Diagrams, Charts– Help users understand what information they need to input

F

dMax

Page 18: Automating SolidWorks with Excel

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)

Page 19: Automating SolidWorks with Excel

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

Don’t 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

Page 20: Automating SolidWorks with Excel

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 Impedance

110 1.73

240 2.9

360 3.48

VLookup(110,VoltageRange,2,FALSE) = 1.73

VLookup(290,VoltageRange,2,FALSE) = #N/A

VLookup(359,VoltageRange,2,TRUE) = 2.9

Searches until it finds a value that is “greater than” the search value, then goes back to take the previous one.

Page 21: Automating SolidWorks with Excel

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

Criteria1 Criteria2 Criteria3 Criteria 4

Range “Holes”DGet(Holes,”Dia”,Criteria1) = 0.250DGet(Holes,”Number”,Criteria2) = 2DGet(Holes,”Number”,Criteria3) = #NUM!DGet(Holes,”Dia”,Criteria4) = #VALUE!

Page 22: Automating SolidWorks with Excel

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

IsError

Error.Type

IsNA

IsBlank

IsLogical

IsNumber

IsText

IsNonText

Type

Page 23: Automating SolidWorks with Excel

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)

Page 24: Automating SolidWorks with Excel

GETTING TO VBAFinding your way through Excel

Page 25: Automating SolidWorks with Excel

OK, Enough Easy Stuff…On 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

Page 26: Automating SolidWorks with Excel

Accessing VBA

Run or edit a macro from a list

Enter the Visual Basic for Applications Development Environment

Page 27: Automating SolidWorks with Excel

Where to Stick your Code

• You can place code in any worksheet

• It’s best to create your own module

• You can just think of a module as a code folder

Page 28: Automating SolidWorks with Excel

USER DEFINED FUNCTIONSVBA Code: Purpose #1

Page 29: Automating SolidWorks with Excel

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/4…I think

CylVolume = Pi * Radius * Raidus * Height

End Function

• Now you can just use:

= CylVolume(Radius, Height)

or

=CylVolume($B$4, C5)

(if you haven’t been paying attention and you don’t know that you’re supposed to name your cell ranges)

Page 30: Automating SolidWorks with Excel

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 we’re 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 don’t get overflow errors.

Page 31: Automating SolidWorks with Excel

How To Program In VBA

The Ultimate Process For Non-Programmers:1. Determine what you want your program/code snippet to do

2. Think of some “keywords” to describe it (if you know the functions you need to use, you’re ahead of the game)

3. http://www.google.com (add “VBA” and/or “Excel” to search)

4. Ctrl-C

5. Ctrl-V

6. Tweak

Also look to Excel VBA and SW API Help files. They’re actually helpful. I know! I was shocked, too.

Page 32: Automating SolidWorks with Excel

CONNECTING TO SOLIDWORKSVBA and SolidWorks: Link #2

Page 33: Automating SolidWorks with Excel

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

Page 34: Automating SolidWorks with Excel

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

Page 35: Automating SolidWorks with Excel

BUILDING SOLIDWORKS API CODE FOR USE IN EXCEL

Demo #1: Getting Code Into Excel

Page 36: Automating SolidWorks with Excel

ACCESSING EXCEL DATA FROM VBAVBA and SolidWorks: The First Link

Page 37: Automating SolidWorks with Excel

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 ‘We’re 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

Page 38: Automating SolidWorks with Excel

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

Readability…Minus 10 style points

What if the range moves…Minus 10 style points

Debugging…Minus 10 style points

Scalability…Minus 10 style points

Portability…Minus 10 style points

Chances of anyone else understanding your code…Minus 30!

Page 39: Automating SolidWorks with Excel

DRIVING SOLIDWORKS MODELS WITH EXCEL INFORMATION

Demo #2: Driving SolidWorks with Excel Values

Page 40: Automating SolidWorks with Excel

QUESTIONS (AND HOPEFULLY ANSWERS)

Here’s the Audience Participation Portion of the Show

Page 41: Automating SolidWorks with Excel

THE SIMULATION AUTOTESTERA Practical Sample In Microsoft Excel/VBA

Page 42: Automating SolidWorks with Excel

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

Page 43: Automating SolidWorks with Excel

The Process

Report Information Back To Excel

Extract Results Format Results Push Results to Cells

Run Analysis

Create Mesh Run Gather Results

Drive Model

Drive Dimensions Feature SuppressionParse Excel Information

Parameters to Drive Results to Return

Gather Simulation Objects

Add-In Simulation Document Study Manager Study

Page 44: Automating SolidWorks with Excel

The Internal Structure

Page 45: Automating SolidWorks with Excel

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

Page 46: Automating SolidWorks with Excel

Object-Oriented Programming (or some facsimile thereof)

One of the hardest, most confusing concepts in programming (Or so I’m 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.

Page 47: Automating SolidWorks with Excel

Our Classes

Test Cases

Test Case

Parameters

Parameter

Parameter

Parameter

Results

Result

Result

Test Case

Parameters

Parameter

Parameter

Results Result

Page 48: Automating SolidWorks with Excel

Classes, Methods and Properties

Page 49: Automating SolidWorks with Excel

DEMO AND REVIEW OF CODEOff to the code!

Page 50: Automating SolidWorks with Excel

QUESTIONS (AND HOPEFULLY ANSWERS)

Here’s the Audience Participation Portion of the Show

Page 51: Automating SolidWorks with Excel

Still Open For Questions!!!

PLEASE!!Let’s see if they really read the evaluation forms…

In the comments section, after your comments………everyone 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, it’s free.