САПР на Lazarus

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

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

Re: САПР на Lazarus

Сообщение скалогрыз » 30.07.2020 21:49:09

zub писал(а):Довольно странный выбор формата, если не секрет почему? станок?

бинарик мне нужен только для полноты картины мира.
станок требует от меня только создать .dxf, а значит я бы мог без труда обойтись штатными writeln() в текством формате и забить.

Но чтобы толком с форматом разобраться, нужно понимать структуру, а значит уметь читать.
Поискав по github-у и sourceforge-у реализации на паскале, я нашёл только указанные выше. c libgfx связываться не хотелось (религия запрещает)

репа здесь.

нет возражений, если я floor-plan добавлю в примеры dxf файлов? (их в репе пока нет, но обязательно появятся)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: САПР на Lazarus

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

историю файла не помню,скорее всего шел с чемто опенсорсным в качестве примера. поэтому лучше не надо. Дайте ссылку на интересующий текстовый dxf я сконвертю его в бинарный
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение скалогрыз » 31.07.2020 07:29:55

zub писал(а):Дайте ссылку на интересующий текстовый dxf я сконвертю его в бинарный

с zcad-ом идут примеры файлов.
два из них, например:
environment\runtimefiles\common\sample\entities.dxf
environment\runtimefiles\common\sample\zigzag.dxf
пожалуйста!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: САПР на Lazarus

Сообщение zub » 31.07.2020 10:05:55

Sharfik
Имхо до уровня простейшей рисовалки осталось не так много, но с другой стороны и времени свободного все меньше и меньше, последние пару лет зкад в этом направлении не двигается((

скалогрыз
Эти можете включать куда угодно. Обратите внимание - у примитивов в расширенных данных присутствуют следы зкада.

Пара замечаний из опыта:
Лучше сразу закладывать версионирование, dxfы различабтся по версиям автокада, самая большая разница 12<->2000 дальше меньше, но есть
Записать чисто програмно валидный dxf>=2000 нереально имхо, т.к. формат хорошо докумен только для чтения, лучше использовать пустой шаблон в который вписывать свои данные
Для проверок обязательно надо обзавестись автокадом. Клоны читают любую галематью не морщясь, автокад по любому чиху ругается и отказывается читать файл. Без проверок на автокаде, глядя только в спецификацию формата валидный файл (с точки зрения автокада, формат всетаки автодесковский) не записать
Вложения
dxfs.zip
(75.88 КБ) Скачиваний: 584
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение Sharfik » 31.07.2020 16:39:05

zub, шкурный вопрос. А где почитать как арки по прописываемым в файле значениям строить?
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: САПР на Lazarus

Сообщение zub » 31.07.2020 16:44:57

имеется ввиду просто дуги или дуговые сегменты в полилиниях? у первых там центр, радиус и углы, у вторых точки вершин и так называемый "bulge"
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение Sharfik » 31.07.2020 17:07:31

zub писал(а):имеется ввиду просто дуги или дуговые сегменты в полилиниях? у первых там центр, радиус и углы, у вторых точки вершин и так называемый "bulge"

Дуги просто. Я не очень понял про углы указываемые там.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: САПР на Lazarus

Сообщение скалогрыз » 31.07.2020 19:20:05

zub писал(а):Для проверок обязательно надо обзавестись автокадом.

согласен.
я хотел скачать Trial, но там, внезапно, потребовалась регистрация... и забил.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: САПР на Lazarus

Сообщение Sharfik » 31.07.2020 19:28:41

скалогрыз писал(а):
zub писал(а):Для проверок обязательно надо обзавестись автокадом.

согласен.
я хотел скачать Trial, но там, внезапно, потребовалась регистрация... и забил.

DWG TrueView. Только не помню показывает ли он ошибки с номерами строк как autocad.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: САПР на Lazarus

Сообщение zub » 31.07.2020 23:00:09

>>Дуги просто. Я не очень понял про углы указываемые там.
от центра дуги рисуем вектор длиной R в направлении (1,0) поворачиваем его на стартовый угол - это начало дуги. потом поворачиваем его до конечного угла, при этом вычерчивая дугу. Хз где читать про это, вроде все просто.
В случае 3Д автокад использует общий для всех "плоских" примитивов повернутых в 3Д Arbitrary Axis Algorithm http://docs.autodesk.com/ACD/2011/ENU/f ... 9-793d.htm - на основе вектора нормали расчитывается плоскость примитива
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение Pavia » 31.07.2020 23:11:45

В SVG сделано так:
Изображение
Алгоритм по ссылке
https://www.w3.org/TR/SVG/paths.html#Pa ... rcCommands
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: САПР на Lazarus

Сообщение Sharfik » 05.08.2020 19:39:13

zub писал(а):>>Дуги просто. Я не очень понял про углы указываемые там.
от центра дуги рисуем вектор длиной R в направлении (1,0) поворачиваем его на стартовый угол - это начало дуги. потом поворачиваем его до конечного угла, при этом вычерчивая дугу. Хз где читать про это, вроде все просто.
В случае 3Д автокад использует общий для всех "плоских" примитивов повернутых в 3Д Arbitrary Axis Algorithm http://docs.autodesk.com/ACD/2011/ENU/f ... 9-793d.htm - на основе вектора нормали расчитывается плоскость примитива

понял что просто, но по тексту нарисовать картинку в голове не смог
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: САПР на Lazarus

Сообщение MiniQ » 15.11.2020 15:37:01

Попробовал собрать 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


Где, что подправить в консерватории?
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: САПР на Lazarus

Сообщение zub » 15.11.2020 17:08:35

хм. проверить мне неначем. Попробуй стереть область выводо opengl и все с ней связанное, оставив только гди.
примеры opengl из поставки лазаря работают?
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: САПР на Lazarus

Сообщение Cheb » 16.11.2020 05:34:17

Касательно малины, лично нарывался на такую бяку: Паскаль использует какие-то хаки, чтобы сделать возможным обращение к невыровненным данным (что, вообще-то, на этой платформе - ересь). Но как только грузишь и инициализируешь 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 [...]
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Пред.След.

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

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

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

Рейтинг@Mail.ru