Перейти к публикации

Помогите разобраться с API


Рекомендованные сообщения

Так как, решил эту проблему? А то у меня мысли появились как это сделать.

Довольно таки просто, присвоил в модели свойство, типа исключение из правил, а в коде ввел поверку на его наличие. Как ты знаешь, все эти пружины и стандартные изделия я создаю своей программкой, так что там оно заполняется автоматом, а в модуле спецификации, в настройках, это имя свойства прописываю.

Все рисовал в функции OnBufferSwap. Она вызывается событием

SINK_ENTRY_EX(ID_MODELVIEW_EVENTS, __uuidof(DModelViewEvents), swViewBufferSwapNotify, OnBufferSwap)

В другом месте рисование в OpenGL не отображается.

для перерисовки использовал

SINK_ENTRY_EX(ID_MODELVIEW_EVENTS, __uuidof(DModelViewEvents), swViewRepaintNotify, OnRepaint)
TEM

Спасибо на наводку, до ViewRepaintNotify я все таки додумался, но не успел проверить. А то, что OpenGL рисуется только при событии BufferSwapNotify, меня и поставило в некоторый тупик.

Мне не нужно было знать(искать) окна деталей или сборок

А мне, как я думаю, это и необходимо. Но это все легко получить. С этим нет проблем.
Ссылка на сообщение
Поделиться на других сайтах


Цитата

Так как, решил эту проблему? А то у меня мысли появились как это сделать.

Довольно таки просто, присвоил в модели свойство, типа исключение из правил, а в коде ввел поверку на его наличие. Как ты знаешь, все эти пружины и стандартные изделия я создаю своей программкой, так что там оно заполняется автоматом, а в модуле спецификации, в настройках, это имя свойства прописываю.

Вот-вот, я и хотел нечто подобное предложить...

TEM

Спасибо на наводку, до ViewRepaintNotify я все таки додумался, но не успел проверить. А то, что OpenGL рисуется только при событии BufferSwapNotify, меня и поставило в некоторый тупик.

...

Ну и как, получилось? Рисование... или что там ты хотел?

Ссылка на сообщение
Поделиться на других сайтах

Ну и как, получилось? Рисование... или что там ты хотел?

Пока нет. Не совсем еще понятно, как это делать.... Читаю "умные" книжки...
Ссылка на сообщение
Поделиться на других сайтах

Пока нет. Не совсем еще понятно, как это делать.... Читаю "умные" книжки...

Пример не пробовал, который я тебе записал:

swOpenGL\FaceWorks ?

Ссылка на сообщение
Поделиться на других сайтах

Пример не пробовал, который я тебе записал:

swOpenGL\FaceWorks ?

У меня он был, но это не то. Плюс там жуткий тормоз даже на C++. Component-> Body-> Face-> Vertex и рисование линий. Число итераций, даже на простенькой сборке, достигает 50000. Да к тому же весь код в функции на событие BufferSwapNotify, любой чих мышкой и эти 50000 повторяются.....
Ссылка на сообщение
Поделиться на других сайтах

чтобы избавиться от чихов необходимы флаги. ТО есть пока доконца инерации не дошли, новый запуск не делать. Так BufferSwapNotify будет происходить много раз, но код выполняться будет столько раз колько нужно.

Ссылка на сообщение
Поделиться на других сайтах

чтобы избавиться от чихов необходимы флаги. ТО есть пока доконца инерации не дошли, новый запуск не делать. Так BufferSwapNotify будет происходить много раз, но код выполняться будет столько раз колько нужно.

Уважаемый TEM!

Ну хоть кусочек кода можешь привести в кач-ве примера, где что-нибудь рисуется в окне SW?

Или что ты там делаешь средствами OpenGL?

Можно ли там выбирать объекты уже имеющиеся, менять, допустим, их представлене: каркас, shaded, прозрачность?

