САПР на Lazarus

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: САПР на Lazarus

Сообщение zub » 01.11.2017 15:18:07

>>И поиск клика идет софтово через этот Array[GL_line]?
когда ты имеешь предварительно отобраный десяток примитивов на которых возможно произошел клик - в принципе без разницы как искать виновного. если ты проверяешь все 100К примитивов - то конечно да надо экономить на мелочах. А после оптимизаций высокого уровня на чтото можно временно забить.
Я понял к чему ты клонишь, в случае окружности пока выбор вы-клик идет на уровне dxf, c учетом особенностей окружности и максимально быстро. то что ты имеешь ввиду будет тут https://svn.shamangrad.ru/zcad/trunk/ca ... e/geomlib/ но пока этого нет((
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 01.11.2017 15:19:28

Код: Выделить всё
procedure GDBObjDevice.DeSelect;
begin
     inherited deselect(SelectedObjCount,ds2s);
     VarObjArray.DeSelect(SelectedObjCount,ds2s);
     //lstonmouse:=nil;
end;

procedure GDBObjDevice.ImEdited;
//var t:gdbinteger;
begin
     inherited imedited (pobj,pobjinarray,drawing);
     //bp.owner^.ImEdited(@self,bp.PSelfInOwnerArray);
     YouChanged(drawing);
     //ObjCasheArray.addnodouble(@pobj);
end;

function GDBObjDevice.onmouse;
..
p:=VarObjArray.beginiterate(ir);


хотелось понять всю философию VarObjArray.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 01.11.2017 15:22:57

это совсем из другой оперы

Добавлено спустя 32 секунды:
что такое примитив вставка блока в автокаде знаешь?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 01.11.2017 15:25:07

Т.е.:
читаем dxf ->
данные парсим ->
данные переводим в lines и складываем в VarObjArray ->
---- работаем с VarObjArray ----
..
данные выгружаем в dxf-файл.

Добавлено спустя 1 минуту 23 секунды:
типа так?

zub писал(а):что такое примитив вставка блока в автокаде знаешь?

Мне ближе Inscape/Corel/Photoshop.
мне ближе группировки.
Поэтому я даже не знаю с чем вы работаете.
Последний раз редактировалось olegy123 01.11.2017 15:27:58, всего редактировалось 1 раз.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 01.11.2017 15:26:55

GDBObjDevice - пока не переведен на примитивы "нижнего уровня" и работает сам по себе.

>>Т.е.:
нет!
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 01.11.2017 15:54:13

Код: Выделить всё
ZGLGeomData={$IFNDEF DELPHI}packed{$ENDIF}object(GDBaseObject)
                                                Vertex3S:ZGLVertex3Sarray;
                                                Indexes:ZGLIndexsArray;
..
Код: Выделить всё

