|
|
Компонент DrwGLCom ActiveX Автор: Мартинов Г. М. Попов А. Ю. Кафедра КСУ, МГТУ "СТАНКИН"Опубликовано: 09.08.2003 Версия текста: 1.0 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);
|
BOOL DrawLineTo(long lPrimitiveIndex, double dX, double dY, double dZ, short nType); |
- В нашем тестовом приложении для рисования линий используются кнопки XY-, YZ+, ZX+, YZ- и соответствующие им функции, каждая из которых изменяет положение текущей точки на 10 пикселей в соответсвующем направлении.
void CDrwGLDemoDlg::OnButtonXY_Negative() { m_DrwGL.DrawLineTo(++m_lPrimitiveIndex, m_dCoordinateX-=10, m_dCoordinateY-=10, m_dCoordinateZ, 1); }
void CDrwGLDemoDlg::OnButtonYZ_Positive() { m_DrwGL.DrawLineTo(++m_lPrimitiveIndex, m_dCoordinateX, m_dCoordinateY+=10, m_dCoordinateZ+=10, 1); } void CDrwGLDemoDlg::OnButtonYZ_Negative() { m_DrwGL.DrawLineTo(++m_lPrimitiveIndex, m_dCoordinateX, m_dCoordinateY-=10, m_dCoordinateZ-=10, 1); } void CDrwGLDemoDlg::OnButtonZX_Positive() { m_DrwGL.DrawLineTo(++m_lPrimitiveIndex, m_dCoordinateX+=10, m_dCoordinateY, m_dCoordinateZ+=10, 1); } |
- В тестовом приложении метод BeginDraw() используется при вызове функции onClear(), очищающей пользовательскую часть вывода:
void CDrwGLDemoDlg::OnClear() { m_bDrawExample = 0; UpdateData(FALSE); m_DrwGL.BeginDraw(); m_DrwGL.Invalidate(); } |
- Для вывода тестового изображения:
В тестовом приложении для переключения режима вывода тестового изображения используется функция void CDrwGLDemoDlg::OnDrawExample() { if(!UpdateData()) return; if (m_bDrawExample) m_DrwGL.DrawTest(); else { m_DrwGL.BeginDraw(); m_DrwGL.Invalidate(); } } |
- Для того чтобы показать окно настройки компонента используйте метод:
void ShowPropertyPages(); |
При помощи него можно менять настройки осей (единицы измерения, толщину осей, их цвет), настройки растеризации, устанавливать координаты центра координат, цвета рабочего и холостого хода, цвет заднего фона, цвет информационного окна, шрифт текста в информационном окне, координаты информационного окна и показываемые в нем параметры, а также в нем можно задать тип линий для рабочего и холостого перемещения и их толщину. - Чтобы переместить текущую точку, заданную lPrimitiveIndex, в новую точку, с координатами dX, dY, dZ:
void MoveToPoint(long lPrimitiveIndex, double dX, double dY, double dZ); |
- Чтобы начать рисование с новой точки:
void SetPoint(long lPrimitiveIndex, double dX, double dY, double dZ); |
- Возвращает значение адреса оси по ее индексу. Задается отдельно для каждого кадра.
double GetDAddressVal(short iIndex); |
- Задает значение нового адреса оси по ее старому значению.
void SetDAddressVal(short iIndex, double newValue); |
- Для изменения режима отображения (значения последовательно меняются на: rotate (вращение), move (перемещение), zoom (увеличение), info (информация)):
Свойства компонента DrwGLCom- У ActiveX компонента DrwGLCom существуют следующие свойства:
- Получение значения текущего режима:
- Изменение значения текущего режима:
void SetSCurrentMode(short propVal); |
- Возвращает название текущего шрифта для вывода текста:
- Устанавливает значение шрифта для вывода текста:
void SetFont(LPDISPATCH propVal); |
- Возвращает текущее значение цвета оси X:
unsigned long GetAxis_XColor(); |
- Устанавливает новое значение цвета оси X:
void SetAxis_XColor(unsigned long propVal); |
- Возвращает текущее значение цвета оси Y:
unsigned long GetAxis_YColor(); |
- Устанавливает новое значение цвета оси Y:
void SetAxis_YColor(unsigned long propVal); |
- Возвращает текущее значение цвета оси Z:
unsigned long GetAxis_ZColor(); |
- Устанавливает новое значение цвета оси Z:
void SetAxis_ZColor(unsigned long propVal); |
- Возвращает значение цвета для всех осей (0 - если цвета разные):
unsigned long GetAxisAllColor(); |
- Устанавливает один цвет для всех осей:
void SetAxisAllColor(unsigned long propVal); |
- Возвращает цвет для окошка Info:
unsigned long GetInfoColor(); |
- Устанавливает цвет для окошка Info:
void SetInfoColor(unsigned long propVal); |
OLE_COLOR GetBackColor(); |
void SetBackColor(OLE_COLOR propVal); |
- Возвращает значение цвета, которым выводится рабочее движение:
unsigned long GetWorkMoveColor(); |
- Устанавливает значение цвета, которым выводится рабочее движение:
void SetWorkMoveColor(unsigned long propVal); |
- Возвращает значение цвета, которым выводится нерабочее движение:
unsigned long GetFastMoveColor(); |
- Устанавливает значение цвета, которым выводится нерабочее движение:
void SetFastMoveColor(unsigned long propVal); |
- Возвращает цвет точек конца движения:
unsigned long GetBlockEndPointColor(); |
- Устанавливает цвет точек конца движения:
void SetBlockEndPointColor(unsigned long propVal); |
- Возвращает установлены ли координаты на осях:
BOOL GetBEnableDivisionsText(); |
- Задает устанавливать ли координаты на осях:
void SetBEnableDivisionsText(BOOL propVal); |
- Возвращает количество точек на осях, задающих ее координаты, в каждом направлении оси:
short GetSDivisionsAmount(); |
- Устанавливает количество точек на осях, задающих ее координаты, в каждом направлении оси:
void SetSDivisionsAmount(short propVal); |
- Возвращает количество знаков после запятой для координат:
short GetSDivisionsFractionalSings(); |
- Устанавливает количество знаков после запятой для координат:
void SetSDivisionsFractionalSings(short propVal); |
- Возвращает название оси X:
- Устанавливает название оси X:
void SetSNameXAxis(short propVal); |
- Возвращает название оси Y:
- Устанавливает название оси Y:
void SetSNameYAxis(short propVal); |
- Возвращает название оси Z:
- Устанавливает название оси 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); |
- Возвращает уровень сглаженности линий:
- Задает уровень сглаженности линий:
void SetSLineSmooth(short propVal); |
- Возвращает уровень сглаженности точек:
- Задает уровень сглаженности точек:
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 (отсчет начинается с горизонтального положения по часовой стрелке):
- Задает угол наклона оси X (отсчет начинается с горизонтального положения по часовой стрелке):
void SetDAngleX(double propVal); |
- Возвращает угол наклона оси Y (отсчет начинается с горизонтального положения по часовой стрелке):
- Задает угол наклона оси Y (отсчет начинается с горизонтального положения по часовой стрелке):
void SetDAngleY(double propVal); |
- Возвращает угол наклона оси Z (отсчет начинается с горизонтального положения по часовой стрелке):
- Задает угол наклона оси 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(); |
- Задает толщину границы информационного окна (в пикселях):
void SetDInfoWindowBorderLineWeight(double propVal); |
- Возвращает показывается ли переменная X в информационном окне:
- Задает показывать ли переменная X в информационном окне:
void SetBEnableShowX(BOOL propVal); |
- Возвращает показывается ли переменная Y в информационном окне:
- Задает показывать ли переменная Y в информационном окне:
void SetBEnableShowY(BOOL propVal); |
- Возвращает показывается ли переменная Z в информационном окне:
- Задает показывать ли переменная Z в информационном окне:
void SetBEnableShowZ(BOOL propVal); |
- Возвращает показывать ли переменную M в информационном окне:
- Задает показывать ли переменную M в информационном окне:
void SetBEnableShowM(BOOL propVal); |
- Возвращает показывать ли переменную S в информационном окне:
- Задает показывать ли переменную S в информационном окне:
void SetBEnableShowS(BOOL propVal); |
- Возвращает показывать ли переменную T в информационном окне:
- Задает показывать ли переменную T в информационном окне:
void SetBEnableShowT(BOOL propVal); |
- Возвращает показывать ли переменную F в информационном окне:
- Задает показывать ли переменную 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); |
- Возвращает задана ли визуализация рисования:
- Возвращает задана ли визуализация рисования:
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 - перемещение информационного окна вверх.
- В режиме MOVE - перемещение изображение вниз в плоскости экрана, в режиме ROTATE - вращение в вертикальной плоскости перпендикулярной плоскости экрана, в режиме ZOOM - увеличение изображения, в режиме INFO - перемещение информационного окна вниз.
- В режиме MOVE - перемещение изображение влево в плоскости экрана, в режиме ROTATE - вращение вокруг оси Z против часовой стрелке, в режиме INFO - перемещение информационного окна влево.
- В режиме MOVE - перемещение изображение вправо в плоскости экрана, в режиме ROTATE - вращение вокруг оси Z по часовой стрелке, в режиме INFO - перемещение информационного окна вправо.
- В режиме MOVE - удаление изображения, в режиме ROTATE - вращение в плоскости экрана.
- В режиме MOVE - приближение изображения, в режиме ROTATE - вращение в плоскости экрана.
- Возвращает устанавливать ли центр координат в центр ActiveX компонента:
- Задает устанавливать ли центр координат в центр ActiveX компонента:
void SetBAutocenter(BOOL propVal); |
- Возвращает устанавливается ли размер поля рисования автоматически:
- Задает устанавливается ли размер поля рисования автоматически:
void SetBAutosize(BOOL propVal); |
| Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. |
|