Я-то использовал OpenGL в проге на Delphi, там проще: сначала создаешь окно, получаешь контент, иниц. OpenGL и рисуешь и тд.

Делаешь что хочешь.

Я, вообще, просто поступил: взял готовый пример (с CD к книжке) и дальше его модифицировал его как мне надо.

Вот до меня не дойдет никак : причем здесь функция API SW - "BufferSwapNotify"??? Это же "событие"!

Насколько я понимаю есть два пути реализовать операции OpenGL в окне SW :

- традиционный, те. использовать API SW;

- вообще не использовать API SW, а пользоваться только средствами WinAPI: найти окно, его Hwnd, и дальше OpenGL...

По-второму пункту есть много решений!

Я поинтерсовался в Инете, там ребята в игрушки залезают и делают что хотят. А в игрушках никакого своего API нету!

Т.е. вопрос тут стоит так: "операции OpenGL в окне другого приложения" - и это вполне реализуемо (уже реализовано!).

Но, ИМХО, не стоит, или даже вредно/опасно, использовать эти два подхода вместе!

Так что, если не жалко, покажи хоть кусочек сыра э-э-э, пардон, кусочек КОДА! :-)

Ссылка на сообщение
Поделиться на других сайтах

Насколько я понимаю есть два пути реализовать операции OpenGL в окне SW :

- традиционный, те. использовать API SW;

- вообще не использовать API SW, а пользоваться только средствами WinAPI: найти окно, его Hwnd, и дальше OpenGL...

Если честно не совсем в теме дискуссии, но вот в одной статье на сайте Solidworks.ru, использование OpenGL кратко описывалось так:

post-6363-1215585362_thumb.png

Ссылка на сообщение
Поделиться на других сайтах

Если честно не совсем в теме дискуссии, но вот в одной статье на сайте Solidworks.ru, использование OpenGL кратко описывалось так:

post-6363-1215585362_thumb.png

Да-да, это я уже видел...

Ну там о-очень кратко :-(

Можно сказать совсем кратко!

Мне непонятно: как связаны "событие" в SW и OpenGL?

Мне кажется - это только "зародыш" применения/использования OpenGL в SW на базе API SW.

Причем, ИМХО, не очень удачный...

Ссылка на сообщение
Поделиться на других сайтах

Можно ли там выбирать объекты уже имеющиеся, менять, допустим, их представлене: каркас, shaded, прозрачность?

Вот это меня и заинтересовало сильно. Стандартными средствами API SW это делается, но там есть определенные проблемы. Думаю. что на изучение openGL, уйдет некоторое время, с ходу не получилось....
Ссылка на сообщение
Поделиться на других сайтах

Вот это меня и заинтересовало сильно. Стандартными средствами API SW это делается, но там есть определенные проблемы.

Думаю. что на изучение openGL, уйдет некоторое время, с ходу не получилось....

Посмотри здеь:

<noindex>http://gamedev.gameslife.ru/ogllessons/opengl.html</noindex>

и здесь:

<noindex>http://www.opengl.org/resources/code/samples/redbook/</noindex>

Ссылка на сообщение
Поделиться на других сайтах

ssv22, я показывал код. функция CreateNormal() она вызывается функцией OnBufferSwap по событию swViewBufferSwapNotify

STDMETHODIMP CDocView::OnBufferSwap()

{  

	HRESULT						 hr = S_OK;

	VARIANT_BOOL					bShaded = FALSE;



	// check to make sure that the model is in shaded mode

	hr = modelView->GetDisplayState(swIsViewShaded, &bShaded);



....



	CreateNormal();

	

	return S_OK;

}

Мне непонятно: как связаны "событие" в SW и OpenGL?

я так понимаю. Графика OpenGL с начала рисуется в буфере, а потом выводиться на экран. ЧТобы тормозов не было. а событие swViewBufferSwapNotify вывоит изображение в буфере на экран.

Ссылка на сообщение
Поделиться на других сайтах

ssv22, я показывал код. функция CreateNormal() она вызывается функцией OnBufferSwap по событию swViewBufferSwapNotify

STDMETHODIMP CDocView::OnBufferSwap()

{  

	HRESULT						 hr = S_OK;

	VARIANT_BOOL					bShaded = FALSE;



	// check to make sure that the model is in shaded mode

	hr = modelView->GetDisplayState(swIsViewShaded, &bShaded);



....



	CreateNormal();

	

	return S_OK;

}

Спасибо за код, видимо проглядел...

я так понимаю. Графика OpenGL с начала рисуется в буфере, а потом выводиться на экран.

ЧТобы тормозов не было. а событие swViewBufferSwapNotify вывоит изображение в буфере на экран.

Насчет этого: совершенно согласен! Я тоже так думаю...

А вот как насчет выбора или трансформации(вращение, масштабирования...) примитива в окне SW - тут у меня непонятки пока.

Ссылка на сообщение
Поделиться на других сайтах

А вот как насчет выбора или трансформации(вращение, масштабирования...) примитива в окне SW - тут у меня непонятки пока.

Речь про модель SW или о том, что создается в OpenGL? Например через OpenGL создал кубик и его надо трансформировать, вращать и т.д.

Для детали SW есть функции для трансформации и вращения. IModelView там много, что есть.

Если по конкретней скажите задачу, то по продую описть, что смогу :)

