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

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

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




  • Сообщения

    • Александр1979
      Не должно быть там разъёмов энкодеров, они к плате управления осями подключаются.
    • Chuvak
      У Вас на примере чертежа неверно задан допуск у резьбы. 7H - это поле допуска для внутренней резьбы, а на фото наружная. Правильнее - 6g или 7g
    • felena
      Обязательно ли контур выносного элемента должен быть одинаковый на родительском виде и на самом выносном элементе? Программно в солиде можно сделать контур круглым на родительском виде (стиль стандарт), а на самом выносном элементе нужным контуром.
    • RokiSIA
      У вас короткое где то в проводке никакой предохранитель гореть не будет просто блок питания уходит в защиту и все или блок питания не тянет, нагрузите его отдельно максимально возможно резистором или лампочками и померяйте напряжение не просядет ли.
    • clavr
      Проблема: сборка долго перестаивается, если используешь: 1. в сборку вставляешь элементы сборки-отверстия под крепеж. делаю отверстия и ставлю галочку распространять в деталях. перестроение может занимать до нескольких минут если, деталей много (много это 10-20). может и на 5 деталях до минуты считать. 2. если в сборке использую вырез. кидаю окружность и раскидываю их много (отверстия под крепеж). ставлю галочку распространять  в деталях. и такая же песня как и в первом случае, только чуть быстрее, но все равно долго переасчитывает. кто как с этим борется? задача - делать отверстия в деталях под крепеж
    • Madmax70
      и кз скорее всего на выходе блока питания  который запитывает стойку, но на самой стойке же есть предохранитель по цепи питания, и он тогда дожен сгореть, но после "кз" все впорядке. не исключаю просадку напряжения  на самом блоке питания который питает стойку.
    • Radon
      В целом вы не правы, диаграмма Кэмпбелла не цель а инструмент, а целей у неё 2 1. Динамика ротора 2. Отстройка элементов роторных систем от частот   По 1 пункту важны колебания самого ротора, гироскопические моменты, силы Кориолиса. При том если вал жёсткий т.е. первая частота собственных колебаний больше максимальной частоты вращения, она в целом и не нужна вообще. Цель - подобрать упруго-демпферные опоры для максимального разнесения критических скоростей и рабочих скоростей вращения. При этом в геометрии стараются максимально избавиться от всякой мелочёвки, типа лопаток ибо они не влияют на динамику ротора но добавляют кучу паразитных частот. Более того существуют спец пакеты направленные только на расчёт динамики ротора, в основном по балочной теории (типа Dynamics R4). См. 3 рисунок. При этом линий гармоник не добавляют а частоты расслаиваются на прямую и обратную прецессии (FW и BW), обратная, кстати, считается не опасной. Преднапряжённое состояние никак не сказывается на частотах и оно не нужно.   По 2 пункту проводится отстройка элементов ротора от резонанса, тут уже считают престресс-модал и, соответственно частоты не расслаиваются (см 1 рисунок), при этом накладывают линии гармоник. В случае если гироскорический момент влияет на расчёт (типа диска, рис.2) частоты всё же могут расслаиваться. Цель - отстроить элементы конструкции от резонанса. При этом диаграмма может строиться и для статорных деталей, естественно для них престресс не нужен.   Вообще это неплохо расписано в книгах по конструкции ВРД, типа Холщевникова, Иноземцева, естественно с минимумом математики, т.к. для инженеров.    
    • RokiSIA
      Тогда точно где то плавающее КЗ, смотрите гусеницы, кабель каналы, педали, блок питания, все что связано с 24вольтами. Ошибок естественно не будет.
    • fenics555
      А причем тут КАД и КРЕО и вообще модель?  Как делаете УП? Если через импорт чертежа крео, то там и надо смотреть настройки.
    • Madmax70
      лампа подсветки отдельно не тухнет, а выключается стойка, программа обработки останавливается, если бы экран  выключался, то программа обработки бы продолжила работу, есть параметр который отвечает за отключение подсветки экрана. после самопроизвольного отключения запускаем программу и дальше работаем. при этом ошибок никаких нет. вчера  в режиме прогрева гоняли станок и сегодня тоже, никаких перезагрузок не было все в норме.
×
×
  • Создать...