Страница 53 из 57
Re: САПР на Lazarus
Добавлено: 30.07.2020 20:49:09
скалогрыз
zub писал(а):Довольно странный выбор формата, если не секрет почему? станок?
бинарик мне нужен только для полноты картины мира.
станок требует от меня только создать .dxf, а значит я бы мог без труда обойтись штатными writeln() в текством формате и забить.
Но чтобы толком с форматом разобраться, нужно понимать структуру, а значит уметь читать.
Поискав по github-у и sourceforge-у реализации на паскале, я нашёл только указанные выше. c libgfx связываться не хотелось (религия запрещает)
репа здесь.
нет возражений, если я floor-plan добавлю в примеры dxf файлов? (их в репе пока нет, но обязательно появятся)
Re: САПР на Lazarus
Добавлено: 30.07.2020 21:17:17
zub
историю файла не помню,скорее всего шел с чемто опенсорсным в качестве примера. поэтому лучше не надо. Дайте ссылку на интересующий текстовый dxf я сконвертю его в бинарный
Re: САПР на Lazarus
Добавлено: 31.07.2020 06:29:55
скалогрыз
zub писал(а):Дайте ссылку на интересующий текстовый dxf я сконвертю его в бинарный
с zcad-ом идут примеры файлов.
два из них, например:
environment\runtimefiles\common\sample\entities.dxf
environment\runtimefiles\common\sample\zigzag.dxf
пожалуйста!
Re: САПР на Lazarus
Добавлено: 31.07.2020 09:05:55
zub
Sharfik
Имхо до уровня простейшей рисовалки осталось не так много, но с другой стороны и времени свободного все меньше и меньше, последние пару лет зкад в этом направлении не двигается((
скалогрыз
Эти можете включать куда угодно. Обратите внимание - у примитивов в расширенных данных присутствуют следы зкада.
Пара замечаний из опыта:
Лучше сразу закладывать версионирование, dxfы различабтся по версиям автокада, самая большая разница 12<->2000 дальше меньше, но есть
Записать чисто програмно валидный dxf>=2000 нереально имхо, т.к. формат хорошо докумен только для чтения, лучше использовать пустой шаблон в который вписывать свои данные
Для проверок обязательно надо обзавестись автокадом. Клоны читают любую галематью не морщясь, автокад по любому чиху ругается и отказывается читать файл. Без проверок на автокаде, глядя только в спецификацию формата валидный файл (с точки зрения автокада, формат всетаки автодесковский) не записать
Re: САПР на Lazarus
Добавлено: 31.07.2020 15:39:05
Sharfik
zub, шкурный вопрос. А где почитать как арки по прописываемым в файле значениям строить?
Re: САПР на Lazarus
Добавлено: 31.07.2020 15:44:57
zub
имеется ввиду просто дуги или дуговые сегменты в полилиниях? у первых там центр, радиус и углы, у вторых точки вершин и так называемый "bulge"
Re: САПР на Lazarus
Добавлено: 31.07.2020 16:07:31
Sharfik
zub писал(а):имеется ввиду просто дуги или дуговые сегменты в полилиниях? у первых там центр, радиус и углы, у вторых точки вершин и так называемый "bulge"
Дуги просто. Я не очень понял про углы указываемые там.
Re: САПР на Lazarus
Добавлено: 31.07.2020 18:20:05
скалогрыз
zub писал(а):Для проверок обязательно надо обзавестись автокадом.
согласен.
я хотел скачать Trial, но там, внезапно, потребовалась регистрация... и забил.
Re: САПР на Lazarus
Добавлено: 31.07.2020 18:28:41
Sharfik
скалогрыз писал(а):zub писал(а):Для проверок обязательно надо обзавестись автокадом.
согласен.
я хотел скачать Trial, но там, внезапно, потребовалась регистрация... и забил.
DWG TrueView. Только не помню показывает ли он ошибки с номерами строк как autocad.
Re: САПР на Lazarus
Добавлено: 31.07.2020 22:00:09
zub
>>Дуги просто. Я не очень понял про углы указываемые там.
от центра дуги рисуем вектор длиной R в направлении (1,0) поворачиваем его на стартовый угол - это начало дуги. потом поворачиваем его до конечного угла, при этом вычерчивая дугу. Хз где читать про это, вроде все просто.
В случае 3Д автокад использует общий для всех "плоских" примитивов повернутых в 3Д Arbitrary Axis Algorithm
http://docs.autodesk.com/ACD/2011/ENU/f ... 9-793d.htm - на основе вектора нормали расчитывается плоскость примитива
Re: САПР на Lazarus
Добавлено: 31.07.2020 22:11:45
Pavia
Re: САПР на Lazarus
Добавлено: 05.08.2020 18:39:13
Sharfik
zub писал(а):>>Дуги просто. Я не очень понял про углы указываемые там.
от центра дуги рисуем вектор длиной R в направлении (1,0) поворачиваем его на стартовый угол - это начало дуги. потом поворачиваем его до конечного угла, при этом вычерчивая дугу. Хз где читать про это, вроде все просто.
В случае 3Д автокад использует общий для всех "плоских" примитивов повернутых в 3Д Arbitrary Axis Algorithm
http://docs.autodesk.com/ACD/2011/ENU/f ... 9-793d.htm - на основе вектора нормали расчитывается плоскость примитива
понял что просто, но по тексту нарисовать картинку в голове не смог
Re: САПР на Lazarus
Добавлено: 15.11.2020 14:37:01
MiniQ
Попробовал собрать simplecad для linux raspberrypi4.
при запуске падает с ошибкой EBusError
Код: Выделить всё
{D-}end;{TOGLWnd.InitOGL}
[FORMS.PP] ExceptionOccurred
Sender=EBusError
Exception=Bus error or misaligned data access
Stack trace:
$00426A3C TGENERALVIEWAREA__CALCOPTIMALMATRIX, line 2488 of /home/user/Projects/Test/ZCAD/zcad-master/cad_source/zengine/zgl/drawers/uzglviewareageneral.pas
$0043233C TOPENGLVIEWAREA__WARESIZE, line 277 of /home/user/Projects/Test/ZCAD/zcad-master/cad_source/zengine/zgl/drawers/uzglviewareaogl.pas
$0016E344 TCONTROL__DOONRESIZE, line 1323 of ./include/control.inc
$00174460 TCONTROL__RESIZE, line 3777 of ./include/control.inc
$00172374 CALLALLONRESIZE, line 3059 of ./include/control.inc
$00172350 CALLALLONRESIZE, line 3053 of ./include/control.inc
$00172350 CALLALLONRESIZE, line 3053 of ./include/control.inc
$001721D0 TCONTROL__DOALLAUTOSIZE, line 3084 of ./include/control.inc
$0015EA90 TWINCONTROL__DOALLAUTOSIZE, line 3546 of ./include/wincontrol.inc
$00179EA0 TCONTROL__ENABLEAUTOSIZING, line 5762 of ./include/control.inc
$0017681C TCONTROL__SETVISIBLE, line 4561 of ./include/control.inc
$00062718 TCUSTOMFORM__SETVISIBLE, line 417 of ./include/customform.inc
$00067A80 TCUSTOMFORM__SHOW, line 2313 of ./include/customform.inc
$00071B8C TAPPLICATION__RUN, line 1316 of ./include/application.inc
$000286FC main, line 23 of project1.lpr
Где, что подправить в консерватории?
Re: САПР на Lazarus
Добавлено: 15.11.2020 16:08:35
zub
хм. проверить мне неначем. Попробуй стереть область выводо opengl и все с ней связанное, оставив только гди.
примеры opengl из поставки лазаря работают?
Re: САПР на Lazarus
Добавлено: 16.11.2020 04:34:17
Cheb
Касательно малины, лично нарывался на такую бяку: Паскаль использует какие-то хаки, чтобы сделать возможным обращение к невыровненным данным (что, вообще-то, на этой платформе - ересь). Но как только грузишь и инициализируешь GLES - она делает
что-то, от чего эти хаки слетают нафик и твоя программа бомбит на первом же невыровненном на 32 бита обращении к памяти после инициализации ГЛя.
Я у себя в движке поправил уродливым костылём: все packed в объявлениях записей завернул в кондишнл "если не арм".
З.Ы. помойму это к флоатам конкретно относилось, не помню уже.
З.З.Ы.
Код: Выделить всё
{$macro on}
{$ifdef FPC_REQUIRES_PROPER_ALIGNMENT}
// arm on Raspberry Pi
{$define maybepacked:=}
{$ifdef cpu32}
{$packrecords 4}
{$endif}
{$else}
{$define maybepacked:=packed}
{$endif}
[...]
type Ta = maybepacked record [...]