Комментарии 7
Хорошая идея! Жаль нет кармы, плюс вам поставить за материал!
А скажите, не встречался ли вам по пути, какой нибудь достаточно легкий по объёму инструмент (библиотека или SDK) на С++ который бы поддерживал 2 для меня крайне важных момента:
1) кривые как сочетание прямых отрезков так и сплайнов;
2) основные булевые операции над пересечениями таких кривых с генерацией новых или коррекцией исходных
Всё, что я ни находил, либо жутко громозкое, либо работает только с полилиниями состоящими из прямых отрезков (или с большим набором мелких спрямленных сегментов вместо исходной кривой секции). А хотелось бы что-то , что позволяло бы делать базовые операции в легкой 2D CAD системе без сильного усложнения кода.
Спасибо, как раз искал что-то подобное.
С вашего позволения, чуть попридираюсь к коду
Использование
std::string_view без соответствующего #include. У вас, видимо, string_view заинклудился каким-то из имеюшихся инклудов. На других платформах такого может не случиться.
У пользователя может не быть директории "C:\Repos\STL\", как и диска "C:\". Вдруг у него не windows? Значит пользователю придётся лезть в код библиотеки и править этот путь, что нехорошо. (Может есть смысл сделать эту переменную не constexpr?)
Почему 21? Почему 84? Что это за числа? Подозреваю, что здесь имелось ввиду
file.write((char*)dummy, sizeof(dummy));
Там же дальше
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 байта. Согласен, числа магические, но по сути определяются форматом и не изменяемые и для пользователя значения не имеют
Пользователь не должен редактировать код библиотеки. По-хорошему, у него должна быть возможность написать дополнительные функции для библиотеки у себя в проекте. Предположим, ваш проект будет жить и развиваться, вы и другие пользователи будут вносить в него дополнения, исправлять ошибки, и так далее. И при каждом обновлении пользователь будет вынужден исправлять код библиотеки "под себя".
В целом, после некоторого колдовства я собрал её под linux. Кстати, file.open не должен принимать string_view в качестве аргумента.
Ловите пулл-реквест, я там заодно поддержку cmake добавил. https://github.com/KupchishinAB/DumpSTL/pull/3
Отладка в C++ геометрии и топологии