V0.19 Top Down Assembly Design Using Assembly4--Update #11

Show off your FreeCAD projects here!
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #8

Post by ppemawm »

jemcomcast wrote: Thu Oct 08, 2020 2:35 pm I am interested in where you placed the two master sketches that you mentioned?
If the assembly master sketch is used for animation it is placed in the Model part of the Assembly4 file. If not, I usually include it in the first body in the Parts folder as shown in the image to which you referred.

I will try to contact you via PM with the file links.
"It is a poor workman who blames his tools..." ;)
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #9 Sterling Helicopter Animation

Post by ppemawm »

This is an example of using simple sketches and expressions as assembly solvers to animate a more complex mechanism. The model was built from plans designed by Ed van den Berg of the Netherlands (see details at http://zeamon.com/wordpress/?p=733).

The challenge in this model is to animate all the moving parts so that proper operation can be verified. There are three separate sub-assemblies requiring animation: all rotating bodies (main rotor, tail rotor, bevel gears, and flywheel shaft), the displacer piston, and the working piston.

Several comments regarding the work processes are in the captions of the following images:

The displacer piston of the Sterling motor provides power to the main flywheel shaft which splits power via bevel gears to the tail rotor, main rotor, and the working piston.  How the Sterling motor actually works is a mystery to me, something I should probably research to satisfy my curiosity.<br /><br />Unfortunately, the Sterling motor does not provide enough power to the main rotor to lift its and the airframe weight, not to mention the heat source.  However, it still makes a great table top demonstration model.<br /><br />As in other examples presented previously all the bodies were created in-context in one file using Assembly4 and PartDesign workbenches.  The bodies were organized in file folders under the Parts folder.<br /><br />However, the assembly Model tree cannot be organized with folders since the body links will not be visible to the assembly insert/add and edit tools.  In retrospect, due to the sheer number of bodies, they probably should have been created in several sub-assembly Assembly4 files with those assembled in one top-level file to better organize the assembly Model tree.  I'll save that approach for a future project.<br /><br />The basic modelling approach is to create a body with Assembly4 which includes a default LCS &quot;connector&quot;.  The body is then assembled with Assembly4 using the default LCS before starting modelling so that it can be in-context in the proper location as the features are added to the Body link.  LCS's are added to the appropriate sketches in the body at all of the attachment points for other interfacing bodies.<br /><br />No assembly master sketches were used for this model.  Three animation sketches were created in Model for all rotating bodies and the two piston/connecting rod assemblies as shown in the next images.
The displacer piston of the Sterling motor provides power to the main flywheel shaft which splits power via bevel gears to the tail rotor, main rotor, and the working piston. How the Sterling motor actually works is a mystery to me, something I should probably research to satisfy my curiosity.

Unfortunately, the Sterling motor does not provide enough power to the main rotor to lift its and the airframe weight, not to mention the heat source. However, it still makes a great table top demonstration model.

As in other examples presented previously all the bodies were created in-context in one file using Assembly4 and PartDesign workbenches. The bodies were organized in file folders under the Parts folder.

However, the assembly Model tree cannot be organized with folders since the body links will not be visible to the assembly insert/add and edit tools. In retrospect, due to the sheer number of bodies, they probably should have been created in several sub-assembly Assembly4 files with those assembled in one top-level file to better organize the assembly Model tree. I'll save that approach for a future project.

The basic modelling approach is to create a body with Assembly4 which includes a default LCS "connector". The body is then assembled with Assembly4 using the default LCS before starting modelling so that it can be in-context in the proper location as the features are added to the Body link. LCS's are added to the appropriate sketches in the body at all of the attachment points for other interfacing bodies.

No assembly master sketches were used for this model. Three animation sketches were created in Model for all rotating bodies and the two piston/connecting rod assemblies as shown in the next images.
Picture1_model.jpg (86.07 KiB) Viewed 3491 times
A simple sketch attached to the Model origin XZ plane was used to constrain the shafts of all of the rotating bodies as shown in this image.  LCS's were attached to this sketch at appropriate vertices/edges using Normal to Edge map mode.<br /><br />One independent Assembly4 Variable was used for the angular displacement of each shaft.  The LCS Z-axis attachment offset is defined with this variable as shown in the LCS property panel.<br /><br />All of the shafts have the same rotation angle with exception of the main rotor which has about a 1:3.5 ratio set by the pulley diameters.  I.e. the main rotor makes one revolution to every 3.5 revolutions and strokes of the tail rotor and pistons.  The bevel gear ratios are 1:1.<br /><br />When the rotation angle is looped through 360 deg, each LCS rotates as well as any body attached (assembled) to them.  The inset image shows all of the rotating bodies controlled by the variable.
A simple sketch attached to the Model origin XZ plane was used to constrain the shafts of all of the rotating bodies as shown in this image. LCS's were attached to this sketch at appropriate vertices/edges using Normal to Edge map mode.

One independent Assembly4 Variable was used for the angular displacement of each shaft. The LCS Z-axis attachment offset is defined with this variable as shown in the LCS property panel.

All of the shafts have the same rotation angle with exception of the main rotor which has about a 1:3.5 ratio set by the pulley diameters. I.e. the main rotor makes one revolution to every 3.5 revolutions and strokes of the tail rotor and pistons. The bevel gear ratios are 1:1.

When the rotation angle is looped through 360 deg, each LCS rotates as well as any body attached (assembled) to them. The inset image shows all of the rotating bodies controlled by the variable.
Picture2_LCSs.jpg (90.37 KiB) Viewed 3491 times
A second simple sketch attached to the Model origin XY plane is used to control the crankshaft/connecting rod motion as shown in the above image.  The crank angle expression is defined with the same rotation variable as the rotating bodies.  <br /><br />Note that the joint where the con rod connects to the piston rod is constrained by a point-on-line sketch constraint to provide a slider motion.  An LCS is attached to this sketch vertex and aligned with the origin for assembly of the piston rod.<br /><br />Carbon copies of this sketch were used to create all of the features of the connecting rod.<br /><br />Each reciprocating body was assembled using the default LCS's and then created in proper sequence.
A second simple sketch attached to the Model origin XY plane is used to control the crankshaft/connecting rod motion as shown in the above image. The crank angle expression is defined with the same rotation variable as the rotating bodies.

Note that the joint where the con rod connects to the piston rod is constrained by a point-on-line sketch constraint to provide a slider motion. An LCS is attached to this sketch vertex and aligned with the origin for assembly of the piston rod.

Carbon copies of this sketch were used to create all of the features of the connecting rod.

Each reciprocating body was assembled using the default LCS's and then created in proper sequence.
Picture3_displacer.jpg (95.8 KiB) Viewed 3491 times
A third sketch attached to the YZ origin plane is used for the working piston con rod in a similar manner as the displacer piston con rod.  An LCS is attached to the sketch and aligned with the center of the crankshaft for assembling the mating joint piece.  The remaining bodies were assembled and then created as before.
A third sketch attached to the YZ origin plane is used for the working piston con rod in a similar manner as the displacer piston con rod. An LCS is attached to the sketch and aligned with the center of the crankshaft for assembling the mating joint piece. The remaining bodies were assembled and then created as before.
Picture4_workpiston.jpg (85.73 KiB) Viewed 3491 times
The complete assembly can be animated using the Assembly4 animator as shown in this image.  The GIF was made from images of 45 deg increments of the rotation angle variable.
The complete assembly can be animated using the Assembly4 animator as shown in this image. The GIF was made from images of 45 deg increments of the rotation angle variable.
helicopter.gif (964.07 KiB) Viewed 3491 times
.
For my next assembly design project I would like to study the use of sub-assembly files to simplify the top assembly file. So, stay tuned.

OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.22670 (Git)
Build type: Release
Branch: master
Hash: 12155f4aab09047c5697db0c1b3cf93b02edda03
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/United States (en_US)
"It is a poor workman who blames his tools..." ;)
User avatar
Beaver
Posts: 3
Joined: Wed Oct 14, 2020 4:41 pm
Location: Minnesota
Contact:

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #9

