DrwGLCom - это ActiveX компонент, позволяющий отображать траекторию управляющей программы в пространстве. Траектория складывается из различных примитивов, в качестве которых может выступать точка, линия или дуга. Более сложные траектории можно разложить на эти составляющие. Получившееся изображение траектории является трехмерным, его можно масштабировать, вращать и перемещать, используя клавиатуру или мышку. Работа с изображением траектории возможна в нескольких режимах переключение между которыми осуществляется нажатием правой кнопки мыши. Для управления изображением перемещайте мышь, удерживая нажатой левую кнопку. В режиме MOVE осущствляется перемещение изображения в плоскости экрана вне зависимости от положения координатных осей. В режиме ROTATE осуществляется вращение изображения, в режиме ZOOM осуществляется масштабирование изображения. В режиме INFO осуществляется перемещение информационного окна в пределах окна отображения траектории инструмента.
Пример использования ActiveX компонента DrwGLCOM на базе диалогового приложения
В первую очередь необходимо зарегистрировать в системе DrwGLCOM ActiveX (например, из командной строки: "regsvr32 DrwGLCOM.ocx").
Затем добавим поддержку DrwGLCOM в диалоговом приложении. Для этого необходимо:
Добавить элемент DrwGLCOM Control в проект, для чего в меню Project выбрать пункт Add to Project и команду Components and Controls, далее в появившемся диалоговом окне выбрать папку Registered ActiveX Controls и найти в ней элемент DrwGLCOM Control.
Найти на панели Controls объект DrwGLCOM и перетащить его в необходимое место вашего диалогового окна.
Добавить переменную, которая отвечает за элемент управления, для чего в меню View вызвать команду Class Wizard, перейти на вкладку Member Variables и нажать кнопку Add Variable, убедившись, что в поле Class Name выбран класс CApplicationDlg. В новом диалоговом окне в поле Member Variable Name указать имя новой переменной (например, m_DrwGL).
Методы компонента DrwGLCom
У ActiveX компонента DrwGLCom можно использовать следующие методы:
Для отрисовки дуги:
BOOL DrawArc(long lPrimitiveIndex, short nFIndex, short nGIndex, double dRadius, double dStartAngle, double dRelEndAngle, double dFEndPtn, double dGEndPtn); // где lPrimitiveIndex - номер примитива, по которому в дальнейшем можно определить кадр, // nFIndex и nGIndex - задают начальную точку дуги, // dRadius - радиус дуги, // dStartAngle и dRelAngle - задают угол касательных к начальной и конечной точке дуги, // dFEndPtn и dGEndPtn - задают конечную точку дуги.
В нашем тестовом приложении для рисования линий используются кнопки XY-, YZ+, ZX+, YZ- и соответствующие им функции, каждая из которых изменяет положение текущей точки на 10 пикселей в соответсвующем направлении.
Для того чтобы показать окно настройки компонента используйте метод:
void ShowPropertyPages();
При помощи него можно менять настройки осей (единицы измерения, толщину осей, их цвет), настройки растеризации, устанавливать координаты центра координат, цвета рабочего и холостого хода, цвет заднего фона, цвет информационного окна, шрифт текста в информационном окне, координаты информационного окна и показываемые в нем параметры, а также в нем можно задать тип линий для рабочего и холостого перемещения и их толщину.
Чтобы переместить текущую точку, заданную lPrimitiveIndex, в новую точку, с координатами dX, dY, dZ:
Для изменения режима отображения (значения последовательно меняются на: rotate (вращение), move (перемещение), zoom (увеличение), info (информация)):
void ChangeMode();
Свойства компонента DrwGLCom
У ActiveX компонента DrwGLCom существуют следующие свойства:
Получение значения текущего режима:
short GetSCurrentMode();
Изменение значения текущего режима:
void SetSCurrentMode(short propVal);
Возвращает название текущего шрифта для вывода текста:
COleFont GetFont();
Устанавливает значение шрифта для вывода текста:
void SetFont(LPDISPATCH propVal);
Возвращает текущее значение цвета оси X:
unsignedlong GetAxis_XColor();
Устанавливает новое значение цвета оси X:
void SetAxis_XColor(unsignedlong propVal);
Возвращает текущее значение цвета оси Y:
unsignedlong GetAxis_YColor();
Устанавливает новое значение цвета оси Y:
void SetAxis_YColor(unsignedlong propVal);
Возвращает текущее значение цвета оси Z:
unsignedlong GetAxis_ZColor();
Устанавливает новое значение цвета оси Z:
void SetAxis_ZColor(unsignedlong propVal);
Возвращает значение цвета для всех осей (0 - если цвета разные):
unsignedlong GetAxisAllColor();
Устанавливает один цвет для всех осей:
void SetAxisAllColor(unsignedlong propVal);
Возвращает цвет для окошка Info:
unsignedlong GetInfoColor();
Устанавливает цвет для окошка Info:
void SetInfoColor(unsignedlong propVal);
Возвращает цвет фона:
OLE_COLOR GetBackColor();
Устанавливает цвет фона:
void SetBackColor(OLE_COLOR propVal);
Возвращает значение цвета, которым выводится рабочее движение:
unsignedlong GetWorkMoveColor();
Устанавливает значение цвета, которым выводится рабочее движение:
void SetWorkMoveColor(unsignedlong propVal);
Возвращает значение цвета, которым выводится нерабочее движение:
unsignedlong GetFastMoveColor();
Устанавливает значение цвета, которым выводится нерабочее движение:
void SetFastMoveColor(unsignedlong propVal);
Возвращает цвет точек конца движения:
unsignedlong GetBlockEndPointColor();
Устанавливает цвет точек конца движения:
void SetBlockEndPointColor(unsignedlong propVal);
Возвращает установлены ли координаты на осях:
BOOL GetBEnableDivisionsText();
Задает устанавливать ли координаты на осях:
void SetBEnableDivisionsText(BOOL propVal);
Возвращает количество точек на осях, задающих ее координаты, в каждом направлении оси:
short GetSDivisionsAmount();
Устанавливает количество точек на осях, задающих ее координаты, в каждом направлении оси:
void SetSDivisionsAmount(short propVal);
Возвращает количество знаков после запятой для координат:
short GetSDivisionsFractionalSings();
Устанавливает количество знаков после запятой для координат:
void SetSDivisionsFractionalSings(short propVal);
Возвращает название оси X:
short GetSNameXAxis();
Устанавливает название оси X:
void SetSNameXAxis(short propVal);
Возвращает название оси Y:
short GetSNameYAxis();
Устанавливает название оси Y:
void SetSNameYAxis(short propVal);
Возвращает название оси Z:
short GetSNameZAxis();
Устанавливает название оси Z:
void SetSNameZAxis(short propVal);
Возвращает единицу измерения (0 - нет единицы, 1 - мм., 2 - дюймы):
short GetSMeasureUnitType();
Устанавливает единицу измерения (0 - нет единицы, 1 - мм., 2 - дюймы):
void SetSMeasureUnitType(short propVal);
Возвращает толщину линий, задающих оси (в пикселях):
double GetDAxisLineWeight();
Устанавливает толщину линий, задающих оси (в пикселях):
void SetDAxisLineWeight(double propVal);
Возвращает размер квадратов, размещаемых в конце пути по рабочему и нерабочему ходу в пикселях:
double GetDBlockEndPointSize();
Устанавливает размер квадратов, размещаемых в конце пути по рабочему и нерабочему ходу в пикселях:
void SetDBlockEndPointSize(double propVal);
Возвращает тип линий, задающих оси (0 - сплошная, 1 - пунктирная, 2 - пунктирная с уменьшенным промежутком, 3 - штрих-пунктирная, 4 - штрих-пунктирная с двумя точками, 5 - без осей):
short GetSAxisLineType();
Задает тип линий, задающих оси (0 - сплошная, 1 - пунктирная, 2 - пунктирная с уменьшенным промежутком, 3 - штрих-пунктирная, 4 - штрих-пунктирная с двумя точками, 5 - без осей):
void SetSAxisLineType(short propVal);
Возвращает тип линий, задающих отрезки холостого хода (0 - сплошная, 1 - пунктирная, 2 - пунктирная с уменьшенным промежутком, 3 - штрих-пунктирная, 4 - штрих-пунктирная с двумя точками, 5 - без осей):
short GetSFastMoveLineType();
Задает тип линий, задающих отрезки холостого хода (0 - сплошная, 1 - пунктирная, 2 - пунктирная с уменьшенным промежутком, 3 - штрих-пунктирная, 4 - штрих-пунктирная с двумя точками, 5 - без осей):
void SetSFastMoveLineType(short propVal);
Возвращает тип линий, задающих отрезки рабочего хода (0 - сплошная, 1 - пунктирная, 2 - пунктирная с уменьшенным промежутком, 3 - штрих-пунктирная, 4 - штрих-пунктирная с двумя точками, 5 - без осей):
short GetSWorkMoveLineType();
Задает тип линий, задающих отрезки рабочего хода (0 - сплошная, 1 - пунктирная, 2 - пунктирная с уменьшенным промежутком, 3 - штрих-пунктирная, 4 - штрих-пунктирная с двумя точками, 5 - без осей):
void SetSWorkMoveLineType(short propVal);
Возвращает толщину букв в пикселях:
double GetDCharsLineWeight();
Задает толщину букв в пикселях:
void SetDCharsLineWeight(double propVal);
Проверяет включена ли проверка на взаимное перекрытие объектов.
BOOL GetBEnableDepthTest();
Задает включить ли проверку на взаимное перекрытие объектов.
void SetBEnableDepthTest(BOOL propVal);
Возвращает степень сглаженности для дуг (число вершин правильного многоугольника):
short GetSCirclesAccuracy();
Задает степень сглаженности для дуг (число вершин правильного многоугольника):
void SetSCirclesAccuracy(short propVal);
Возвращает уровень сглаженности линий:
short GetSLineSmooth();
Задает уровень сглаженности линий:
void SetSLineSmooth(short propVal);
Возвращает уровень сглаженности точек:
short GetSPointSmooth();
Задает уровень сглаженности точек:
void SetSPointSmooth(short propVal);
Возвращает уровень сглаженности многоугольников:
short GetSPolygonSmooth();
Задает уровень сглаженности многоугольников:
void SetSPolygonSmooth(short propVal);
Возвращает отклонение начертания букв:
double GetDCharDeviation();
Задает отклонение начертания букв:
void SetDCharDeviation(double propVal);
Возвращает заливать ли пространство между линиями, очерчивающими буквы:
long GetLCharInPolygons();
Задает заливать ли пространство между линиями, очерчивающими буквы:
void SetLCharInPolygons(long propVal);
Возвращает использовать ли модель сглаживания штриховки:
BOOL GetBEnableSmoothShadingModel();
Задает использовать ли модель сглаживания штриховки:
void SetBEnableSmoothShadingModel(BOOL propVal);
Возвращает угол наклона оси X (отсчет начинается с горизонтального положения по часовой стрелке):
double GetDAngleX();
Задает угол наклона оси X (отсчет начинается с горизонтального положения по часовой стрелке):
void SetDAngleX(double propVal);
Возвращает угол наклона оси Y (отсчет начинается с горизонтального положения по часовой стрелке):
double GetDAngleY();
Задает угол наклона оси Y (отсчет начинается с горизонтального положения по часовой стрелке):
void SetDAngleY(double propVal);
Возвращает угол наклона оси Z (отсчет начинается с горизонтального положения по часовой стрелке):
double GetDAngleZ();
Задает угол наклона оси Z (отсчет начинается с горизонтального положения по часовой стрелке):
void SetDAngleZ(double propVal);
Возвращает насколько смещен центр оси X относительно оси координат (в единицах измерения):
double GetDCurrentViewPortCenterX();
Задает насколько смещен центр оси X относительно оси координат (в единицах измерения):
void SetDCurrentViewPortCenterX(double propVal);
Возвращает насколько смещен центр оси Y относительно оси координат (в единицах измерения):
double GetDCurrentViewPortCenterY();
Задает насколько смещен центр оси Y относительно оси координат (в единицах измерения):
void SetDCurrentViewPortCenterY(double propVal);
Возвращает насколько смещен центр оси Z относительно оси координат (в единицах измерения):
double GetDCurrentViewPortCenterZ();
Задает насколько смещен центр оси Z относительно оси координат (в единицах измерения):
void SetDCurrentViewPortCenterZ(double propVal);
Возвращает объем доступного для рисования пространства (в единицах измерения):
double GetDCurrent3DSpaceSize();
Задает текущий доступный размер поля рисования (в единицах измерения):
void SetDCurrent3DSpaceSize(double propVal);
Возвращает текущий доступный размер поля рисования (в единицах измерения):
double GetDAuto3DSpaceSize();
Задает текущий доступный размер поля рисования (в единицах измерения):
void SetDAuto3DSpaceSize(double propVal);
Возвращает толщину линий, задающих холостой ход (в пикселях):
double GetDFastMoveLineWeight();
Задает толщину линий, задающих холостой ход (в пикселях):
void SetDFastMoveLineWeight(double propVal);
Возвращает толщину линий, задающих рабочий ход (в пикселях):
double GetDWorkMoveLineWeight();
Задает толщину линий, задающих рабочий ход (в пикселях):
void SetDWorkMoveLineWeight(double propVal);
Возвращает устанавливать ли точку в конце хода:
BOOL GetBEnableEndLinePoint();
Задает устанавливать ли точку в конце хода
void SetBEnableEndLinePoint(BOOL propVal);
Возвращает выводится ли в данный момент информационное окно:
BOOL GetBEnableShowInfoWindow();
Задает выводится ли в данный момент информационное окно:
void SetBEnableShowInfoWindow(BOOL propVal);
Возвращает толщину границы информационного окна (в пикселях):
double GetDInfoWindowBorderLineWeight();
Задает толщину границы информационного окна (в пикселях):
Возвращает показывается ли переменная X в информационном окне:
BOOL GetBEnableShowX();
Задает показывать ли переменная X в информационном окне:
void SetBEnableShowX(BOOL propVal);
Возвращает показывается ли переменная Y в информационном окне:
BOOL GetBEnableShowY();
Задает показывать ли переменная Y в информационном окне:
void SetBEnableShowY(BOOL propVal);
Возвращает показывается ли переменная Z в информационном окне:
BOOL GetBEnableShowZ();
Задает показывать ли переменная Z в информационном окне:
void SetBEnableShowZ(BOOL propVal);
Возвращает показывать ли переменную M в информационном окне:
BOOL GetBEnableShowM();
Задает показывать ли переменную M в информационном окне:
void SetBEnableShowM(BOOL propVal);
Возвращает показывать ли переменную S в информационном окне:
BOOL GetBEnableShowS();
Задает показывать ли переменную S в информационном окне:
void SetBEnableShowS(BOOL propVal);
Возвращает показывать ли переменную T в информационном окне:
BOOL GetBEnableShowT();
Задает показывать ли переменную T в информационном окне:
void SetBEnableShowT(BOOL propVal);
Возвращает показывать ли переменную F в информационном окне:
BOOL GetBEnableShowF();
Задает показывать ли переменную F в информационном окне:
void SetBEnableShowF(BOOL propVal);
Возвращает показывать ли режим в информационном окне (ROTATE, MOVE, ZOOM):
BOOL GetBEnableShowMode();
Задает показывать ли режим в информационном окне (ROTATE, MOVE, ZOOM):
void SetBEnableShowMode(BOOL propVal);
Возвращает показывать ли переменную Verticles в информационном окне:
BOOL GetBEnableShowVertices();
Задает показывать ли переменную Verticles в информационном окне:
void SetBEnableShowVertices(BOOL propVal);
Возвращает текущую координату X информационного окна:
double GetDCurrentInfoWindowPosX();
Задает текущую координату X информационного окна:
void SetDCurrentInfoWindowPosX(double propVal);
Возвращает текущую координату Y информационного окна:
double GetDCurrentInfoWindowPosY();
Задает текущую координату Y информационного окна:
void SetDCurrentInfoWindowPosY(double propVal);
Возвращает задана ли визуализация рисования:
BOOL GetBVirtualDraw();
Возвращает задана ли визуализация рисования:
void SetBVirtualDraw(BOOL propVal);
Возвращает текущий режим (ROTATE, MOOV, ZOOM, INFO)
short Get_sCurrentMode();
Задает текущий режим:
void Set_sCurrentMode(short propVal);
Вовзвращает шаг при перемещении, масштабировании, вращении объекта с клавиатуры:
short GetSKeyboardDelta();
Задает шаг при перемещении, масштабировании, вращении объекта с клавиатуры:
void SetSKeyboardDelta(short propVal);
В режиме MOVE - перемещение изображение вверх в плоскости экрана, в режиме ROTATE - вращение в вертикальной плоскости перпендикулярной плоскости экрана, в режиме ZOOM - уменьшение изображения, в режиме INFO - перемещение информационного окна вверх.
void KeyAltUp();
В режиме MOVE - перемещение изображение вниз в плоскости экрана, в режиме ROTATE - вращение в вертикальной плоскости перпендикулярной плоскости экрана, в режиме ZOOM - увеличение изображения, в режиме INFO - перемещение информационного окна вниз.
void KeyAltDown();
В режиме MOVE - перемещение изображение влево в плоскости экрана, в режиме ROTATE - вращение вокруг оси Z против часовой стрелке, в режиме INFO - перемещение информационного окна влево.
void KeyAltLeft();
В режиме MOVE - перемещение изображение вправо в плоскости экрана, в режиме ROTATE - вращение вокруг оси Z по часовой стрелке, в режиме INFO - перемещение информационного окна вправо.
void KeyAltRight();
В режиме MOVE - удаление изображения, в режиме ROTATE - вращение в плоскости экрана.
void KeyCtrlAltUp();
В режиме MOVE - приближение изображения, в режиме ROTATE - вращение в плоскости экрана.
void KeyCtrlAltDown();
Возвращает устанавливать ли центр координат в центр ActiveX компонента:
BOOL GetBAutocenter();
Задает устанавливать ли центр координат в центр ActiveX компонента:
void SetBAutocenter(BOOL propVal);
Возвращает устанавливается ли размер поля рисования автоматически:
BOOL GetBAutosize();
Задает устанавливается ли размер поля рисования автоматически:
void SetBAutosize(BOOL propVal);
Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.