Ссылка на сообщение
Поделиться на других сайтах

Речь про модель SW или о том, что создается в OpenGL? Например через OpenGL создал кубик и его

надо трансформировать, вращать и т.д.

Для детали SW есть функции для трансформации и вращения. IModelView там много, что есть.

Если по конкретней скажите задачу, то по продую описть, что смогу :)

Так это же одно и тоже: что "кубик в OpenGL", что кубик в SW?!

Или я ошибаюсь?

Тут вот Shvg и мучается...

Можешь привести кусок кода, где идет "привязка" OpenGL к окну SW?

А то, похоже Shvg рисует или в буфере(без последующего переключения) или контент окна

SW неправильно инициализоровал или получил, или неправильно инициализоровал сам OpenGL.

Вот в чем корень... :-)

Да мне и самому не очень понятен этот механизм...

А задача-то простая(для начала) : нарисовал в SW кубик, а потом средствами OpenGL его или

повернул или отобразил в виде каркаса и тд.

Именно в таком порядке: рисуешь как обычно в SW, а потом уже используешь средства OpenGL !

Ссылка на сообщение
Поделиться на других сайтах

Так это же одно и тоже: что "кубик в OpenGL", что кубик в SW?!

Да, но только для деталей солида есть некоторые функции для работы :) Для врещения функции есть в апи, для каркаса тоже

Я так пологаю необходимо совместить оси Солида с Осью OpenGL? Чтобы рисование было в нужных координатах

Я не работал с контекстом окна. Все делал в OnBufferSwap(). Там я вычислял все мне нужные координаты и закидывал их в функцию построения нормали. И у меня все рисовалось. Координаты получал от детали, а также оси.

Ссылка на сообщение
Поделиться на других сайтах

Да, но только для деталей солида есть некоторые функции для работы :) Для врещения функции есть в апи, для каркаса тоже

Я так пологаю необходимо совместить оси Солида с Осью OpenGL? Чтобы рисование было в нужных координатах

Я не работал с контекстом окна. Все делал в OnBufferSwap(). Там я вычислял все мне нужные координаты и закидывал их в функцию построения нормали. И у меня все рисовалось. Координаты получал от детали, а также оси.

Понятно, спасибо!

Надо мне немного еще подумать...

Ссылка на сообщение
Поделиться на других сайтах

Помогите в дереве конструировании через API узнать количество папок и их имена

А каких? Там ведь разные папки Annotation, Body, Surface, Comment и т.д., плюс еще можно свои создавать. Так что вопрос не совсем понятен...
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...