Created by: gwideman, Aug 12, 2012 10:30 pm
Revised by: gwideman, Aug 12, 2012 11:35 pm (3 revisions)

Overview

This page discusses the COM interfaces for the DLLs which implement the drawing part of the Lasercut application:
  • EC.dll: Core library
  • EcObExtend: Some additional drawing objects
  • ExternCommand: Objects that represent atomic UI commands that can, for example, appear in the Undo queue.
Within the diagram below of the overall structure of the Lasercut application, these DLLs appear on the left.
Lasercut_CompDep_Components2.png
There is some possibility that these EcXXX DLLs are from a third party drawing library, not originating with Leetro. However, googling on a variety of the object names did not turn up any candidates. Also, a few of the functions are laser-cutter-specific, which weighs in favor of home-grown by Leetro, or affiliate.

Items of interest

Each of these DLLs exports a small number of "traditional" functions. These functions are simply the standard ones required to provide a COM interface, so will not be documented here further. Instead the focus is on the COM interfaces, types and classes exposed and defined in each DLLs type library.
In general, each class definition simply references the one or more interfaces that the class implements. Each interface defines possibly numerous methods.
As far as I know, the running application does not provide access to the running objects' APIs, so this is not an avenue for automating the existing Lasercut53 application. In theory your own custom-written application could invoke these libraries (via COM) to create its own version of the LaserCut application.
One may observe that LaserCut53 instantiates a GxApplication object at an early stage, and presumably subsequent steps invoke all the aspects of the LaserCut UI as seen by end users.
However, the exact series of steps to make all that happen is not known, and it is also not clear to me what the merit of building on these libraries might be anyway.
So the main interest in this discussion is simply to establish the purpose of these several DLLs, and to provide some detailed accounting of the kind of objects, and hence functionality, such an application incorporates. On this page I list the interfaces and classes, but do not elaborate all the methods. Interested readers can find much more additional detail by examining the type libraries directly, by using tools such as the OLE-COM Object Viewer (which is part of the Windows SDK, and included in Visual Studio) to inspect each of the DLLs.

COM classes, and the interfaces they implement

(In COM terminology: CoClasses. Co = prefix for COM).
Library
N
CoClass
Interface(s) implemented
Default Intf
EC
1
ArrayDouble
IArrayDouble
Y

2
ArrayLong
IArrayLong
Y

3
ArrayString
IArrayString
Y

4
BackGround
IBackGround
Y

5
BarCodeManger
IBarCodeManger
Y

6
BatchOperation
IBatchOperation
Y

7
CommandItem
ICommandItem
Y

8
CommandManager
ICommandManager
Y

9
CreateObjectOperation
ICreateObjectOperation
Y

10
DataTool
IDataTool
Y

11
DeleteObjectOperation
IDeleteObjectOperation
Y

12
Display
IDisplay
Y

13
DisplayTransformation
IDisplayTransformation
Y

14
EcCharItem
IEcCharItem
Y

15
EcDbBarcode
IEcDbBarcode
Y

16
EcDbGraphics
IEcDbGraphics
Y



IEcDbEntity
N



IPersistObject
N



ITechnicsProp
N

17
EcDbGroup
IEcDbGroup
Y

18
EcDbImage
IEcDbImage
Y

19
EcDbMultiGraphics
IEcDbMultiGraphics
Y

20
EcDbObjectTable
IEcDbObjectTable
Y

21
EcDbText
IEcDbText
Y

22
EcGeBezier
IEcGeBezier
Y

23
EcGeBound2d
IEcGeBound2d
Y

24
EcGeCircArc2d
IEcGeCircArc2d
Y



IEcGeCurve2d
N



IEcGeEntity2d
N

25
EcGeCompositeCurve2d
IEcGeCompositeCurve2d
Y

26
EcGeContext
IEcGeContext
Y

27
EcGeEllipArc2d
IEcGeEllipArc2d
Y



IClone
N



IEcGeCurve2d
N



IEcGeEntity2d
N

28
EcGeLineSeg2d
IEcGeLineSeg2d
Y



IEcGeCurve2d
N



IEcGeEntity2d
N



IEcGeLinearEnt2d
N

29
EcGeNurbCurve2d
IEcGeNurbCurve2d
Y

30
EcGePoint2d
IEcGePoint2d
Y

31
EcGePoint2dArray
IEcGePoint2dArray
Y