ZGLVertex3Sarray={$IFNDEF DELPHI}packed{$ENDIF} object(GZVectorData{-}<GDBvertex3S>{//})(*OpenArrayOfData=GDBvertex3S*)
                constructor init({$IFDEF DEBUGBUILD}ErrGuid:pansichar;{$ENDIF}m:GDBInteger);
                constructor initnul;
                function AddGDBVertex(const v:GDBvertex):TArrayIndex;virtual;
                function GetLength(const i:TArrayIndex):GDBFloat;virtual;
             end;

Код: Выделить всё
ZGLVectorObject={$IFNDEF DELPHI}packed{$ENDIF} object(GDBaseObject)
                                 LLprimitives:TLLPrimitivesArray;
                                 GeomData:ZGLGeomData;


Добавлено спустя 33 секунды:
распутываю клубок..

Добавлено спустя 10 минут 25 секунд:
на сколько я понял есть примитивы(LLprimitives) , векторные объекты (ZGLVectorObject) их геом-даные (ZGLGeomData)

LLprimitives
----> ZGLVectorObject
----------------> ZGLGeomData
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 02.11.2017 02:33:58

>>распутываю клубок..
может поможет дерево классов\объектов из yed:
https://sourceforge.net/projects/zcad/f ... l/download
красные - dxf примитивы
желтые - низкоуровневые примитивы
зеленые - классы драверов и областей отображения гди, гл, канвас

>>ZGLVectorObject
в 2х словах как я это думаю устроить:
все dxf примитивы наследники
Код: Выделить всё
GDBObjEntity=object(GDBObjSubordinated)
  ...
  Representation:TZEntityRepresentation;//тут сидит низкоуровневое представление "сложного" dxf примитива
  ...
end;

не все примитивы пока к сожалению работают через Representation, некоторые сами себя рисуют, выделяют... этих умников нужно отуплять...
например примитив уже чуток отуплен:
Код: Выделить всё
procedure GDBObjLine.FormatEntity(var drawing:TDrawingDef;var DC:TDrawContext);
begin
  calcgeometry;//чето считаем
  calcbb(dc);//еще чето считаем

  Representation.Clear;//чистим то что было раньше в представлении
  Representation.DrawLineWithLT(dc,CoordInWCS.lBegin,CoordInWCS.lEnd,vp);//говорим что я всеголишь линия, с такимито координатами и стилями
end;

дальше движек уже работает с этим Representation - отрисовывает, выделяет...
Код: Выделить всё
TZEntityRepresentation=object(GDBaseObject)
  ...
  Graphix:ZGLGraphix;//графическое представление элементарными графическими примитивами, более-менее проработано
  Geometry:TGeomEntTreeNode;//геометрическое представление элементарными геометрическими примитивами, тут еще конь не валялся - по нему будет выделяться мышкой и искаться пересечения
  ...
end;
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 03.11.2017 14:04:43

Мне нужно разобраться в классах и в зависимостях. Вообще нужно вникнуть в идею.
Сейчас есть описание классов. Их зависимости?
И еще нужна логика программы. Какие цели ставятся. Что достигнуто, а что в планах.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 03.11.2017 22:19:17

>>Их зависимости?
поясни?

>>И еще нужна логика программы. Какие цели ставятся. Что достигнуто, а что в планах.
логика... есть движек, есть гуй, есть команды.
движек - сложно, местами нелогично - без меня там ловить нечего.
dxf примитивы - куча лишнего что надо опускать на уровень движка
гуй - строится в рантайме, формы панельки... как у всех наверно. можно легко дописать чтото свое
команды - процедуры те что вызываются при кликах на кнопки и при вводе их имен в комстроку - "мясо" зкада
Что конкретно тебя интересует?

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

>>Что достигнуто, а что в планах.
Достигнуто - быстрее и экономичнее свободных конкурентов.
Достигнуто - например когдато давно чтото продумал и написал какойто метод\процедуру с необходимым набором параметров... спустя большое кол-во времени понадобилось чтото еще... было некогда, и я недумая добавил необходимые параметры в этод метод\процедуру и во всё цепочку вызовов ниже...
Достигнуто - тонны говнокода без коментов
В планах - сапр: централизация свойств устройств, движек: развитие примитивов "низкого" уровня, реализация "геометрических" примитивов низкого уровня
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение Cheb » 05.11.2017 19:44:04

Автором этого сообщения является olegy123, находящийся в вашем чёрном списке. Показать это сообщение.
[...]
Автором этого сообщения является olegy123, находящийся в вашем чёрном списке. Показать это сообщение.


Лекс Айрин, zub - ну хватит уже кормить. За километр тролля видно, по одним вашим ответам. Вы с ним как с вменяемым человеком разговариваете, а он только отъедается и новые вбросы делает. Не тратьте своё время и форумное пространство, не ведите себя как котёнок, гоняющийся за бумажкой на ниточке.
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Re: САПР на Lazarus

Сообщение olegy123 » 06.11.2017 23:36:52

zub писал(а):>>Их зависимости?
поясни?

Есть же схема классов, желательно с описанием зачем они нужны. Хотябы чтобы можно сориентироваться и не заблудится. Не разгадывать логику программиста который писал. То есть логика должна иметь описательную часть.

Меня интересует механика отображения, как в OpenGL уходят данные, откуда берутся и что нужно оптимизировать.
Cad-овский подход он может быть своеобразный. Сильно отличен например от дизайнерских программ.

Добавлено спустя 5 минут 39 секунд:
zub писал(а):движек - сложно, местами нелогично - без меня там ловить нечего.

Как раз это нужно описать.
zub писал(а):команды - процедуры те что вызываются при кликах на кнопки и при вводе их имен в комстроку - "мясо" зкада

тем более все подвязано к скрипам. На сколько я понял - там вообще оболочка, где есть свой язык и все строится на основе. Как на подобии 1Ски.

Добавлено спустя 54 минуты 30 секунд:
Все таки вижу, что нужно заново переписать проект. То есть форкнуть. Нет, конечно пусть ZCad 1.0 живет своей жизнью и даже развивается.
А все лучшее перенести в ZCad 2.0.

Какой может быть ZCad 2.0?
Я думаю что он должен быть модульным. Не обязательно чтобы только один человек на планете земля, понимал структуру этой программы. К коду могли быть доступны все кто желает поучаствовать.
Отсюда проще разбить на модули и писать код с описанием. Использовать например Doxygen(система документирования исходных текстов).
Зачем нужен модульный подход - сам проект может поделен на части, над частями могут работать разные люди. А не один единственный человек. Тем самым, можно назначать ответственных за дальнейшее развитие модулей. При этом некоторые модули могут быть "недоделанными" или "устаревшими", требующее исключить или добавить участки кода, оптимизировать - но на весь проект не оказывает существенное зависимость. Это части.
Какие могут быть модули:
1) числа. Если необходимо работать "с произвольной точностью" числами, допустим нужно подключить библиотеку GMP - то весь проект переходит на эти числа.
2) математика. Если подключен числа gmp - то используется определенные функции.
3) это сам CAD - примитивы, группы, классы специфичны для CAD.
...
7) визуализация OpenGL/DirectX..
8) печать.
9) форматы упаковки. конвертация

