Table Of Contents

Previous topic

3.2.1. Global Utilities

Next topic

3.3.1. Mark Objects Hierarchy

This Page

3.2.2. Put/Offset – Placing Objects

This command makes it possible for the user to place an object by itself or with reference to the location of another. The first type of placement is typically known as a global placement while the later type is a relative placement. When objects are globally placed the user must enter the required global coordinates which designate an absolute coordinate where Buildes will place the object. When a placement is relative, then the coordinates are relative to the position of another object which can be called the reference object. See section on Entry Coords for more on user coordinates.

When placing objects the user needs to consider source and target points. Source point is the point on the object with which the object will be placed. Target point is the new location for the object (or the source point on the object). If a reference is involved then the target point is the selected point on the reference. The points on the object and on the reference must be provided by designating snap-point or snap-edge. See introduction to Snaps.

The different types of moving actions supported by Buildes are summarized in the following table. Symbols sObj and sRef designate the name for the object and reference which include snap-point designation (see Snaps for explanations to snap designations). Symbol adj designates the user-provided coordinates. Symbol eRef designates the desired snap-edge of a reference object. aSym designates the user-provided angle symbol while sInt designates user-selected intersection all of which are explained in following text.

Placement Type Required Optional
Snap (global) sObj, adj  
Snap (relative) sObj, sRef, aSym, adj
Edge (relative) sObj, sRef, dist, aSym, adj
Fit (relative) sObj, sRef1, sRef2, sInt, adj
Connect (relative) sObj, sRef1, eRef2, aSym, adj
ConnectEdge (relative) sObj, sRef1, eRef2, dist, adj

The Snap (global) type of moving simply places an object to the provided absolute coordinate. All other placement types move objects relative to other provided reference object. The Snap type places an object relative to the location of another. The Edge type places an object along the selected edge of another determined by the given distance dist. The Fit type places an object between the provided snap-points of two reference objects. The Connect type places an object so that it is between the location of the snap-point of the first reference and the edge of the second using its orientation. The ConnectEdge type combines the function of Edge and Connect. It places an object along the edge of the first reference (determined by dist) so that it fits up to the selected edge of the second object.

In all types of placement except Snap (global), Snap (relative) and ConnectEdge, the user can provide an optional aSym (angle symbol) which designates whether the angle being used is an absolute or relative angle. Using absolute angles is the default but when a relative angle is requested the angle used is relative to the angle of the first reference object. Possible absolute angle symbols are a, abs or absolute while relative angle symbols are r, rel, or relative.

In all types of placement except Snap (global), the user can provide an optional coordinate that will be used to further adjust the final object location. See the examples provided below for more information.

When placing a pointMark object relative to two reference objects using Fit, the pointMark is placed at the intersection of the two reference objects. If one of the reference objects is curved/circular such as arcMark, there may be more than one choice of intersection. The user can select the preferred intersection by using the appropriate symbol in sInt. Possible selection symbols are l or left, r or right, t or top and b or bottom. See Selecting Intersection on Arc Objects for more information.

In the following examples, assume we are using the default Buildes coordinate system and user coordinate entry (see Coordinates and Entry Coords) and the objects called lineMark1, lineMark2 and lineMark3 have already been created. Also, assume that each example below is executed in isolation.

3.2.2.1. Snap (global) Placement Type

This type of placement simply puts an object at the provided global coordinate. Use the following syntax:

put("lineMark1", (500, 100, 0))  # lineMark1 is placed so that its
                                   #   origin or 'p1', or 'b' is placed at
                                   #   the given coordinates.

offset("lineMark1_p1", (500, 100, 0)) # This does the same as for lineMark1
                                        #   except the origin is explicitly
                                        #   designated. Note: the keyword 'put'
                                        #   is the same as 'offset'

put("lineMark3_e", (500, 100, 0)) # lineMark3 is placed so that its
                                    #   end point i.e. 'p6', is placed at
                                    #   the given coordinates.

Note

It is possible to place objects using put or offset keyword. However using the first denotes placement to a global coordinate while the second suggests that a second object is involved. The choice is up to the user.

3.2.2.2. Snap (relative) Placement Type

This type of placement positions an object relative to the location of another. Use the following syntax:

offset("lineMark2", "lineMark1_m") # lineMark2 is placed so that its
      #  origin or 'b' or 'p1' is on the mid point of lineMark1.

offset("lineMark3_p4", "lineMark2", (-900, 500, 100))
      # lineMark3 is temporarily placed using the part of it at snap-point
      #   'p4' to the  origin of lineMark2. Then it is subsequently moved
      #   to its final location using the provided coordinates relative to
      #   the origin of lineMark2.

offset("lineMark3", "lineMark1_b", "r")
      # Here lineMark3 is placed with its angle relative to lineMark1.

offset("lineMark3", "lineMark1_b", "r", (-900, 500, 100))
      # Here lineMark3 is temporarily placed with its angle relative to
      #   lineMark1. Then it is subsequently moved to its final location
      #   using the provided coordinates.

