Дорисовка изображения с помощью OpenGl в событиях IDocumentFrameNotify

Автор A.n.d.r.e.w, 19.04.25, 13:50:47

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

A.n.d.r.e.w

Наверное допишу, чтобы путаницы не было у тех кто будет вникать.
Мой пример выше будет работать для вида с углом поворота 0. (скопировал из старого тестового примера)
Для повернутого вида будут глюки.

При получении коэффициентов матрицы преобразования пространства
в BeginPaint лучше сразу определять и запоминать смещения, угол и масштаб
  IPaintObject.GetTransformMatrix(a11, a12, a13, a14, a21, a22, a23, a24) ;

  mx:=a14; //смещение по X
  my:=a24; //смещение по Y
  ms:=Sqrt(a11*a11+a21*a21); //или Sqrt(a12*a12+a22*a22)  масштаб изображения
  ma:=ArcCos(a11/ms)/pi*180; //или ArcSin(a12/ms)/pi*180 угол поворота в градусах

перед рисованием устанавливаю матрицу так

 
  glPushMatrix();
  glLoadIdentity();
     
  glTranslatef(mx, my, 0);
  glRotatef(-ma, 0, 0, 1); 
  glScalef(ms*vs, -ms*vs, 1);  //vs - масштаб активного вида

    ... рисую

  glPopMatrix;



если рисуется фантом в неактивном виде, то нужно еще одно преобразование делать
из СК неактивного в СК активного
+ Благодарностей: 1

Student2025

Цитата: Lemieux от 21.04.25, 16:06:06Человек просит совета, ему начинают задавать тупые вопросы клянча код.
Не ну я слышал про шарлатанов которые занимаются экстрасенсом по телеку и могут давать пустые ответы не видя суть вопроса..

Цитата: IgorT от 21.04.25, 16:12:44А можно спросить, как нагрузку на фазах балансируют?
Переключением между фазами.

IgorT

Цитата: Student2025 от 21.04.25, 16:18:55...
Переключением между фазами.
Это получается к однофазному потребителю надо все фазы подвести?

Student2025

Цитата: IgorT от 21.04.25, 16:24:50Это получается к однофазному потребителю надо все фазы подвести?

Да с возможностью программного переключения между ними.

Student2025

#24
Я нашел все производителей подобной автоматики - и мой товарищ на склад себе такой захотел установить и как же он загорелся - это было не что.. Здание частично кирпичное и до этой автоматики было далеко и сам склад не был так забит но горело как бензином облитый..

Я много раз пытался с ними и другими производителями поразговаривать на эту тему почему так и где ошибки - не идут что то на контакт когда дело доходит до конструкционных тонкостей..   А ставил себе владелец склада не дешевую автоматику..

К чему все ведется ? К тому что подходя к вопросу нужно всегда поднимать ВСЕ варианты ее реализации - спустя время одно решение сгорает и не может конкурировать. Даже эти технологии графики..

Вот кто знает что некоторая автоматика меняет свои характеристики с ростом температуры или с типом кабеля или с ее длиной до потребителя ? :|  Шок!

A.n.d.r.e.w

Цитата: p3452 от 21.04.25, 14:29:41"Рисовать" можно чем угодно и на чем угодно...
Но!
Будет ли Компас воспринимать "нарисованное" - своим, т.е. будет ли сохранять в файл и воспроизводить, при последующем открытии!?


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

А еще к этим нарисованным "объектам" не будут работать привязки
и не напечатать их никак..  ну, по крайней мере, пока я не понял как.

Я про фантомы тут веду речь.
Хотя не только для них применяю.

Student2025

Цитата: A.n.d.r.e.w от 21.04.25, 16:38:19Если библиотека отключена, то ничего не будет отображаться.
Вот я и спросил у UU почему Компасу должны быть до фени в их расположении ибо они должны работать что бы воспроизвести графику.

UU

Цитата: Student2025 от 21.04.25, 16:43:46Вот я и спросил у UU почему Компасу должны быть до фени в их расположении ибо они должны работать что бы воспроизвести графику.
Конкретную графику, реализует конкретная библиотека, которой она принадлежит, если она неактивна, она не контролирует свои элементы, можно сделать AddIns библиотеку дополнительную, которая будет управлять графикой, но это - усложнение проекта.

Student2025

Цитата: UU от 21.04.25, 16:53:43Конкретную графику, реализует конкретная библиотека, которой она принадлежит, если она неактивна, она не контролирует свои элементы, можно сделать AddIns библиотеку дополнительную, которая будет управлять графикой, но это - усложнение проекта.

Тут уже проприетарность вступает в свои права..

p3452

Цитата: A.n.d.r.e.w от 21.04.25, 16:38:19При последующем открытии нужно самому все нужное перерисовывать конечно.
Если библиотека отключена, то ничего не будет отображаться.

А еще к этим нарисованным "объектам" не будут работать привязки
и не напечатать их никак..  ну, по крайней мере, пока я не понял как.

Я про фантомы тут веду речь.
Хотя не только для них применяю.

- Что и требовалось доказать!!!

p/s: Правильно ли понимаем?:
1. Бо-о-о-льшой "Фантом" отрисовывается "чужими" средствами - ОpenGL...
2. После "указания точки вставки, "фантом" - реалится и перерисовывается уже средствами Компас"...
3. Из п.п. 1,2 вытекает, что есть еще, как минимум, третий элемент - класс данных, который используется и для "фантома" и для "реала".
Так?
 

A.n.d.r.e.w