- на самом деле ZCad уже многими этим обладает. Но он не "дружественный".
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 07.11.2017 01:36:20

Всё что ты перечислил присутствует.
Можно рассуждать о зкад 2.0 сколько угодно - всеравно его делать некому, а можно начать чтото делать в зкад 0.9, чтоб он стал 1.0... и т.д.
Да не дружественный - я его делал один и кучу раз переписывал и экспериментировал - коментарии мне только мешали)))

>>7) визуализация OpenGL/DirectX..
Пожалуйста, ты можешь начать делать визуализацю на основе DirectX. Думаю это не трудно, и нехило добавит понимание в потрохах зкада.
Глядишь на зеленую часть дерева классов и делаешь аналоги TOpenGLViewArea и TZGLOpenGLDrawer взяв за основу DX
TOpenGLViewArea - область отображения - в данном случае контрол с контекстом OGL
TZGLOpenGLDrawer - набор методов рисования на контексте (линии, треугольники...)
Если хочешь что то сделать конкретное - я продокументирую всё что нужно. А разговоры про продокументировать всё - мимо - объем большой
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 07.11.2017 02:19:46

zub писал(а):Можно рассуждать о зкад 2.0 сколько угодно - всеравно его делать некому,

Ну есть же интерес со стороны инженеров, со стороны отросли. Тут важно нарастить массу при которой начнут уважать.
Я нахожусь на стороне 2D/3D графики и дизайна. В дизайне большой движ делают рекламщики и кинематография, есть сильные продукты даже в среде OpenSource - тот же Blender.
в Cad программах активно движение видно в 3D печати. Друг фрезеровкой занимается. Но с бесплатными программами тут все плохо. Они есть, но они недоделанные..

На сколько я понял, все cad программы - они оперируют только с числами double. С большими они не работают. Не работает ZCad.
Так может стоит внедрить математику больших цифр. Этим будет отличатся от всех ZCad - работа с большим диапазоном. Возможность работы как от миллиметров до геоданных.

Я посмотрел код ZCad - многого не понял. А бывает так - смотришь на код, а он как вязаная одежда - берешь за нитку и тянешь.. и все распутывается. Если легко идет - значит правильно написан.
Если же идет туго, или вообще все замотано с узелками - то скорее запутан не код, а сама задача. Схема до конца не проработана, не идеальна.
Максимум что смогу, это оптимизировать только участки кода, но их нужно понимать.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: САПР на Lazarus

Сообщение zub » 07.11.2017 04:52:42

>>Максимум что смогу, это оптимизировать только участки кода, но их нужно понимать.
Сомневаюсь что стоит что-то оптимизировать. Что ты понимаешь под оптимизацией?
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение olegy123 » 07.11.2017 10:11:27

zub писал(а):Сомневаюсь что стоит что-то оптимизировать. Что ты понимаешь под оптимизацией?

Я занимаюсь программами мультимедиа, у меня написан 2D/3D двигатель(engine). Мультипоточный, где каждый объект может обладать своей независимой логикой.
Сделана анимация, на подходе физика, работа с частицами. Прикреплен Lua скрипт, сейчас разрабатываю свой скрипт на основе Jit компиляции.
Все это спокойно работает как на PC так и на Arm-ах.
Без оптимизации - там путь заказан.
Мне нужен свой редактор, в перспективе полный 2D/3D редактор. Чтобы не заново не писать - хотелось бы взять чужой и адаптировать.

Но сейчас понимаю что ZCad он узконаписан под определенную задачу. Он растет от одной задачи.
Это не отдельный редактор и работа с cad данными, это редактор одних данных, логика пока не понятна. И написал как многие 99% без полного описания своего продукта, что сильно усложняет изучение.

Я пока не понимаю как ZCad может отражать полноценную 2D/3D графику, текстурные объекты, нужна еще анимация и физика.
ZCad мог бы делать твердотельное моделирование. Это не слова.

Просто вы первые кто из opensource довели ZCad до состояния рисования всего зданий. Смогли же. И не сложно было. Другие же "устали" или это хобби.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

Рейтинг@Mail.ru