32
EcGePolyline2d
IEcGePolyline2d
Y



IEcGeCurve2d
N



IEcGeEntity2d
N

33
EcGeTol
IEcGeTol
Y

34
EcGeVector2d
IEcGeVector2d
Y

35
EcLayer
IEcLayer
Y

36
EcMap
IEcMapEvent
Y



IEcMap
Y

37
EcShxTextStyle
IEcShxTextStyle
Y

38
EcSymbol
IEcSymbol
Y

39
EcTextManage
IEcTextManage
Y

40
EcTrueTypeTextStyle
IEcTrueTypeTextStyle
Y

41
EcView
IEcViewEvent
Y



IEcView
Y

42
ExternAttrib
IExternAttrib
Y

43
GxApplication
IGxApplication
Y

44
ImageDibManage
IImageDibManage
Y

45
LayerObjectTable
ILayerObjectTable
Y

46
Map
disp _IMapEvents
Y



IMap
Y

47
MirrorOperation
IMirrorOperation
Y

48
ModifyEcDbGraphicsOperation
IModifyEcDbGraphicsOperation
Y

49
ModifyElementOperation
IModifyElementOperation
Y

50
ModifyImageOperation
IModifyImageOperation
Y

51
MoveFeedback
IMoveFeedback
Y

52
MoveObjectGroupOperation
IMoveObjectGroupOperation
Y

53
NewBezierFeedback
INewBezierFeedback
Y

54
NewEnvelopeFeedback
INewEnvelopeFeedback
Y

55
NewLineFeedback
INewLineFeedback
Y

56
ResizeFeedback
IResizeFeedback
Y

57
RotationFeedback
IRotationFeedback
Y

58
RotationObjectOperation
IRotationObjectOperation
Y

59
RubberEnvelope
IRubberEnvelope
Y

60
RubberLine
IRubberLine
Y

61
ScaleObjectGroupOperation
IScaleObjectGroupOperation
Y

62
Selection
ISelection
Y

63
set
ISet
Y

64
SysObjectTable
ISysObjectTable
Y

65
SystemEnvironment
ISystemEnvironment
Y

66
Topo
ITopo
Y

67
UndoRedoOperationStack
IUndoRedoOperationStack
Y
ECObExtend
1
Create2DBarCodeCmd
ICreate2DBarCodeCmd
Y

2
CreateBarCodeCmd
ICreateBarCodeCmd
Y

3
CreateMarkTextCmd
ICreateMarkTextCmd
Y

4
EcAttribEditManager
IAttribManager
Y

5
EcDb2DBarCode
IEcDb2DBarCode
Y

6
EcDbBarCode
IEcDbBarCode
Y

7
EcDbMarkText
IEcDbMarkText
Y
ExternCommand
1
AdjustRelativePosCmd
IAdjustRelativePosCmd
Y

2
ArrayCopyElementCmd
IArrayCopyElementCmd
Y

3
BufferCmd
IBufferCmd
Y

4
CalLeadInOutLineCmd
ICalLeadInOutLineCmd
Y

5
ChangeLayerCmd
IChangeLayerCmd
Y

6
CheckDataCloseCmd
ICheckDataCloseCmd
Y

7
CheckDataOverlapCmd
ICheckDataOverlapCmd
Y

8
ClipBoardCopyCmd
IClipBoardCopyCmd
Y

9
ClipBoardCutCmd
IClipBoardCutCmd
Y

10
ClipBoardPasteCmd
IClipBoardPasteCmd
Y

11
CombineNearestLineCmd
ICombineNearestLineCmd
Y

12
Convert2CurveCmd
IConvert2CurveCmd
Y

13
ConvertText2CurveCmd
IConvertText2CurveCmd
Y

14
Create3PointArcCmd
ICreate3PointArcCmd
Y

15
CreateCombineCmd
ICreateCombineCmd
Y

16
CreateGroupCmd
ICreateGroupCmd
Y

17
CreateTextCmd
ICreateTextCmd
Y

18
DitherImageCmd
IDitherImageCmd
Y

19
EcDbGCode
IEcDbGCode
Y

20
EcDbMachineEngrave
IEcDbMachineEngrave
Y

21
EditCurveCmd
IEditCurveCmd
Y

22
EditMap
IEditMap
Y

23
EditTextCmd
IEditTextCmd
Y

24
ElementAlignCmd
IElementAlignCmd
Y

