Basic data types
Warning: All elements of data structures below declared with struct keyword must be initialised before any use.
Failing to do so may lead to unpredictable behaviour as structures do not have a constructor, so have random values by default
See also: Deprecated Types
3D vector
struct Vect_DG {
double v[3];
};
Vect_DG is used to represent a 3D vector.
3D point
struct Point_DG {
double x[3];
};
Point_DG is a 3D point.
struct Line_DG {
Point_DG origin;
Vect_DG direction;
};
2D Point or Vector
struct DG2D {
double x[2];
};
Color_KC
struct Color_KC_ {
float red;
float green;
float blue;
} Color_KC;
POSN
typedef unsigned __int64 POSN; // 64 bit platform
typedef unsigned __int32 POSN; // 32 bit platform
typedef struct PairInt_DG {
int first;
int second;
} PairInt_DG;
typedef struct Range_DG {
double min;
double max;
} Range_DG;
typedef struct Rectangle_DG {
Range_DG range[2];
} Rectangle_DG;
typedef struct Box_DG {
Range_DG range[3];
} Box_DG;
KCN3 Srtucture
typedef struct KCN3_ {
int n[3];
} KCN3;
typedef struct PairInt_ {
int x;
int y
} PairInt;
ECoordinatesType enumeration
typedef enum ECoordinatesType_ {
eCoordTypeCartesian = 1,
eCoordTypePolar = 2,
} ECoordinatesType;
RenderType_DG enumeration
typedef enum RenderType_DG_ {
eRenderTypeDgUnknown,
eRenderTypeDgSolid,
eRenderTypeDgWireFrame,
} RenderType_DG;
EPatchType enumeration
typedef enum EPatchType_ {
ePatchTypeCurvature = 1,
ePatchTypeRadius = 2,
} EPatchType;
The enumeration used for selection between Standard (Curvature) and Radial
Arc Patch types. (See Radial Patches)
Segment Type enumeration
enum ESegmentType { eSegmTypeLine = 1, eSegmTypeArc = 2 }
Segment Type enumeration may be expanded in future versions of software by
adding new types.
DISectInfo Structure
typedef struct DISectInfo_ {
- bool
closed;
- int
segments;
- double
radius;
- ESegmentType segmentType;
- bool
regularJoints
} DISectInfo;
DISectInfo structure is used to specify common parameters of a new object
in DInsight model.
closed - If true surface strip in the new object will be
closed.
segments - specifies number of surface segments in the strip,
which constitutes the surface of the Generic 3D object (See Patch Strips and Surfaces
). In case of an SOR this is the number of 2D segments in
the generating line strip.
radius - specifies approximate maximal dimension of the object.
In case of a short cylinder it will be equal to the radius of the cyliner.
segmentType - if segmentType is eSegmTypeArc (see above) than
all surface patches in the object will be of arc type (See Patch Types),
otherwise all patches will be linear.
regularJoints - if true all surface joints will be rendered
smooth in 3D.
DI3DSectInfo Structure
typedef struct DI3DSectInfo_ {
-
DISectInfo
sectInfo;
-
int
knots;
-
ESegmentType
axialSegmType;
-
ECoordinatesType
edgeCoordType;
-
EPatchType
patchType
} DI3DSectInfo;
DISectInfo structure contains parameters for creation of a new Generic 3D
Entity object.
sectInfo - structure which contains parameters common to all
types of objects (See above).
knots - Number of knots in the base.
axialSegmType - if true all edges in the object will be curved
lines and straight lines otherwise.
edgeCoordType - a member of ECoordinatesType
enumeration. If it is set to
eCoordTypePolar than all 3D lines representing edges of the object will be
defined in Cylindrical coordinates. Otherwise standard Cartesian coordinates
will be used.
patchType - if patchType is ePatchTypeRadius (See EPatchType enumeration)
than all arc patches in the object will be of radial type (See Radial Patches).
Otherwise all arc patches in the object will be standard.
Used to pass additional parameters to
IGraphicItem.DrawEx method.
typedef struct RenderContext_
{
VARIANT_BOOL surface; // If false wire frame will be rendered. Default: true
VARIANT_BOOL normals; // Draw normals? Default: false
} RenderContext;
Used to pass search criteria to IModel2.FindItem method.
typedef struct KCSceneItemInfo_
{
KC3State hasChildren;
KC3State hasParent;
KC3State isEmpty;
BSTR name;
KC3State hasLocalFrame;
int hashItemStartAfter;
} KCSceneItemInfo;
Draw Primitive Enumeration
typedef enum EDrawPrimitive_ {
ePoints,
eLines,
eLineStrip,
eLineLoop,
eTriangles,
eTriangleStrip,
eTriangleFan,
eQuads,
eQuadStrip,
ePolygon,
} EDrawPrimitive;
ThreeState_DG Enumeration
typedef enum ThreeState_DG {
unknownDG = -1,
falseDG = 0,
trueDG = 1,
} ThreeState_DG;
EDictionaryType_DG Enumeration
typedef enum EDictionaryType_DG {
eDictTypeUnknown,
eDictTypeInt,
eDictTypeDouble,
eDictTypeBool,
eDictType3State,
eDictTypeString,
eDictTypeVariant,
eDictTypeInterface,
eDictTypePointer,
} EDictionaryType_DG;
EDim_DG Enumeration
typedef enum EDim_DG{ e0D, e1D, e2D, e3D, eUD } EDim_DG; // eUD - unknown
DrawPrimitive_DG Enumeration
typedef enum DrawPrimitive_DG {
ePointsDG
eLinesDG
eLineLoopDG
eLineStripDG
eTrianglesDG
eTriangleStripDG
eTriangleFanDG
eQuadsDG
eQuadStripDG
ePolygonDG
eDrawPrimitiveUnknownDG
} DrawPrimitive_DG;
Data Type Enumeration
typedef enum EDataType_ {
eDataTypeNULL,
eDataTypeDouble,
eDataTypeSingle,
eDataTypeLong,
eDataTypeShort,
eDataTypeString
} EDataType;
EKCType Enumeration
typedef enum EKCType_ {
eKCTypeNULL,
eKCTypeDouble,
eKCTypeSingle,
// (32 bit floating)
eKCTypeLong,
// 32 bit signed integer
eKCTypeShort,
// 16 bit signed integer
eKCTypeString,
eKCTypeBool, eKCTypeIUnknown,
eKCTypeColor,
} EKCType;
EDictionaryType_KC Enumeration
Enumerates types in dictionaries
typedef enum EDictionaryType_KC_ {
eKDUnknown, // Any
type (or unknown)
eKDInt,
/ 32 bit signed integer
eKDDouble,
// (64 bit floating)
eKDBool,
// Boolean
eKDString,
// String
eKDVariant,
// VARIANT. Interpreted as Object in many environments
eKDInterface,
// Interface
} EDictionaryType_KC;
typedef enum EEnableBit_ {
eEnablePan = 1,
eEnableZoom = 2,
eEnableRotate = 4,
eEnableHighLightPoint = 128,
eEnableHighLightLine = 256,
eEnableHighLightSurface = 512,
eEnableTransparency = 1024,
eEnablePerspectiveProjection = 2048,
eEnableNormals = 4096,
} EEnableBit;
EEnableBit enumeration can be used in calls to IView2.Enable() and
IView2.GetEnableFlag() methods.
EEnableBit enumeration may be expanded in future versions of software by
adding new types.
ESymmType Enumeration
typedef enum ESymmType_ {
eSymmTypeNULL,
eSymmTypeAxial,
eSymmTypeMirror,
eSymmTypeTranslation,
} ESymmType;
EElemTypeKC Enumeration
typedef enum EElemTypeKC_ {
eElTypeVertex,
eElTypeEdge,
eElTypeFace,
eElTypeEntity,
eElTypeUnknown
} EElemTypeKC;
EDIEvent Enumeration
typedef enum EDIEvent_ {
eEventMouseHover,
eEventClientDraw,
eEventCollision,
eEventUICommand, //Context menu item selected
eEventSelection,
eEventExplorerSelection, //Selection changed in Model Explorer
eEvent2DEditor, // Events from overlay or other 2D editor. The param0 parameter of KernelCADEvent is an integer with value one of EEditorEvent_KC below
eEventMouseSimple, //For RequestEvent. All button down/up etc apart from intesive mouse move
eEventMouseMove,
eEventMouseLButtonDown,
eEventMouseRButtonDown,
eEventModelStructureChanged, //Object hierarchy has changed
eEventMouseRButtonDown,
eEventMouseRButtonMove,
eEventMouseRButtonUp,
eEventCount,
} EDIEvent;
EEditorEvent_KC Enumeration
typedef enum EEditorEvent_KC_ {
eEditEventUnknown,
eEditEventActivated, // The editor has been activated
eEditEventModelStructureChanged, // A new item aded to the 2D model or
deleted
eEditEventItemStructureChanged, // Number of
elements in an item has chanded. New element added or deleted
eEditEventClosing, // The editor is about to be closed
} EEditorEvent_KC;
EItemType Enumeration
typedef enum EItemType_ {
eItemTypeEntity,
eItemTypeLabel,
eItemTypeViewPoint,
} EItemType;
EPointLocation2D Enumeration
typedef enum EItemType_ {
ePointLocation2DUnknown,
ePointLocation2DInterval, // On a segment in open interval
ePointLocation2DPoint, // At a point
ePointLocation2DInside, // Inside of a closed strip or on the left of an infinitely long strip obtained by extending end lines as rays
ePointLocation2DOutsnside, // Outside of a closed strip or on the right of an infinitely long strip obtained by extending end lines as rays
} EPointLocation2D;
PointVsLineLocation_DG Enumeration
typedef enum EItemType_ {
ePointVsLineLocationOrigin,
ePointVsLineLocationOnLineBefore,
ePointVsLineLocationOnLineAfter,
ePointVsLineLocationOnLine,
ePointVsLineLocationOutside,
ePointVsLineLocationOutsideInPlane,
ePointVsLineLocationOutsideNegativeSemiSpace,
ePointVsLineLocationOutsidePositiveSemiSpace
} EItemType;
LineVsLineLocation_DG Enumeration
typedef enum EItemType_ {
eLineVsLineLocationUnknown,
eLineVsLineLocationGeneral, // No intersection, not ||
eLineVsLineLocationIntersection,
eLineVsLineLocationCollinear, // Parallel
eLineVsLineLocationCoinside, // Origin may be shifted
eLineVsLineLocationIdentical,
} EItemType;
typedef enum EModelViewFrame_ {
eModelViewFrameGlobal,
eModelViewFrameEye
} EModelViewFrame;
typedef enum EModelEntity_ {
eModelEntityUnknown,
eModelEntityObject,
eModelEntityModel,
} EModelEntity;
It is recommended to use mnemonic members of this enumeration as opposed to
hard coded values as it may be expanded in future releases
typedef enum ESTLAnalysis_ {
eStlAnalysAuto,
eStlAnalysPerform,
eStlAnalysSkip,
} ESTLAnalysis;
typedef enum EViewReset_ {
eViewResetAll,
eViewResetVolume,
} EViewReset;
This enumeration is likely to be expanded in future releases
typedef enum EModifResult_ {
eModifResInvalid = -1,
eModifResNoChange = 0,
eModifResModified = 1
} EModifResult;
typedef enum ECADFormat_ {
eCADFormatGLM,
eCADFormatVRML,
eCADFormatSTL,
eCADFormatAutoCADDXF,
eCADFormatAutoCADDWG,
eCADFormatSAT,
eCADFormatSAT,
eCADFormatCSV,
eCADFormatXYZ,
eCADFormatPLY,
eCADFormatSTEP,
eCADFormatIGES,
eCADFormatBREP,
eCADFormatCSFDB,
eCADFormatDat,
eCADFormatMDG,
eCADFormatOBJ,
eCADFormatUnknown,
} ECADFormat;
Enumerates CAD formats supported by the software. This enumeration will be expanded in future releases
EPageOrientation Enumeration
typedef enum EPageOrientation_ {
eOrientAuto,
eOrientPortrait,
eOrientLandscape,
} EPageOrientation;
EPaperSize Enumeration
typedef enum EPaperSize_ {
ePaperSizeUnknown,
ePaperSizeA4,
ePaperSizeA3,
} EPaperSize;
typedef struct PrintContext_KC_ {
VARIANT_BOOL validOrientation;
EPageOrientation orientation;
VARIANT_BOOL validPaperSize;
EPaperSize paperSize;
VARIANT_BOOL validMargin;
float marginHorizontal;
float marginVertical;
VARIANT_BOOL validScale;
float scale;
} PrintContext_KC;
typedef struct KCBitmap_ {
int type;
int width;
int height;
int widthBytes;
short planes;
short bitsPixel;
} KCBitmap;
typedef enum ViewMode_DG_ {
eViewModeDgUnknown,
eViewModeDgView,
eViewModeDgModify,
} ViewMode_DG
typedef enum ViewType_DG_ {
eViewTypeDg2D = 2,
eViewTypeDg3D = 3,
} ViewType_DG
typedef enum EViewType_ {
eViewType2D = 2,
eViewType3D = 3,
} EViewType
typedef enum ProjectionType_DG {
eProjectionTypeDgOrthographic,
eProjectionTypeDgPerspective
} ProjectionType_DG
typedef enum E3DViewProjectionType {
e3DViewProjectionTypeOrthographic,
e3DViewProjectionTypePerspective
} E3DViewProjectionType
typedef enum E2DViewGeometryType_ {
e2DViewGeometryTypeProjection,
e2DViewGeometryTypeInterentity,
} E2DViewGeometryType;
typedef struct PathDetectorContext_ {
VARIANT_BOOL decreasingStart;
double minDistToler;
double precision;
} PathDetectorContext;
PathDetectorContext structure is used in
IKCPathCollisionDetector.Detect method to specify additional parameters for
the operation.
typedef enum EBooleanOperation_ {
eBoolOpUnknown = 0,
eBoolOpSubtract = 1,
eBoolOpUnion = 2,
eBoolOpInters = 3,
eBoolOpClip = 4,
} EBooleanOperation;
EBoolOpContext Structure
typedef struct EBoolOpContext_ {
EBooleanOperation operation;
// The operation
VARIANT_BOOL execute;
// If false only interentity curve is calculated
VARIANT_BOOL interentityLine; // Calculate interentity curve(s) of two surfaces
VARIANT_BOOL needEdges;
// If true edges array is calculated (contains information about
normals along interentity)
IUnknown* edges;
// Vertices of interentity arranged in linked loops. Actual type
IArray. elements are IArray of IVertex one per loop
VARIANT_BOOL separateComponents; // If the first object becomes
divided into several isolated pieces, separate the objects and make
it a group.
} EBoolOpContext;
typedef enum EMenuCommand_KC_ {
eMenuCommandSaveAs,
eMenuCommandSeparator1,
eMenuCommandFullScreen,
eMenuCommandSeparator3,
eMenuCommandSurface,
eMenuCommandWireFrame,
eMenuCommandSeparator6,
eMenuCommandGlobalFrame,
eMenuCommandSeparator8,
eMenuCommandHelp,
eMenuCommandAbout,
eMenuCommandSeparator9,
eMenuCommandCustomItem0,
eMenuCommandCustomItem1,
eMenuCommandCustomItem2,
eMenuCommandCustomItem3,
eMenuCommandCustomItem4,
} EMenuCommand_KC;
typedef enum EMeshModsAction_ {
eMeshActionNone = 0,
eMeshActionNormalsFastApprox = 1,
eMeshActionNormalsMedium = 2,
eMeshActionNormalsFull = 4,
eMeshActionNormalsAuto = 8,
} EMeshModsAction;
EDwgVersion Enumeration
typedef enum EDwgVersion_
{
kc_vAC14 = 21, // R14 release
kc_vAC15 = 23, // R15 (2000) release
kc_vAC18 = 25, // R18 (2004) release
kc_vAC21 = 27, // R21 (2007) release
kc_vAC24 = 29, // R24 (2010) release
kc_vAC27 = 31, // R27 (2013) release
}
EDwgVersion;
EDXFVersion Enumeration
typedef enum EDXFVersion_ {
kc_vACdxf12 = 16, // R11 and R12
kc_vACdxf15 = 23, // R15 (2000) release
kc_vACdxf18 = 25, // R18 (2004) release
kc_vACdxf21 = 27, // R21 (2007) release
kc_vACdxf24 = 29, // R24 (2010) release
kc_vACdxf27 = 31, // R27 (2013) release
} EDXFVersion;
ESatVersion Enumeration
typedef enum ESatVersion_ {
kc_ASCII_106 = 0x01000000|106,
kc_ASCII_400 = 0x01000000|400,
kc_ASCII_500 = 0x01000000|500,
kc_ASCII_600 = 0x01000000|600,
kc_ASCII_700 = 0x01000000|700,
kc_ASCII_20800 = 0x01000000|20800,
kc_ASCII_21200 = 0x01000000|21200,
kc_ASCII_21500 = 0x01000000|21500,
} ESatVersion;
EPointInSimplexLocation Enumeration
typedef enum EPointInSimplexLocation_ {
eSimplexPointLocationUnknown,
eSimplexPointLocationInside,
eSimplexPointLocationEdge,
eSimplexPointLocationVertex,
eSimplexPointLocationOutside,
eSimplexPointLocationNotInPlane,
} EPointInSimplexLocation;
ShapeType_DG enumeration
typedef enum ShapeType_DG {
eShTypeCompoundDG ,
eShTypeCompsolidDG,
eShTypeSolidDG ,
eShTypeShellDG,
eShTypeFaceDG,
eShTypeWireDG,
eShTypeEdgeDG,
eShTypeVertexDG,
eShTypeShapeDG,
eShTypeUnknownDG,
} ShapeType_DG;
Enumerates topological types of geometry of bspline brep entities
ESurfaceType_DG enumeration
typedef enum ESurfaceType_DG {
eSurfTypeUnknown,
eSurfTypeBSpline,
eSurfTypeBezier,
eSurfTypePlane,
eSurfTypeCone,
eSurfTypeSphere,
eSurfTypeTorus,
eSurfTypeRectangle,
eSurfTypeSurfaceOfRevolution,
eSurfTypeLinearExtrusion,
eSurfTypeOffset,
eSurfTypePlate,
eSurfTypeComposite,
} ESurfaceType_DG;
Enumerates topological types of geometry of bspline brep entities
PointVs2dCurveLocation_DG enumeration
typedef enum PointVs2dCurveLocation_DG {
ePointVs2dCurveLocationDgUnknown,
ePointVs2dCurveLocationDgOutside, //Either on the left or on the right. Unknown where exactly
ePointVs2dCurveLocationDgLeft,
ePointVs2dCurveLocationDgRight,
ePointVs2dCurveLocationDgInside, //Somewhere on the line. Unknown where exactly
ePointVs2dCurveLocationDgFirstEnd,
ePointVs2dCurveLocationDgLastEnd, //Ouside, in the part of space where normals point into
ePointVs2dCurveLocationDgInternal, //In open interval (first,last)
} PointVs2dCurveLocation_DG;
Enumerates location of a point relative to a 2D curve
PointVsSurfaceLocation_DG enumeration
typedef enum PointVsSurfaceLocation_DG {
ePointVsSurfaceLocationDgUnknown,
ePointVsSurfaceLocationDgUnknownOutside, //The point is not on the surface. The side can not be determined
ePointVsSurfaceLocationDgNegativeSide,
ePointVsSurfaceLocationDgPositiveSide, // Ouside, in the part of space where normals point into
ePointVsSurfaceLocationDgOnSurface
} PointVsSurfaceLocation_DG;
Enumerates location of a point relative to a surface
PointVs2dLineLocation_DG enumeration
typedef enum PointVs2dLineLocation_DG {
ePointVs2dLineLocationDgUnknown,
ePointVs2dLineLocationDgOutside, //Either on the left or on the right. Unknown where exactly
ePointVs2dLineLocationDgLeft,
ePointVs2dLineLocationDgRight,
ePointVs2dLineLocationDgInside, // Somewhere on the line. Unknown where exactly
ePointVs2dLineLocationDgOrigin,
ePointVs2dLineLocationDgBefore,
ePointVs2dLineLocationDgAfter,
} PointVs2dLineLocation_DG;
PointVsCurveLocation_DG enumeration
typedef enum PointVsCurveLocation_DG {
ePointVsCurveLocationDgUnknown,
ePointVsCurveLocationDgOutside, //The point is not on the surface. The side can not be determined
ePointVsCurveLocationDgFirstEnd,
ePointVsCurveLocationDgLastEnd, // Ouside, in the part of space where normals point into
ePointVsCurveLocationDgInternal
} PointVsCurveLocation_DG;
Enumerates location of a point relative to a curve
CurveVsSurfaceLocation_DG enumeration
typedef enum CurveVsSurfaceLocation_DG {
eCurveVsSurfaceLocationDgUnknown,
eCurveVsSurfaceLocationDgUnknownOutside, //The curve does not have common points with the surface. The side can not be determined
eCurveVsSurfaceLocationDgNegativeSide,
eCurveVsSurfaceLocationDgPositiveSide, // Ouside, in the part of space where normals point into
eCurveVsSurfaceLocationDgIntersection, // The curve has at least one common points with the surface. Includes the case partially (not completely) lies on the surface
eCurveVsSurfaceLocationDgOnSurface // The curve geometrically lies on the surface up to the tolerance specified in context
} CurveVsSurfaceLocation_DG;
Enumerates location of a curve relative to a surface
SurfaceVsSurfaceLocation_DG enumeration
typedef enum SurfaceVsSurfaceLocation_DG {
eSurfaceVsSurfaceLocationDgUnknown,
eSurfaceVsSurfaceLocationDgUnknownOutside, //The surfaces do not have common points. The side can not be determined
eSurfaceVsSurfaceLocationDgNegativeSide,
eSurfaceVsSurfaceLocationDgPositiveSide, // Ouside, in the part of space where normals point into
eSurfaceVsSurfaceLocationDgIntersection, // The surfaces has at least one common point. Includes the case surfaces partially (not completely) coinside
eSurfaceVsSurfaceLocationDgOnSurface // The surfaces geometrically coinside up to the tolerance specified in context
} SurfaceVsSurfaceLocation_DG;
Enumerates location of a surface relative to a surface
BRepOrientation_DG enumeration
typedef enum BRepOrientation_DG {
eBRepOrientationForward ,
eBRepOrientationReversed,
eBRepOrientationInternal,
eBRepOrientationExternal
} BRepOrientation_DG;
Enumerates orientation of a subshape in its parent shape
JoinType_DG enumeration
typedef enum JoinType_DG {
eJoinTypeArc,
eJoinTypeTangent,
eJoinTypeIntersection
} JoinType_DG;
ViewBoolAttribute_DG enumeration
typedef enum ViewBoolAttribute_DG {
eViewBoolAttributeDgUnknown,
eViewBoolAttributeDgShowNormals,
eViewBoolAttributeDgEnableSurfaceHighLighting,
eViewBoolAttributeDgEnablePan,
eViewBoolAttributeDgEnableZoom,
eViewBoolAttributeDgEnableRotate,
} ViewBoolAttribute_DG;
EColorParams enumeration
typedef enum EColorParams {
eColorMouseStroke,
eColorBackgroundDualVirtual,
eColorSelectedEntity,
eColorCurrentEntity,
eColorParamCount,
} EColorParams;
Continuity_DG enumeration
typedef enum Continuity_DG {
eCont_C0, // Only continuous
eCont_G1, // Geometrically smooth
eCont_C1, // Smooth WRT parameter
eCont_G2, // Geometrically smooth curvature
eCont_C2, // Smooth WRT parameter up to 2nd derivatives
eCont_C3, // Smooth WRT parameter up to 3rd derivatives
eCont_CN // Infinitely smooth
} Continuity_DG;
Enumerates smoothness of a curve or a surface
EStringSource Enumeration
typedef enum EStringSource_ {
eStringSourceUnknown,
eStringSourceObjectName,
eStringSourceLayerName,
eStringSourceTemplate,
} EStringSource;
EMeshRefineType Enumeration
typedef enum EMeshRefineType_ {
eMeshRefineTypeFlat,
eMeshRefineTypeButterfly,
eMeshRefineTypeLoop,
eMeshRefineTypeCatmull,
eMeshRefineTypeONE_QUAD_X_EDGE,
} EMeshRefineType;
|