# Coordinate System Inquiries

## Concepts

A coordinate system has 3 different types of elements which can be accessed or inquired. These are:

• the origin
• the 3 axes:
• x-axis
• y-axis
• z-axis
and
• the 3 planes:
• xy-plane
• yz-plane
• zx-plane

Every coordinate system consists of exactly these elements. Settings are always valid for the hole coordinate system object.

## SD-COORD-SYS-OBJECT-P  [function]

```(sd-coord-sys-object-p object)
```
Description:
Predicate to determine whether the passed object is a coordinate system.

Parameters:
object {SEL_ITEM}

Return Value:
t - object is a coordinate system
nil - object is not a coordinate system

## SD-COORD-SYS-ELEM-P  [function]

```(sd-coord-sys-elem-p element)
```
Description:
Predicate to determine whether the passed element is an element of a coordinate system (origin, axis or plane).

Parameters:
element {SEL_ITEM}

Return Value:
t - element is an element of a coordinate system
nil - element is not an element of a coordinate system

## SD-COORD-SYS-ORIGIN-P  [function]

```(sd-coord-sys-origin-p element)
```
Description:
Predicate to determine whether the passed element is a coordinate system origin.

Parameters:
element {SEL_ITEM}

Return Value:
t - element is a coordinate system origin
nil - element is not a coordinate system origin

## SD-COORD-SYS-AXIS-P  [function]

```(sd-coord-sys-axis-p element)
```
Description:
Predicate to determine whether the passed element is a coordinate system axis.

Parameters:
element {SEL_ITEM}

Return Value:
t - element is a coordinate system axis
nil - element is a not coordinate system axis

## SD-COORD-SYS-PLANE-P  [function]

```(sd-coord-sys-plane-p element)
```
Description:
Predicate to determine whether the passed element is a coordinate system plane.

Parameters:
element {SEL_ITEM}

Return Value:
t - element is a coordinate system plane
nil - element is not a coordinate system plane

## SD-INQ-COORD-SYS-ELEM  [function]

```(sd-inq-coord-sys-elem coord-sys
:origin origin
:x-axis x-axis
:y-axis y-axis
:z-axis z-axis
:xy-plane xy-plane
:yz-plane yz-plane
:zx-plane zx-plane
:all all)
```
Description:
Inquire the elements of a given coordinate system.

Parameters:
coord-sys {SEL_ITEM} - The coordinate system to inquire.
origin {BOOLEAN [nil]} - Include coordinate system origin.
x-axis {BOOLEAN [nil]} - Include coordinate system x-axis.
y-axis {BOOLEAN [nil]} - Include coordinate system y-axis.
z-axis {BOOLEAN [nil]} - Include coordinate system z-axis.
xy-plane {BOOLEAN [nil]} - Include coordinate system xy-plane.
yz-plane {BOOLEAN [nil]} - Include coordinate system yz-plane.
zx-plane {BOOLEAN [nil]} - Include coordinate system zx-plane.
all {BOOLEAN [nil]} - Inquire all coordinate system elements.

Return Value:
property-list {LIST} - A property list containing key/value pairs for the requested elements.
:origin {SEL_ITEM}
:x-axis {SEL_ITEM}
:y-axis {SEL_ITEM}
:z-axis {SEL_ITEM}
:xy-plane {SEL_ITEM}
:yz-plane {SEL_ITEM}
:zx-plane {SEL_ITEM}

Example:
```(sd-inq-coord-sys-elem some-coordinate-system :origin t :x-axis t)
=> (:ORIGIN sel-item-of-origin
:X-AXIS sel-item-of-x-axis)
```

## SD-INQ-COORD-SYS-ELEM-TYPE  [function]

```(sd-inq-coord-sys-elem-type item)
```
Description:
Inquire the element type of a given coordinate system or coordinate system element.

Parameters:
item {SEL_ITEM} - The coordinate system or coordinate system element to inquire.

Return Value:
:object - item is a coordinate system object.
:origin - item is an origin of a coordinate system.
:x-axis - item is an x-axis of a coordinate system.
:y-axis - item is an y-axis of a coordinate system.
:z-axis - item is an z-axis of a coordinate system.
:xy-plane - item is a xy-plane of a coordinate system.
:yz-plane - item is a yz-plane of a coordinate system.
:zx-plane - item is a zx-plane of a coordinate system.

Example:
```(sd-inq-coord-sys-elem-type some-coordinate-system)
=> :OBJECT
(sd-inq-coord-sys-elem-type some-coordinate-system-element)
=> :X-AXIS

(sd-inq-coord-sys-elem-type
(getf (sd-inq-coord-sys-elem some-coordinate-system :all t) :xy-plane))
=> :XY-PLANE
```

## SD-INQ-COORD-SYS-ELEM-VALUE  [function]

```(sd-inq-coord-sys-elem-value coord-sys
:origin origin
:x-axis x-axis
:y-axis y-axis
:z-axis z-axis
:xy-plane xy-plane
:yz-plane yz-plane
:zx-plane zx-plane
:all all
:dest-space space)
```
Description:
Inquire the values of the elements of a given coordinate system.