25
ElementOrderCmd
IElementOrderCmd
Y

26
ExportFileCmd
IExportFileCmd
Y

27
ExtendLineCmd
IExtendLineCmd
Y

28
ImportFileData
IImportFileData
Y

29
LayerPropCmd
ILayerPropCmd
Y

30
MapArrayCmd
IMapArrayCmd
Y

31
MeasureCmd
IMeasureCmd
Y

32
MirrorElementHCmd
IMirrorElementHCmd
Y

33
MirrorElementVCmd
IMirrorElementVCmd
Y

34
ModifyTechnicsPathCmd
IModifyTechnicsPathCmd
Y

35
MoveDataByNodeCmd
IMoveDataByNodeCmd
Y

36
MoveDataToTableCenterCmd
IMoveDataToTableCenterCmd
Y

37
MoveLaserOrgPositionCmd
IMoveLaserOrgPositionCmd
Y

38
MoveObjectCmd
IMoveObjectCmd
Y

39
MovePanCmd
IMovePanCmd
Y

40
MoveTableCmd
IMoveTableCmd
Y

41
NewBezierCurveCmd
INewBezierCurveCmd
Y

42
NewCreateLineCmd
INewCreateLineCmd
Y

43
NewEllipseCmd
INewEllipseCmd
Y

44
NewEnvelopeCmd
INewEnvelopeCmd
Y

45
NewMarkerCmd
INewMarkerCmd
Y

46
PreViewCmd
IPreViewCmd
Y

47
RedoCmd
IRedoCmd
Y

48
RefreshViewCmd
IRefreshViewCmd
Y

49
ReverseColorCmd
IReverseColorCmd
Y

50
ReverseMapDataCmd
IReverseMapDataCmd
Y

51
RotationElementCmd
IRotationElementCmd
Y

52
SelectCommand
ISelectCommand
Y

53
SelectNoMoveCommand
ISelectNoMoveCommand
Y

54
SetDataReferencePositionCmd
ISetDataReferencePositionCmd
Y

55
SetSelectedElementSizeCmd
ISetSelectedElementSizeCmd
Y

56
ShxExternObj
IShxExternObj
Y

57
SimpleMoveLaserOrgPositionCmd
ISimpleMoveLaserOrgPositionCmd
Y

58
SimpleRotationCmd
ISimpleRotationCmd
Y

59
SmoothLineCmd
ISmoothLineCmd
Y

60
SplitCurveByPointCmd
ISplitCurveByPointCmd
Y

61
UnCombineCmd
IUnCombineCmd
Y

62
UndoCmd
IUndoCmd
Y

63
UnGroupCmd
IUnGroupCmd
Y

64
UnGroupPolylineCmd
IUnGroupPolylineCmd
Y

65
ZoomInCmd
IZoomInCmd
Y

66
ZoomOutScaleCmd
IZoomOutScaleCmd
Y

67
ZoomWholeCmd
IZoomWholeCmd
Y

68
ZoomWholeTableCmd
IZoomWholeTableCmd
Y

Interfaces and Types

The table below provides an exhaustive list of the interfaces and types (enums) provided by the EcXxx libraries. Most of the interfaces appear above in the Classes table, but I've listed the complete set of them here for, uh, completeness.
Library
N
ItemType
Interface or Type name
EC
1
Interface
_IMapEvents

2

IArrayDouble

3

IArrayLong

4

IArrayString

5

IBackGround

6

IBarCodeManger

7

IBatchOperation

8

IClone

9

ICommand

10

ICommandItem

11

ICommandManager

12

ICreateObjectOperation

13

IDataTool

14

IDeleteObjectOperation

15

IDisplay

16

IDisplayTransformation

17

IEcAttribEdit

18

IEcAttribEditManager

19

IEcCharItem

20

IEcDbBarcode

21

IEcDbEntity

22

IEcDbGraphics

23

IEcDbGroup

24

IEcDbImage

25

IEcDbMultiGraphics

26

IEcDbObjectTable

27

IEcDbText

28

IEcExternObj

29

IEcGeBezier

30

IEcGeBound2d

31

IEcGeCircArc2d

32

IEcGeCompositeCurve2d

33

IEcGeContext

34

IEcGeCurve2d

35

IEcGeEllipArc2d

36

IEcGeEntity2d

37

IEcGeLinearEnt2d

38