Post by Beaver »

Unfortunately, the Sterling motor does not provide enough power to the main rotor to lift its and the airframe weight, not to mention the heat source. However, it still makes a great table top demonstration model.
A bummer that it can't, though unsurprising. Very cool animation!
chrisb
Veteran
Posts: 53786
Joined: Tue Mar 17, 2015 9:14 am

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #9

Post by chrisb »

Absolutely great!
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #10 Push Mower Sub-Assemblies

Post by ppemawm »

In the last project (Sterling Helicopter) all of the parts were created and assembled in one file. Although convenient in many respects it also gets to be quite cumbersome when the number of parts exceeds about twenty or so since the tree is longer than the screen is tall. An alternative to this is to divide the parts up into sub-assemblies in their own file and then assemble them into a top-assembly file. Fortunately, Assembly4 accommodates this quite nicely while still allowing design to be done in-context. You can work either in the top-assembly or sub-assembly files.

The work process starts with creating the top-assembly and sub-assembly files using "Create a new Assembly4 model" for each and then assembling the sub-assembly in the top-assembly Model using "Insert a link to a part" before creating any body or feature. Each of the sub-assembly files have to be saved and opened at this point. In this manner, you can begin modelling in either the sub-assembly files or the top-assembly file links in-context as the assembly design evolves. I use the default LCS in the Assembly4 body to locate it in the sub-assembly. That way you can either work on the body in the Part folder of the sub-assembly at the global axis or in-context in the sub-assembly link. Fantastic!

