<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Rob Siegwart - CAD</title><link href="https://www.robsiegwart.com/" rel="alternate"/><link href="https://www.robsiegwart.com/feeds/cad.atom.xml" rel="self"/><id>https://www.robsiegwart.com/</id><updated>2020-07-07T00:00:00-05:00</updated><entry><title>SolidWorks Save-to-PDF Macro</title><link href="https://www.robsiegwart.com/solidworks-save-to-pdf-macro.html" rel="alternate"/><published>2020-03-08T00:00:00-06:00</published><updated>2020-07-07T00:00:00-05:00</updated><author><name>Rob Siegwart</name></author><id>tag:www.robsiegwart.com,2020-03-08:/solidworks-save-to-pdf-macro.html</id><summary type="html">&lt;p class="first last"&gt;Developing a &amp;quot;save-to-pdf&amp;quot; macro button for SolidWorks drawings.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Saving drawings as PDF is a common task in SolidWorks. Here we will create a
macro and corresponding toolbar button to save an active SolidWorks drawing as a
PDF for better productivity. This script saves a PDF file to the current
directory and overwrites any pdf of the same name.&lt;/p&gt;
&lt;div class="section" id="record"&gt;
&lt;h2&gt;Record&lt;/h2&gt;
&lt;p&gt;Using SolidWorks' macro recorder (&lt;cite&gt;Tools &amp;gt; Macro &amp;gt; Record&lt;/cite&gt;), opening a SolidWorks
drawing and choosing &lt;cite&gt;File &amp;gt; Save As &amp;gt; PDF&lt;/cite&gt;, we get the following macro:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;&amp;#39; ******************************************************************************&lt;/span&gt;
&lt;span class="c"&gt;&amp;#39; C:\\Users\\user\\AppData\\Local\\Temp\\swx1900\\Macro1.swb - macro recorded on 03/07/20 by user&lt;/span&gt;
&lt;span class="c"&gt;&amp;#39; ******************************************************************************&lt;/span&gt;

&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;swApp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Object&lt;/span&gt;

&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Object&lt;/span&gt;
&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;boolstatus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Boolean&lt;/span&gt;
&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;longstatus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Long&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;longwarnings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Long&lt;/span&gt;

&lt;span class="k"&gt;Sub&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;Set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;swApp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;_
&lt;span class="n"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SldWorks&lt;/span&gt;

&lt;span class="k"&gt;Set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;swApp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ActiveDoc&lt;/span&gt;
&lt;span class="n"&gt;longstatus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SaveAs3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;output_pdf_file&amp;gt;\&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;End&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;Sub&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="edit"&gt;
&lt;h2&gt;Edit&lt;/h2&gt;
&lt;p&gt;In this case the output filename is hardcoded into the script (&lt;tt class="docutils literal"&gt;&amp;lt;output_pdf_file&amp;gt;&lt;/tt&gt;).
We want to change that to be the same name as the active document, just with
a &lt;tt class="docutils literal"&gt;.pdf&lt;/tt&gt; extension.&lt;/p&gt;
&lt;p&gt;To do that, we add the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;

&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ClearSelection2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;True&lt;/span&gt;
&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetPathName&lt;/span&gt;
&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Left&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pdf\&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We obtain the filename from &lt;tt class="docutils literal"&gt;Part.GetPathName&lt;/tt&gt; and modify the extension with the
next line which removes the last 6 characters (&lt;tt class="docutils literal"&gt;slddrw&lt;/tt&gt;) and replaces it with pdf.&lt;/p&gt;
&lt;p&gt;Then, we replace the filename in &lt;tt class="docutils literal"&gt;Part.SaveAs3&lt;/tt&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="n"&gt;longstatus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SaveAs3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The final script then looks like the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;swApp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Object&lt;/span&gt;

&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Object&lt;/span&gt;
&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;boolstatus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Boolean&lt;/span&gt;
&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;longstatus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Long&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;longwarnings&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;Long&lt;/span&gt;

&lt;span class="k"&gt;Dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;As&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;

&lt;span class="k"&gt;Sub&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;Set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;swApp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;_
&lt;span class="n"&gt;Application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SldWorks&lt;/span&gt;

&lt;span class="k"&gt;Set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;swApp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ActiveDoc&lt;/span&gt;
&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ClearSelection2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;True&lt;/span&gt;

