Как стать автором
Обновить

Комментарии 7

Хорошая идея! Жаль нет кармы, плюс вам поставить за материал!
А скажите, не встречался ли вам по пути, какой нибудь достаточно легкий по объёму инструмент (библиотека или SDK) на С++ который бы поддерживал 2 для меня крайне важных момента:
1) кривые как сочетание прямых отрезков так и сплайнов;
2) основные булевые операции над пересечениями таких кривых с генерацией новых или коррекцией исходных

Всё, что я ни находил, либо жутко громозкое, либо работает только с полилиниями состоящими из прямых отрезков (или с большим набором мелких спрямленных сегментов вместо исходной кривой секции). А хотелось бы что-то , что позволяло бы делать базовые операции в легкой 2D CAD системе без сильного усложнения кода.

Спасибо за отзыв, к сожалению мне таких тоже не известно, да и не искал, не сталкивался с такими требованиями

Ну, в любом случае - спасибо вам за статью и конечно за библиотеку! Надуюсь, дойдут и у меня руки до создания того, что запланировал.

Спасибо, как раз искал что-то подобное.

С вашего позволения, чуть попридираюсь к коду

  1. Использование std::string_view без соответствующего #include. У вас, видимо, string_view заинклудился каким-то из имеюшихся инклудов. На других платформах такого может не случиться.

  2. У пользователя может не быть директории "C:\Repos\STL\", как и диска "C:\". Вдруг у него не windows? Значит пользователю придётся лезть в код библиотеки и править этот путь, что нехорошо. (Может есть смысл сделать эту переменную не constexpr?)

  3. Почему 21? Почему 84? Что это за числа? Подозреваю, что здесь имелось ввиду file.write((char*)dummy, sizeof(dummy));

  4. Там же дальше file.write((char*)&(triangles[0]), static_cast<std::streamsize(triangles.size()) * 50);

    50 это что? sizeof(Triangle)?

2) Пользователю данного инструмента требуется указать свою папку, где он хочет получать дампы + еще и написать набор convert методов. Т.е. предполагается, что в любом случае придется лезть и дописывать код библиотеки под себя и под свои проекты
3,4) https://en.wikipedia.org/wiki/STL_(file_format) 80+4 байта заголовок, 50 байт каждый треугольник, 21 int просто что бы добрать первые 84 байта. Согласен, числа магические, но по сути определяются форматом и не изменяемые и для пользователя значения не имеют

  1. Пользователь не должен редактировать код библиотеки. По-хорошему, у него должна быть возможность написать дополнительные функции для библиотеки у себя в проекте. Предположим, ваш проект будет жить и развиваться, вы и другие пользователи будут вносить в него дополнения, исправлять ошибки, и так далее. И при каждом обновлении пользователь будет вынужден исправлять код библиотеки "под себя".

В целом, после некоторого колдовства я собрал её под linux. Кстати, file.open не должен принимать string_view в качестве аргумента.

Ловите пулл-реквест, я там заодно поддержку cmake добавил. https://github.com/KupchishinAB/DumpSTL/pull/3

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории