FreeCAD-Doc/localwiki/PartDesign_project.html
2018-07-08 12:11:49 -05:00

204 lines
15 KiB
HTML

<html><head><title>PartDesign project</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>PartDesign project</h1></div>
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div class="mw-parser-output"><p>Here the project plan for the <b>PartDesign</b> as part of the <a href="Development_roadmap.html" title="Development roadmap">Development roadmap</a>.
</p><p><br />
</p>
<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#Purpose_and_principles"><span class="tocnumber">1</span> <span class="toctext">Purpose and principles</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Outcome"><span class="tocnumber">2</span> <span class="toctext">Outcome</span></a>
<ul>
<li class="toclevel-2 tocsection-3"><a href="#Sketcher"><span class="tocnumber">2.1</span> <span class="toctext">Sketcher</span></a></li>
<li class="toclevel-2 tocsection-4"><a href="#PartDesign"><span class="tocnumber">2.2</span> <span class="toctext">PartDesign</span></a>
<ul>
<li class="toclevel-3 tocsection-5"><a href="#Body_feature"><span class="tocnumber">2.2.1</span> <span class="toctext">Body feature</span></a></li>
<li class="toclevel-3 tocsection-6"><a href="#Pad_feature"><span class="tocnumber">2.2.2</span> <span class="toctext">Pad feature</span></a></li>
<li class="toclevel-3 tocsection-7"><a href="#Pocket_feature"><span class="tocnumber">2.2.3</span> <span class="toctext">Pocket feature</span></a></li>
<li class="toclevel-3 tocsection-8"><a href="#Bore_feature"><span class="tocnumber">2.2.4</span> <span class="toctext">Bore feature</span></a></li>
<li class="toclevel-3 tocsection-9"><a href="#Pattern"><span class="tocnumber">2.2.5</span> <span class="toctext">Pattern</span></a>
<ul>
<li class="toclevel-4 tocsection-10"><a href="#RectangularPattern"><span class="tocnumber">2.2.5.1</span> <span class="toctext"><b>RectangularPattern</b></span></a></li>
<li class="toclevel-4 tocsection-11"><a href="#CircularPattern"><span class="tocnumber">2.2.5.2</span> <span class="toctext"><b>CircularPattern</b></span></a></li>
<li class="toclevel-4 tocsection-12"><a href="#ScriptedPattern"><span class="tocnumber">2.2.5.3</span> <span class="toctext"><b>ScriptedPattern</b></span></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1 tocsection-13"><a href="#Brainstorming"><span class="tocnumber">3</span> <span class="toctext">Brainstorming</span></a>
<ul>
<li class="toclevel-2 tocsection-14"><a href="#What_others_do"><span class="tocnumber">3.1</span> <span class="toctext">What others do</span></a></li>
<li class="toclevel-2 tocsection-15"><a href="#Pattern_Implementation"><span class="tocnumber">3.2</span> <span class="toctext">Pattern Implementation</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-16"><a href="#Organizing"><span class="tocnumber">4</span> <span class="toctext">Organizing</span></a>
<ul>
<li class="toclevel-2 tocsection-17"><a href="#Modeling_objects_hierarchy"><span class="tocnumber">4.1</span> <span class="toctext">Modeling objects hierarchy</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-18"><a href="#Tutorials"><span class="tocnumber">5</span> <span class="toctext">Tutorials</span></a></li>
<li class="toclevel-1 tocsection-19"><a href="#Next_actions"><span class="tocnumber">6</span> <span class="toctext">Next actions</span></a>
<ul>
<li class="toclevel-2 tocsection-20"><a href="#Body"><span class="tocnumber">6.1</span> <span class="toctext">Body</span></a></li>
<li class="toclevel-2 tocsection-21"><a href="#Additional_features"><span class="tocnumber">6.2</span> <span class="toctext">Additional features</span></a>
<ul>
<li class="toclevel-3 tocsection-22"><a href="#Pattern_2"><span class="tocnumber">6.2.1</span> <span class="toctext">Pattern</span></a></li>
<li class="toclevel-3 tocsection-23"><a href="#BoreHole"><span class="tocnumber">6.2.2</span> <span class="toctext">BoreHole</span></a></li>
<li class="toclevel-3 tocsection-24"><a href="#Sweep"><span class="tocnumber">6.2.3</span> <span class="toctext">Sweep</span></a></li>
<li class="toclevel-3 tocsection-25"><a href="#Revolve"><span class="tocnumber">6.2.4</span> <span class="toctext">Revolve</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1 tocsection-26"><a href="#TODO_List"><span class="tocnumber">7</span> <span class="toctext">TODO List</span></a></li>
</ul>
</div>
<h2><span class="mw-headline" id="Purpose_and_principles">Purpose and principles</span></h2>
<p>This is a software development project aimed to implement a Part Design capabilities. Its about
implementing some <b>core features</b> into the CAD modules of FreeCAD, <b>Part, PartDesign and Assembly</b>.
</p><p>The development steps are planed here and tracked in the Issue tracking system to get a well formed
change log: <a rel="nofollow" class="external text" href="http://apps.sourceforge.net/mantisbt/free-cad/my_view_page.php">Issue tracker</a>
</p>
<h2><span class="mw-headline" id="Outcome">Outcome</span></h2>
<p>Aim of the project is to enable FreeCAD accomplish a design task like the one at the right.
</p>
<div class="floatright"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Gripper.jpg" class="image"><img alt="Gripper.jpg" src="300px-Gripper.jpg" width="300" height="267" srcset="/wiki/images/thumb/7/78/Gripper.jpg/450px-Gripper.jpg 1.5x, /wiki/images/thumb/7/78/Gripper.jpg/600px-Gripper.jpg 2x" /></a></div>
<p><br />
This will be achived by using the <b>Sketcher</b> and the <b>PartDesign</b> to design
special part and <b>Part</b> to load standard part as STEP (like the linear bearing).
The <b>Assembly</b> puts it all together with constrains.
</p><p>Also an important outcome is the <b>Feature editing methodology</b>. Which gives the
user an intuitive approach to instantiating and editing Features. This is importand
for all other Modules and Workbenches to be come, to comply to a consistent user
interface!
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:TaskPanel.jpg" class="image"><img alt="TaskPanel.jpg" src="400px-TaskPanel.jpg" width="400" height="311" srcset="/wiki/images/thumb/7/7e/TaskPanel.jpg/600px-TaskPanel.jpg 1.5x, /wiki/images/thumb/7/7e/TaskPanel.jpg/800px-TaskPanel.jpg 2x" /></a>
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:CAD_Modeling.gif" class="image"><img alt="CAD Modeling.gif" src="CAD_Modeling.gif" width="399" height="300" /></a>
</p>
<h3><span class="mw-headline" id="Sketcher">Sketcher</span></h3>
<p>A parametric sketcher with a geometrical constraints solver, for more details see the <b><a href="Sketcher_project.html" title="Sketcher project">Sketcher project</a></b>.
</p>
<h3><span class="mw-headline" id="PartDesign">PartDesign</span></h3>
<h4><span class="mw-headline" id="Body_feature">Body feature</span></h4>
<p>Since a history based modeling can have a lot of steps leading
to the final shape a bracket is needed. Thats the Body, which
holds the final outcome of the modeling and acts as a group to
all the features of the history tree.
</p><p><br />
</p>
<h4><span class="mw-headline" id="Pad_feature">Pad feature</span></h4>
<p>A Pad feature extrude a Sketch (or any Part2DObject) in its normal direction.
Always guaranty a solid, or fail.
</p>
<h4><span class="mw-headline" id="Pocket_feature">Pocket feature</span></h4>
<p>Imprint a sketch in a base solid either defined by depth or "Up to last | Up to first".
Also guaranty a solid.
</p>
<h4><span class="mw-headline" id="Bore_feature">Bore feature</span></h4>
<p>Very good bore parameter definition from the NaroCad specification:
</p>
<table class="wikitable" style="text-align:left">
<caption> <b>NaroCAD Bore definitions</b>
</caption>
<tr>
<td> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Counterbore_settings.png" class="image"><img alt="Counterbore settings.png" src="300px-Counterbore_settings.png" width="300" height="248" srcset="/wiki/images/3/3b/Counterbore_settings.png 1.5x" /></a>
</td>
<td> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Counterbore_settings2.png" class="image"><img alt="Counterbore settings2.png" src="300px-Counterbore_settings2.png" width="300" height="248" srcset="/wiki/images/5/53/Counterbore_settings2.png 1.5x" /></a>
</td>
<td> <a href="https://www.freecadweb.org/wiki/index.php?title=File:Countersink_settings.png" class="image"><img alt="Countersink settings.png" src="300px-Countersink_settings.png" width="300" height="249" srcset="/wiki/images/3/3d/Countersink_settings.png 1.5x" /></a>
</td></tr></table>
<h4><span class="mw-headline" id="Pattern">Pattern</span></h4>
<p>Replicate one of the above features
</p>
<h5><span class="mw-headline" id="RectangularPattern"><b>RectangularPattern</b></span></h5>
<p>Replicate one of the above features along an x,y pattern
</p>
<h5><span class="mw-headline" id="CircularPattern"><b>CircularPattern</b></span></h5>
<p>Replicate one of the above features along a pattern in polar coordinates
</p>
<h5><span class="mw-headline" id="ScriptedPattern"><b>ScriptedPattern</b></span></h5>
<p>Replicate one of the above features according to a general rule provided in form of a script.
</p>
<h2><span class="mw-headline" id="Brainstorming">Brainstorming</span></h2>
<h3><span class="mw-headline" id="What_others_do">What others do</span></h3>
<ul><li> <a rel="nofollow" class="external text" href="http://www.youtube.com/watch?v=cVXQmDStHus">SolidWorks examples</a></li></ul>
<h3><span class="mw-headline" id="Pattern_Implementation">Pattern Implementation</span></h3>
<p>The Pattern feature class can be implemented as a tabular pattern and serve as a base class for the Rectangular, Circular and Scripted Pattern features. These derived classes will only have to fill in the repetitions table of the base class.
</p><p>Each line of the repetitions table of the base Pattern class has to hold at least a transformation matrix to applied to the Placement of the original feature to be replicated. Additionally we could have optional transformation rules like for example manipulating some parameter value the feature to be replicated (e.g. in order to create a pattern of holes with varying radius).
</p>
<h2><span class="mw-headline" id="Organizing">Organizing</span></h2>
<h3><span class="mw-headline" id="Modeling_objects_hierarchy">Modeling objects hierarchy</span></h3>
<p>This <a rel="nofollow" class="external text" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML</a> chart shows the planed object hierarchy and its relationships. Yellow is a abstract base class, blue implemented and grey is planed.
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=File:PartDesign_ModlingObjectsHirachy.png" class="image"><img alt="PartDesign ModlingObjectsHirachy.png" src="1000px-PartDesign_ModlingObjectsHirachy.png" width="1000" height="758" srcset="/wiki/images/thumb/f/f0/PartDesign_ModlingObjectsHirachy.png/1500px-PartDesign_ModlingObjectsHirachy.png 1.5x, /wiki/images/thumb/f/f0/PartDesign_ModlingObjectsHirachy.png/2000px-PartDesign_ModlingObjectsHirachy.png 2x" /></a>
</p>
<h2><span class="mw-headline" id="Tutorials">Tutorials</span></h2>
<p><a href="PartDesign_Bearingholder_Tutorial_I.html" title="PartDesign Bearingholder Tutorial I">PartDesign Bearingholder Tutorial I</a>
</p><p><a href="PartDesign_Bearingholder_Tutorial_II.html" title="PartDesign Bearingholder Tutorial II">PartDesign Bearingholder Tutorial II</a>
</p>
<h2><span class="mw-headline" id="Next_actions">Next actions</span></h2>
<p>Next actions are defined in the <a rel="nofollow" class="external text" href="http://www.freecadweb.org/tracker/roadmap_page.php">Roadmap</a> entry for PartDesign:
</p>
<h3><span class="mw-headline" id="Body">Body</span></h3>
<p>Since the parametric/associative nature of the PartDesign we need finally a "Body" which
groups and organizes a construction history. The Body itself holds the end result as a shape
and has grouped as children the PartDesign features. It also defines the actual head of the
modeling history. Its also related to the <a href="Assembly_project.html" title="Assembly project">Assembly project</a> since its the building block
for products and compounds.
</p>
<h3><span class="mw-headline" id="Additional_features">Additional features</span></h3>
<p>The Pad and Pocket features are the first teaser for the PartDesign. There is still work to do
especially the visibility control and the visual manipulators. But then additional features are needed.
</p>
<h4><span class="mw-headline" id="Pattern_2">Pattern</span></h4>
<p>Pattern feature which repeatingly apply a Pad or Pocket feature according to a circular or rectangular patter.
An <a rel="nofollow" class="external text" href="http://www.ironcad.com/index.php/support/learning-center">Example in IronCAD</a>. <b>Done [jrheinlaender]</b>
</p>
<h4><span class="mw-headline" id="BoreHole">BoreHole</span></h4>
<p>Classical bore hole with all parameters for threading and counter bore....
</p>
<h4><span class="mw-headline" id="Sweep">Sweep</span></h4>
<p>Sweeps a Sketch along a curve and create a Solid.
</p>
<h4><span class="mw-headline" id="Revolve">Revolve</span></h4>
<p>Rotate a Sketch along one of its Axis and a certain angle. <b>Done [jrheinlaender et al.]</b>
</p>
<h2><span class="mw-headline" id="TODO_List">TODO List</span></h2>
<ol><li> <b>Fillet/Chamfer Part</b>
<ol><li> Apply fillet/chamfer operation to different selection types (face/faces pair/whole body)*</li></ol></li>
<li> <b>Pad Tool</b>
<ol><li> Create 'up to next' mode <b>DONE</b> [<b>mrlukeparry</b>]</li>
<li> Create 'up to surface/face' mode [<b>mrlukeparry</b>]</li>
<li> Create draft property for pad <b>DONE</b> [<b>mrlukeparry</b>]</li>
<li> If pad is selected on face automatically create a sketch?</li>
<li> Create 'midplane' mode <b>DONE</b> [<b>jrheinlaender</b>]</li></ol></li>
<li> <b>Pocket Tool</b>
<ol><li> Create 'up to first', 'up to last', 'through all', 'up to surface/face' modes <b>DONE</b> [<b>jrheinlaender</b>]</li>
<li> If pocket is selected on face automatically create a sketch?</li></ol></li>
<li> <b>Revolution Part</b>
<ol><li> Allow a generic line segment/axis to be used for reference</li>
<li> Create 'midplane' mode <b>DONE</b> [<b>jrheinlaender</b>]</li></ol></li>
<li> <b>Hole Feature</b></li>
<li> <b>Pattern Feature</b> <b>DONE</b> [<b>jrheinlaender</b>]</li>
<li> <b>Sweep Feature</b></li>
<li> <b>Body Feature</b></li>
<li> <b>Reference Geometry</b>
<ol><li> Plane</li></ol></li>
<li> <b>Mirror Tool</b> <b>DONE</b> [<b>jrheinlaender</b>]</li>
<li> <b>Copy feature Tool</b></li></ol>
<div style="clear:both"></div>
</div>
</div>
</div><div class="printfooter">
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=PartDesign_project&amp;oldid=122801">http://www.freecadweb.org/wiki/index.php?title=PartDesign_project&amp;oldid=122801</a>"</div>
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigation menu</h2>
</body></html>