&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetPathName&lt;/span&gt;
&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Left&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;\&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;pdf\&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;longstatus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SaveAs3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strFilename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;End&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;Sub&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The macro can be run with &lt;cite&gt;Tools &amp;gt; Macro &amp;gt; Run&lt;/cite&gt;, which will open a dialog to
choose a macro file. But this is not ideal for something that will be run
frequently.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="install"&gt;
&lt;h2&gt;Install&lt;/h2&gt;
&lt;p&gt;To install the macro in a more usable manner, we can place a shortcut to the
macro as a custom button in the SolidWorks interface. To do this we first have
to create a new macro by choosing:&lt;/p&gt;
&lt;p&gt;&lt;tt class="docutils literal"&gt;Tools &amp;gt; Macro &amp;gt; New&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;and specifying a filename and save location. Then, the macro editor is shown
where we can enter code. Copy and paste the script above into the editor and
save.&lt;/p&gt;
&lt;p&gt;Then, to add it to the toolbar, choose &lt;tt class="docutils literal"&gt;Tools &amp;gt; Customize&lt;/tt&gt;, and under the
Commands tab, select the &lt;cite&gt;Macro&lt;/cite&gt; category, and then drag the &lt;cite&gt;New Macro Button&lt;/cite&gt;
icon to the desired toolbar destination. For this example, we will place it in
the top bar for easy access.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/SolidWorksMacro/macro_dialog.png" /&gt;
&lt;p&gt;After dragging and dropping onto a toolbar, a dialog opens for us to specify
what macro to run. For the &lt;cite&gt;Macro&lt;/cite&gt; entry, browse to the macro file just created
and click Open. The &lt;cite&gt;Method&lt;/cite&gt; field should auto-populate, and references the
subroutine defined as &lt;tt class="docutils literal"&gt;main&lt;/tt&gt;. Tooltip text can be specified which will display
when the cursor hovers over the button. Additionally, a custom icon can be added
which is a 16px x 16px bitmap image. I created one here of the Acrobat logo.
Click OK and the macro button should be created.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/SolidWorksMacro/toolbar.png" /&gt;
&lt;/div&gt;
</content><category term="CAD"/><category term="solidworks"/></entry><entry><title>Layout Sketches and Parameter-Driven Design in Fusion 360</title><link href="https://www.robsiegwart.com/layout-sketches-and-parameter-driven-design-in-fusion-360.html" rel="alternate"/><published>2019-05-06T00:00:00-05:00</published><updated>2020-07-07T00:00:00-05:00</updated><author><name>Rob Siegwart</name></author><id>tag:www.robsiegwart.com,2019-05-06:/layout-sketches-and-parameter-driven-design-in-fusion-360.html</id><summary type="html">&lt;p&gt;Fusion 360 has good support for parameters in CAD documents and the ability to
drive designs using them. Here we will create a fully parametric design based on
functional design parameters, using the following table as an example. As you
can see, nominal dimensions can be specified to create different …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Fusion 360 has good support for parameters in CAD documents and the ability to
drive designs using them. Here we will create a fully parametric design based on
functional design parameters, using the following table as an example. As you
can see, nominal dimensions can be specified to create different versions of the
design:&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Demo.gif" /&gt;
&lt;div class="section" id="setup"&gt;
&lt;h2&gt;Setup&lt;/h2&gt;
&lt;p&gt;To input parameters open the Parameters dialog which is available under the
Modify panel of the Design tab. Here we will enter all of the pertinent values
governing our design. Putting as much information here at the outset can make
the design more robust and parametric.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Parameters.PNG" /&gt;
&lt;/div&gt;
&lt;div class="section" id="layout-sketches"&gt;
&lt;h2&gt;Layout Sketches&lt;/h2&gt;
&lt;p&gt;Layout sketches are then made and dimensions linked to parameters. For the table
we will create a rectangle for the overall shape and an offset plane equal to
the height. Set the two dimensions for the rectangle equal to the width and
height variables. This is accomplished by simply typing their names in the
dimension field text. Fusion 360 gives you some suggestions after you start
typing to which you can hit Enter to autocomplete.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Layout%20sketch%201.PNG" /&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Layout%20sketch%202.PNG" /&gt;
&lt;p&gt;These two items are sufficient for creating the table top, as seen below, simply
by adjusting the Start property of the Extrude feature. Next, we add a sketch
for one of the legs. We can add a coincident constraint to the first sketch to
keep the leg at the extents of the table, which is applied at each of the lower
left corners of the leg and table rectangles. Since we defined a leg dimension
for the structural HSS, we link the width and thickness dimensions to the
parameters (indicated by the addition of &amp;quot;fx&amp;quot;).&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Layout%20sketch%203.PNG" /&gt;
&lt;/div&gt;
&lt;div class="section" id="create-components"&gt;
&lt;h2&gt;Create Components&lt;/h2&gt;
&lt;div class="section" id="legs"&gt;
&lt;h3&gt;Legs&lt;/h3&gt;
&lt;p&gt;Now it is time to start creating components. All of the features created thus
far exist at the top level. To add a new component right click on the top of the
tree and click &amp;quot;New Component&amp;quot;. This adds a &amp;quot;Component1&amp;quot; and activates it. We
will create a Leg so we rename it &amp;quot;Leg&amp;quot;. By showing only the leg sketch we add a
new extrude and extrude the leg profile. Since we will be performing a component
pattern later, we add addional features to the component in the feet and
casters. This way anything we do here will be copied to the other three legs.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Leg%201.PNG" /&gt;
&lt;p&gt;To add a baseplate we create a new sketch on the component origin plane and by
only showing the layout leg sketch we created initially we can make sure to
constrain to that and not anything else. It is generally a good practice to
constrain and create references to upstream sketch geometry rather than to solid
features since solid features are more likely to change, and thus result in
broken references which must be repaired.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Leg%202.PNG" /&gt;
&lt;p&gt;Next we extrude this profile, add some fillets to the HSS extrusion, and add 4
holes in the base plate.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Leg%203.PNG" /&gt;
&lt;p&gt;Finally, we add a McMaster-Carr part using the built-in importing feature. We do
this while still in the Leg component since it will be included in the
rectangular pattern that we are about to do and makes some sense to think of it
as part of the leg assembly. However, it could also be added in at the top level
since that probably more realisticly reflects its location in the BOM.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Leg%204.png" /&gt;
&lt;p&gt;After doing that and adding a caster, bolt, and nut, we have a leg assembly
ready to be patterned:&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Leg%205.PNG" /&gt;
&lt;p&gt;We then activate the top level and create a Component Pattern. Select Components
as the type and click on the Leg. Click on the global X axis to set the pattern
direction and in the distance we can enter in one of our parameters, or an
expression using parameters. Our values will be: &lt;cite&gt;width - leg_width&lt;/cite&gt; for the x
value and &lt;cite&gt;depth - leg_width&lt;/cite&gt; for the z value, and adding a negative for the
z-direction.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Pattern%201.PNG" /&gt;
&lt;/div&gt;
&lt;div class="section" id="cross-members"&gt;
&lt;h3&gt;Cross Members&lt;/h3&gt;
&lt;p&gt;Next we add cross members. The procedure is the same as for the legs, making
sure to hide created bodies in order to create relations to existing sketch
geometry and not solid geometry.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Cross%201.PNG" /&gt;
&lt;p&gt;We extrude, add fillets, and pattern components to add additional members.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Cross%202.PNG" /&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Cross%203.PNG" /&gt;
&lt;/div&gt;
&lt;div class="section" id="side-plates"&gt;
&lt;h3&gt;Side Plates&lt;/h3&gt;
&lt;p&gt;To create side plates we first add a plane at the front face of the table. This
can be set by either keying in an offset equal to &lt;cite&gt;depth/2&lt;/cite&gt; or by offsetting to a
sketch point. Then, we sketch in some geometry for the plate, and make sure to
dimension it in a way that allows it to be scaled in the x-direction without
error. Additional expressions could be added here, for example to set the length
of the horizontal side lines to be some fraction of the overall width.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Side%20plate%201.PNG" /&gt;
&lt;/div&gt;
&lt;div class="section" id="top"&gt;
&lt;h3&gt;Top&lt;/h3&gt;
&lt;p&gt;Lastly, the top plate is added. Here we simply re-use the layout sketches
created initially. In the extrude dialog box, set the Start property to From
Object and select the construction plane. Then, add a Push/Pull (offset face)
feature to extend the sides over the legs, if desired.&lt;/p&gt;
&lt;img alt="" src="https://robsiegwart.nyc3.digitaloceanspaces.com/Images/layout-sketches-and-parameter-driven-design-in-fusion-360/Top%201.PNG" /&gt;
&lt;/div&gt;
&lt;div class="section" id="conclusion"&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;To complete the design I add Ground features to each component to prevent
components from moving. Apply any physical properties through the Physical
Materials context menu and at this point the design should be complete. Scaling
and resizing of the table is easy and can be accomplished by changing values in
the Parameters dialog box.&lt;/p&gt;
&lt;p&gt;The key points to this approach are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Create parameters specifying all relevant and pertinent properties for your
design&lt;/li&gt;
&lt;li&gt;Create as much reference geometry in the top level as needed: sketches,
planes, axes&lt;/li&gt;
&lt;li&gt;Create components for parts&lt;/li&gt;
&lt;li&gt;Make sketches at the component level reference top-level sketches and
reference geometry&lt;/li&gt;
&lt;li&gt;Make sketch and feature dimensions incorporate parameters or parameter
expressions&lt;/li&gt;
&lt;li&gt;Add Grounds to components at the end of the timeline&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="CAD"/></entry></feed>