Parameters:
coord-sys {SEL_ITEM} - The coordinate system to inquire.
origin {BOOLEAN [nil]} - Include coordinate system origin.
x-axis {BOOLEAN [nil]} - Include coordinate system x-axis.
y-axis {BOOLEAN [nil]} - Include coordinate system y-axis.
z-axis {BOOLEAN [nil]} - Include coordinate system z-axis.
xy-plane {BOOLEAN [nil]} - Include coordinate system xy-plane.
yz-plane {BOOLEAN [nil]} - Include coordinate system yz-plane.
zx-plane {BOOLEAN [nil]} - Include coordinate system zx-plane.
all {BOOLEAN [nil]} - Inquire all coordinate system elements.
space {KEYWORD or SEL_ITEM [:local]}
:local - Data is returned in the local coordinate system space.
:global - Data is returned in the global coordinate system.
SEL_ITEM - Represents either an object or an element. Data is returned in the coordinate system of the given item.

Return Value:
property-list {LIST} - A property list containing key/value pairs for the requested elements.
:origin {GPNT3D}
:x-axis {GPNT3D}
:y-axis {GPNT3D}
:z-axis {GPNT3D}
:xy-plane {GPNT3D}
:yz-plane {GPNT3D}
:zx-plane {GPNT3D}

Example:
```(sd-inq-coord-sys-elem-value some-coordinate-system :all t :dest-space :local)
=> (:ORIGIN 0.0,0.0,0.0
:X-AXIS 1.0,0.0,0.0
:Y-AXIS 0.0,1.0,0.0
:Z-AXIS 0.0,0.0,1.0
:XY-PLANE 0.0,0.0,1.0
:YZ-PLANE 1.0,0.0,0.0
:ZX-PLANE 0.0,1.0,0.0)

(getf (sd-inq-coord-sys-elem-value some-coordinate-system :x-axis t :dest-space :global) :x-axis)
=> 0.81866139454567677,0.39809667510347946,-0.41389921279471203
```

## SD-INQ-COORD-SYS-COLOR  [function]

```(sd-inq-coord-sys-color coord-sys)
```
Description:
Returns the color of the specified coordinate system.

Parameters:
coord-sys {SEL_ITEM}

Return Value:
color {GPNT3D} - R,G,B color vector.

## SD-INQ-COORD-SYS-SIZE  [function]

```(sd-inq-coord-sys-size coord-sys)
```
Description:
Returns the size of the specified coordinate system in internal system units [mm].

Parameters:
coord-sys {SEL_ITEM}

Return Value:
size {LONG-FLOAT}

## SD-INQ-COORD-SYS-AXIS-LABEL  [function]

```(sd-inq-coord-sys-axis-label coord-sys)
```
Description:
Returns the axis label of the 3 axis of the specified coordinate system.

Parameters:
coord-sys {SEL_ITEM}

Return Value:
property-list {LIST} - A property list containing key/value pairs for the 3 axis.
:x-axis {STRING}
:y-axis {STRING}
:z-axis {STRING}

Example:
```(sd-inq-coord-sys-axis-label some-coordinate-system)
=> (:X-AXIS "u"
:Y-AXIS "v"
:Z-AXIS "w")

(getf (sd-inq-coord-sys-axis-label some-coordinate-system) :x-axis)
=> "u"
```

## SD-INQ-COORD-SYS-DEFAULT-COLOR  [function]

```(sd-inq-coord-sys-default-color)
```
Description:
Returns the default color used for all newly created coordinate systems.

Return Value:
color {GPNT3D} - R,G,B color vector.

## SD-INQ-COORD-SYS-DEFAULT-SIZE  [function]

```(sd-inq-coord-sys-default-size)
```
Description:
Returns the default size used for all newly created coordinate systems (value is returned in internal units [mm]).

Return Value:
size {LONG-FLOAT}

## SD-INQ-COORD-SYS-DEFAULT-AXIS-LABEL  [function]

```(sd-inq-coord-sys-default-axis-label)
```
Description:
Returns the default axis label used for all newly created coordinate systems.

Return Value:
property-list {LIST} - A property list containing key/value pairs for the 3 axis.
:x-axis {STRING}
:y-axis {STRING}
:z-axis {STRING}

Example:
```(sd-inq-coord-sys-default-axis-label)
=> (:X-AXIS "u"
:Y-AXIS "v"
:Z-AXIS "w")
```

## SD-INQ-COORD-SYS-STORE-VISIBILITY-FLAG  [function]

```(sd-inq-coord-sys-store-visibility-flag)
```
Description:
The store-visibility-flag defines the behaviour of coordinate systems in connection with filing. The visibility can be stored with the file or not. If the flag is true then changing the visibility of coordinate systems sets the owner of the coordinate system modified.

Return Value:
t - the visibility of coordinate systems is stored with the file
nil - the visibility of coordinate systems is not stored with the file