САПР на Lazarus
Модератор: Модераторы
А чем PascalScript плох?
незнаю, я его не смотрел))
zub писал(а):>>Но зачем 3D?
DXF (общепринятый "открытый" стандарт в "легких и средних" CAD программах) подразумевает 3D, если его умышленно резать - получится не полная поддерка. по большому счету 3д-2д разницы не много, уж лучше сразу 3D, всетаки САПР))
DXF программа может поддерживать, но 3D не отображать... ну в принципе действительно без разницы....
zub писал(а):>>Зачем там OpenGL?
По началу OGL использовался плотно. сейчас "главная" opengl`ная функция - выбор объектов мышью реализована "математически", opengl только как рисовалка. можно доработать реализацию примитивов и сделать мультирендер. тут моя большая ошибка - рендер завязан на реализации примитивов, нужно его выносить
Поразмышлял тут на досуге... вроде пишут что лучше юзать OpenGL... ибо тогда включается 2Д аппаратное ускорение...
zub писал(а):Что у вас за система? Тормоза скорее всего изза того что чтото не в порядке с поддержкой OpenGL (например дрова от микрософта под виндой или ATI карта под linux+wine). Вообще ZCAD работает довольно шустро - с автокадом конечно не сравнить, но быстрее многих аналогичных программ.
Не скажу что система шедевр, но все программы стартуют тяжело, но зато шустро летают (проблемы с диском, но 2Ггц Пень 4 и 700 оперативки, встроенное видео) В том числе CS на OpenGL драйверах. Тут наблюдается обратный эффект, быстро стартует, но уже через минуту любое движение мышой грузит проц до 50%... В любом случае что-то там не так.... Утечки памяти вроде нет.... может к диску обращается часто?
zub писал(а):>>Да и кстати, если под GPL то исходники все же надо выкладывать, а то некоторые забывают это делать
По лицензиям я не знаток... GPL заставит открыть исходники вышеописаного плагина?
Не заставит, если распространять отдельно.... Кстати, можно сделать систему активации в плагине если уж на то пошло....
Под плагинами я имел ввиду модули, которые могли бы экспортировать/модифицировать отображаемые данные... например экспорт в базу данных, открытие в отдельном окне спецификации и пр... как это сделать х.з.
Кстати, а какая принципиальная разница сделать тот же GIS плагин? те же линии, те же регионы....
Timid писал(а):Вопрос с плагинами можно решить через внедрение какого-нибудь скриптового движка вроде Lua или PascalScript. Модули при этом можно сделать не бинарными, а подключаемыми.
Timid писал(а):А чем PascalScript плох?
ИМХО Lua более распространен, больше документации и примеров... и у некоторых есть стойкая аллергия к слову pascal, прошу прощения
Alek_Aaz писал(а):Timid писал(а):А чем PascalScript плох?
ИМХО Lua более распространен, больше документации и примеров... и у некоторых есть стойкая аллергия к слову pascal, прошу прощения
Я и сам об этом писал ранее
Но мы же на freePASCAL как-никак. Нужно уважать
Тут наблюдается обратный эффект, быстро стартует, но уже через минуту любое движение мышой грузит проц до 50%... В любом случае что-то там не так.... Утечки памяти вроде нет.... может к диску обращается часто?
Ну если просто после минуты ничего не деланья такое + тормоза, то да, чтото не то. если после команд, то возможны утечки пмяти или GDI, но они не должны быть так критичны. К диску никаких обращений быть не должно, только если через своп.
Вообще, если не запущено никаких команд, движенье мышью проц не должно грузить - по нему только рисование курсора, обновление фона, и поиск объектов под мышью. Если запустить команду (например рисование линии) при большом количестве объектов в кадре (в принципе и не в кадре, точность проверки попадания в кадр принесена в жертву скорости), вполне возможна загрузка CPU 100%, (50 на двухядерном), так как добавляется еще поиск привязок.
Кстати, а какая принципиальная разница сделать тот же GIS плагин? те же линии, те же регионы....
Никакой. Программа позволяет привязывать любую информацию к любым примитивам. Нечто вроде 2gis можно сделать на текущем функционале. чтото посложнее пока не выйдет, нет сплайнов и дуговых сегментов полилиний
Возможно для этого проекта подойдёт та же лицензия что и у RTL/FCL/LCL -- Modified LGPL (with linking exception), т.е. изменения в базовом функционале должны открывать все, а плагины могут писаться закрытыми и линковаться в закрытые бинарные сборки.
т.е. я беру файл лицензии LCL, редактирую и распространяю со своими исходниками, больше ничего не нужно?
Я видел как минимум два способа.
Первый (как в LCL, хорош при различных лицензиях на разные модули):
* Берутся файлы COPYING.LGPL и COPYING.modifiedLGPL из инсталляции Lazarus.
* В COPYING.modifiedLGPL меняются первый и второй абзацы (там, где название программы и к каким файлам применяется лицензия)
* В каждый модуль пишется что-то типа:
Второй (меньше файлов, больше информации в модуле, хорош когда модулей мало):
* Берётся файл COPYING.LGPL
* В каждый модуль пишется что-то типа:
Первый (как в LCL, хорош при различных лицензиях на разные модули):
* Берутся файлы COPYING.LGPL и COPYING.modifiedLGPL из инсталляции Lazarus.
* В COPYING.modifiedLGPL меняются первый и второй абзацы (там, где название программы и к каким файлам применяется лицензия)
* В каждый модуль пишется что-то типа:
Код: Выделить всё
{
*****************************************************************************
* *
* This file is part of the PROGRAM *
* *
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}Второй (меньше файлов, больше информации в модуле, хорош когда модулей мало):
* Берётся файл COPYING.LGPL
* В каждый модуль пишется что-то типа:
Код: Выделить всё
{
PROGRAM
Version X.X 2010-XX-XX
UNIT DESCRIPTION
Copyright (C) 2010 AUTHOR <AUTHOR@DOMAIN.com>
This library is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version with the following modification:
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules,and
to copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the terms
and conditions of the license of that module. An independent module is a
module which is not derived from or based on this library. If you modify
this library, you may extend this exception to your version of the library,
but you are not obligated to do so. If you do not wish to do so, delete this
exception statement from your version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
for more details.
You should have received a copy of the GNU Library General Public License
along with this library; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
}Odyssey
Спасибо. воспользовался первым вариантом.
Программу перенес на LCL, теперь она работает под линуксом. Действительно получилось пишешь один раз, компилируешь везде. думал будет море платформенных {$IFDEF} - нет ниодного
исходники в win кодировке это нормально? или лучше сделать UTF8?
Спасибо. воспользовался первым вариантом.
Программу перенес на LCL, теперь она работает под линуксом. Действительно получилось пишешь один раз, компилируешь везде. думал будет море платформенных {$IFDEF} - нет ниодного
исходники в win кодировке это нормально? или лучше сделать UTF8?
Вот что в итоге получилось:
http://svn.shamangrad.net/zcad/
До LCL было страшненько, после переделки стало вообще ужас(( - постепенно выправлю-закоментирую.
В исходниках в папке electroteh присутствуют 5 файлов которые я не пранирую делать open source, их пока не получается безболезненно выдрать
http://svn.shamangrad.net/zcad/
До LCL было страшненько, после переделки стало вообще ужас(( - постепенно выправлю-закоментирую.
В исходниках в папке electroteh присутствуют 5 файлов которые я не пранирую делать open source, их пока не получается безболезненно выдрать
Хотелось бы произвести небольшой сбор статистики, особенно интересует работа программы на мощьных компах с LINUX и mesaOGL, любых компах с ATI, любых компах с старыми NV (особенно MX серия).
Для желающих, порядок теста:
- стянуь rev 10 по ссылке с предидущего поста
- собрать (соберется только под виджеты WIN, GTK2, возможно CARBON) (бинарник под XP уже присутствует, можно не собирать)
- запустить, загрузить тестовый чертеж - меню DEBUG\загрузить пример ОПС
- открыть вкладку "рендер" в инспекторе объектов
- покрутить колесо мыши чтоб чертеж был виден весь (или двойной middle клик на рабочей области)
- поелозить мышью чертежом с нажатой средней кнопкой
- запостить параметр "время последнего рендера" с вкладки "рендер"
еще один тест на дерганье мышки (для GTK2):
- промасштабировать чертеж чтоб в кадре было мало объектов или - меню DEBUG\загрузить пример ЭМ - это загрузка маленького чертежа
- поелозить мышью чертежом с нажатой средней кнопкой
- отписаться если при движении будут рывки и неравномерности
ЗЫ. исходники очень грязные, просьба пока не пинать))
Для желающих, порядок теста:
- стянуь rev 10 по ссылке с предидущего поста
- собрать (соберется только под виджеты WIN, GTK2, возможно CARBON) (бинарник под XP уже присутствует, можно не собирать)
- запустить, загрузить тестовый чертеж - меню DEBUG\загрузить пример ОПС
- открыть вкладку "рендер" в инспекторе объектов
- покрутить колесо мыши чтоб чертеж был виден весь (или двойной middle клик на рабочей области)
- поелозить мышью чертежом с нажатой средней кнопкой
- запостить параметр "время последнего рендера" с вкладки "рендер"
еще один тест на дерганье мышки (для GTK2):
- промасштабировать чертеж чтоб в кадре было мало объектов или - меню DEBUG\загрузить пример ЭМ - это загрузка маленького чертежа
- поелозить мышью чертежом с нажатой средней кнопкой
- отписаться если при движении будут рывки и неравномерности
ЗЫ. исходники очень грязные, просьба пока не пинать))
со статистикой не вышло. поступлю как росстат - придумаю сам))
Сейчас пытаюсь реализовать UNDO\REDO - жаль не задумался об этом раньше - кучу всего менять.
Собственно вопрос какие есть методы реализации UNDO\REDO?
Пока придумал только - запоминать в стеке адрес объекта, смещение поля, размер поля, старое содержимое поля, новое содержимое поля.
Т.к. полем может оказаться сложная структура данных - уместно ли тут применить generic`и (чтоб компилятор копировал старое\новое содержимое с учетом compiler magic типов, а не просто move)?
Сейчас пытаюсь реализовать UNDO\REDO - жаль не задумался об этом раньше - кучу всего менять.
Собственно вопрос какие есть методы реализации UNDO\REDO?
Пока придумал только - запоминать в стеке адрес объекта, смещение поля, размер поля, старое содержимое поля, новое содержимое поля.
Т.к. полем может оказаться сложная структура данных - уместно ли тут применить generic`и (чтоб компилятор копировал старое\новое содержимое с учетом compiler magic типов, а не просто move)?
Пропустил сообщение от 09.10.2010, а то бы попробовал. Будет время(надеюсь) посмотрю (на АТI) в win, может и в бунте получится. Только не разобрался что качать?(много файлов, мне бы одним архивом)
исходники svn - http://svn.shamangrad.net/zcad/trunk/
бинарник под вин - http://download.shamangrad.net/zcad/cad.7z
исходники архивом - http://download.shamangrad.net/zcad/cad_source.7z
могу выложить еще бинарник lin64, 32 - не умею кроскомпилить
cad_source.7z не включает необходимые рантайм файлы, нужно качать вместе с cad.7z. svn содержит всё что нужно для компиляции и работы.
>>Будет время(надеюсь) посмотрю (на АТI) в win
моя благодарность не будет знать границ... чтоб ее, эту ати.
бинарник под вин - http://download.shamangrad.net/zcad/cad.7z
исходники архивом - http://download.shamangrad.net/zcad/cad_source.7z
могу выложить еще бинарник lin64, 32 - не умею кроскомпилить
cad_source.7z не включает необходимые рантайм файлы, нужно качать вместе с cad.7z. svn содержит всё что нужно для компиляции и работы.
>>Будет время(надеюсь) посмотрю (на АТI) в win
моя благодарность не будет знать границ... чтоб ее, эту ати.
win XP, ATI HD4670
Время последнего рендера ~ 126-127 редко 145.
Вообще на глаз, картинка отстаёт от мыши на 2 см.
Время последнего рендера ~ 126-127 редко 145.
Вообще на глаз, картинка отстаёт от мыши на 2 см.