All the parts in the assembly shown in the first image can be found in the restoration video: https://www.youtube.com/watch?v=e5vCJz3mK6w

These are all of the parts to be created for the push mower assembly which I am sure all you greybeards will recognize.<br /><br />The size of the cutting reel is about 24 in. long and the wheel diameter is about 10 in. to get an idea of scale.<br /><br />The first thing to do in the project is to decide which parts, limited to no more than 20 or so in one file, should be in each sub-assembly. The sub-assemblies I chose are primarily divided between rotating and stationary parts: the cutting reel including the blade assembly, bearing races with preload springs, and the pinion gears; the height adjusting roller assembly; the wheel and tire assembly; the frame including the end pieces and the cutting bar assembly; and the handle assembly.
These are all of the parts to be created for the push mower assembly which I am sure all you greybeards will recognize.

The size of the cutting reel is about 24 in. long and the wheel diameter is about 10 in. to get an idea of scale.

The first thing to do in the project is to decide which parts, limited to no more than 20 or so in one file, should be in each sub-assembly. The sub-assemblies I chose are primarily divided between rotating and stationary parts: the cutting reel including the blade assembly, bearing races with preload springs, and the pinion gears; the height adjusting roller assembly; the wheel and tire assembly; the frame including the end pieces and the cutting bar assembly; and the handle assembly.
Capture_AllParts.JPG (127.05 KiB) Viewed 3005 times
This image shows all of the parts created thus far.  I am currently working on the end pieces for the frame sub-assembly, not shown in this image.<br /><br />The top-assembly file shown in the Combo View above includes the cutting reel and wheel sub-assemblies assembled in their proper place.  They were located using the Model LCS_Origin for the reel and an LCS_1_wheel that was added for the wheel sub-assembly.  The latter was attached to the master sketch of the gear layout shown in the image below.<br /><br />The Tree View in the right side panel shows all of the parts in the cutting reel sub-assembly which nicely fits within the panel dimensions.
This image shows all of the parts created thus far. I am currently working on the end pieces for the frame sub-assembly, not shown in this image.

The top-assembly file shown in the Combo View above includes the cutting reel and wheel sub-assemblies assembled in their proper place. They were located using the Model LCS_Origin for the reel and an LCS_1_wheel that was added for the wheel sub-assembly. The latter was attached to the master sketch of the gear layout shown in the image below.

The Tree View in the right side panel shows all of the parts in the cutting reel sub-assembly which nicely fits within the panel dimensions.
Capture_top-assy.JPG (267.29 KiB) Viewed 3005 times
This is a view of the cutting reel sub-assembly file.  Note that each body of the assembly is located  in the Assembly4 folder and assembled in the Model.  If any of the parts need to be saved for reuse in other files, they could have been just as easily created in their own individual file and assembled in the sub-assembly as required.<br /><br />I began with the cutting blades first using a helix additive sweep and assembling them with polar link arrays.  The spacers for the blades turned out to be a bit tricky because the mounting tab and rivets are attached to the helical surface of the blade.  I did this by adding a blade helix sweep to the spacer and then trimming it to proper shape with the groove tool as shown in the next image.<br /><br />The hole sketches for the blade rivet was attached to the blade helix object using the FrenetTN mode and spaced along the helix using the Map Path Parameter property.  This insured that the holes were perpendicular to the helix surface.<br /><br />The pinion gear tooth profile pad was created with the PartDesign &gt; InvoluteGear wire object.  The gear module and pitch diameter were graphically derived from the gear layout master sketch discussed in the following image.
This is a view of the cutting reel sub-assembly file. Note that each body of the assembly is located in the Assembly4 folder and assembled in the Model. If any of the parts need to be saved for reuse in other files, they could have been just as easily created in their own individual file and assembled in the sub-assembly as required.

I began with the cutting blades first using a helix additive sweep and assembling them with polar link arrays. The spacers for the blades turned out to be a bit tricky because the mounting tab and rivets are attached to the helical surface of the blade. I did this by adding a blade helix sweep to the spacer and then trimming it to proper shape with the groove tool as shown in the next image.

