Skip to content
April 5, 2013 / jeroencoenders

Property input

Hi,

It has been a while since the last post, but do not despair. I have not given up on NetworkedDesign. I have been quite busy with another interesting initiative, called sustainability-open, which is an open-source framework for sustainable design, analysis and assessment. Go check it out at http://www.sustainability-open.com.

In the post on Methods (part 1), we got our first introduction to giving input to NetworkedDesign. In this post I will elaborate a bit further on providing input to the system. When adding a method to an object or when an object is edited, the user is queried to input the properties (see Figure).

Properties are the data fields on objects. For example for a Point defined by a Cartesian coordinate system the properties are the base coordinate system, and the x,y and z components of the coordinate. A line has a begin point and end point as properties or a begin point, a direction and a length.

Properties have a name, a type and a value.

Types

In NetworkedDesign properties have preferred types which are strictly enforced. For example in the figure is can be seen that the Coordinatesystem of a Point needs to be of the type CoordinateSystem, the X, Y and Z components need to be of type Double. The type check allows inheritance. This means that for example if an object allows a Point as a property, also a Node or a Vertex can be entered as long as these are subtypes of Point.

Multiple types

Some properties might be relevant for multiple object types which are not necessarily subtypes. In this case the ‘or’ between two types indicates that multiple types are allowed. For example in the figure the definition property on the Definition by cartesian coordinates method can apply to a Point, a CoordinateSystem or a Direction. This trick circumvents some of the object-oriented best practice, but in this case allows methods to be available to many different object types without the need to implement the same method for each different object type. Also semantic ‘strange’ inheritance work-arounds can be prevented which plague the object-oriented programming paradigm.

Value

Properties store their data in a value. For example the value of a Coordinatesystem of a Point can be ‘coordinatesystem_1’ which refers to a specific object. The value of X component for example is 10.

Things like numbers, simple text and yes-or-no (true or false in this case) we call primitives. NetworkedDesign supports the following types as primitives: Double (used to store floating point numbers), Integer (used to store real number), Boolean (true or false) and String (used to store text).

Referencing objects and properties of objects

As mentioned objects can also be entered as input by referencing the object by name. This creates a dependency between two objects. For example if line_1 has point_1 as start point and point_2 as end point, NetworkedDesign will maintain the relationship between the line_1 and the two points. Whenever one of the points (or one of its upstream relationships) is updated, line_1 is also updated. This is called associativity.

NetworkedDesign also allows using properties of another objects as value by accessing those properties through the dot-notation. For example, point_1.X refers to the X-component of the coordinate of point_1. In case the value of the property references is an object this also creates a relationship between these objects. So, if line_2 has line_1.Startpoint referenced as a start point and this point is point_1, a relationship is created between the line_2 and point_1. You can concatenate the dot notation to drill down object properties, e.g. line_2.Startpoint.X.

Replication

NetworkedDesign supports the concept of replication. Dr. Robert Aish, at the time employed by Bentley, now at Autodesk building his new DesignScript system (http://labs.autodesk.com/utilities/designscript), included replication first in his GenerativeComponents system (http://www.bentley.com/en-US/Promo/Generative%20Components/default.htm). Other modern parametric and associative systems, such as Grasshopper (http://www.grasshopper3d.com), have also adopted this concept. How it exactly works in NetworkedDesign will be explained in a later post.

If you have any questions and/or comments, please feel free to write a comment.

Regards,

Jeroen

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: