Automating SolidWorks with Excel
-
Upload
razorleaf-corporation -
Category
Technology
-
view
8.507 -
download
6
description
Transcript of Automating SolidWorks with Excel
Automating SolidWorks with ExcelRobert 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, it’s 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 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
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
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.
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 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
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
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 People’s 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
Input Messages
Error Messages
Warning Messages
In-Cell Dropdowns
Building User Interfaces in Excel
Data Validation– Lists, error and warning dialogs, tool tips
Conditional Formatting– Control user’s attention based on input
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
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
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
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
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
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.
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!
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
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)
GETTING TO VBAFinding your way through 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
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
• It’s best to create your own module
• You can just think of a module as a code folder
USER DEFINED FUNCTIONSVBA Code: Purpose #1
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)
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.
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.
CONNECTING TO SOLIDWORKSVBA and SolidWorks: Link #2
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>>
BUILDING SOLIDWORKS API CODE FOR USE IN EXCEL
Demo #1: Getting Code Into Excel
ACCESSING EXCEL DATA FROM VBAVBA and SolidWorks: The First Link
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
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!
DRIVING SOLIDWORKS MODELS WITH EXCEL INFORMATION
Demo #2: Driving SolidWorks with Excel Values
QUESTIONS (AND HOPEFULLY ANSWERS)
Here’s the Audience Participation Portion of the Show
THE SIMULATION AUTOTESTERA Practical Sample In Microsoft Excel/VBA
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
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
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 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.
Our Classes
Test Cases
Test Case
Parameters
Parameter
Parameter
Parameter
Results
Result
Result
Test Case
Parameters
Parameter
Parameter
Results Result
Classes, Methods and Properties
DEMO AND REVIEW OF CODEOff to the code!
QUESTIONS (AND HOPEFULLY ANSWERS)
Here’s the Audience Participation Portion of the Show
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.