Geometry Controller

interface ICwAPI3DGeometryController

Public Functions

virtual ICwAPI3DString *getLastError(int32_t *aErrorCode) = 0

Gets the last error.

Parameters:

aErrorCode[out] [int32_t*] error code

Returns:

[ICwAPI3DString*] error string

virtual double getWidth(elementID aElementId) = 0

Gets the element width.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element width.

virtual double getHeight(elementID aElementId) = 0

Gets the element height.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element height.

virtual double getLength(elementID aElementId) = 0

Gets the element length.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element length.

virtual vector3D getP1(elementID aElementId) = 0

Gets the element P1.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[vector3D] The element P1.

virtual vector3D getP2(elementID aElementId) = 0

Gets the element P2.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[vector3D] The element P2.

virtual vector3D getP3(elementID aElementId) = 0

Gets the element P3.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[vector3D] The element P3.

virtual double getStartHeightCutAngle(elementID aElementId) = 0

Gets the element start height cut angle.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element start height cut angle.

virtual double getStartWidthCutAngle(elementID aElementId) = 0

Gets the element start width cut angle.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element start width cut angle.

virtual double getEndHeightCutAngle(elementID aElementId) = 0

Gets the element end height cut angle.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element end height cut angle.

virtual double getEndWidthCutAngle(elementID aElementId) = 0

Gets the element end width cut angle.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element end width cut angle.

virtual void rotateHeightAxis90(ICwAPI3DElementIDList *aElementIdList) = 0

Rotates the element height axis 90 degrees.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

virtual void rotateHeightAxis180(ICwAPI3DElementIDList *aElementIdList) = 0

Rotates the element height axis 180 degrees.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

virtual double getOverWidth(elementID aElementId) = 0

Gets the element overwidth.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] element overwidth

