# How various CAD programs create relations among objects?

1. Aug 29, 2016

### Stephen Tashi

I'd like a comparison of how various CAD programs handle the task of creating relationships among objects that have been created independently and where the uses wants to change some parameters of one object and have the program adjust the parameters of the others automatically.

I'm interested in the variety of program interfaces - how the process "looks to the program user", not the underlying mathematics of the code that implements it.

For example, suppose I've created 4 rectangular solids that represent legs of a table. How would various CAD programs handle the task of establishing typical relations among the legs. For example, I might want the distance between the left front leg and the left rear leg to be the same as the distance between the right front leg and the right rear leg. I might want all the legs to have the same dimensions etc.

Establishing relations among independently created objects and then updating them when the user edits some parameter seems to be a complicated mathematical problem. Users might attempt to establish a set of relations that is self-contradictory. But I'd think that the task is so important that CAD programs would have discovered an efficient way of doing it.

My one data point is from the FreeCAD forum. The suggestion was to use "expressions". i haven't tried it yet, but I think it involves creating something like a spreadsheet whose cells have data for the objects. In a typical spreadsheet program, one "cell" in the sheet can be defined as a function of other cells.

Is that way things are done in other CAD programs?

(In my example, one could create a rectangular sold and then create the 4 posts in a dependent fashion by subtracting volumes from it, but I'm not sure this would allow the dimensions of the posts to be adjusted indepndently of the spacing between them - and my question still stands because surely other situations will arise when objects have been created independently before the designer considers how to assemble something from them.)

2. Aug 30, 2016

### Grinkle

https://en.wikipedia.org/wiki/Database_schema

Fundamental relationships are determined by the value proposition of the tool and on top of that there will often be hooks to enable a user to expand on the 'baked in' relationships. There is not a single answer to your question. A great CAD tool design will anticipate what relationships matter to users of its target market and make those manipulations natural in the tool interface / data relations. Your question can sort of be re-stated to be "How does one design a really useable CAD tool?"

3. Aug 31, 2016

### Stephen Tashi

Yes. So my question requests examples of how different CAD programs create constraints.

4. Aug 31, 2016

### Grinkle

The constraints (object relationships) are embedded in the internal schema of the tool. A developer decides that a user must input a length and a width to define a rectangle, for instance, and perhaps a thickness and a density. These properties would be 'hard coded' into the internal tool database implementation. From here, the developer can code algorithms to detect when two such objects interfere with each other and how much they weigh etc. These would also be hard coded into the tool database implementation. The constraint is a coded rule that operates on the defined properties of the objects in the database.

Additional relationships that can be added by a user are made possible by giving the user access to the data object via some programming language. A common one to use for EDA tools is TCL. Users can typically add their own properties to the hard coded objects. A user might add a property called "color" to the above rectangle, and the user can do their own searches through the database and take some actions when the search returns objects of a certain color.

https://en.wikipedia.org/wiki/Tcl

I am not sure if I am understanding your question.

5. Aug 31, 2016

### Stephen Tashi

My question concerns the user interface for adding constraints, not the underlying data structure and query language used by the program.

For example, if you have various objects representing boards, how does the user put them together to make a product and still allow himself freedom to change some parameters of the objects ? ( I suppose this is called the "assembly function". ) I myself would be pleased with a CAD program where a user can specify a product by writing computer code for it, but I'd think that most CAD programs would provide other ways of assembling things.

Last edited: Aug 31, 2016
6. Aug 31, 2016