The hole sketches for the blade rivet was attached to the blade helix object using the FrenetTN mode and spaced along the helix using the Map Path Parameter property. This insured that the holes were perpendicular to the helix surface.

The pinion gear tooth profile pad was created with the PartDesign > InvoluteGear wire object. The gear module and pitch diameter were graphically derived from the gear layout master sketch discussed in the following image.
Capture_reel-subassy.JPG (229.54 KiB) Viewed 3005 times
The detail features of the blade spacers are shown in this image.  <br /><br />An additive sweep of the blade profile using the same sketch and helix shapebinder as the blade, offset one blade thickness, were used to create the mounting tab. The blade is shown in-context highlighted in green.<br /><br />The inset shows the groove sketch used to trim the tab to size after the polar pattern of the offset blade and rivet hole features.  The rivet hole was added in the same manner as the blade to insure an exact match with the blade.
The detail features of the blade spacers are shown in this image.

An additive sweep of the blade profile using the same sketch and helix shapebinder as the blade, offset one blade thickness, were used to create the mounting tab. The blade is shown in-context highlighted in green.

The inset shows the groove sketch used to trim the tab to size after the polar pattern of the offset blade and rivet hole features. The rivet hole was added in the same manner as the blade to insure an exact match with the blade.
Capture_spacer2.JPG (68.68 KiB) Viewed 3005 times
A master sketch of the gear layout was used to set all the proportions of the gears and attachment points for all of the parts in the frame sub-assembly.<br /><br />I first estimated the pitch diameter of the ring gear based on the known dimension of the wheel tire outer diameter (254 mm).  The tooth numbers (pinion 12, ring gear 56) are also known from the video which then sets the center distance of the gears (shown as reference dimension of 77 mm).  <br /><br />The rest of the proportions for the frame attachments can be finalized as the design of the frame components evolves.<br /><br />This master sketch will also be used to attached all of the mounting LCS 'connectors' for the frame sub-assembly and a carbon copy for the end pieces currently in work.
A master sketch of the gear layout was used to set all the proportions of the gears and attachment points for all of the parts in the frame sub-assembly.

I first estimated the pitch diameter of the ring gear based on the known dimension of the wheel tire outer diameter (254 mm). The tooth numbers (pinion 12, ring gear 56) are also known from the video which then sets the center distance of the gears (shown as reference dimension of 77 mm).

The rest of the proportions for the frame attachments can be finalized as the design of the frame components evolves.

This master sketch will also be used to attached all of the mounting LCS 'connectors' for the frame sub-assembly and a carbon copy for the end pieces currently in work.
Capture_gear-mastersketch2.JPG (270.55 KiB) Viewed 3005 times
phpBB [video]

One convenient aspect of putting all of the rotating parts into one of the sub-assembly pays off if you want to animate the moving parts to check for proper operation and clearances as shown in the above video. Variables for the cutting reel and the wheel sub-assemblies were defined in the top-assembly Model. The independent variable is the rotation angle of the cutting reel about its axis and the dependent variable is the wheel rotation which is 12/56 of the reel rotation. You can probably argue that the wheel angle should be the independent variable and the reel, dependent, since the wheel turns the reel not vice versa.

The attachment offset angle of the reel sub-assembly link about its X-axis is defined with an Expression and the variable rotation_angle. The LCS_1_wheel attachment offset angle was used to animate the wheel sub-assembly with an Expression and the dependent variable ring_gear.

I will continue to work on the bodies for the frame sub-assemblies and report progress in additional posts if there seems to be continuing interest. Hopefully, by now you can already see how the use of sub-assembly files simplifies the top-assembly and adds more flexibility to the in-context modelling process and animation.


OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.22894 (Git)
Build type: Release
Branch: master
Hash: 9eb080488d970d313c538473e7272117ea0a7cd1
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/United States (en_US)
"It is a poor workman who blames his tools..." ;)
heron
Posts: 307
Joined: Mon Apr 20, 2020 5:32 pm

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #10

Post by heron »

Hello,

First of all I would like to congratulate you on this great project! just like the rest in this thread.
I am following your progress to learn from you and also to see the solution you give to the subassembly animation. For now, I see that it consists of dividing the subassemblies into rotary and stationary. The problem I see this way you cannot put static parts inside a rotatory subassembly; all parts of a rotatory subassembly have to rotate.
It was a bit difficult for me to understand the whole, in addition to the language (excuse my English, I use the translator), due to the fact that the cutting reel is located in the center of the wheel, instead of 77 mm offset from the master sketch of the gear layout.
Greetings and thanks for sharing.
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #10

Post by ppemawm »

HK sxx wrote: Fri Nov 13, 2020 5:06 am The problem I see this way you cannot put static parts inside a rotatory sub-assembly; all parts of a rotatory sub-assembly have to rotate.
That is exactly why I chose to organize it this way in the top-assembly file so it would be easier to animate the rotating parts. You could include stationary parts in with the rotating part's sub-assembly link, but then you have to specify the variable rotation angle of each rotating body link rather than the sub-assembly part link. Remember that you can model all bodies in-context in the top-assembly file if you first assemble each sub-assembly link into the Assembly4 Model as you create them.
HK sxx wrote: Fri Nov 13, 2020 5:06 am It was a bit difficult for me to understand the whole, in addition to the language (excuse my English, I use the translator), due to the fact that the cutting reel is located in the center of the wheel, instead of 77 mm offset from the master sketch of the gear layout.
Sorry, but the images are a bit misleading. Perhaps a top view will better help in understanding the arrangement:

The cutting reel sub-assembly link is attached to the Model parent LCS_origin whereas the wheel sub-assembly is attached to LCS_1_wheel which is attached in turn to the appropriate circular edge in the master sketch as shown in the LCS property panel.<br /><br />The wheel sub-assemblies are then offset from the LCS to its proper axial (X) global position using the Assembly Attachment Offset &gt; Position property.
The cutting reel sub-assembly link is attached to the Model parent LCS_origin whereas the wheel sub-assembly is attached to LCS_1_wheel which is attached in turn to the appropriate circular edge in the master sketch as shown in the LCS property panel.

The wheel sub-assemblies are then offset from the LCS to its proper axial (X) global position using the Assembly Attachment Offset > Position property.
Capture_top-view.JPG (228.09 KiB) Viewed 2780 times
"It is a poor workman who blames his tools..." ;)
heron
Posts: 307
Joined: Mon Apr 20, 2020 5:32 pm

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #10

Post by heron »

Thanks a lot for your feedback!!!
ppemawm wrote: Fri Nov 13, 2020 5:07 pm You could include stationary parts in with the rotating part's sub-assembly link, but then you have to specify the variable rotation angle of each rotating body link rather than the sub-assembly part link.
I'm not sure I'm getting it right, but I think doing this creates cyclic dependencies.
I've been trying this. I set one top assembly variable into a sub-assembly body link and it worked, Freecad complained but it worked. Later, when i reopened the file, it was completly broken, with DAG errors or something like that, I don't remember well.
I suspect that zolko is already on this matter, "variant link" could be the solution, according to the conversation: https://github.com/Zolko-123/FreeCAD_As ... issues/108.
ppemawm wrote: Fri Nov 13, 2020 5:07 pm Perhaps a top view will better help in understanding the arrangement:
:oops: :oops: :oops: :oops: :oops:
Ok, ok, ok, now I can see it well, the assembly is completely correct. I promise you yesterday I saw the cutting reel in the center of the wheel, even in the youtube video. I guess I spent a long time to understand the whole post and I was obfuscated. My apologies, master.

Thanks again and Hasta la vista!!! :D
User avatar
ppemawm
Veteran
Posts: 1240
Joined: Fri May 17, 2013 3:54 pm
Location: New York NY USA

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #10

Post by ppemawm »

HK sxx wrote: Fri Nov 13, 2020 7:39 pm I'm not sure I'm getting it right, but I think doing this creates cyclic dependencies.
Not if you set the variable at the top assembly Model level and use it only in that file for the LCS, body links, and/or sub-assembly link offsets:

Capture_tree.JPG
Capture_tree.JPG (59.32 KiB) Viewed 2713 times
.
Or, see comment by Zolko: https://forum.freecadweb.org/viewtopic. ... 80#p441343
Or, aapo's comments: https://forum.freecadweb.org/viewtopic. ... 20#p417293
"The variables in the sub-assembly files cannot depend on the top-assembly variables...otherwise they cause a circular dependency.
"It is a poor workman who blames his tools..." ;)
Donatello
Posts: 19
Joined: Sat May 09, 2020 10:22 pm

Re: V0.19 Top Down Assembly Design Using Assembly4--Update #10

Post by Donatello »

@ ppemawm
Your work is completely amazing ! Congratulations !
Could you if you are agree with that bring some pictures of your great work to the Wikimedia FreeCAD page. It would be a wonderfull showcase for FreeCAD…

Thanks again for your great job, you put the modeling design at a high level.
Post Reply