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

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

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




  • Сообщения

    • Snake 60
      @БестолковыйСтранная деталь, реально свойства не работают. Могу предположить, что деталь создана по "кривому" шаблону, т.к. сделал деталь по тем же операциям на своем шаблоне  - все свойства работают. Как исправить такое ХЗ.
    • AlexKaz
      Ну не знаю. Задаю 10 шагов в статике. Создал нагрузку, силу. В таблице нагрузки вбиваю время 0.5 - автоматически добавляется строка с t=0.5 и можно вбивать значения нагрузки по XYZ. Ещё можно перейти в Analysis Setting в дереве, задать количество шагов. Снизу в рабочем окне появится таблица шагов. Выбрать любое требуемое время на ней, ПКМ - insert step. Затем в таблице нагрузки задать нужные значения по XYZ для внесённого шага. В общем, в WB можно не использовать apdl.
    • Turgenev
      Ребят, в принципе вы были правы. Я уже хотел написать, что конечно же у меня разные названия степ(!) моделей. Проблема с одинаковыми именами в сборке гуглится первой. Но посмотрев внимательно на дерево импортируемой степ модели я увидел что у нее внутри есть элемент board и это имя одинаковое для всех плат. Добавил при экспорте из Altium суффикс (разный для разных плат) и проблема ушла. Спасибо.
    • Flint_ru
      Стою на асфальте я в лыжи обутый..... Если а задаю таблицу  и независимая переменная - координата - таблица одна для всех шагов. Если выбираю шаг (Time) 2 и меняю значения в таблице - эта же таблица и на шаге 1. А если в качестве независимой переменной выбирать время - тогда для всех координат одинаковая нагрузка. В этом то и проблема. В статьях, что выше я вложил, как раз и описывают эту проблему. Ну а для себя я уже сделал вывод - правильно и быстрее - использовать командную вставку apdl . Пример кода я привел. В этом случае нагрузка фактически задается своей таблицей для каждого шага.
    • Alexandr97
      Написал. Как мне кажется, это прям серьезный недочет.
    • Ahito
      Уточню более подробно проблему со скриншотами, спасибо за ответ!
    • EvilBear
      Друзья, всем привет. Столкнулся с тем, что исчез помощник расстановки размеров в эскизе или чертеже. Не могу найти как его вернуть.   P.S. Настройку нашел, только не работает. Видимо глюк.
    • Бестолковый
      Вот деталь и чертёж (SW 2022). Заранее благодарен!   Лист 40х40х8.SLDPRT Лист 40х40х8.SLDDRW
    • Александр1979
      https://m.youtube.com/watch?v=ONhlBaBmPcw  
    • gudstartup
      @gudi для вашей системы родное серво по  это 90G0 22 а у вас сейчас записано 90K0 05 естественно никакой совместимости нет. но и ваше новое по от 35i скорее всего будет несовместимо с версией серво 90g0 но можете попробовать записать если система позволит.
×
×
  • Создать...