#30
Цитата: p3452 от 21.04.25, 19:20:27- Что и требовалось доказать!!!

p/s: Правильно ли понимаем?:
1. Бо-о-о-льшой "Фантом" отрисовывается "чужими" средствами - ОpenGL...
2. После "указания точки вставки, "фантом" - реалится и перерисовывается уже средствами Компас"...
3. Из п.п. 1,2 вытекает, что есть еще, как минимум, третий элемент - класс данных, который используется и для "фантома" и для "реала".
Так?
 

Всё верно.
Фантом нужен вам только в процессе редактирования реального постоянного объекта.
Он нужен для того чтобы показать пользователю как изменится редактируемый объект
при изменении его отдельных параметров.
В начале процесса редактирования вы делаете копию параметров редактируемого объекта
(ну или если это создается новый объект то берете дефолтные параметры).
Используя эту копию вы строите фантом и все манипуляции производите с этой копией параметров.
перерисовывая при каждом изменении фантом. Постоянный объект же остается неизменным.
И только тогда когда пользователь подтверждает изменения, вы устанавливаете параметры постоянного.
Ведь пользователь может прервать процесс редактирования, и тогда всё останется как было.
Где вы будете хранить эти параметры - ваше дело.  Если это библиотечный макро то в нем.

Использование opengl для отрисовки фантома выгодна не столько для БОЛЬШИХ фантомов
сколько для БОЛЬШИХ документов (в которых много всего уже начерчено) . Для того чтобы
отобразить "стандартный" фантом вам надо перерисовать весь документ.
А при перерисовке с помощью GL вы перерисовываете только свой фантом. Основное изображение
Компас просто копирует каждый раз из памяти как плоскую текстуру как кальку в тех случаях когда
изображение в окне статично а мы просто двигаем мышкой, тогда когда нужно быстро и часто
перерисовывать фантом но не весь чертеж.

Lemieux

Цитата: A.n.d.r.e.w от 22.04.25, 08:41:05Использование opengl для отрисовки фантома выгодна не столько для БОЛЬШИХ фантомов
сколько для БОЛЬШИХ документов (в которых много всего уже начерчено) . Для того чтобы
отобразить "стандартный" фантом вам надо перерисовать весь документ.
А при перерисовке с помощью GL вы перерисовываете только свой фантом. Основное изображение
Компас просто копирует каждый раз из памяти как плоскую текстуру как кальку в тех случаях когда
изображение в окне статично а мы просто двигаем мышкой, тогда когда нужно быстро и часто
перерисовывать фантом но не весь чертеж.
Самое печальное, что разработчики АСКОН это не сделали.

A.n.d.r.e.w

Цитата: Lemieux от 22.04.25, 09:54:23Самое печальное, что разработчики АСКОН это не сделали.

Дааа. Много чего есть странного.
Вот например как работают привязки в 2D.
Попробуйте открыть БОЛЬШООООЙ чертеж.
И попробуйте начать там создавать обычный отрезок.
В зависимости от того насколько мощный у вас компьютер
вы сможете наблюдать фризы при перерисовке этого
несчастного фантома.
А теперь зуммируйте чертеж так чтобы на экране осталось пустое место
вообще без объектов чертежа. Снова отрезок - фризы остались.
А теперь отключите привязки. Опа - летает всё.
 
Не смею заявлять что у всех так но на моем компе и в моей версии КГ так.
Я делаю один вывод, что компас просто в цикле перебирает все объекты
и проверяет можно ли к чему-нибудь привязаться.
(тот смайл который закрывает ладонью глаза).

IgorT

Цитата: A.n.d.r.e.w от 22.04.25, 10:12:20...
 
Не смею заявлять что у всех так но на моем компе и в моей версии КГ так.
Я делаю один вывод, что компас просто в цикле перебирает все объекты
и проверяет можно ли к чему-нибудь привязаться.
(тот смайл который закрывает ладонью глаза).
Проверил на своём К21.
Заявленной особенности не наблюдаю.

Lemieux

Цитата: IgorT от 22.04.25, 10:31:17Проверил на своём К21.
Заявленной особенности не наблюдаю.
Большой чертёж открыли? Где много листов? А ещё лучше где много макроэлементов.

Lemieux

Цитата: A.n.d.r.e.w от 22.04.25, 10:12:20Я делаю один вывод, что компас просто в цикле перебирает все объекты
и проверяет можно ли к чему-нибудь привязаться.
Как Вы предлагаете определять ближайшую точку?
И тут скорее не КОМПАС проверяет, а солвер ограничений, а вот КОМПАС дёргает API ядра. А вот как КОМПАС дёргает API ядра это уже другой вопрос.

IgorT

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

Чертеж с модели, два листа А2х3. Всего 416182 примитива на чертеже. Макро нет.

Заметил (раньше на W7 не было такой возможности), что при перестроении в начале процесса неслабо грузится сеть. После того как нагрузка на сеть пропадает грузится ЦП.  До 100%%.

IgorT

Цитата: Student2025 от 21.04.25, 16:27:43Да с возможностью программного переключения между ними.
Интересно... А что, нейтраль ( в простонародии "ноль") уже отменили? Он свои функции перестал выполнять?

Lemieux

Цитата: IgorT от 22.04.25, 10:53:51Чертеж с модели, два листа А2х3. Всего 416182 примитива на чертеже
А сколько весит файл? Просто у нас есть Э7, которое весит 100 мб, там всё лагает.

IgorT

Весит 122 619 КБ. Пришлось сейчас перестроить... ~30 минут заняло.