virtual void setOverWidth(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element overwidth.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element overwidth.

virtual double getOverHeight(elementID aElementId) = 0

Gets the element overheight.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element overheight.

virtual void setOverHeight(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element overheight.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element overheight.

virtual double getOverLength(elementID aElementId) = 0

Gets the element overlength.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element overlength.

virtual void setOverLength(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element overlength.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element overlength.

virtual double getRoundingWidth(elementID aElementId) = 0

Gets the element rounding width.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element rounding width.

virtual void setRoundingWidth(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element rounding width.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element rounding width.

virtual double getRoundingHeight(elementID aElementId) = 0

Gets the element rounding height.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element rounding height.

virtual void setRoundingHeight(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element rounding height.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element rounding height.

virtual double getRoundingLength(elementID aElementId) = 0

Gets the element rounding length.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element rounding length.

virtual void setRoundingLength(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element rounding length.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element rounding length.

virtual double getCrossCorrectionNegativeWidth(elementID aElementId) = 0

Gets the element negative width cross correction.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element negative width cross correction.

virtual void setCrossCorrectionNegativeWidth(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element negative width cross correction.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element negative width cross correction.

virtual double getCrossCorrectionPositiveWidth(elementID aElementId) = 0

Gets the element positive width cross correction.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element positive width cross correction.

virtual void setCrossCorrectionPositiveWidth(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element positive width cross correction.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element positive width cross correction.

virtual double getCrossCorrectionNegativeHeight(elementID aElementId) = 0

Gets the element negative height cross correction.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element negative height cross correction.

virtual void setCrossCorrectionNegativeHeight(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element negative height cross correction.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element negative height cross correction.

virtual double getCrossCorrectionPositiveHeight(elementID aElementId) = 0

Gets the element positive height cross correction.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element positive height cross correction.

virtual void setCrossCorrectionPositiveHeight(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element positive height cross correction.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element positive height cross correction.

virtual double getCrossCorrectionNegativeLength(elementID aElementId) = 0

Gets the element negative length cross correction.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element negative length cross correction.

virtual void setCrossCorrectionNegativeLength(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element negative length cross correction.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element negative length cross correction.

virtual double getCrossCorrectionPositiveLength(elementID aElementId) = 0

Gets the element positive length cross correction.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element positive length cross correction.

virtual void setCrossCorrectionPositiveLength(ICwAPI3DElementIDList *aElementIdList, double aValue) = 0

Sets the element positive length cross correction.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [double] The element positive length cross correction.

virtual double getWeight(elementID aElementId) = 0

Gets the element real weight.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] element real weight

virtual double getListWeight(elementID aElementId) = 0

Gets the element list weight.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element list weight.

virtual double getVolume(elementID aElementId) = 0

Gets the element rough volume (does not include negative geometry operations, such as end-types, drillings, connectors, openings, and MEP elements).

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element rough volume.

virtual double getListVolume(elementID aElementId) = 0

Gets the element list volume.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element list volume.

virtual vector3D getXL(elementID aElementId) = 0

Gets the element length axis direction (direction from P1 to P2).

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[vector3D] The element XL vector.

virtual vector3D getYL(elementID aElementId) = 0

Gets the element width axis direction (ZL cross XL).

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[vector3D] The element YL vector.

virtual vector3D getZL(elementID aElementId) = 0

Gets the element height/thickness axis direction (direction from P1 to P3).

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[vector3D] The element ZL vector.

virtual vector3D getCenterOfGravity(elementID aElementId) = 0

Gets the element center of gravity.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[vector3D] The element center of gravity position.

virtual referenceSide getReferenceSide(elementID aElementId) = 0

Gets the element reference side.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[referenceSide] The element reference side.

virtual ICwAPI3DVertexList *getElementVertices(elementID aElementId) = 0

Gets the element vertices.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[ICwAPI3DVertexList*] The element vertice list.

virtual void applyGlobalScale(ICwAPI3DElementIDList *aElementIdList, double aScale, vector3D aOrigin) = 0

Applies a global scale to element.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aScale[in] [double] The global scale.

  • aOrigin[in] [vector3D] The scalling origin.

virtual void autoRegenerateAxes(ICwAPI3DElementIDList *aElementIdList) = 0

Automatically regenerates axes on element.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

virtual void rotateLengthAxis90(ICwAPI3DElementIDList *aElementIdList) = 0

Rotates element length axis 90 degrees.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

virtual void rotateLengthAxis180(ICwAPI3DElementIDList *aElementIdList) = 0

Rotates element length axis 180 degrees.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

virtual void invertModel(ICwAPI3DElementIDList *aElementIdList) = 0

Inverts element model.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

virtual ICwAPI3DFacetList *getElementFacets(elementID aElementId) = 0

Gets the element facet list.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[ICwAPI3DFacetList*] The element facet list.

virtual double getListWidth(elementID aElementId) = 0

Get the element list width.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element list width.

virtual double getListHeight(elementID aElementId) = 0

Gets the element list height.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element list height.

virtual double getListLength(elementID aElementId) = 0

Gets the element list length.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element list length.

virtual void setWidthReal(ICwAPI3DElementIDList *aElementIdList, double aWidth) = 0

Sets the element real width.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aWidth[in] [double] The element real width.

virtual void setHeightReal(ICwAPI3DElementIDList *aElementIdList, double aHeight) = 0

Sets the element real height.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aHeight[in] [double] The element real height.

virtual void setLengthReal(ICwAPI3DElementIDList *aElementIdList, double aLength) = 0

Gets the element real length.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aLength[in] [double] The element real length.

virtual void rotateHeightAxis2Points(ICwAPI3DElementIDList *aElementIdList, vector3D aPoint1, vector3D aPoint2) = 0

Rotates the element height axis via 2 points.

Parameters:
virtual double getMinimumDistanceBetweenElements(elementID aFirstElementId, elementID aSecondElementId) = 0

Gets the minimum distance between 2 elements.

Parameters:
  • aFirstElementId[in] [elementID] The first element id.

  • aSecondElementId[in] [elementID] The second element id.

Returns:

[double] The minimum distance.

virtual double getTotalAreaOfAllFaces(elementID aElementId) = 0

Gets the total area of all faces for element.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element total faces area.

virtual double getAreaOfFrontFace(elementID aElementId) = 0

Gets the front face are for element.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The element front face area.

virtual double getDoorSurface(ICwAPI3DElementIDList *aElementIdList) = 0

Gets the element door surface.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

Returns:

[double] The element door surface.

virtual double getWindowSurface(ICwAPI3DElementIDList *aElementIdList) = 0

Gets the element window surface.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

Returns:

[double] The element window surface.

virtual void createDivisionZone(elementID aElementId, vector3D aPoint, divisionZoneDirection aDirection) = 0

Creates a division zone.

Parameters:
virtual void deleteDivisionZone(elementID aElementId) = 0

Deletes a division zone.

Parameters:

aElementId[in] [elementID] The element Id.

virtual ICwAPI3DVertexList *getDivisionZonePoints(elementID aElementId) = 0

Gets the division zone points.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[ICwAPI3DVertexList*] The division zone points.

virtual vector3D getLocalX() = 0

Gets the rotated global coordinate direction (X’).

Returns:

[vector3D] The local X vector.

virtual vector3D getLocalZ() = 0

Gets the rotated global coordinate direction (Z’).

Returns:

[vector3D] The local Y vector.

virtual vector3D getLocalY() = 0

Gets the rotated global coordinate direction (Y’).

Returns:

[vector3D] The local Z vector.

virtual void clearErrors() = 0

Clears all errors.

virtual void setDrillingTolerance(ICwAPI3DElementIDList *aElementIdList, double aTolerance) = 0

Gets the division zone points.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aTolerance[in] [double] The new drilling tolerance.

virtual double getDrillingTolerance(elementID aElementId) = 0

Gets the drilling tolerance of an axis.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The drilling tolerance.

virtual ICwAPI3DVertexList *getElementReferenceFaceVertices(elementID aElementId) = 0

Gets the vertices of the reference side.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[ICwAPI3DVertexList*] The vertexlist of all points.

virtual double getElementReferenceFaceArea(elementID aElementId) = 0

Gets the area of the reference side.

Parameters:

aElementId[in] [elementID] The element Id.

Returns:

[double] The area(size) of reference face.

virtual void autoRegenerateAxesSilently(ICwAPI3DElementIDList *aElementIdList) = 0

Automatically regenerates axes on elements without any user interaction.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] List The list of element IDs for which the axes will be regenerated.

virtual void rotateLengthAxis2Points(ICwAPI3DElementIDList *aElementIdList, vector3D aPoint1, vector3D aPoint2) = 0

Rotates the element length axis via 2 points.

Parameters:
virtual vector3D getCenterOfGravityForList(ICwAPI3DElementIDList *aElementIdList) = 0

Gets the center of gravity for a list of elements.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] List The list of element IDs.

Returns:

[vector3D] The center of gravity as a vector3D.

virtual vector3D getCenterOfGravityForListConsideringMaterials(ICwAPI3DElementIDList *aElementIdList) = 0

Gets the center of gravity for a list of elements, considering their materials.

Parameters:

aElementIdList[in] [ICwAPI3DElementIDList*] List The list of element IDs.

Returns:

[vector3D] The center of gravity as a vector3D.

virtual uint32_t getElementFacetCount(elementID aElementId) = 0

Gets the count of facets for a specific element.

Parameters:

aElementId[in] [elementID] The ID of the element.

Returns:

[uint32_t] The count of facets.

virtual double getWeightReal(elementID aElementId) = 0

Gets the real weight of the element.

Parameters:

aElementId[in] [elementID] The ID of the element.

Returns:

[double] The real weight of the element.

virtual double getActualPhysicalVolume(elementID aElementId) = 0

Gets actual physical volume (includes negative geometry operations, such as end-types, drillings, connectors, openings, and MEP elements) (it might also take into account different drilling bodies and counterbores in a connector).

Parameters:

aElementId[in] [elementID] The element id.

Returns:

[double] The actual physical volume.

virtual bool areFacetsCoplanar(ICwAPI3DVertexList *aFirstFacet, ICwAPI3DVertexList *aSecondFacet) = 0

Tests if facets are coplanar.

Parameters:
Returns:

[bool] True if facets are coplanar, false otherwise.

virtual bool getRoundMachineRoughPartNegativeWidth(elementID aElementId) = 0

Gets the value of option RoundMachineRoughPartNegativeWidth.

Parameters:

aElementId[in] [elementID] The element id.

Returns:

[bool] The option RoundMachineRoughPartNegativeWidth value.

virtual void setRoundMachineRoughPartNegativeWidth(ICwAPI3DElementIDList *aElementIdList, bool aValue) = 0

Sets the value of option RoundMachineRoughPartNegativeWidth.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [bool] The new option RoundMachineRoughPartNegativeWidth value.

virtual bool getRoundMachineRoughPartPositiveWidth(elementID aElementId) = 0

Gets the value of option RoundMachineRoughPartPositiveWidth.

Parameters:

aElementId[in] [elementID] The element id.

Returns:

[bool] The option RoundMachineRoughPartPositiveWidth value.

virtual void setRoundMachineRoughPartPositiveWidth(ICwAPI3DElementIDList *aElementIdList, bool aValue) = 0

Sets the value of option RoundMachineRoughPartPositiveWidth.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [bool] The new option RoundMachineRoughPartPositiveWidth value.

virtual bool getRoundMachineRoughPartNegativeHeight(elementID aElementId) = 0

Gets the value of option RoundMachineRoughPartNegativeHeight.

Parameters:

aElementId[in] [elementID] The element id.

Returns:

[bool] The option RoundMachineRoughPartNegativeHeight value.

virtual void setRoundMachineRoughPartNegativeHeight(ICwAPI3DElementIDList *aElementIdList, bool aValue) = 0

Sets the value of option RoundMachineRoughPartNegativeHeight.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [bool] The new option RoundMachineRoughPartNegativeHeight value.

virtual bool getRoundMachineRoughPartPositiveHeight(elementID aElementId) = 0

Gets the value of option RoundMachineRoughPartPositiveHeight.

Parameters:

aElementId[in] [elementID] The element id.

Returns:

[bool] The option RoundMachineRoughPartPositiveHeight value.

virtual void setRoundMachineRoughPartPositiveHeight(ICwAPI3DElementIDList *aElementIdList, bool aValue) = 0

Sets the value of option RoundMachineRoughPartPositiveHeight.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [bool] The new option RoundMachineRoughPartPositiveHeight options.

virtual bool getRoundMachineRoughPartNegativeLength(elementID aElementId) = 0

Gets the value of option RoundMachineRoughPartNegativeLength.

Parameters:

aElementId[in] [elementID] The element id.

Returns:

[bool] The option RoundMachineRoughPartNegativeLength value.

virtual void setRoundMachineRoughPartNegativeLength(ICwAPI3DElementIDList *aElementIdList, bool aValue) = 0

Sets the value of option RoundMachineRoughPartNegativeLength.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [bool] The new option RoundMachineRoughPartNegativeLength value.

virtual bool getRoundMachineRoughPartPositiveLength(elementID aElementId) = 0

Gets the value of option RoundMachineRoughPartPositiveLength.

Parameters:

aElementId[in] [elementID] The element id.

Returns:

[bool] The option RoundMachineRoughPartPositiveLength value.

virtual void setRoundMachineRoughPartPositiveLength(ICwAPI3DElementIDList *aElementIdList, bool aValue) = 0

Sets the value of option RoundMachineRoughPartPositiveLength.

Parameters:
  • aElementIdList[in] [ICwAPI3DElementIDList*] The element id list.

  • aValue[in] [bool] The new option RoundMachineRoughPartPositiveLength value.

virtual double getStandardElementWidthFromGuid(const character *aStandardElementGuid) = 0

Get the standard element width.

Parameters:

aStandardElementGuid[in] [const character*] The standard element guid.

Returns:

[double] The standard element width.

virtual double getStandardElementHeightFromGuid(const character *aStandardElementGuid) = 0

Get the standard element height.

Parameters:

aStandardElementGuid[in] [const character*] The standard element guid.

Returns:

[double] The standard element height.

virtual double getStandardElementLengthFromGuid(const character *aStandardElementGuid) = 0

Get the standard element length.

Parameters:

aStandardElementGuid[in] [const character*] The standard element guid.

Returns:

[double] The standard element length.

virtual double getStandardElementWidthFromName(const character *aStandardElementName) = 0

Get the standard element width.

Parameters:

aStandardElementName[in] [const character*] The standard element name.

Returns:

[double] The standard element width.

virtual double getStandardElementHeightFromName(const character *aStandardElementName) = 0

Get the standard element height.

Parameters:

aStandardElementName[in] [const character*] The standard element name.

Returns:

[double] The standard element height.

virtual double getStandardElementLengthFromName(const character *aStandardElementName) = 0

Get the standard element length.

Parameters:

aStandardElementName[in] [const character*] The standard element name.

Returns:

[double] The standard element length.

virtual double getLengthIncludingEndTypes(elementID aElementId) = 0

Gets the length of an element including end-types.

Parameters:

aElementId[in] [elementID] The element id.

Returns:

[double] The element length including end-types.