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

Помогите разобраться с 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 пользователей

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




  • Сообщения

    • Bot
      JLR and Dassault Systèmes Extend Partnership, Deploying the 3DEXPERIENCE Platform for All Vehicle Programs Worldwide Просмотр полной статьи
    • maxx2000
      Где в ГОСТе предписано делать фаску больше чем высота профиля резьбы?
    • РоманВ
      ГОСТ открыть надо и найти нужный параметр, а внутренний диаметр резьбы я знаю при проектировании. Для захода режущего инструмента достаточно фаски меньшего размера. Так я и спрашиваю - зачем сделана фаска больше, чем это необходимо для захода инструмента чисто геометрически? Какой нюанс о фасках я не знаю? На что реально повлияют лишние 0,5 мм у фаски, если делать ее согласно ГОСТ, а не согласно "я художник, я так вижу"? ГОСТу следовать проще, но слепо следовать я не могу. Я хочу все знать и все понимать - почему и зачем так сделано. Именно это дает основу для проектирования, а не слепое переписывание цифр из ГОСТа.
    • maxx2000
      Слишком до хрена вопросов придётся решить в каждом конкретном случае выполнения фаски, тебе не кажется? Может проще следовать ГОСТу? это не аргумент, это я художник-я так вижу
    • РоманВ
      я понимаю, но я привожу геометрические аргументы, что фаски 1,5 мм за глаза хватает. Сам не раз нарезал и с меньшими фасками, и совсем без фасок. И собирал без фасок. Каких-то проблем не возникало. Напряжения от фаски на 0,5 мм меньше? Откуда такие напряжения возьмутся и на что они повлияют на конце резьбового фитинга?
    • maxx2000
      Зачем? чтобы облегчить нарезание резьбы раз, обеспечить быструю собираемость два, снизить напряжения в детали три. И я не понимаю чего ты кипишуешь. на резьбе М42х2 фаска 2
    • РоманВ
      Есть организации, где подход разумный и осознанный, а есть те, где надрачивают на ГОСТы, даже если в этом нет необходимости. Аргументируют - ну не дураки же ГОСТы писали, зачем-то это надо. При этом не могут объяснить - зачем это надо.
    • maxx2000
      Ты ставишь вопрос не правильно. Откуда взялось требование к фаске 2мм? Потому что так указано в рисунке  в ГОСТ для примера?  ГОСТ10549-80, прямо на первой странице указано обозначение фаски Zx45. Z ,а не 2. как выбирается Z есть правило в ГОСТе? Z это высотка фаски = шаг резьбы Скачать ГОСТ 10549-80 Выход резьбы. Сбеги, недорезы, проточки и фаски (stroyinf.ru)
    • РоманВ
      какая стенка, какая фольга? Ты о чем? Вот ниже пример. Если фаска 2х45 будет 1,5х45, что будет плохого? Для чего такой низкий заход? Диаметр по дну впадин резьбы 39,54. Внутренний диаметр у гайки 39,83. Зачем фаска, начинающаяся с диаметра 38?
    • maxx2000
      а оставшаяся стенка толщиной как фольга выглядит прям эстетично. может не стоит в прутке на 12 резать резьбу М10?
×
×
  • Создать...