3.2.2.3. Edge (relative) Placement Type

This type of placement positions an object relative to another, then moves the object along the edge of the other using the provided distance. Use the following syntax:

offset("lineMark2_b", "lineMark1_p4", 320)
      # lineMark2 is placed so that the location of its marker at 'b' or
      #   'p1' coincides with the location of marker at 'p4' on
      #   lineMark1. Then lineMark2 is moved along the length of
      #   lineMark1 for a distance of 320 mm.

offset("lineMark3_e", "lineMark1_e", 100, (400, 500, 0))
      # lineMark3 is placed so that its end-point coincides with the
      #   end-point of lineMark1. Then lineMark3 is moved along a
      #   temporary extension of lineMark1 for 100 mm beyond its
      #   end-point. Finally, it is moved again to the provided coordinates
      #   relative to 100 mm beyond the end-point of lineMark1.

offset("lineMark3", "lineMark1_b", 100, "r")
      # Here lineMark3 is placed with its angle relative to lineMark1 and
      #   by 100 mm from its beginning point.

offset("lineMark3", "lineMark1_b", 100, "r", (-900, 500, 100))
      # Here lineMark3 is temporarily placed with its angle relative to
      #   lineMark1 and by 100 mm from its beginning point. Then it is
      #   subsequently moved to its final location using the provided coordinates.

3.2.2.4. Fit (relative) Placement Type

This type of placement fits an object that has a length between points on two references. If the object does not have a length, it is placed at the intersection of the two references. When creating an object to be placed using this command, it is not necessary to provide the length and angle because these will be recalculated. Use the following syntax:

offset("lineMark3", "lineMark1_b", "lineMark2_p5")
      # Places lineMark3 so that its first point is at the first point
      #   of linemark1 and its end point is located on the fifth marker on
      #   lineMark2

offset("lineMark3_m", "lineMark1_b", "lineMark2_p5")
      # In this example, lineMark3 is placed by its mid-point on the
      #   first point of lineMark1. **It does not touch lineMark2**
      #   however its length is the equivalent of the distance and angle
      #   from the beginning of lineMark1 to the fifth marker on
      #   lineMark2.

offset("pointMark1", "lineMark1", "lineMark2")
      # In this example pointMark1 does not have a length, so it is placed on
      #   the intersection of lineMark1 and lineMark2. Any snap points
      #   provided are ignored.

offset("pointMark1", "lineMark1", "arcMark1", "r")
      # In this example pointMark1 will be placed at the intersection between
      #   lineMark1 and arcMark1. Intersections involving curves however
      #   may yield up to 2 intersections and in this case the user has
      #   selected the right-most intersection.

3.2.2.5. Connect (relative) Placement Type

This type of placement places an object so that its first point is on the provided snap-point on the first reference while its length ends on the edge of the second reference. The edge of the second reference is extended as necessary to determine the required length.

When creating an object to be placed using this command, you must provide an angle. This provided angle may change eventually depending on whether you use the default absolute angle designation or you request the use of a relative angle. In the former case the angle at creation is the final angle for the object. In the second case it will be the relative angle used and so the final angle will be different. All objects are stored with global angles. It is not necessary to provide the length because this will be recalculated. Use the following syntax:

offset("lineMark3", "lineMark1_b", "lineMark2_p")
      # Places lineMark3 so that its first point is at the first point
      #   of linemark1 and its end point is located where it intersects
      #   with lineMark2. The angle is an absolute angle and is provided
      #   when the user creates lineMark3.

offset("lineMark3", "lineMark1_b", "lineMark2_p", "r")
      # In this case the user wishes the angle provided when lineMark3
      #   was created to be used as a relative angle between lineMark3
      #   and lineMark1. This means that if lineMark3 is created with
      #   90 degrees angle and lineMark1 has 90 degrees angle, the
      #   final angle for lineMark3 will be 180 degrees.

offset("lineMark3", "lineMark1_b", "lineMark2_p", (100, 0, 0))
      # In this case, the user wishes in addition to move the final
      #   location of lineMark3 using the provided coordinates.

offset("lineMark3", "lineMark1_b", "lineMark2_p", "r", (100, 0, 0))
      # In this case the user wants to use a relative angle as well adjust
      #   the last position of lineMark3 by the provided coordinates.

3.2.2.6. ConnectEdge (relative) Placement Type

This type of placement combines the effects of the Edge and Connect types of placement. Use the following syntax:

offset("lineMark3", "lineMark1_b", "lineMark2_p", 320)
      # Places lineMark3 so that its first marker is at snap 'b' + 320 of
      #   lineMark1 and its end marker is located where it intersects with
      #   the axis of lineMark2. The angle is an absolute angle and is
      #   provided when the user creates lineMark3.

offset("lineMark3", "lineMark1_b", "lineMark2_p", (100, 0, 0))
      # In this case, the user wishes in addition to move the final
      #   location of lineMark3 using the provided coordinates.