My personal notes regarding Geomagic Design. Everything should be taken with a health dose of skepticism, as I am not a mechanical engineer and I am figuring out just enough to accomplish very basic projects like test fixtures for small electronics. I am probably doing everything wrong.
I have limited experience with both Geomagic Design (starting when it was Alibre) and SolidWorks. SolidWorks and AutoCAD are the acknowledged kings of the CAD market, and this is reinforced every time I try to search for information on how to do something in Geomagic. The number of people using CAD is small, the number who actually know what they are doing smaller, the number who post useful, correct, and up-to-date information is smaller yet, and the subset of those using Geomagic is too small to be found. Along with most of the world, I have come to depend on quick web searches to answer any question I have about anything. Most times, I can find the answer within a few minutes. That is not the case with Geomagic. I very much feel as though I am on my own trying to figure out a very complex program.
SolidWorks and AutoCAD are simply too expensive for my budget. The $400 annual "maintenance" fee for Geomagic is as much as I can allocate to something I will use only a few times a year. I used SolidWorks for a while, made affordable by purchasing it through my local community college under the educational license. I eventually gave up on SolidWorks due to the price and hassle of trying to renew the educational license while not actually enrolled. Alibre was priced right at $100, so I made the switch. The price jumped from $100 to $400 when Alibre was purchased by Geomagic, offset by a significant improvement in capability and stability. Alibre crashed a lot, GD was much more stable.
It has been a while, over a year, since I had any need to use Geomagic, and I am essentially starting over from zero in learning how to use Geomagic.
I intensely dislike the ribbon-based UI, especially when the ribbon changes based on the current mode. This makes it much more difficult to find functions, it was so easy before to explore drop-down menus. Now I am constantly hunting through piles of cryptic icons that are always moving around. The ribbon UI is a complete disaster.
I just discovered that the traditional menu UI is still there, just press Alt. This exposed the Tools > Options function where I could finally disable the "Maximize all workspaces" option, disable the ribbon, and always show the menu. Woot! How do I deactivate 2D sketch? Press "Activate 2D sketch" again. The only indication of the mode is the location of the "regenerate to" cursor in the Design Explorer list.
My primary development environment is VS12, Windows81 running inside VMWare Workstation on a Surface Pro 3 (Pogo). The nuisance factor of running Windows inside Windows is more than offset by the convenience of having my entire development environment, including all the installed software, my own configurations and custom tools, and all my source code contained inside a single 200GB virtual drive that I can use on any computer. I have at least 5 different computers that I use regularly: Pogo (Surface Pro 3), ChipPro2 (Surface Pro 2), Hopi (home desktop system), Kofi (office desktop), and Lab1 (workbench). Buying 5 licenses is obviously out of the question, but I see absolutely no reason why any software vendor should be able to restrict me to using a single computer; I am buying the software, not my computer. Using a VM has solved this problem for me, I install everything once in VS12 and use VS12 on whatever computer is convenient.
Unfortunately, GD has some real problems running inside a VM. The graphics performance is poor but still usable. The biggest problem is the cursor. GD will trigger some mode where every few seconds the cursor jumps to the upper left corner of the VM window. This seems to be triggered by child windows with carets, though it is inconsistent. When it happens, it renders GD unusable. I installed GD directly onto Pogo and have not seen this problem, but this puts me back in the position of having to juggle licenses whenever I use a different computer.
I need to install the latest version in VS12.
GD does not handle multiple monitors well. GD is organized in a way that involves frequently launching new instances of the program. Every time, the windows pops up maximized on the primary display. I don't want the window filling that display, which on Pogo is the 10" touchscreen with the microscopic pixels. I want the window to be overlapped on the secondary display, which is my 28" 4K monitor with plenty of room for multiple windows. This results in my repeating the procedure of "new part", wait for the maximized window to appear, find and click the tiny "restore" button, drag the window to the other monitor, resize the window. This becomes very tedious.
The initial placement of objects has long-term effects that can make everything easier or harder (not impossible). I don't know why, but the Geomagic 3D view icons don't seem to be based on the standard XY, extrude into Z orientation. This is confusing later when I am trying to orient assemblies. I can match the 3D icons if, before placing anything, I change the 2D view to ZX-Plane so the X axis is to the left and the Z axis is down. Place the shapes in the lower right quadrant (+X,+Z). Now the 3D view icons will more intuitively relate to the part. However, 3D "UP" is now along the Y axis (not Z) and the Z axis now points out of the front.
My first attempts to place parts in the center of other parts used dimensions to set offsets from the edge. I then recalled the concept of "centerlines" from my Solidworks days. I place a line from one edge of the first part to the opposite edge, then use a "midpoint" constraint to center the endpoints of the line. I learned two things to make this work: use "reference lines" not "lines", and don't place the line directly -- use the constraints. GD will not complain if I use lines instead of reference line, until I place another feature that intersects it or apply a boss/hole that cuts it. Placing the endpoints of the reference line directly onto what I think is the midpoint can be misleading. It is better to let the constraint move the point dramatically and let GD tell me where the midpoint actually is. The procedure to place a centerline is:
Now I have a centerline that I can use for coincident constraints to center other shapes. No dimensions or formulas needed.
Bosses and extruded holes are formed from 2D sketch shapes, extended into a third dimension. This is quick and easy. The trick is to exit the 2D sketch mode before applying the extrusion. The extrusion can be applied while still in the 2D sketch, but I have found this can lead to confusing results.
The extrusion seems to be applied to all shapes in the sketch, so I need to create a new 2D sketch for each type of boss or hole. Don't stuff too many shapes into the same sketch, as it can lead to confusion when trying to apply constraints to features in assemblies.
Positioning Parts in Assemblies
Parts are positioned into assemblies using constraints. The "Quick Constraint" mode makes it fast and easy to set constraints, making it easy to create too many constraints and resulting in over-constrained errors or parts that don't move as expected. The standard constraint mode makes it a bit more obvious what is actually being used to create the constraint.
Parts are frequently inverted when constraints are created. Just click the "flip" button to turn it around.
After the constraints are created, take a minute to review them. Click on each one to highlight the faces or edges used, and delete constraints that are redundant. I want just enough to make the design work, extra constraints will cause frustration later.
Constraints are applied to parts within assemblies to position the parts relative to each other. When I create a new assembly, there is always a foundation piece such as a base plate that I place first. I try to position this on the XY plane with a corner on the origin, then anchor the part.
Constraints will move parts around within the assembly, but they can't move features or subparts within the part. This means that if I need a component to move around based on constraints, it needs to be a distinct part in the assembly.
For example, my first project had a base plate with two pivot blocks,
a second plate with two pivot blocks, and two screws used as hinges.
My first instinct was to organize the parts like this:
Final assembly
Base assembly
Base plate part
Pivot block part
Pivot block part
Swinging assembly
Second plate part
Pivot block part
Pivot block part
Hinge screw part
Hinge screw part
This made sense because the pivot blocks were logically part of the base plate assembly. This caused problems when I needed to change the width of the second plate, because the constraints of the Final Assembly could not move the pivot blocks that were embedded in the Base Assembly. I had to manually change the position of the pivot blocks in the Base Assembly whenever the width of the second plate changed.
A better organization was:
Final Assembly
Base Assembly
Base plate part
Base Pivot Block part
Base Pivot Block part
Swinging Assembly
Second plate part
Pivot Block part
Pivot Block part
Hinge screw part
Hinge screw part
This allowed me to build a constraint chain that automatically
positioned the base pivot blocks based on the width of the second plate.
This allows the second plate to pivot around the screws and the base pivot blocks will move with the second plate.
What is meant by an "open loop"? An open loop is a 2D shape that does not enclose a finite area. This is usually, but not always, an error. Most 2D-to-3D transforms take the 2D shape and extrude it into the third dimension, filling the enclosed area with either matter (boss) or anti-matter (cut or hole). If the shape is not closed, this operation would flood the universe -- not a good thing. The exception to this rule is the creation of thin-wall features, which expand from the 2D feature (point, line, or shape) by a finite amount, then extrude.
I am struggling with sweeps. The concept is not difficult, but creating them has been a struggle. A sweep is a type of extrusion that follows a complex path rather than a straight line. The 2D cross-section of the sweep is defined on one plane and the path is defined on a second plane. The trick is that the path must either start in the 2D plane or intersect it, AND it must be enclosed by the 2D shape. The cross-section must be a closed loop while the path can be an open loop, such as a line or spline.
This is a typical user guide simple-case example.
Really strange stuff happens if the path is outside the shape.
I'm not sure why this crimping is being created. I expected the cross section normal to the path to always be the same. This makes me think the cross section is always in the original plane.
I finally found the "Make Flexible" option.
I have an assembly that includes a part on a hinge that can rotate. I want to connect a ribbon cable of fixed length between a stationary part and the rotating part, then rotate it to check that cable is not over-stretched. I am hoping that I can model the cable with a spline curve and have it compress or stretch (like a spring) as the two endpoints move in relation to each other. I saw mention of a "Make Flexible" option in the user guide, but there was no explanation of where it could be found or what it did.
The "Make Flexible" toggle is found in the context menu for parts and features in the Design Explorer listing. It is usually disabled. From this posting I am assuming that it enables unconstrained motion within sub-assemblies, which is normally disabled as sub-assemblies are usually considered to be rigid bodies.
Unfortunately, this has nothing to do with contorting spline curves. I suspect this requires some intense under-the-hood custom scripting.
This article described a trick to create auto-sizing cables.
First create a plug for each end of the cable. This example is a simple cylinder on a block. The square makes it easy to find the midpoints of each edge and the circle makes it easy to align them. The critical trick here is to center the plug on the 3-axis origin. The cable will be drawn as a line/spline anchored at the origin. It is critical that a plane bisect the anchor point, as the spline must be drawn on that plane. It should be possible to create a reference plane in the proper place and orientation if needed, but I am having difficulty placing the planes properly.
Create a new assembly with 2 copies of the plug. Make sure to position the first copy on the origin. Before doing anything, anchor the first part (on the origin). Now constrain the plugs on the same axis by aligning the sides of the cylinders and the top faces of the squares. This holds them in line while allowing them to be moved closer and further apart. I may need to create a temporary mate of the cylinder faces to flip them around to face each other.
Now the tricky part: I want to create the cable connecting the two plugs using references into the two plug parts. From the assembly edit mode, click "New Part". Select the YZ-Plane and click 2D Sketch to begin the sketch with a profile view of the two plugs. Select "Project to Sketch" to pull parts of the assembly into the sketch, and select the front and back faces of the two cylinders (four entities). In the "Project to Sketch" dialog, select "create reference figure" and "Maintain association to source entity". This will copy the entities as references, not actual shapes, and they will automatically update when the source object is moved.
I draw the path of the cable as a "spline by reference points" on the YZ plane from one plug to the other, anchoring each end on the center point of the cylinders. Deactivate the 2D sketch, then activate 2D sketch on the face of one of the cylinders. Draw a small concentric circle to serve as the profile for the sweep and deactivate 2D sketch.
With the circle still selected, click "sweep" (Part modeling, Boss, Sweep) and select the spline as the path. Click OK to create the sweep.
Right-click the assembly, edit assembly to return to the assembly view. Zoom out a bit to give room in the view. I can now slide the plugs around and after a few seconds the cable will be redrawn with a new spline.
This is not a physics model, the spline points are fixed in space. Funky things happen when the plugs are pulled too close to a spline point, and the cable will not render at all if the plug runs over a spline point. But it is a cosmetic approximation of a flexible cable.
I want to place a pseudo-flexible cable into an existing design, using the technique above. The cable will run from the connector on the rotating Caspa plate, through a hole in the plate, to the connector on the Tobi board. The section from the Caspa through the hole will be a fixed spline, with the "flexible" section being from the end of the spline to the Tobi connector.
The trick is to create the reference plane for the spline path. It needs to bisect the two connectors, normal to the top surface of the Tobi board. This sounds simple, but I am having trouble because of the way 2D and 3D entities are handled. Drawing the line describing the midpoint of the connector is easy in 2D sketch, but I can't define a 3D reference plane in 2D sketch and the centerline becomes inaccessible when I return to 3D design. In addition, the methods available to define a plane are frustrating me, it seems the most practical choice of "normal to a plane, containing a line" is missing. The closest is "two coplanar axes" which requires me to define first a reference centerline, then lay a reference axis onto it.
The problem is that I can define a reference centerline in 2D sketch, but I can't define an axis. Aha, yes I can! I create the reference centerline (reference > line, midpoint constraint on each endpoint), select the centerline, and the Reference > Insert Axis from sketch option becomes enabled. This lets me create one of the two axes required for the plane.
The second axis should be normal to the top of the Tobi and on first axis. Sounds easy, but I need a 3D reference point. I go back into 2D sketch on the top of the Tobi, create a node (2D > Sketch Figures > Node), apply a midpoint constraint using the edge, select the node, and create a reference point (Reference > Insert Point from sketch). This doesn't help, a point on the axis does provide any more information.
There is an option to create a plane by rotating a surface about a line/axis. This should do it, rotate the top surface 90 degrees using the centerline as the pivot. This creates "Plane<3>"
Now I need to create the cable part. The newly created Plane3 is not available within the context of the new part. I guess I need to create the reference plane while editing the part, using surfaces and edges projected from the assembly into the part. First I need to project the two connector surfaces into the new part, create the reference centerline, then create the new reference plane.
It is very difficult to select feature faces from the full assembly view. I need to rename the face to make it easy to select from the Design Explorer list. The faces are much easier to identify when editing the part directly. There is no way to name faces (because they are generated features?), I need to remember that it is "Face4". The connector for the Caspa is Face12.
I am able to select Tobi/Face4, but not Caspa/Face12. I am guessing this is because Caspa/Face12 is not a "planar face" -- it is rotated on the pivot hinge. (I think this means "planar to the current 2D view". I can activate 2D sketch on the Caspa connector face and it becomes selectable for project into sketch.) Let's see if I can use the four edges that form the face: Edge22, Edge25, Edge15, and Edge19. This should work, I can create a reference plane from two edges.
I need to create the reference plane for the path. This needs to be normal to the connector face through the centerline. I create the reference centerline first (select the Tobi connector face, 2D sketch, reference line, apply midpoint constraints, select the centerline, Reference > insert axis from sketch) and deactivate 2D. I create the reference plane using the "Rotation of a face about a coplanar axis" method, with the connector face, the centerline reference axis, and rotated 90 degrees. This creates Plane2, which will be used for the path of the cable.
The cable is built by placing a rectangle 3x10mm wide over the Tobi connector and extruding it by 0.1mm. This provides the solid part for the cable to mate to the Tobi connector.
The connector for the Caspa end is a bit trickier. The Caspa connector rotates around the hinge, so I need to figure out how to pull the references for the Caspa connector into the cable part. I was able to select the Caspa connector face if I first activated 2D sketch on the top face of the Caspa connector.
Now I need the profile for the cable. The shape needs to be normal to the start of the path, so I need to create a profile shape on the thin face of the cable extrusion and deactivate 2D.
The path for the cable is created by selecting the reference plane, activate 2D sketch, and sketch a spline from the Caspa connector, through the hole, and to the Tobi connector. Deactivate 2D.
Then I can click Sweep and use the profile shape and the spline sketch to form the cable.
The cable looks good. The gap on the Caspa end is my fault, I didn't place the end of the spline correctly.
However, all my constraints are now screwed up. I believe this is because the cable endpoint is not moving the way it should and is over-constraining everything. The inability to name constraints and faces makes it very difficult to understand what all the constraints are doing, since it can be difficult to find the entities when they are highlighted. I need to go back and recreate the assembly using a slightly different constraint strategy...
I now realize that the colinear and distance relationship between the Tobi and Caspa connectors needs to be much earlier in the constrain chain; this is actually the fundamental constraint of the entire assembly (in addition to the dimensions of the two boards). I think I can put both base risers into the base plate assembly, allow both to slide along the base width-wise. (Is it possible to create a constraint of "faces left"?) The base plate assembly would be marked as "Make Flexible" in the Fixture assembly. The Caspa constraint chain begins with the location of the connector, the hinge pins, the restraining nuts. Adding a constraint between the nut face and end of the screw would conflict with the connector constraint, which might be what was causing problems before.
It may have been a mistake to put the mounting holes in the base plate part. Is it possible to create a second part that consists of only the holes to be drilled into the plate?
I started over from just the parts. It helps a lot later if I take the time to rename the constraints as I create them.
This allows the risers to slide around on the face of the plate. The width of the gap between the risers is free while the holes are aligned. This allows the width to adjust to the width of the Caspa Mount, and the position to adjust with the length of the cable.
Start with the Caspa plate.
There may be a missing orientation that might allow the Caspa board to flip?
Start with the base-tobi-risers assembly and anchor it.
The Caspa can now pivot around the screws while being captured by the base risers. The base risers are still free to slide around on the base plate. The location of the Caspa assembly will be set by the length of the video cable and aligning the two connectors.
To align the Caspa Mount with the Tobi board, I want to create a plane that extends from the centerline of the Tobi connector and align the Caspa connector's centerline on the plane. Then I can set a fixed distance between the Tobi board and the base risers (based on the length of the video cable) to anchor everything in place. The plane will also be used to sketch the spline for the cable sweep.
The base risers are now fully constrained in relation to the Tobi board, and the Caspa can now only pivot around the screws.