IEcGeLineSeg2d

39

IEcGeNurbCurve2d

40

IEcGePoint2d

41

IEcGePoint2dArray

42

IEcGePolyline2d

43

IEcGeTol

44

IEcGeVector2d

45

IEcLayer

46

IEcMap

47

IEcMapEvent

48

IEcShxTextStyle

49

IEcSymbol

50

IEcTextManage

51

IEcTextStyle

52

IEcTrueTypeTextStyle

53

IEcView

54

IEcViewEvent

55

IExternAttrib

56

IGxApplication

57

IImageDibManage

58

ILayerObjectTable

59

IMap

60

IMirrorOperation

61

IModifyEcDbGraphicsOperation

62

IModifyElementOperation

63

IModifyImageOperation

64

IMoveFeedback

65

IMoveObjectGroupOperation

66

INewBezierFeedback

67

INewEnvelopeFeedback

68

INewLineFeedback

69

IOperation

70

IPersistObject

71

IResizeFeedback

72

IRotationFeedback

73

IRotationObjectOperation

74

IRubberEnvelope

75

IRubberLine

76

IScaleObjectGroupOperation

77

ISelection

78

ISet

79

ISysObjectTable

80

ISystemEnvironment

81

ITechnicsProp

82

ITool

83

ITopo

84

IUndoRedoOperationStack

85
type
Buffer

86

Coordiante

87

EcDb

88

EcEnvelopeEdge

89

EcEnvelopeMoveConstrain

90

EcEnvelopePosition

91

EcLayer

92

EcLineConstraints

93

EcResizeRectConstraints

94

EcTrackerLocation

95

FileFormat

96

FillSymbol

97

Geo

98

LineSymbol

99

MapChange

100

MenuItem

101

Point

102

Raster
ECOBEXTEND
1
Interface
IAttribManager

2

ICreate2DBarCodeCmd

3

ICreateBarCodeCmd

4

ICreateMarkTextCmd

5

IEcDb2DBarCode

6

IEcDbBarCode

7

IEcDbMarkText
ExternCommand
1

IAdjustRelativePosCmd

2

IArrayCopyElementCmd

3

IBufferCmd

4

ICalLeadInOutLineCmd

5

IChangeLayerCmd

6

ICheckDataCloseCmd

7

ICheckDataOverlapCmd

8

IClipBoardCopyCmd

9

IClipBoardCutCmd

10

IClipBoardPasteCmd

11

ICombineNearestLineCmd

12

IConvert2CurveCmd

13

IConvertText2CurveCmd

14

ICreate3PointArcCmd

15

ICreateCombineCmd

16

ICreateGroupCmd

17

ICreateTextCmd

18

IDitherImageCmd

19

IEcDbGCode

20

IEcDbMachineEngrave

21

IEditCurveCmd

22

IEditMap

23

IEditTextCmd

24

IElementAlignCmd

25

IElementOrderCmd

26

IExportFileCmd

27

IExtendLineCmd

28

IImportFileData

29

ILayerPropCmd

30

IMapArrayCmd

31

IMeasureCmd

32

IMirrorElementHCmd

33

IMirrorElementVCmd

34

IModifyTechnicsPathCmd

35

IMoveDataByNodeCmd

36

IMoveDataToTableCenterCmd

37

IMoveLaserOrgPositionCmd

38

IMoveObjectCmd

39

IMovePanCmd

40

IMoveTableCmd

41

INewBezierCurveCmd

42

INewCreateLineCmd

43

INewEllipseCmd

44

INewEnvelopeCmd

45

INewMarkerCmd

46

IPreViewCmd

47

IRedoCmd

48

IRefreshViewCmd

49

IReverseColorCmd

50

IReverseMapDataCmd

51

IRotationElementCmd

52

ISelectCommand

53

ISelectNoMoveCommand

54

ISetDataReferencePositionCmd

55

ISetSelectedElementSizeCmd

56

IShxExternObj

57

ISimpleMoveLaserOrgPositionCmd

58

ISimpleRotationCmd

59

ISmoothLineCmd

60

ISplitCurveByPointCmd

61

IUnCombineCmd

62

IUndoCmd

63

IUnGroupCmd

64

IUnGroupPolylineCmd

65

IZoomInCmd

66

IZoomOutScaleCmd

67

IZoomWholeCmd

68

IZoomWholeTableCmd

69
type
align

70

FileFormat