What's new

GMD "Variable" (Equation Editor & Global Parameter) Improvem

First of all, let me reiterate that describing these values as parameters is intrinsically (and mathematically) wrong! A parameter is, by definition, a variable created by an extera function -- not merely another variable. What we have are Local and Project-Wide variables. Being clear about this will make our system mathematically correct.
What we have as our basis are types of variables: defined as: Distance, Angle, Count (Integer), and Scale (Floating Point Number). We need, added to that foundation, String and Validity. These two additions will make our use of variables much more powerful.

Another thing that confuses many starting out in using these variables is how strongly they are Typed. This is not truly a "bad thing," is just needs to be explained more clearly in (what passes as) the Equation Editor documentation. What is needed are operators to TypeCast operations. One of the things I do quite regularly is to reduce the thickness and width of Parts machined from Bar Stock to assure that the resulting surfaces are truly flat and square. In the case of Hot Rolled Steel material, an allowance of .060 inch is (generally) sufficient. Thus, the thickness of the Bar may be defined as, had I such a TypeCasting operator as: Thick_Dist = Cast_Dist(( Cast_Count(Part_T hick/.0625) + 1) * .0625). Here in the U.S HRS Bar up to 1.000 inches thick is (generally) readily available in increments of 1/16 inch. This assures that, for Bars thinner than 1.000 inches thick, that the Thick_Dist variable is correctly set. A change to the Part model (within reason) will result in an appropriate change to the Thick_Dist value. Thus, a Cast_Dist TypeCast insures that the overall variable is a Distance value while the Cast_Count TypeCast insures that the (Part_T hick/.0625) + 1) value is interpreted as a

Count. Similarly, a Wide_Dist value for HRS Bar would span from 1/2 inch to 1-1/2 inch wide by 1/8 inch increments, from 1-12 inch wide to 3-1/2 inches wide by 1/4 inch increments, from 3-1/2 inches wide to 4-1/2 inches wide by 1/2 inch increments, and those wider than 5 inches wide (to 12 inches wide) by 1 inch increments.1. Rules such as these are (fairly) easy to determine and make for better Stock Size designations.

It should be immediately obvious that some knd of IF, THEN, ELSE operator would be incredibly useful in such operations. Using the Thick_Dist example from above, a sequence of IF statements in the form of: IF Part_Thick < .95, THEN Cast_Dist(( Cast_Count(Part_T hick/.0625) + 1) * .0625), ELSE IF Part_Thick < 1.2, THEN[/i] (etc). The number of times an IF, THEN, ELSE operator would have made for more powerful relationship settings would be hard for me to list! I know that many users I have spoken with agree with me.

String values raise their own "issues." Converting numeric values into String values is one of them. I began "high level language" programming using Algol. Therefore the "1f3" type of operator leaps to what's lefr of my mind. Modern spreadsheets use the Text("numeric variable name", "0.000") command. Something is needed to accomplish such formatting.


A Concatenation operand is needed. I assume that it would work something like: Stock_Size = concatenate( TEXT(Thick_Dist, "#.000"), " X ", TEXT(Wide_Dist, "#.000"), " "). This would make it (relatively) simple to "group" all parts to a Project made from (say) HRS Bar 1.000 X 3.000 and find out how long a piece is required to make all such Parts needed for the Project.

Whereas I am a big fan of the Validity operation, it is somewhat hard to justify in terms of variables. The only use that leaps to (what's left of0 my mind would be for Factors_of_Safety. I often have Parts in a Project where deformation

is not all that critical. In such cases a Factors_of_Safety of "1.11" is sufficient. Other Parts may require a Factors_of_Safety of "1.18." Still other Parts may require a Factors_of_Safety of "1.50." A Validity selection will reduce typographic errors and improve accuracy -- something I believe to be worthwhile.

Finally, I will argue that Project-wide (or Company-wode) "base versions" should be "loadable" at Part or Assembly initiation. As we used to have a Save and Load function for the Equation Editor, it ought to fall into the doable category.
 

bigseb

Alibre Super User
Add to all of this a simple change to the UI:

When creating a parameter one has three fields to fill in i.e. name, equation and comment. However the list only shows name, equation and result. This is somewhat annoying as I often use consequential naming patterns for GPs such as ZZ01, ZZ02, ZZ03. In the comment field I then write what it is for. This makes subesequent naming of later equations using thise GPs a lot shorter. Unfortunately this makes it difficult to know which each parameter is for. As a result I tend to make longer sequential names but this really complicates downline equations.

Also I would like column widths to remain as I set them and not reset to default widths every time I open the equation editor.

But these things are obviously on a very different level than what Lew mentions...
 

TomB

Member
I think the most useful benefit of an enhanced equation editor would be the manipulation of constraints. Being able to specify that a feature must be displaced from another feature by x (initially) and not more than y. Similarly a feature must be constrained by A unless the displacement {some rational operator} (measurement_dist) offset, in which case it should be constrained by B. These two features would allow assemblies that modeled the motion of sliding connections and travel constrained by belts,cables or pulleys all of which I often wish for.

I realize you are now focused on types and not constraints but I think understanding just what a type system might be used for, if it is going to be general enough for the future, will guide the design. For example using a type to reference a constrain type (mate, align, etc.) or the constraint features (face, line, circle, etc. Also, for example, should the variable, offset, in the prior paragraph be restricted to constant values or might it be derived from some other constraint.

Tom
 
Tom -- I have and have shared "improvements" to the Constraint system many times. Attached is one I wrote up (and submitted to 3DS back in 2015) for your edification.
 

Attachments

  • Constraint System Improvements 01 20150308A.pdf
    114.2 KB · Views: 15

TomB

Member
Lew_Merrick said:
Tom -- I have and have shared "improvements" to the Constraint system many times. Attached is one I wrote up (and submitted to 3DS back in 2015) for your edification.

I was not aware of your paper. It must have been written during the period I thought the forum was dead. Thank you for the reference; I read it immediately and see where it addresses the types of constraints I believe are needed and more. It is a very well thought out solution but is it perhaps too scary for the seemingly non-existent Geomagic developers? I note that you laid out implementation increments that would make the development a series of small steps but I wonder if your intended readership read to the end?

But that said does your type system allow specifying the parameters and features needed to use a generalized constraint system? Asking that question was the only intent in my post and being unaware of your prior work I felt a need to provide some background examples. So ignoring my examples and focusing on your constraint suggestions, is the proposed type system adequate to work with your constraints? I suspect that the shortcoming of the type system may be it's failure to 'type' the features involved in specifying a constraint, i.e. the lines, surfaces, shapes, etc. For example, what would be the 'type' of a cone? Whether the "Type" system needs to be adequate for future capability or simply extendable to it when that capability is developed is a valid consideration.
 
TomB (and all) -- I write up and submit things to 3DS on a regular basis. I have worked closely with various programmers of this program since Alibre days. At a guess, I have written up and submitted "improvement suggestions" on a monthly basis since (about) mid-2009. I probably have something like 350 pages of such "suggestions" in my records.
 
Top