3892 lines
117 KiB
C
3892 lines
117 KiB
C
/**
|
|
* @file GoSurfaceTools.c
|
|
*
|
|
* @internal
|
|
* Copyright (C) 2016-2021 by LMI Technologies Inc.
|
|
* Licensed under the MIT License.
|
|
* Redistributed files must retain the above copyright notice.
|
|
*/
|
|
#include <GoSdk/Tools/GoSurfaceTools.h>
|
|
#include <GoSdk/Tools/GoExtTool.h>
|
|
#include <GoSdk/GoSensor.h>
|
|
|
|
kBeginClassEx(Go, GoSurfaceTool)
|
|
kAddVMethod(GoSurfaceTool, kObject, VRelease)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceTool_Init(GoSurfaceTool tool, kType type, GoToolType typeId, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceTool, tool);
|
|
|
|
kCheck(GoTool_Init(tool, type, typeId, sensor, alloc));
|
|
|
|
obj->streamOptions = kNULL;
|
|
obj->sourceOptions = kNULL;
|
|
obj->xAnchorOptions = kNULL;
|
|
obj->yAnchorOptions = kNULL;
|
|
obj->zAnchorOptions = kNULL;
|
|
obj->zAngleAnchorOptions = kNULL;
|
|
|
|
obj->source = GO_DATA_SOURCE_TOP;
|
|
obj->stream.step = GO_DATA_STEP_SURFACE;
|
|
obj->stream.id = 0;
|
|
obj->xAnchor = GO_MEASUREMENT_ID_NONE;
|
|
obj->yAnchor = GO_MEASUREMENT_ID_NONE;
|
|
obj->zAnchor = GO_MEASUREMENT_ID_NONE;
|
|
obj->zAngleAnchor = GO_MEASUREMENT_ID_NONE;
|
|
|
|
kCheck(kArrayList_Construct(&obj->streamOptions, kTypeOf(GoDataStream), 0, alloc));
|
|
kCheck(kArrayList_Construct(&obj->sourceOptions, kTypeOf(GoDataSource), 0, alloc));
|
|
|
|
kCheck(kArrayList_Construct(&obj->xAnchorOptions, kTypeOf(k32u), 0, alloc));
|
|
kCheck(kArrayList_Construct(&obj->yAnchorOptions, kTypeOf(k32u), 0, alloc));
|
|
kCheck(kArrayList_Construct(&obj->zAnchorOptions, kTypeOf(k32u), 0, alloc));
|
|
kCheck(kArrayList_Construct(&obj->zAngleAnchorOptions, kTypeOf(k32u), 0, alloc));
|
|
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceTool_VRelease(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
kCheck(kDisposeRef(&obj->streamOptions));
|
|
kCheck(kDisposeRef(&obj->sourceOptions));
|
|
|
|
kCheck(kDisposeRef(&obj->xAnchorOptions));
|
|
kCheck(kDisposeRef(&obj->yAnchorOptions));
|
|
kCheck(kDisposeRef(&obj->zAnchorOptions));
|
|
kCheck(kDisposeRef(&obj->zAngleAnchorOptions));
|
|
|
|
return GoTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceTool_Read(GoSurfaceTool tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
kString text = kNULL;
|
|
kXmlItem anchorItem = kNULL;
|
|
kXmlItem tempItem = kNULL;
|
|
kXmlItem streamItem;
|
|
|
|
kCheck(GoTool_VRead(tool, xml, item));
|
|
kCheck(GoToolUtil_ParseStreamOptions(tool, xml, item, obj->streamOptions));
|
|
|
|
kTry
|
|
{
|
|
kTest(kString_Construct(&text, kNULL, kObject_Alloc(tool)));
|
|
|
|
if (kXml_ChildExists(xml, item, "Stream"))
|
|
{
|
|
streamItem = kXml_Child(xml, item, "Stream");
|
|
|
|
kTest(kXml_Child32s(xml, streamItem, "Step", &obj->stream.step));
|
|
kTest(kXml_Child32s(xml, streamItem, "Id", &obj->stream.id));
|
|
}
|
|
|
|
kTest(kXml_Child32s(xml, item, "Source", &obj->source));
|
|
kTest(!kIsNull(tempItem = kXml_Child(xml, item, "Source")));
|
|
kTest(kXml_AttrString(xml, tempItem, "options", text));
|
|
kTest(GoOptionList_ParseList32u(kString_Chars(text), obj->sourceOptions));
|
|
|
|
kTestArgs(!kIsNull(anchorItem = kXml_Child(xml, item, "Anchor")));
|
|
if (kXml_ChildExists(xml, anchorItem, "X"))
|
|
{
|
|
kTest(kXml_Child32s(xml, anchorItem, "X", &obj->xAnchor));
|
|
kTestArgs(!kIsNull(tempItem = kXml_Child(xml, anchorItem, "X")));
|
|
kTest(kXml_AttrString(xml, tempItem, "options", text));
|
|
kTest(GoOptionList_ParseList32u(kString_Chars(text), obj->xAnchorOptions));
|
|
}
|
|
|
|
if (kXml_ChildExists(xml, anchorItem, "Y"))
|
|
{
|
|
kTest(kXml_Child32s(xml, anchorItem, "Y", &obj->yAnchor));
|
|
kTestArgs(!kIsNull(tempItem = kXml_Child(xml, anchorItem, "Y")));
|
|
kTest(kXml_AttrString(xml, tempItem, "options", text));
|
|
kTest(GoOptionList_ParseList32u(kString_Chars(text), obj->yAnchorOptions));
|
|
}
|
|
|
|
if (kXml_ChildExists(xml, anchorItem, "Z"))
|
|
{
|
|
kTest(kXml_Child32s(xml, anchorItem, "Z", &obj->zAnchor));
|
|
kTestArgs(!kIsNull(tempItem = kXml_Child(xml, anchorItem, "Z")));
|
|
kTest(kXml_AttrString(xml, tempItem, "options", text));
|
|
kTest(GoOptionList_ParseList32u(kString_Chars(text), obj->zAnchorOptions));
|
|
}
|
|
|
|
if (kXml_ChildExists(xml, anchorItem, "ZAngle"))
|
|
{
|
|
kTest(kXml_Child32s(xml, anchorItem, "ZAngle", &obj->zAngleAnchor));
|
|
kTestArgs(!kIsNull(tempItem = kXml_Child(xml, anchorItem, "ZAngle")));
|
|
kTest(kXml_AttrString(xml, tempItem, "options", text));
|
|
kTest(GoOptionList_ParseList32u(kString_Chars(text), obj->zAngleAnchorOptions));
|
|
}
|
|
}
|
|
kFinally
|
|
{
|
|
kObject_Dispose(text);
|
|
kEndFinally();
|
|
}
|
|
|
|
return kOK; }
|
|
|
|
GoFx(kStatus) GoSurfaceTool_Write(GoSurfaceTool tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
kXmlItem streamItem = kNULL;
|
|
kXmlItem anchorItem = kNULL;
|
|
|
|
kCheck(kXml_AddItem(xml, item, "Stream", &streamItem));
|
|
kCheck(kXml_SetChild32s(xml, streamItem, "Step", obj->stream.step));
|
|
kCheck(kXml_SetChild32s(xml, streamItem, "Id", obj->stream.id));
|
|
|
|
kCheck(kXml_SetChild32s(xml, item, "Source", obj->source));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "Anchor", &anchorItem));
|
|
kCheck(kXml_SetChild32s(xml, anchorItem, "X", obj->xAnchor));
|
|
kCheck(kXml_SetChild32s(xml, anchorItem, "Y", obj->yAnchor));
|
|
kCheck(kXml_SetChild32s(xml, anchorItem, "Z", obj->zAnchor));
|
|
kCheck(kXml_SetChild32s(xml, anchorItem, "ZAngle", obj->zAngleAnchor));
|
|
|
|
kCheck(GoTool_VWrite(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
|
|
GoFx(kSize) GoSurfaceTool_StreamOptionCount(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return kArrayList_Count(obj->streamOptions);
|
|
}
|
|
|
|
GoFx(GoDataStream) GoSurfaceTool_StreamOptionAt(GoSurfaceTool tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
kAssert(index < kArrayList_Count(obj->streamOptions));
|
|
|
|
return kArrayList_AsT(obj->streamOptions, index, GoDataStream);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceTool_SetStream(GoSurfaceTool tool, GoDataStream stream)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_SyncConfig(GoTool_Sensor(tool)));
|
|
|
|
if (GoTools_IsToolInOptionsList(GoSensor_Tools(GoTool_Sensor(tool)), kObject_Type(tool)))
|
|
{
|
|
kCheck(GoOptionList_CheckDataStream(kArrayList_DataT(obj->streamOptions, const GoDataStream), kArrayList_Count(obj->streamOptions), stream));
|
|
}
|
|
|
|
obj->stream = stream;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoDataStream) GoSurfaceTool_Stream(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return obj->stream;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceTool_SetSource(GoSurfaceTool tool, GoDataSource source)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_SyncConfig(GoTool_Sensor(tool)));
|
|
|
|
if (GoTools_IsToolInOptionsList(GoSensor_Tools(GoTool_Sensor(tool)), kObject_Type(tool)))
|
|
{
|
|
kCheck(GoOptionList_Check32u(kArrayList_DataT(obj->sourceOptions, const k32u), kArrayList_Count(obj->sourceOptions), source));
|
|
}
|
|
|
|
obj->source = source;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceTool_SourceOptionCount(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return kArrayList_Count(obj->sourceOptions);
|
|
}
|
|
|
|
GoFx(k32u) GoSurfaceTool_SourceOptionAt(GoSurfaceTool tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
kAssert(index < kArrayList_Count(obj->sourceOptions));
|
|
|
|
return kArrayList_AsT(obj->sourceOptions, index, k32u);
|
|
}
|
|
|
|
GoFx(GoDataSource) GoSurfaceTool_Source(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return obj->source;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceTool_XAnchorOptionCount(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return kArrayList_Count(obj->xAnchorOptions);
|
|
}
|
|
|
|
GoFx(k32u) GoSurfaceTool_XAnchorOptionAt(GoSurfaceTool tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
kAssert(index < kArrayList_Count(obj->xAnchorOptions));
|
|
|
|
return kArrayList_AsT(obj->xAnchorOptions, index, k32u);
|
|
}
|
|
|
|
GoFx(k32s) GoSurfaceTool_XAnchor(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return obj->xAnchor;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceTool_SetXAnchor(GoSurfaceTool tool, k32s id)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_SyncConfig(GoTool_Sensor(tool)));
|
|
|
|
if (id != GO_MEASUREMENT_ID_NONE)
|
|
{
|
|
kCheck(GoOptionList_Check32u(kArrayList_DataT(obj->xAnchorOptions, const k32u), kArrayList_Count(obj->xAnchorOptions), id));
|
|
}
|
|
|
|
obj->xAnchor = id;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceTool_XAnchorEnabled(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
if (obj->xAnchor != GO_MEASUREMENT_ID_NONE)
|
|
{
|
|
return kTRUE;
|
|
}
|
|
|
|
return kFALSE;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceTool_YAnchorOptionCount(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return kArrayList_Count(obj->yAnchorOptions);
|
|
}
|
|
|
|
GoFx(k32u) GoSurfaceTool_YAnchorOptionAt(GoSurfaceTool tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
kAssert(index < kArrayList_Count(obj->yAnchorOptions));
|
|
|
|
return kArrayList_AsT(obj->yAnchorOptions, index, k32u);
|
|
}
|
|
|
|
GoFx(k32s) GoSurfaceTool_YAnchor(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return obj->yAnchor;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceTool_SetYAnchor(GoSurfaceTool tool, k32s id)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_SyncConfig(GoTool_Sensor(tool)));
|
|
|
|
if (id != GO_MEASUREMENT_ID_NONE)
|
|
{
|
|
kCheck(GoOptionList_Check32u(kArrayList_DataT(obj->yAnchorOptions, const k32u), kArrayList_Count(obj->yAnchorOptions), id));
|
|
}
|
|
|
|
obj->yAnchor = id;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceTool_YAnchorEnabled(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
if (obj->yAnchor != GO_MEASUREMENT_ID_NONE)
|
|
{
|
|
return kTRUE;
|
|
}
|
|
|
|
return kFALSE;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceTool_ZAnchorOptionCount(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return kArrayList_Count(obj->zAnchorOptions);
|
|
}
|
|
|
|
GoFx(k32u) GoSurfaceTool_ZAnchorOptionAt(GoSurfaceTool tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
kAssert(index < kArrayList_Count(obj->zAnchorOptions));
|
|
|
|
return kArrayList_AsT(obj->zAnchorOptions, index, k32u);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceTool_SetZAnchor(GoSurfaceTool tool, k32s id)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_SyncConfig(GoTool_Sensor(tool)));
|
|
|
|
if (id != GO_MEASUREMENT_ID_NONE)
|
|
{
|
|
kCheck(GoOptionList_Check32u(kArrayList_DataT(obj->zAnchorOptions, const k32u), kArrayList_Count(obj->zAnchorOptions), id));
|
|
}
|
|
|
|
obj->zAnchor = id;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
|
|
GoFx(kBool) GoSurfaceTool_ZAnchorEnabled(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
if (obj->zAnchor != GO_MEASUREMENT_ID_NONE)
|
|
{
|
|
return kTRUE;
|
|
}
|
|
|
|
return kFALSE;
|
|
}
|
|
|
|
GoFx(k32s) GoSurfaceTool_ZAnchor(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return obj->zAnchor;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceTool_ZAngleAnchorOptionCount(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return kArrayList_Count(obj->zAngleAnchorOptions);
|
|
}
|
|
|
|
GoFx(k32u) GoSurfaceTool_ZAngleAnchorOptionAt(GoSurfaceTool tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
kAssert(index < kArrayList_Count(obj->zAngleAnchorOptions));
|
|
|
|
return kArrayList_AsT(obj->zAngleAnchorOptions, index, k32u);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceTool_SetZAngleAnchor(GoSurfaceTool tool, k32s id)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_SyncConfig(GoTool_Sensor(tool)));
|
|
|
|
if (id != GO_MEASUREMENT_ID_NONE)
|
|
{
|
|
kCheck(GoOptionList_Check32u(kArrayList_DataT(obj->zAngleAnchorOptions, const k32u), kArrayList_Count(obj->zAngleAnchorOptions), id));
|
|
}
|
|
|
|
obj->zAngleAnchor = id;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceTool_ZAngleAnchorEnabled(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
if (obj->zAngleAnchor != GO_MEASUREMENT_ID_NONE)
|
|
{
|
|
return kTRUE;
|
|
}
|
|
|
|
return kFALSE;
|
|
}
|
|
|
|
GoFx(k32s) GoSurfaceTool_ZAngleAnchor(GoSurfaceTool tool)
|
|
{
|
|
kObj(GoSurfaceTool, tool);
|
|
|
|
GoSensor_SyncConfig(obj->base.sensor);
|
|
|
|
return obj->zAngleAnchor;
|
|
}
|
|
|
|
kBeginClassEx(Go, GoSurfaceBox)
|
|
kAddVMethod(GoSurfaceBox, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceBox, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceBox, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceBox, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceBox_Construct(GoSurfaceBox* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceBox), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceBox_VInit(GoSurfaceBox tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceBox, tool);
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_BOUNDING_BOX, sensor, alloc));
|
|
obj->zRotationEnabled = kFALSE;
|
|
obj->regionEnabled = kFALSE;
|
|
obj->region = kNULL;
|
|
obj->asymDetectType = GO_BOX_ASYMMETRY_TYPE_NONE;
|
|
|
|
kCheck(GoRegion3d_Construct(&obj->region, sensor, alloc));
|
|
|
|
obj->regionEnabled = kTRUE;
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxZ), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxWidth), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxLength), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxHeight), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxGlobalX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxGlobalY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceBoxGlobalZAngle), kTRUE, kNULL));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceBox_VRelease(GoSurfaceBox tool)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
|
|
kDestroyRef(&obj->region);
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceBox_VRead(GoSurfaceBox tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "ZRotationEnabled", &obj->zRotationEnabled));
|
|
kCheck(kXml_ChildBool(xml, item, "RegionEnabled", &obj->regionEnabled));
|
|
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, item, "Region")));
|
|
kCheck(GoRegion3d_Read(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_Child32s(xml, item, "AsymmetryDetectionType", &obj->asymDetectType));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceBox_VWrite(GoSurfaceBox tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "ZRotationEnabled", obj->zRotationEnabled));
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionEnabled", obj->regionEnabled));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_SetChild32s(xml, item, "AsymmetryDetectionType", obj->asymDetectType));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceBox_ZRotationEnabled(GoSurfaceBox tool)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
|
|
return obj->zRotationEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceBox_EnableZRotation(GoSurfaceBox tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->zRotationEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceBox_RegionEnabled(GoSurfaceBox tool)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
|
|
return obj->regionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceBox_EnableRegion(GoSurfaceBox tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->regionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfaceBox_Region(GoSurfaceBox tool)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
|
|
return obj->region;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceBox_SetAsymmetryDetectionType(GoSurfaceBox tool, GoBoxAsymmetryType value)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->asymDetectType = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoBoxAsymmetryType) GoSurfaceBox_AsymmetryDetectionType(GoSurfaceBox tool)
|
|
{
|
|
kObj(GoSurfaceBox, tool);
|
|
|
|
return obj->asymDetectType;
|
|
}
|
|
|
|
|
|
GoFx(GoSurfaceBoxX) GoSurfaceBox_XMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_X);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxY) GoSurfaceBox_YMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_Y);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxZ) GoSurfaceBox_ZMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_Z);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxWidth) GoSurfaceBox_WidthMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_WIDTH);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxLength) GoSurfaceBox_LengthMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_LENGTH);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxHeight) GoSurfaceBox_HeightMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_HEIGHT);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxZAngle) GoSurfaceBox_ZAngleMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_ZANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxGlobalX) GoSurfaceBox_GlobalXMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_GLOBAL_X);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxGlobalY) GoSurfaceBox_GlobalYMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_GLOBAL_Y);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoxGlobalZAngle) GoSurfaceBox_GlobalZAngleMeasurement(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_BOUNDING_BOX_GLOBAL_Z_ANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoundingBoxCenterPoint) GoSurfaceBox_CenterPoint(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_BOUNDING_BOX_CENTER_POINT);
|
|
}
|
|
|
|
GoFx(GoSurfaceBoundingBoxAxisLine) GoSurfaceBox_AxisLine(GoSurfaceBox tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_BOUNDING_BOX_AXIS_LINE);
|
|
}
|
|
|
|
kBeginClassEx(Go, GoSurfaceCountersunkHole)
|
|
kAddVMethod(GoSurfaceCountersunkHole, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceCountersunkHole, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceCountersunkHole, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceCountersunkHole, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_Construct(GoSurfaceCountersunkHole* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceCountersunkHole), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_VInit(GoSurfaceCountersunkHole tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceCountersunkHole, tool);
|
|
kSize i;
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_COUNTERSUNK_HOLE, sensor, alloc));
|
|
obj->shape = GO_SURFACE_COUNTERSUNK_HOLE_SHAPE_CONE;
|
|
obj->region = kNULL;
|
|
obj->refRegionsEnabled = kFALSE;
|
|
obj->refRegionCount = 0;
|
|
kZero(obj->refRegions);
|
|
obj->curveFitEnabled = kFALSE;
|
|
obj->curveOrientation = 0.0;
|
|
obj->planeFitRangeEnabled = kFALSE;
|
|
obj->planeFitRange = 0.0;
|
|
|
|
obj->nominalBevelAngle = 100.0;
|
|
obj->bevelAngleTolerance = 5.0;
|
|
obj->nominalOuterRadius = 10.0;
|
|
obj->outerRadiusTolerance = 1.0;
|
|
obj->nominalInnerRadius = 4.0;
|
|
obj->innerRadiusTolerance = 1.0;
|
|
obj->bevelRadiusOffset = 4.0;
|
|
obj->partialDetectionEnabled = kFALSE;
|
|
obj->autoTiltEnabled = kTRUE;
|
|
obj->tiltXAngle = 0.0;
|
|
obj->tiltYAngle = 0.0;
|
|
|
|
obj->regionEnabled = kTRUE;
|
|
kCheck(GoRegion3d_Construct(&obj->region, sensor, alloc));
|
|
|
|
obj->refRegionsEnabled = kFALSE;
|
|
obj->refRegionCount = 0;
|
|
for (i = 0; i < GO_SURFACE_COUNTERSUNK_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(GoSurfaceRegion2d_Construct(&obj->refRegions[i], sensor, alloc));
|
|
}
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleZ), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleOuterRadius), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleDepth), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleCounterboreDepth), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleBevelAngle), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleBevelRadius), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleXAngle), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleYAngle), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleAxisTilt), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceCountersunkHoleAxisOrientation), kTRUE, kNULL));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_VRelease(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
kSize i;
|
|
|
|
kDestroyRef(&obj->region);
|
|
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kDestroyRef(&obj->refRegions[i]);
|
|
}
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_VRead(GoSurfaceCountersunkHole tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
kSize i;
|
|
kXmlItem regionItem = kNULL;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
|
|
if (kXml_ChildExists(xml, item, "Shape"))
|
|
{
|
|
kCheck(kXml_Child32s(xml, item, "Shape", &obj->shape));
|
|
}
|
|
|
|
kCheck(kXml_Child64f(xml, item, "NominalBevelAngle", &obj->nominalBevelAngle));
|
|
|
|
if (kXml_ChildExists(xml, item, "BevelAngleTolerance"))
|
|
{
|
|
kCheck(kXml_Child64f(xml, item, "BevelAngleTolerance", &obj->bevelAngleTolerance));
|
|
}
|
|
|
|
kCheck(kXml_Child64f(xml, item, "NominalOuterRadius", &obj->nominalOuterRadius));
|
|
|
|
if (kXml_ChildExists(xml, item, "OuterRadiusTolerance"))
|
|
{
|
|
kCheck(kXml_Child64f(xml, item, "OuterRadiusTolerance", &obj->outerRadiusTolerance));
|
|
}
|
|
|
|
kCheck(kXml_Child64f(xml, item, "NominalInnerRadius", &obj->nominalInnerRadius));
|
|
|
|
if (kXml_ChildExists(xml, item, "InnerRadiusTolerance"))
|
|
{
|
|
kCheck(kXml_Child64f(xml, item, "InnerRadiusTolerance", &obj->innerRadiusTolerance));
|
|
}
|
|
|
|
kCheck(kXml_Child64f(xml, item, "BevelRadiusOffset", &obj->bevelRadiusOffset));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "PartialDetectionEnabled", &obj->partialDetectionEnabled));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RegionEnabled", &obj->regionEnabled));
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, item, "Region")));
|
|
kCheck(GoRegion3d_Read(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RefRegionsEnabled", &obj->refRegionsEnabled));
|
|
kCheck(kXml_ChildSize(xml, item, "RefRegionCount", &obj->refRegionCount));
|
|
|
|
kCheck(!kIsNull(refRegionsItem = kXml_Child(xml, item, "RefRegions")));
|
|
for (i = 0; i < GO_SURFACE_COUNTERSUNK_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(!kIsNull(regionItem = kXml_ChildAt(xml, refRegionsItem, i)));
|
|
kCheck(GoSurfaceRegion2d_Read(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "AutoTiltEnabled", &obj->autoTiltEnabled));
|
|
kCheck(kXml_Child64f(xml, item, "TiltXAngle", &obj->tiltXAngle));
|
|
kCheck(kXml_Child64f(xml, item, "TiltYAngle", &obj->tiltYAngle));
|
|
|
|
kCheck(GoConfig_ReadBoolOptional(xml, item, "CurveFitEnabled", kFALSE, &obj->curveFitEnabled));
|
|
kCheck(GoConfig_Read64fOptional(xml, item, "CurveOrientation", 0.0, &obj->curveOrientation));
|
|
|
|
kCheck(GoConfig_ReadBoolOptional(xml, item, "PlaneFitRangeEnabled", kFALSE, &obj->planeFitRangeEnabled));
|
|
kCheck(GoConfig_Read64fOptional(xml, item, "PlaneFitRange", 0.0, &obj->planeFitRange));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_VWrite(GoSurfaceCountersunkHole tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
kSize i;
|
|
|
|
kCheck(kXml_SetChild32s(xml, item, "Shape", obj->shape));
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalBevelAngle", obj->nominalBevelAngle));
|
|
kCheck(kXml_SetChild64f(xml, item, "BevelAngleTolerance", obj->bevelAngleTolerance));
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalOuterRadius", obj->nominalOuterRadius));
|
|
kCheck(kXml_SetChild64f(xml, item, "OuterRadiusTolerance", obj->outerRadiusTolerance));
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalInnerRadius", obj->nominalInnerRadius));
|
|
kCheck(kXml_SetChild64f(xml, item, "InnerRadiusTolerance", obj->innerRadiusTolerance));
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "BevelRadiusOffset", obj->bevelRadiusOffset));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "PartialDetectionEnabled", obj->partialDetectionEnabled));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionEnabled", obj->regionEnabled));
|
|
kCheck(kXml_AddItem(xml, item, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RefRegionsEnabled", obj->refRegionsEnabled));
|
|
kCheck(kXml_SetChildSize(xml, item, "RefRegionCount", obj->refRegionCount));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "RefRegions", &refRegionsItem));
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(kXml_AddItem(xml, refRegionsItem, "RefRegion", ®ionItem));
|
|
kCheck(GoSurfaceRegion2d_Write(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "AutoTiltEnabled", obj->autoTiltEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltXAngle", obj->tiltXAngle));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltYAngle", obj->tiltYAngle));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "CurveFitEnabled", obj->curveFitEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "CurveOrientation", obj->curveOrientation));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "PlaneFitRangeEnabled", obj->planeFitRangeEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "PlaneFitRange", obj->planeFitRange));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetShape(GoSurfaceCountersunkHole tool, GoSurfaceCountersunkHoleShape value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->shape = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleShape) GoSurfaceCountersunkHole_Shape(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->shape;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetNominalBevelAngle(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->nominalBevelAngle = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_NominalBevelAngle(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->nominalBevelAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetBevelAngleTolerance(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->bevelAngleTolerance = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_BevelAngleTolerance(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->bevelAngleTolerance;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetNominalOuterRadius(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->nominalOuterRadius = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_NominalOuterRadius(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->nominalOuterRadius;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetOuterRadiusTolerance(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->outerRadiusTolerance = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_OuterRadiusTolerance(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->outerRadiusTolerance;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetNominalInnerRadius(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->nominalInnerRadius = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_NominalInnerRadius(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->nominalInnerRadius;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetInnerRadiusTolerance(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->innerRadiusTolerance = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_InnerRadiusTolerance(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->innerRadiusTolerance;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetBevelRadiusOffset(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->bevelRadiusOffset = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_BevelRadiusOffset(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->bevelRadiusOffset;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_EnablePartialDetection(GoSurfaceCountersunkHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->partialDetectionEnabled = enable;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceCountersunkHole_PartialDetectionEnabled(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->partialDetectionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_EnableRegion(GoSurfaceCountersunkHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->regionEnabled = enable;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceCountersunkHole_RegionEnabled(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->regionEnabled;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfaceCountersunkHole_Region(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->region;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_EnableRefRegions(GoSurfaceCountersunkHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->refRegionsEnabled = enable;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceCountersunkHole_RefRegionsEnabled(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->refRegionsEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetRefRegionCount(GoSurfaceCountersunkHole tool, kSize count)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
kCheckArgs(count <= GO_SURFACE_COUNTERSUNK_HOLE_MAX_REF_REGIONS);
|
|
|
|
obj->refRegionCount = count;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceCountersunkHole_RefRegionCount(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->refRegionCount;
|
|
}
|
|
|
|
GoFx(GoSurfaceRegion2d) GoSurfaceCountersunkHole_RefRegionAt(GoSurfaceCountersunkHole tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
kAssert(index < GO_SURFACE_COUNTERSUNK_HOLE_MAX_REF_REGIONS);
|
|
|
|
return obj->refRegions[index];
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_EnableAutoTilt(GoSurfaceCountersunkHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->autoTiltEnabled = enable;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceCountersunkHole_AutoTiltEnabled(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->autoTiltEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetTiltXAngle(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->tiltXAngle = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_TiltXAngle(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->tiltXAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetTiltYAngle(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->tiltYAngle = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_TiltYAngle(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->tiltYAngle;
|
|
}
|
|
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_EnableCurveFit(GoSurfaceCountersunkHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->curveFitEnabled = enable;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceCountersunkHole_CurveFitEnabled(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->curveFitEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetCurveOrientation(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
obj->curveOrientation = value;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_CurveOrientation(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->curveOrientation;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceCountersunkHole_PlaneFitRangeEnabled(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->planeFitRangeEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_EnablePlaneFitRange(GoSurfaceCountersunkHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->planeFitRangeEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceCountersunkHole_SetPlaneFitRange(GoSurfaceCountersunkHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->planeFitRange = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceCountersunkHole_PlaneFitRange(GoSurfaceCountersunkHole tool)
|
|
{
|
|
kObj(GoSurfaceCountersunkHole, tool);
|
|
|
|
return obj->planeFitRange;
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleX) GoSurfaceCountersunkHole_XMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_X);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleY) GoSurfaceCountersunkHole_YMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_Y);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleZ) GoSurfaceCountersunkHole_ZMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_Z);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleOuterRadius) GoSurfaceCountersunkHole_OuterRadiusMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_OUTER_RADIUS);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleDepth) GoSurfaceCountersunkHole_DepthMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_DEPTH);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleCounterboreDepth) GoSurfaceCountersunkHole_CounterboreDepth(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_COUNTERBORE_DEPTH);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleBevelRadius) GoSurfaceCountersunkHole_BevelRadiusMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_BEVEL_RADIUS);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleBevelAngle) GoSurfaceCountersunkHole_BevelAngleMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_BEVEL_ANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleXAngle) GoSurfaceCountersunkHole_XAngleMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_X_ANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleYAngle) GoSurfaceCountersunkHole_YAngleMeasurement(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_Y_ANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleAxisTilt) GoSurfaceCountersunkHole_AxisTilt(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_AXIS_TILT);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleAxisOrientation) GoSurfaceCountersunkHole_AxisOrientation(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_COUNTERSUNK_HOLE_AXIS_ORIENTATION);
|
|
}
|
|
|
|
GoFx(GoSurfaceCountersunkHoleCenterPoint) GoSurfaceCountersunkHole_CenterPoint(GoSurfaceCountersunkHole tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_COUNTERSUNKHOLE_CENTER_POINT);
|
|
}
|
|
|
|
kBeginClassEx(Go, GoSurfaceDim)
|
|
kAddVMethod(GoSurfaceDim, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceDim, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceDim, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceDim, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceDim_Construct(GoSurfaceDim* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceDim), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceDim_VInit(GoSurfaceDim tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceDim, tool);
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_DIMENSION, sensor, alloc));
|
|
obj->refFeature = kNULL;
|
|
obj->feature = kNULL;
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceDimWidth), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceDimHeight), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceDimLength), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceDimDistance), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceDimPlaneDistance), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceDimCenterX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceDimCenterY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceDimCenterZ), kTRUE, kNULL));
|
|
|
|
kCheck(GoSurfaceFeature_Construct(&obj->refFeature, sensor, alloc));
|
|
kCheck(GoSurfaceFeature_Construct(&obj->feature, sensor, alloc));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceDim_VRelease(GoSurfaceDim tool)
|
|
{
|
|
kObj(GoSurfaceDim, tool);
|
|
|
|
kCheck(kDestroyRef(&obj->refFeature));
|
|
kCheck(kDestroyRef(&obj->feature));
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceDim_VRead(GoSurfaceDim tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceDim, tool);
|
|
kXmlItem featureItem;
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
kCheck(!kIsNull(featureItem = kXml_Child(xml, item, "RefFeature")));
|
|
kCheck(GoSurfaceFeature_Read(obj->refFeature, xml, featureItem));
|
|
|
|
kCheck(!kIsNull(featureItem = kXml_Child(xml, item, "Feature")));
|
|
kCheck(GoSurfaceFeature_Read(obj->feature, xml, featureItem));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceDim_VWrite(GoSurfaceDim tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceDim, tool);
|
|
kXmlItem featureItem;
|
|
|
|
kCheck(kXml_AddItem(xml, item, "RefFeature", &featureItem));
|
|
kCheck(GoSurfaceFeature_Write(obj->refFeature, xml, featureItem));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "Feature", &featureItem));
|
|
kCheck(GoSurfaceFeature_Write(obj->feature, xml, featureItem));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceFeature) GoSurfaceDim_RefFeature(GoSurfaceDim tool)
|
|
{
|
|
kObj(GoSurfaceDim, tool);
|
|
|
|
return obj->refFeature;
|
|
}
|
|
|
|
GoFx(GoSurfaceFeature) GoSurfaceDim_Feature(GoSurfaceDim tool)
|
|
{
|
|
kObj(GoSurfaceDim, tool);
|
|
|
|
return obj->feature;
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceDim_WidthMeasurement(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_DIMENSION_WIDTH);
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceDim_HeightMeasurement(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_DIMENSION_HEIGHT);
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceDim_LengthMeasurement(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_DIMENSION_LENGTH);
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceDim_DistanceMeasurement(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_DIMENSION_DISTANCE);
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceDim_PlaneDistanceMeasurement(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_DIMENSION_PLANE_DISTANCE);
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceDim_CenterXMeasurement(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_DIMENSION_CENTER_X);
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceDim_CenterYMeasurement(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_DIMENSION_CENTER_Y);
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceDim_CenterZMeasurement(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_DIMENSION_CENTER_Z);
|
|
}
|
|
|
|
GoFx(GoSurfaceDimensionCenterPoint) GoSurfaceDim_CenterPoint(GoSurfaceDim tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_DIMENSION_CENTER_POINT);
|
|
}
|
|
|
|
kBeginClassEx(Go, GoSurfaceEllipse)
|
|
kAddVMethod(GoSurfaceEllipse, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceEllipse, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceEllipse, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceEllipse, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceEllipse_Construct(GoSurfaceEllipse* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceEllipse), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceEllipse_VInit(GoSurfaceEllipse tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceEllipse, tool);
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_ELLIPSE, sensor, alloc));
|
|
obj->regionEnabled = kFALSE;
|
|
obj->region = kNULL;
|
|
obj->asymDetectType = GO_ELLIPSE_ASYMMETRY_TYPE_NONE;
|
|
|
|
kCheck(GoRegion3d_Construct(&obj->region, sensor, alloc));
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceEllipseMajor), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceEllipseMinor), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceEllipseRatio), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceEllipseZAngle), kTRUE, kNULL));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceEllipse_VRelease(GoSurfaceEllipse tool)
|
|
{
|
|
kObj(GoSurfaceEllipse, tool);
|
|
|
|
kCheck(kDestroyRef(&obj->region));
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceEllipse_VRead(GoSurfaceEllipse tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceEllipse, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RegionEnabled", &obj->regionEnabled));
|
|
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, item, "Region")));
|
|
kCheck(GoRegion3d_Read(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_Child32s(xml, item, "AsymmetryDetectionType", &obj->asymDetectType));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceEllipse_VWrite(GoSurfaceEllipse tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceEllipse, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionEnabled", obj->regionEnabled));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_SetChild32s(xml, item, "AsymmetryDetectionType", obj->asymDetectType));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceEllipse_EnableRegion(GoSurfaceEllipse tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceEllipse, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->regionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceEllipse_RegionEnabled(GoSurfaceEllipse tool)
|
|
{
|
|
kObj(GoSurfaceEllipse, tool);
|
|
|
|
return obj->regionEnabled;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfaceEllipse_Region(GoSurfaceEllipse tool)
|
|
{
|
|
kObj(GoSurfaceEllipse, tool);
|
|
|
|
return obj->region;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceEllipse_SetAsymmetryDetectionType(GoSurfaceEllipse tool, GoEllipseAsymmetryType value)
|
|
{
|
|
kObj(GoSurfaceEllipse, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->asymDetectType = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoEllipseAsymmetryType) GoSurfaceEllipse_AsymmetryDetectionType(GoSurfaceEllipse tool)
|
|
{
|
|
kObj(GoSurfaceEllipse, tool);
|
|
|
|
return obj->asymDetectType;
|
|
}
|
|
|
|
GoFx(GoSurfaceEllipseMajor) GoSurfaceEllipse_MajorMeasurement(GoSurfaceEllipse tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_ELLIPSE_MAJOR);
|
|
}
|
|
|
|
GoFx(GoSurfaceEllipseMinor) GoSurfaceEllipse_MinorMeasurement(GoSurfaceEllipse tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_ELLIPSE_MINOR);
|
|
}
|
|
|
|
GoFx(GoSurfaceEllipseRatio) GoSurfaceEllipse_RatioMeasurement(GoSurfaceEllipse tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_ELLIPSE_RATIO);
|
|
}
|
|
|
|
GoFx(GoSurfaceEllipseZAngle) GoSurfaceEllipse_ZAngleMeasurement(GoSurfaceEllipse tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_ELLIPSE_ZANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfaceEllipseCenterPoint) GoSurfaceEllipse_CenterPoint(GoSurfaceEllipse tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_ELLIPSE_CENTER_POINT);
|
|
}
|
|
|
|
GoFx(GoSurfaceEllipseMajorAxisLine) GoSurfaceEllipse_MajorAxisLine(GoSurfaceEllipse tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_ELLIPSE_MAJOR_AXIS_LINE);
|
|
}
|
|
|
|
GoFx(GoSurfaceEllipseMinorAxisLine) GoSurfaceEllipse_MinorAxisLine(GoSurfaceEllipse tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_ELLIPSE_MINOR_AXIS_LINE);
|
|
}
|
|
|
|
|
|
kBeginClassEx(Go, GoSurfaceHole)
|
|
kAddVMethod(GoSurfaceHole, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceHole, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceHole, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceHole, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceHole_Construct(GoSurfaceHole* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceHole), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_VInit(GoSurfaceHole tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceHole, tool);
|
|
kSize i;
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_HOLE, sensor, alloc));
|
|
obj->partialDetectionEnabled = kFALSE;
|
|
obj->region = kNULL;
|
|
obj->refRegionsEnabled = kFALSE;
|
|
obj->refRegionCount = 0;
|
|
kZero(obj->refRegions);
|
|
obj->tiltXAngle = 0.0;
|
|
obj->tiltYAngle = 0.0;
|
|
|
|
obj->nominalRadius = 10.0;
|
|
obj->radiusTolerance = 1.0;
|
|
obj->regionEnabled = kTRUE;
|
|
obj->autoTiltEnabled = kTRUE;
|
|
obj->depthLimitEnabled = kFALSE;
|
|
obj->depthLimit = 5.0;
|
|
|
|
kCheck(GoRegion3d_Construct(&obj->region, sensor, alloc));
|
|
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(GoSurfaceRegion2d_Construct(&obj->refRegions[i], sensor, alloc));
|
|
}
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceHoleX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceHoleY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceHoleZ), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceHoleRadius), kTRUE, kNULL));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_VRelease(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
kSize i;
|
|
|
|
kDestroyRef(&obj->region);
|
|
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kDestroyRef(&obj->refRegions[i]);
|
|
}
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_VRead(GoSurfaceHole tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
kSize i;
|
|
kXmlItem regionItem = kNULL;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
|
|
kCheck(kXml_Child64f(xml, item, "NominalRadius", &obj->nominalRadius));
|
|
kCheck(kXml_Child64f(xml, item, "RadiusTolerance", &obj->radiusTolerance));
|
|
kCheck(kXml_ChildBool(xml, item, "PartialDetectionEnabled", &obj->partialDetectionEnabled));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RegionEnabled", &obj->regionEnabled));
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, item, "Region")));
|
|
kCheck(GoRegion3d_Read(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RefRegionsEnabled", &obj->refRegionsEnabled));
|
|
kCheck(kXml_ChildSize(xml, item, "RefRegionCount", &obj->refRegionCount));
|
|
|
|
kCheck(!kIsNull(refRegionsItem = kXml_Child(xml, item, "RefRegions")));
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(!kIsNull(regionItem = kXml_ChildAt(xml, refRegionsItem, i)));
|
|
kCheck(GoSurfaceRegion2d_Read(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "AutoTiltEnabled", &obj->autoTiltEnabled));
|
|
kCheck(kXml_Child64f(xml, item, "TiltXAngle", &obj->tiltXAngle));
|
|
kCheck(kXml_Child64f(xml, item, "TiltYAngle", &obj->tiltYAngle));
|
|
|
|
kCheck(GoConfig_ReadBoolOptional(xml, item, "DepthLimitEnabled", kFALSE, &obj->depthLimitEnabled));
|
|
kCheck(GoConfig_Read64fOptional(xml, item, "DepthLimit", 0.0, &obj->depthLimit));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_VWrite(GoSurfaceHole tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
kSize i;
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalRadius", obj->nominalRadius));
|
|
kCheck(kXml_SetChild64f(xml, item, "RadiusTolerance", obj->radiusTolerance));
|
|
kCheck(kXml_SetChildBool(xml, item, "PartialDetectionEnabled", obj->partialDetectionEnabled));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionEnabled", obj->regionEnabled));
|
|
kCheck(kXml_AddItem(xml, item, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RefRegionsEnabled", obj->refRegionsEnabled));
|
|
kCheck(kXml_SetChildSize(xml, item, "RefRegionCount", obj->refRegionCount));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "RefRegions", &refRegionsItem));
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(kXml_AddItem(xml, refRegionsItem, "RefRegion", ®ionItem));
|
|
kCheck(GoSurfaceRegion2d_Write(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "AutoTiltEnabled", obj->autoTiltEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltXAngle", obj->tiltXAngle));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltYAngle", obj->tiltYAngle));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "DepthLimitEnabled", obj->depthLimitEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "DepthLimit", obj->depthLimit));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceHole_NominalRadius(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->nominalRadius;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_SetNominalRadius(GoSurfaceHole tool, k64f nominalRadius)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->nominalRadius = nominalRadius;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
GoFx(k64f) GoSurfaceHole_RadiusTolerance(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->radiusTolerance;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_SetRadiusTolerance(GoSurfaceHole tool, k64f radiusTolerance)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->radiusTolerance = radiusTolerance;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceHole_PartialDetectionEnabled(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->partialDetectionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_EnablePartialDetection(GoSurfaceHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->partialDetectionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceHole_RegionEnabled(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->regionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_EnableRegion(GoSurfaceHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->regionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfaceHole_Region(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->region;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceHole_RefRegionsEnabled(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->refRegionsEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_EnableRefRegions(GoSurfaceHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->refRegionsEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceHole_RefRegionCount(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->refRegionCount;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_SetRefRegionCount(GoSurfaceHole tool, kSize count)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheckArgs(count <= GO_SURFACE_HOLE_MAX_REF_REGIONS);
|
|
obj->refRegionCount = count;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceRegion2d) GoSurfaceHole_RefRegionAt(GoSurfaceHole tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kAssert(index < GO_SURFACE_HOLE_MAX_REF_REGIONS);
|
|
|
|
return obj->refRegions[index];
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceHole_AutoTiltEnabled(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->autoTiltEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_EnableAutoTilt(GoSurfaceHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->autoTiltEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceHole_TiltXAngle(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->tiltXAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_SetTiltXAngle(GoSurfaceHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tiltXAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceHole_TiltYAngle(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->tiltYAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_SetTiltYAngle(GoSurfaceHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tiltYAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceHole_DepthLimitEnabled(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->depthLimitEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_EnableDepthLimit(GoSurfaceHole tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->depthLimitEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceHole_DepthLimit(GoSurfaceHole tool)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
return obj->depthLimit;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceHole_SetDepthLimit(GoSurfaceHole tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceHole, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->depthLimit = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceHoleX) GoSurfaceHole_XMeasurement(GoSurfaceHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_HOLE_X);
|
|
}
|
|
|
|
GoFx(GoSurfaceHoleY) GoSurfaceHole_YMeasurement(GoSurfaceHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_HOLE_Y);
|
|
}
|
|
|
|
GoFx(GoSurfaceHoleZ) GoSurfaceHole_ZMeasurement(GoSurfaceHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_HOLE_Z);
|
|
}
|
|
|
|
GoFx(GoSurfaceHoleRadius) GoSurfaceHole_RadiusMeasurement(GoSurfaceHole tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_HOLE_RADIUS);
|
|
}
|
|
|
|
GoFx(GoSurfaceHoleCenterPoint) GoSurfaceHole_Point(GoSurfaceHole tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_HOLE_CENTER_POINT);
|
|
}
|
|
|
|
|
|
|
|
kBeginClassEx(Go, GoSurfaceOpening)
|
|
kAddVMethod(GoSurfaceOpening, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceOpening, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceOpening, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceOpening, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_Construct(GoSurfaceOpening* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceOpening), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_VInit(GoSurfaceOpening tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceOpening, tool);
|
|
kSize i;
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_OPENING, sensor, alloc));
|
|
obj->nominalAngle = 0.0;
|
|
obj->partialDetectionEnabled = kFALSE;
|
|
obj->region = kNULL;
|
|
obj->refRegionsEnabled = kFALSE;
|
|
obj->refRegionCount = 0;
|
|
kZero(obj->refRegions);
|
|
obj->tiltXAngle = 0.0;
|
|
obj->tiltYAngle = 0.0;
|
|
|
|
obj->nominalWidth = 10.0;
|
|
obj->nominalLength = 20.0;
|
|
obj->nominalRadius = 5.0;
|
|
obj->widthTolerance = 2.0;
|
|
obj->lengthTolerance = 4.0;
|
|
obj->angleTolerance = 5.0;
|
|
obj->regionEnabled = kTRUE;
|
|
obj->autoTiltEnabled = kTRUE;
|
|
obj->type = GO_SURFACE_OPENING_TYPE_ROUNDED_SLOT;
|
|
obj->depthLimitEnabled = kFALSE;
|
|
obj->depthLimit = 5.0;
|
|
|
|
kCheck(GoRegion3d_Construct(&obj->region, sensor, alloc));
|
|
|
|
for (i = 0; i < GO_SURFACE_OPENING_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(GoSurfaceRegion2d_Construct(&obj->refRegions[i], sensor, alloc));
|
|
}
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceOpeningX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceOpeningY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceOpeningZ), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceOpeningWidth), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceOpeningLength), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceOpeningAngle), kTRUE, kNULL));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_VRelease(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
kSize i;
|
|
|
|
kDestroyRef(&obj->region);
|
|
|
|
for (i = 0; i < GO_SURFACE_OPENING_MAX_REF_REGIONS; i++)
|
|
{
|
|
kDestroyRef(&obj->refRegions[i]);
|
|
}
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_VRead(GoSurfaceOpening tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
kSize i;
|
|
kXmlItem regionItem = kNULL;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
|
|
kCheck(kXml_Child32s(xml, item, "Type", &obj->type));
|
|
|
|
kCheck(kXml_Child64f(xml, item, "NominalWidth", &obj->nominalWidth));
|
|
kCheck(kXml_Child64f(xml, item, "NominalLength", &obj->nominalLength));
|
|
kCheck(kXml_Child64f(xml, item, "NominalAngle", &obj->nominalAngle));
|
|
kCheck(kXml_Child64f(xml, item, "NominalRadius", &obj->nominalRadius));
|
|
|
|
kCheck(kXml_Child64f(xml, item, "WidthTolerance", &obj->widthTolerance));
|
|
kCheck(kXml_Child64f(xml, item, "LengthTolerance", &obj->lengthTolerance));
|
|
kCheck(kXml_Child64f(xml, item, "AngleTolerance", &obj->angleTolerance));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "PartialDetectionEnabled", &obj->partialDetectionEnabled));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RegionEnabled", &obj->regionEnabled));
|
|
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, item, "Region")));
|
|
kCheck(GoRegion3d_Read(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RefRegionsEnabled", &obj->refRegionsEnabled));
|
|
kCheck(kXml_ChildSize(xml, item, "RefRegionCount", &obj->refRegionCount));
|
|
|
|
kCheck(!kIsNull(refRegionsItem = kXml_Child(xml, item, "RefRegions")));
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(!kIsNull(regionItem = kXml_ChildAt(xml, refRegionsItem, i)));
|
|
kCheck(GoSurfaceRegion2d_Read(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "AutoTiltEnabled", &obj->autoTiltEnabled));
|
|
kCheck(kXml_Child64f(xml, item, "TiltXAngle", &obj->tiltXAngle));
|
|
kCheck(kXml_Child64f(xml, item, "TiltYAngle", &obj->tiltYAngle));
|
|
|
|
kCheck(GoConfig_ReadBoolOptional(xml, item, "DepthLimitEnabled", kFALSE, &obj->depthLimitEnabled));
|
|
kCheck(GoConfig_Read64fOptional(xml, item, "DepthLimit", 0.0, &obj->depthLimit));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_VWrite(GoSurfaceOpening tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
kSize i;
|
|
|
|
kCheck(kXml_SetChild32s(xml, item, "Type", obj->type));
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalWidth", obj->nominalWidth));
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalLength", obj->nominalLength));
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalAngle", obj->nominalAngle));
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalRadius", obj->nominalRadius));
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "WidthTolerance", obj->widthTolerance));
|
|
kCheck(kXml_SetChild64f(xml, item, "LengthTolerance", obj->lengthTolerance));
|
|
kCheck(kXml_SetChild64f(xml, item, "AngleTolerance", obj->angleTolerance));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "PartialDetectionEnabled", obj->partialDetectionEnabled));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionEnabled", obj->regionEnabled));
|
|
kCheck(kXml_AddItem(xml, item, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RefRegionsEnabled", obj->refRegionsEnabled));
|
|
kCheck(kXml_SetChildSize(xml, item, "RefRegionCount", obj->refRegionCount));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "RefRegions", &refRegionsItem));
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(kXml_AddItem(xml, refRegionsItem, "RefRegion", ®ionItem));
|
|
kCheck(GoSurfaceRegion2d_Write(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "AutoTiltEnabled", obj->autoTiltEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltXAngle", obj->tiltXAngle));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltYAngle", obj->tiltYAngle));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "DepthLimitEnabled", obj->depthLimitEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "DepthLimit", obj->depthLimit));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetType(GoSurfaceOpening tool, GoSurfaceOpeningType type)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
obj->type = type;
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceOpeningType) GoSurfaceOpening_Type(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->type;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_NominalWidth(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->nominalWidth;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetNominalWidth(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->nominalWidth = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_NominalLength(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->nominalLength;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetNominalLength(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->nominalLength = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_NominalAngle(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->nominalAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetNominalAngle(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->nominalAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_NominalRadius(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->nominalRadius;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetNominalRadius(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->nominalRadius = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_WidthTolerance(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->widthTolerance;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetWidthTolerance(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->widthTolerance = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_LengthTolerance(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->lengthTolerance;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetLengthTolerance(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->lengthTolerance = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_AngleTolerance(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->angleTolerance;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetAngleTolerance(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->angleTolerance = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceOpening_PartialDetectionEnabled(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->partialDetectionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_EnablePartialDetection(GoSurfaceOpening tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->partialDetectionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceOpening_RegionEnabled(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->regionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_EnableRegion(GoSurfaceOpening tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->regionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfaceOpening_Region(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->region;
|
|
}
|
|
|
|
|
|
GoFx(kBool) GoSurfaceOpening_RefRegionsEnabled(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->refRegionsEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_EnableRefRegions(GoSurfaceOpening tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->refRegionsEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceOpening_RefRegionCount(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->refRegionCount;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetRefRegionCount(GoSurfaceOpening tool, kSize count)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheckArgs(count <= GO_SURFACE_OPENING_MAX_REF_REGIONS);
|
|
obj->refRegionCount = count;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceRegion2d) GoSurfaceOpening_RefRegionAt(GoSurfaceOpening tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kAssert(index < GO_SURFACE_OPENING_MAX_REF_REGIONS);
|
|
|
|
return obj->refRegions[index];
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceOpening_AutoTiltEnabled(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->autoTiltEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_EnableAutoTilt(GoSurfaceOpening tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->autoTiltEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_TiltXAngle(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->tiltXAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetTiltXAngle(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tiltXAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_TiltYAngle(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->tiltYAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetTiltYAngle(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tiltYAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceOpening_DepthLimitEnabled(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->depthLimitEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_EnableDepthLimit(GoSurfaceOpening tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->depthLimitEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceOpening_DepthLimit(GoSurfaceOpening tool)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
return obj->depthLimit;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceOpening_SetDepthLimit(GoSurfaceOpening tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceOpening, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->depthLimit = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceOpeningX) GoSurfaceOpening_XMeasurement(GoSurfaceOpening tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_OPENING_X);
|
|
}
|
|
|
|
GoFx(GoSurfaceOpeningY) GoSurfaceOpening_YMeasurement(GoSurfaceOpening tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_OPENING_Y);
|
|
}
|
|
|
|
GoFx(GoSurfaceOpeningZ) GoSurfaceOpening_ZMeasurement(GoSurfaceOpening tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_OPENING_Z);
|
|
}
|
|
|
|
GoFx(GoSurfaceOpeningWidth) GoSurfaceOpening_WidthMeasurement(GoSurfaceOpening tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_OPENING_WIDTH);
|
|
}
|
|
|
|
GoFx(GoSurfaceOpeningLength) GoSurfaceOpening_LengthMeasurement(GoSurfaceOpening tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_OPENING_LENGTH);
|
|
}
|
|
|
|
GoFx(GoSurfaceOpeningAngle) GoSurfaceOpening_AngleMeasurement(GoSurfaceOpening tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_OPENING_ANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfaceOpeningCenterPoint) GoSurfaceOpening_CenterPoint(GoSurfaceHole tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_OPENING_CENTER_POINT);
|
|
}
|
|
|
|
|
|
|
|
kBeginClassEx(Go, GoSurfacePlane)
|
|
kAddVMethod(GoSurfacePlane, kObject, VRelease)
|
|
kAddVMethod(GoSurfacePlane, GoTool, VInit)
|
|
kAddVMethod(GoSurfacePlane, GoTool, VRead)
|
|
kAddVMethod(GoSurfacePlane, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfacePlane_Construct(GoSurfacePlane* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfacePlane), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePlane_VInit(GoSurfacePlane tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfacePlane, tool);
|
|
kSize i;
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_PLANE, sensor, alloc));
|
|
kZero(obj->regions);
|
|
|
|
obj->regionsEnabled = kTRUE;
|
|
obj->regionCount = 1;
|
|
|
|
for (i = 0; i < GO_SURFACE_PLANE_MAX_REGIONS; i++)
|
|
{
|
|
kCheck(GoRegion3d_Construct(&obj->regions[i], sensor, alloc));
|
|
}
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneXAngle), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneYAngle), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneZOffset), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneStdDev), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneMinError), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneMaxError), kTRUE, kNULL));
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneXNormal), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneYNormal), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneZNormal), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePlaneDistance), kTRUE, kNULL));
|
|
|
|
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePlane_VRelease(GoSurfacePlane tool)
|
|
{
|
|
kObj(GoSurfacePlane, tool);
|
|
kSize i;
|
|
|
|
for (i = 0; i < GO_SURFACE_PLANE_MAX_REGIONS; i++)
|
|
{
|
|
kDestroyRef(&obj->regions[i]);
|
|
}
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePlane_VRead(GoSurfacePlane tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfacePlane, tool);
|
|
kSize i;
|
|
kXmlItem regionsItem = kNULL;
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RegionsEnabled", &obj->regionsEnabled));
|
|
kCheck(kXml_ChildSize(xml, item, "RegionCount", &obj->regionCount));
|
|
|
|
// For compatibility with different sensor software versions which may
|
|
// support more regions than the SDK can support, limit
|
|
// max number of regions to the number supported by the SDK code.
|
|
if (obj->regionCount > GO_SURFACE_PLANE_MAX_REGIONS)
|
|
{
|
|
obj->regionCount = GO_SURFACE_PLANE_MAX_REGIONS;
|
|
}
|
|
|
|
kCheck(!kIsNull(regionsItem = kXml_Child(xml, item, "Regions")));
|
|
|
|
// The XML file contains a persistent record of region parameters, even
|
|
// if the region is not selected. These parameters are expected to be
|
|
// available again when the region is selected, so it is important
|
|
// to store _all_ the region parameters in the tool object, up to the
|
|
// maximum number of regions supported by the SDK software.
|
|
// The excess region data from the XML file are discarded.
|
|
// NOTE: the region count is the number of regions in use, and is not
|
|
// the total number of regions supported.
|
|
for (i = 0; i < GO_SURFACE_PLANE_MAX_REGIONS; i++)
|
|
{
|
|
// It is an error if there are less regions than the region count.
|
|
if (kIsNull(regionItem = kXml_ChildAt(xml, regionsItem, i)))
|
|
{
|
|
// There are fewer regions in the XML file than is supported by
|
|
// the sensor. This is a supported scenario. The extra regions
|
|
// in the SDK software will be all set to zeroes.
|
|
break;
|
|
}
|
|
kCheck(GoRegion3d_Read(obj->regions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePlane_VWrite(GoSurfacePlane tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfacePlane, tool);
|
|
kSize i;
|
|
kXmlItem regionsItem = kNULL;
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionsEnabled", obj->regionsEnabled));
|
|
kCheck(kXml_SetChildSize(xml, item, "RegionCount", obj->regionCount));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "Regions", ®ionsItem));
|
|
|
|
// For backwards compatibility with older sensor firmware that expected
|
|
// the maximum number of supported regions to be in the XML configuration
|
|
// file, and therefore read that number of regions, always write the
|
|
// maximum supported regions into the configuration file.
|
|
for (i = 0; i < GO_SURFACE_PLANE_MAX_REGIONS; i++)
|
|
{
|
|
kCheck(kXml_AddItem(xml, regionsItem, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->regions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfacePlane_RegionsEnabled(GoSurfacePlane tool)
|
|
{
|
|
kObj(GoSurfacePlane, tool);
|
|
|
|
return obj->regionsEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePlane_EnableRegions(GoSurfacePlane tool, kBool enable)
|
|
{
|
|
kObj(GoSurfacePlane, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->regionsEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfacePlane_RegionCount(GoSurfacePlane tool)
|
|
{
|
|
kObj(GoSurfacePlane, tool);
|
|
|
|
return obj->regionCount;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePlane_SetRegionCount(GoSurfacePlane tool, kSize count)
|
|
{
|
|
kObj(GoSurfacePlane, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
|
|
kCheckArgs(count <= GO_SURFACE_PLANE_MAX_REGIONS);
|
|
obj->regionCount = count;
|
|
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfacePlane_RegionAt(GoSurfacePlane tool, kSize index)
|
|
{
|
|
kObj(GoSurfacePlane, tool);
|
|
|
|
kAssert(index < GO_SURFACE_PLANE_MAX_REGIONS);
|
|
|
|
return obj->regions[index];
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneXAngle) GoSurfacePlane_XAngleMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_X_ANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneYAngle) GoSurfacePlane_YAngleMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_Y_ANGLE);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneZOffset) GoSurfacePlane_ZOffsetMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_Z_OFFSET);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneStdDev) GoSurfacePlane_StdDevMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_STD_DEV);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneMinError) GoSurfacePlane_MinErrorMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_ERROR_MIN);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneMaxError) GoSurfacePlane_MaxErrorMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_ERROR_MAX);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneXNormal) GoSurfacePlane_XNormalMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_X_NORMAL);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneYNormal) GoSurfacePlane_YNormalMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_Y_NORMAL);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneZNormal) GoSurfacePlane_ZNormalMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_Z_NORMAL);
|
|
}
|
|
|
|
GoFx(GoSurfacePlaneDistance) GoSurfacePlane_DistanceMeasurement(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_PLANE_DISTANCE);
|
|
}
|
|
|
|
GoFx(GoSurfacePlanePlane) GoSurfacePlane_Plane(GoSurfacePlane tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_PLANE_PLANE);
|
|
}
|
|
|
|
kBeginClassEx(Go, GoSurfacePosition)
|
|
kAddVMethod(GoSurfacePosition, kObject, VRelease)
|
|
kAddVMethod(GoSurfacePosition, GoTool, VInit)
|
|
kAddVMethod(GoSurfacePosition, GoTool, VRead)
|
|
kAddVMethod(GoSurfacePosition, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfacePosition_Construct(GoSurfacePosition* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfacePosition), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePosition_VInit(GoSurfacePosition tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfacePosition, tool);
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_POSITION, sensor, alloc));
|
|
obj->feature = kNULL;
|
|
obj->regionEnabled = kFALSE;
|
|
obj->region = kNULL;
|
|
|
|
kCheck(GoSurfaceFeature_Construct(&obj->feature, sensor, alloc));
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePositionX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePositionY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfacePositionZ), kTRUE, kNULL));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePosition_VRelease(GoSurfacePosition tool)
|
|
{
|
|
kObj(GoSurfacePosition, tool);
|
|
|
|
kCheck(kDestroyRef(&obj->feature));
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePosition_VRead(GoSurfacePosition tool, kXml xml, kXml item)
|
|
{
|
|
kObj(GoSurfacePosition, tool);
|
|
kXmlItem featureItem = kNULL;
|
|
|
|
kCheck(!kIsNull(featureItem = kXml_Child(xml, item, "Feature")));
|
|
kCheck(GoSurfaceFeature_Read(obj->feature, xml, featureItem));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfacePosition_VWrite(GoSurfacePosition tool, kXml xml, kXml item)
|
|
{
|
|
kObj(GoSurfacePosition, tool);
|
|
kXmlItem featureItem = kNULL;
|
|
|
|
kCheck(kXml_AddItem(xml, item, "Feature", &featureItem));
|
|
kCheck(GoSurfaceFeature_Write(obj->feature, xml, featureItem));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceFeature) GoSurfacePosition_Feature(GoSurfacePosition tool)
|
|
{
|
|
kObj(GoSurfacePosition, tool);
|
|
|
|
return obj->feature;
|
|
}
|
|
|
|
GoFx(GoSurfacePositionX) GoSurfacePosition_XMeasurement(GoSurfacePosition tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_POSITION_X);
|
|
}
|
|
|
|
GoFx(GoSurfacePositionY) GoSurfacePosition_YMeasurement(GoSurfacePosition tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_POSITION_Y);
|
|
}
|
|
|
|
GoFx(GoSurfacePositionZ) GoSurfacePosition_ZMeasurement(GoSurfacePosition tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_POSITION_Z);
|
|
}
|
|
|
|
GoFx(GoSurfacePositionPoint) GoSurfacePosition_Point(GoSurfacePosition tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_POSITION_POINT);
|
|
}
|
|
|
|
kBeginClassEx(Go, GoSurfaceStud)
|
|
kAddVMethod(GoSurfaceStud, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceStud, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceStud, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceStud, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceStud_Construct(GoSurfaceStud* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceStud), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_VInit(GoSurfaceStud tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceStud, tool);
|
|
kSize i;
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_STUD, sensor, alloc));
|
|
obj->baseHeight = 0.0;
|
|
obj->tipHeight = 0.0;
|
|
obj->region = kNULL;
|
|
obj->refRegionsEnabled = kFALSE;
|
|
obj->refRegionCount = 0;
|
|
kZero(obj->refRegions);
|
|
obj->tiltXAngle = 0.0;
|
|
obj->tiltYAngle = 0.0;
|
|
|
|
obj->studRadius = 5.0;
|
|
obj->studHeight = 20.0;
|
|
obj->regionEnabled = kTRUE;
|
|
obj->autoTiltEnabled = kTRUE;
|
|
|
|
kCheck(GoRegion3d_Construct(&obj->region, sensor, alloc));
|
|
|
|
for (i = 0; i < GO_SURFACE_STUD_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(GoSurfaceRegion2d_Construct(&obj->refRegions[i], sensor, alloc));
|
|
}
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceStudBaseX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceStudBaseY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceStudBaseZ), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceStudTipX), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceStudTipY), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceStudTipZ), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceStudRadius), kTRUE, kNULL));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_VRelease(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
kSize i;
|
|
|
|
kDestroyRef(&obj->region);
|
|
|
|
for (i = 0; i < GO_SURFACE_STUD_MAX_REF_REGIONS; i++)
|
|
{
|
|
kDestroyRef(&obj->refRegions[i]);
|
|
}
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_VRead(GoSurfaceStud tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
kSize i;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_Child64f(xml, item, "StudRadius", &obj->studRadius));
|
|
kCheck(kXml_Child64f(xml, item, "StudHeight", &obj->studHeight));
|
|
kCheck(kXml_Child64f(xml, item, "BaseHeight", &obj->baseHeight));
|
|
kCheck(kXml_Child64f(xml, item, "TipHeight", &obj->tipHeight));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RegionEnabled", &obj->regionEnabled));
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, item, "Region")));
|
|
kCheck(GoRegion3d_Read(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RefRegionsEnabled", &obj->refRegionsEnabled));
|
|
kCheck(kXml_ChildSize(xml, item, "RefRegionCount", &obj->refRegionCount));
|
|
|
|
kCheck(!kIsNull(refRegionsItem = kXml_Child(xml, item, "RefRegions")));
|
|
kCheck(kXml_ChildCount(xml, refRegionsItem) == GO_SURFACE_STUD_MAX_REF_REGIONS);
|
|
|
|
for (i = 0; i < GO_SURFACE_STUD_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, refRegionsItem, "RefRegion")));
|
|
kCheck(GoSurfaceRegion2d_Read(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "AutoTiltEnabled", &obj->autoTiltEnabled));
|
|
kCheck(kXml_Child64f(xml, item, "TiltXAngle", &obj->tiltXAngle));
|
|
kCheck(kXml_Child64f(xml, item, "TiltYAngle", &obj->tiltYAngle));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_VWrite(GoSurfaceStud tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
kSize i;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "StudRadius", obj->studRadius));
|
|
kCheck(kXml_SetChild64f(xml, item, "StudHeight", obj->studHeight));
|
|
kCheck(kXml_SetChild64f(xml, item, "BaseHeight", obj->baseHeight));
|
|
kCheck(kXml_SetChild64f(xml, item, "TipHeight", obj->tipHeight));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionEnabled", obj->regionEnabled));
|
|
kCheck(kXml_AddItem(xml, item, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RefRegionsEnabled", obj->refRegionsEnabled));
|
|
kCheck(kXml_SetChildSize(xml, item, "RefRegionCount", obj->refRegionCount));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "RefRegions", &refRegionsItem));
|
|
|
|
for (i = 0; i < GO_SURFACE_STUD_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(kXml_AddItem(xml, refRegionsItem, "RefRegion", ®ionItem));
|
|
kCheck(GoSurfaceRegion2d_Write(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
kCheck(kXml_SetChildBool(xml, item, "AutoTiltEnabled", obj->autoTiltEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltXAngle", obj->tiltXAngle));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltYAngle", obj->tiltYAngle));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
|
|
GoFx(k64f) GoSurfaceStud_StudRadius(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->studRadius;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_SetStudRadius(GoSurfaceStud tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->studRadius = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceStud_StudHeight(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->studHeight;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_SetStudHeight(GoSurfaceStud tool, k64f value)
|
|
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->studHeight = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceStud_BaseHeight(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->baseHeight;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_SetBaseHeight(GoSurfaceStud tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->baseHeight = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceStud_TipHeight(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->tipHeight;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_SetTipHeight(GoSurfaceStud tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tipHeight = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceStud_RegionEnabled(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->regionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_EnableRegion(GoSurfaceStud tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->regionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfaceStud_Region(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->region;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceStud_RefRegionsEnabled(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->refRegionsEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_EnableRefRegions(GoSurfaceStud tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->refRegionsEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_SetRefRegionCount(GoSurfaceStud tool, kSize count)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheckArgs(count <= GO_SURFACE_STUD_MAX_REF_REGIONS);
|
|
obj->refRegionCount = count;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceStud_RefRegionCount(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->refRegionCount;
|
|
}
|
|
|
|
GoFx(GoSurfaceRegion2d) GoSurfaceStud_RefRegionAt(GoSurfaceStud tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kAssert(index < GO_SURFACE_STUD_MAX_REF_REGIONS);
|
|
|
|
return obj->refRegions[index];
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceStud_AutoTiltEnabled(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->autoTiltEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_EnableAutoTilt(GoSurfaceStud tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->autoTiltEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceStud_TiltXAngle(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->tiltXAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_SetTiltXAngle(GoSurfaceStud tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tiltXAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceStud_TiltYAngle(GoSurfaceStud tool)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
return obj->tiltYAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceStud_SetTiltYAngle(GoSurfaceStud tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceStud, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tiltYAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceStudBaseX) GoSurfaceStud_BaseXMeasurement(GoSurfaceStud tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_STUD_BASE_X);
|
|
}
|
|
|
|
GoFx(GoSurfaceStudBaseY) GoSurfaceStud_BaseYMeasurement(GoSurfaceStud tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_STUD_BASE_Y);
|
|
}
|
|
|
|
GoFx(GoSurfaceStudBaseZ) GoSurfaceStud_BaseZMeasurement(GoSurfaceStud tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_STUD_BASE_Z);
|
|
}
|
|
|
|
GoFx(GoSurfaceStudTipX) GoSurfaceStud_TipXMeasurement(GoSurfaceStud tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_STUD_TIP_X);
|
|
}
|
|
|
|
GoFx(GoSurfaceStudTipY) GoSurfaceStud_TipYMeasurement(GoSurfaceStud tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_STUD_TIP_Y);
|
|
}
|
|
|
|
GoFx(GoSurfaceStudTipZ) GoSurfaceStud_TipZMeasurement(GoSurfaceStud tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_STUD_TIP_Z);
|
|
}
|
|
|
|
GoFx(GoSurfaceStudRadius) GoSurfaceStud_RadiusMeasurement(GoSurfaceStud tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_STUD_RADIUS);
|
|
}
|
|
|
|
GoFx(GoSurfaceStudTipPoint) GoSurfaceStud_TipPoint(GoSurfaceHole tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_STUD_TIP_POINT);
|
|
}
|
|
|
|
GoFx(GoSurfaceStudBasePoint) GoSurfaceStud_BasePoint(GoSurfaceHole tool)
|
|
{
|
|
return GoTool_FindFeatureOutputByType(tool, GO_FEATURE_SURFACE_STUD_BASE_POINT);
|
|
}
|
|
|
|
kBeginClassEx(Go, GoSurfaceVolume)
|
|
kAddVMethod(GoSurfaceVolume, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceVolume, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceVolume, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceVolume, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceVolume_Construct(GoSurfaceVolume* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceVolume), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceVolume_VInit(GoSurfaceVolume tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceVolume, tool);
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_VOLUME, sensor, alloc));
|
|
obj->region = kNULL;
|
|
|
|
obj->regionEnabled = kTRUE;
|
|
|
|
kCheck(GoRegion3d_Construct(&obj->region, sensor, alloc));
|
|
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceVolumeVolume), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceVolumeArea), kTRUE, kNULL));
|
|
kCheck(GoTool_AddMeasurement(tool, kTypeOf(GoSurfaceVolumeThickness), kTRUE, kNULL));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceVolume_VRelease(GoSurfaceVolume tool)
|
|
{
|
|
kObj(GoSurfaceVolume, tool);
|
|
|
|
kCheck(kDestroyRef(&obj->region));
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceVolume_VRead(GoSurfaceVolume tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceVolume, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RegionEnabled", &obj->regionEnabled));
|
|
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, item, "Region")));
|
|
kCheck(GoRegion3d_Read(obj->region, xml, regionItem));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceVolume_VWrite(GoSurfaceVolume tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceVolume, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionEnabled", obj->regionEnabled));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->region, xml, regionItem));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
|
|
GoFx(kBool) GoSurfaceVolume_RegionEnabled(GoSurfaceVolume tool)
|
|
{
|
|
kObj(GoSurfaceVolume, tool);
|
|
|
|
return obj->regionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceVolume_EnableRegion(GoSurfaceVolume tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceVolume, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
|
|
obj->regionEnabled = enable;
|
|
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfaceVolume_Region(GoSurfaceVolume tool)
|
|
{
|
|
kObj(GoSurfaceVolume, tool);
|
|
|
|
return obj->region;
|
|
}
|
|
|
|
GoFx(GoSurfaceVolumeVolume) GoSurfaceVolume_VolumeMeasurement(GoSurfaceVolume tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_VOLUME_VOLUME);
|
|
}
|
|
|
|
GoFx(GoSurfaceVolumeArea) GoSurfaceVolume_AreaMeasurement(GoSurfaceVolume tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_VOLUME_AREA);
|
|
}
|
|
|
|
GoFx(GoSurfaceVolumeThickness) GoSurfaceVolume_ThicknessMeasurement(GoSurfaceVolume tool)
|
|
{
|
|
return GoTool_FindMeasurementByType(tool, GO_MEASUREMENT_SURFACE_VOLUME_THICKNESS);
|
|
}
|
|
|
|
kBeginClassEx(Go, GoSurfaceRivet)
|
|
kAddVMethod(GoSurfaceRivet, kObject, VRelease)
|
|
kAddVMethod(GoSurfaceRivet, GoTool, VInit)
|
|
kAddVMethod(GoSurfaceRivet, GoTool, VRead)
|
|
kAddVMethod(GoSurfaceRivet, GoTool, VWrite)
|
|
kEndClassEx()
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_Construct(GoSurfaceRivet* tool, kObject sensor, kAlloc allocator)
|
|
{
|
|
return GoTool_Construct(tool, kTypeOf(GoSurfaceRivet), sensor, allocator);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_VInit(GoSurfaceRivet tool, kType type, kObject sensor, kAlloc alloc)
|
|
{
|
|
kObjR(GoSurfaceRivet, tool);
|
|
kSize i;
|
|
|
|
kCheck(GoSurfaceTool_Init(tool, type, GO_TOOL_SURFACE_RIVET, sensor, alloc));
|
|
obj->nominalHeight = 0.0;
|
|
obj->partialDetectionEnabled = kFALSE;
|
|
obj->region = kNULL;
|
|
obj->refRegionsEnabled = kFALSE;
|
|
obj->refRegionCount = 0;
|
|
kZero(obj->refRegions);
|
|
obj->tiltXAngle = 0.0;
|
|
obj->tiltYAngle = 0.0;
|
|
obj->type = GO_SURFACE_RIVET_TYPE_FLUSH;
|
|
obj->edgeSensitivity = 0.0;
|
|
obj->innerPadding = 0.0;
|
|
|
|
obj->nominalRadius = 10.0;
|
|
obj->radiusTolerance = 1.0;
|
|
obj->regionEnabled = kTRUE;
|
|
obj->autoTiltEnabled = kTRUE;
|
|
|
|
kCheck(GoRegion3d_Construct(&obj->region, sensor, alloc));
|
|
|
|
for (i = 0; i < GO_SURFACE_RIVET_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(GoSurfaceRegion2d_Construct(&obj->refRegions[i], sensor, alloc));
|
|
}
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_VRelease(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
kSize i;
|
|
|
|
kDestroyRef(&obj->region);
|
|
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kDestroyRef(&obj->refRegions[i]);
|
|
}
|
|
|
|
return GoSurfaceTool_VRelease(tool);
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_VRead(GoSurfaceRivet tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
kSize i;
|
|
kXmlItem regionItem = kNULL;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
|
|
kCheck(kXml_Child64f(xml, item, "NominalHeight", &obj->nominalHeight));
|
|
kCheck(kXml_Child64f(xml, item, "NominalRadius", &obj->nominalRadius));
|
|
kCheck(kXml_Child64f(xml, item, "RadiusTolerance", &obj->radiusTolerance));
|
|
kCheck(kXml_ChildBool(xml, item, "PartialDetectionEnabled", &obj->partialDetectionEnabled));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RegionEnabled", &obj->regionEnabled));
|
|
kCheck(!kIsNull(regionItem = kXml_Child(xml, item, "Region")));
|
|
kCheck(GoRegion3d_Read(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "RefRegionsEnabled", &obj->refRegionsEnabled));
|
|
kCheck(kXml_ChildSize(xml, item, "RefRegionCount", &obj->refRegionCount));
|
|
|
|
kCheck(!kIsNull(refRegionsItem = kXml_Child(xml, item, "RefRegions")));
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(!kIsNull(regionItem = kXml_ChildAt(xml, refRegionsItem, i)));
|
|
kCheck(GoSurfaceRegion2d_Read(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_ChildBool(xml, item, "AutoTiltEnabled", &obj->autoTiltEnabled));
|
|
kCheck(kXml_Child64f(xml, item, "TiltXAngle", &obj->tiltXAngle));
|
|
kCheck(kXml_Child64f(xml, item, "TiltYAngle", &obj->tiltYAngle));
|
|
|
|
kCheck(kXml_Child32s(xml, item, "Type", &obj->type));
|
|
kCheck(kXml_Child64f(xml, item, "EdgeSensitivity", &obj->edgeSensitivity));
|
|
kCheck(kXml_Child64f(xml, item, "InnerPadding", &obj->innerPadding));
|
|
|
|
kCheck(GoSurfaceTool_Read(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_VWrite(GoSurfaceRivet tool, kXml xml, kXmlItem item)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
kXmlItem regionItem = kNULL;
|
|
kXmlItem refRegionsItem = kNULL;
|
|
kSize i;
|
|
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalHeight", obj->nominalHeight));
|
|
kCheck(kXml_SetChild64f(xml, item, "NominalRadius", obj->nominalRadius));
|
|
kCheck(kXml_SetChild64f(xml, item, "RadiusTolerance", obj->radiusTolerance));
|
|
kCheck(kXml_SetChildBool(xml, item, "PartialDetectionEnabled", obj->partialDetectionEnabled));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RegionEnabled", obj->regionEnabled));
|
|
kCheck(kXml_AddItem(xml, item, "Region", ®ionItem));
|
|
kCheck(GoRegion3d_Write(obj->region, xml, regionItem));
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "RefRegionsEnabled", obj->refRegionsEnabled));
|
|
kCheck(kXml_SetChildSize(xml, item, "RefRegionCount", obj->refRegionCount));
|
|
|
|
kCheck(kXml_AddItem(xml, item, "RefRegions", &refRegionsItem));
|
|
for (i = 0; i < GO_SURFACE_HOLE_MAX_REF_REGIONS; i++)
|
|
{
|
|
kCheck(kXml_AddItem(xml, refRegionsItem, "RefRegion", ®ionItem));
|
|
kCheck(GoSurfaceRegion2d_Write(obj->refRegions[i], xml, regionItem));
|
|
}
|
|
|
|
kCheck(kXml_SetChildBool(xml, item, "AutoTiltEnabled", obj->autoTiltEnabled));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltXAngle", obj->tiltXAngle));
|
|
kCheck(kXml_SetChild64f(xml, item, "TiltYAngle", obj->tiltYAngle));
|
|
|
|
kCheck(kXml_SetChild32s(xml, item, "Type", obj->type));
|
|
kCheck(kXml_SetChild64f(xml, item, "EdgeSensitivity", obj->edgeSensitivity));
|
|
kCheck(kXml_SetChild64f(xml, item, "InnerPadding", obj->innerPadding));
|
|
|
|
kCheck(GoSurfaceTool_Write(tool, xml, item));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceRivet_NominalHeight(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->nominalHeight;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetNominalHeight(GoSurfaceRivet tool, k64f nominalHeight)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->nominalHeight = nominalHeight;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceRivet_NominalRadius(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->nominalRadius;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetNominalRadius(GoSurfaceRivet tool, k64f nominalRadius)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->nominalRadius = nominalRadius;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceRivet_RadiusTolerance(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->radiusTolerance;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetRadiusTolerance(GoSurfaceRivet tool, k64f radiusTolerance)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->radiusTolerance = radiusTolerance;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceRivet_PartialDetectionEnabled(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->partialDetectionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_EnablePartialDetection(GoSurfaceRivet tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->partialDetectionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceRivet_RegionEnabled(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->regionEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_EnableRegion(GoSurfaceRivet tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->regionEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoRegion3d) GoSurfaceRivet_Region(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->region;
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceRivet_RefRegionsEnabled(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->refRegionsEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_EnableRefRegions(GoSurfaceRivet tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->refRegionsEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceRivet_RefRegionCount(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->refRegionCount;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetRefRegionCount(GoSurfaceRivet tool, kSize count)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheckArgs(count <= GO_SURFACE_RIVET_MAX_REF_REGIONS);
|
|
obj->refRegionCount = count;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceRegion2d) GoSurfaceRivet_RefRegionAt(GoSurfaceRivet tool, kSize index)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kAssert(index < GO_SURFACE_RIVET_MAX_REF_REGIONS);
|
|
|
|
return obj->refRegions[index];
|
|
}
|
|
|
|
GoFx(kBool) GoSurfaceRivet_AutoTiltEnabled(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->autoTiltEnabled;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_EnableAutoTilt(GoSurfaceRivet tool, kBool enable)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->autoTiltEnabled = enable;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceRivet_TiltXAngle(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->tiltXAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetTiltXAngle(GoSurfaceRivet tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tiltXAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceRivet_TiltYAngle(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->tiltYAngle;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetTiltYAngle(GoSurfaceRivet tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->tiltYAngle = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(GoSurfaceRivetType) GoSurfaceRivet_Type(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->type;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetType(GoSurfaceRivet tool, GoSurfaceRivetType type)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->type = type;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceRivet_EdgeSensitivity(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->edgeSensitivity;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetEdgeSensitivity(GoSurfaceRivet tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->edgeSensitivity = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(k64f) GoSurfaceRivet_InnerPadding(GoSurfaceRivet tool)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
return obj->innerPadding;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_SetInnerPadding(GoSurfaceRivet tool, k64f value)
|
|
{
|
|
kObj(GoSurfaceRivet, tool);
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
obj->innerPadding = value;
|
|
kCheck(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceRivet_MeasurementMax(GoSurfaceRivet tool, GoMeasurementType measurementType)
|
|
{
|
|
switch (measurementType)
|
|
{
|
|
case GO_MEASUREMENT_SURFACE_RIVET_X:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_Y:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_Z:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TILT_ANGLE:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TILT_DIRECTION:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIUS:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MIN:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MAX:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MEAN:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_STD_DEV: return 1;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MIN:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MAX:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MEAN:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_STD_DEV:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MIN:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MAX:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MEAN:
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_STD_DEV: return 100;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_AddMeasurement(GoSurfaceRivet tool, GoMeasurementType type, GoMeasurement* measurement)
|
|
{
|
|
kType classType = kNULL;
|
|
kStatus status;
|
|
GoMeasurementOption* measurementOption = kNULL;
|
|
kSize instanceCount = 0;
|
|
kSize i;
|
|
|
|
if (type != GO_MEASUREMENT_SURFACE_RIVET_X
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_Y
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_Z
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_TILT_ANGLE
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_TILT_DIRECTION
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIUS
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MIN
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MAX
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MEAN
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_STD_DEV
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MIN
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MAX
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MEAN
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_STD_DEV
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MIN
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MAX
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MEAN
|
|
&& type != GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_STD_DEV)
|
|
{
|
|
return kERROR_PARAMETER;
|
|
}
|
|
else
|
|
{
|
|
switch (type)
|
|
{
|
|
case GO_MEASUREMENT_SURFACE_RIVET_X: classType = kTypeOf(GoSurfaceRivetX); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_Y: classType = kTypeOf(GoSurfaceRivetY); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_Z: classType = kTypeOf(GoSurfaceRivetZ); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TILT_ANGLE: classType = kTypeOf(GoSurfaceRivetTiltAngle); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TILT_DIRECTION: classType = kTypeOf(GoSurfaceRivetTiltDirection); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIUS: classType = kTypeOf(GoSurfaceRivetRadius); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MIN: classType = kTypeOf(GoSurfaceRivetTopOffsetMin); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MAX: classType = kTypeOf(GoSurfaceRivetTopOffsetMax); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_MEAN: classType = kTypeOf(GoSurfaceRivetTopOffsetMean); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_TOP_OFFSET_STD_DEV: classType = kTypeOf(GoSurfaceRivetTopOffsetStdDev); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MIN: classType = kTypeOf(GoSurfaceRivetRadialHeightMin); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MAX: classType = kTypeOf(GoSurfaceRivetRadialHeightMax); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_MEAN: classType = kTypeOf(GoSurfaceRivetRadialHeightMean); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_HEIGHT_STD_DEV: classType = kTypeOf(GoSurfaceRivetRadialHeightStdDev); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MIN: classType = kTypeOf(GoSurfaceRivetRadialSlopeMin); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MAX: classType = kTypeOf(GoSurfaceRivetRadialSlopeMax); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_MEAN: classType = kTypeOf(GoSurfaceRivetRadialSlopeMean); break;
|
|
case GO_MEASUREMENT_SURFACE_RIVET_RADIAL_SLOPE_STD_DEV: classType = kTypeOf(GoSurfaceRivetRadialSlopeStdDev); break;
|
|
}
|
|
}
|
|
|
|
for (i = 0; i < GoTool_MeasurementCount(tool); i++)
|
|
{
|
|
if (kObject_Type(GoTool_MeasurementAt(tool, i)) == classType)
|
|
{
|
|
instanceCount++;
|
|
}
|
|
}
|
|
|
|
if (instanceCount + 1 > GoSurfaceRivet_MeasurementMax(tool, type))
|
|
{
|
|
return kERROR;
|
|
}
|
|
|
|
kCheckState(GoSensor_IsConfigurable(GoTool_Sensor(tool)));
|
|
kCheck(GoSensor_CacheConfig(GoTool_Sensor(tool)));
|
|
kCheck(GoTool_AddMeasurement(tool, classType, kTRUE, measurement));
|
|
|
|
kTry
|
|
{
|
|
kTest(GoSensor_SetConfigModified(GoTool_Sensor(tool)));
|
|
kTest(GoSensor_SyncConfig(GoTool_Sensor(tool)));
|
|
}
|
|
kCatch(&status)
|
|
{
|
|
kCheck(GoTool_RemoveMeasurement(tool, GoTool_MeasurementCount(tool) - 1));
|
|
kEndCatch(status);
|
|
}
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kStatus) GoSurfaceRivet_RemoveMeasurement(GoSurfaceRivet tool, kSize index)
|
|
{
|
|
if (index > GoTool_MeasurementCount(tool))
|
|
{
|
|
return kERROR_PARAMETER;
|
|
}
|
|
|
|
kCheck(GoTool_RemoveMeasurement(tool, index));
|
|
|
|
return kOK;
|
|
}
|
|
|
|
GoFx(kSize) GoSurfaceRivet_MeasurementCount(GoSurfaceRivet tool)
|
|
{
|
|
return GoTool_MeasurementCount(tool);
|
|
}
|
|
|
|
GoFx(GoMeasurement) GoSurfaceRivet_MeasurementAt(GoSurfaceRivet tool, kSize index)
|
|
{
|
|
kAssert(index < GoTool_MeasurementCount(tool));
|
|
|
|
return GoTool_MeasurementAt(tool, index);
|
|
}
|