• S sverchok
  • Информация о проекте
    • Информация о проекте
    • Активность
    • Метки
    • Участники
  • Репозиторий
    • Репозиторий
    • Файлы
    • Коммиты
    • Ветки
    • Теги
    • Участники
    • Диаграмма
    • Сравнение
  • Задачи 148
    • Задачи 148
    • Список
    • Доски
    • Спринты
  • Запросы на слияние 21
    • Запросы на слияние 21
  • CI/CD
    • CI/CD
    • Конвейеры
    • Задания
    • Расписания
  • Развертывания
    • Развертывания
    • Окружения
    • Релизы
  • Пакеты и реестры
    • Пакеты и реестры
    • Реестр пакетов
    • Реестр контейнеров
  • Мониторинг
    • Мониторинг
    • Инциденты
  • Аналитика
    • Аналитика
    • Поток ценности
    • CI/CD
    • Репозиторий
  • Wiki
    • Wiki
  • Сниппеты
    • Сниппеты
  • Активность
  • Диаграмма
  • Создать новую задачу
  • Задания
  • Коммиты
  • Доски с задачами
Свернуть панель
  • nikitronn
  • sverchok
  • Запросы на слияние
  • !3501

Wider FreeCAD support - NURBS Solids

  • Ревью изменений

  • Скачать
  • Почтовые патчи
  • Простое отличие
Слиты nikitronn запросил слияние freecad_nurbs в master Авг 31, 2020
  • Обзор 14
  • Коммиты 49
  • Конвейеры 0
  • Изменения 67

Created by: portnov

The plan is to add:

  • Support of FreeCAD's implementation of Nurbs curves and surfaces
  • Update existing nodes:
    • "Solid Edges" and "Solid Faces" output NURBS curves / surfaces
    • "Solid Faces" node has additional "TrimCurves" output - outer edges of each face in U/V coordinate space of that surface, for use as trimming curve
  • Face creation nodes:
    • "Polygon Face" - make a Face from a polygon defined by usual Sverchok's Vertices and Faces; the polygon must be flat.
    • "Face from Curves" : build a flat face with curvy edges, by making a face from one or several Curves, representing face's outer edges;
    • "Cut Surface to make a Face": build a curve face from a trimmed Surface; the only way I know to trim a Surface in FreeCAD API is to take a Curve somewhere in 3D space, and then project it onto surface (two methods of projection are available: parallel - along a vector, and perspective - from a point). Better name for this node is welcome.
  • Solid creation nodes:
    • "Extrude Face (Solid)" node (extrude face along vector, UI for face.extrude method)
    • "Solidify Face (Solid)" node (make a solid by offsetting the face, UI for face.makeOffsetShape method) - feel free to offer a better name
    • "Revolve Face (Solid)" node (make a solid of revolution from a face, UI for face.revolve method)
    • "Sweep Face (Solid)" node (sweep a face along a curve, UI for Part.BRepOffsetAPI.MakePipeShell)
    • "Solid from two Faces" node: given two Faces ("floor" and "ceil"), make a Solid by connecting edges of these faces by ruled surfaces ("walls"). This works only when two faces have exactly the same number of edges. Moved to Alpha nodes, because gives weird results too frequently, and in company with Booleans causes crashes :/
  • "Split Solid by Face" node: take a Solid and cut it into two (or more) parts with a Face.
  • "Project Curve on Surface (NURBS)" node.
  • "Helix" node

Only NURBS and NURBS-like curves and surfaces are supported (at least for now).

I had the following options:

a) for all three solid-making nodes, support a switch which would allow different modes of how to provide a Face; b) add a new socket class for Solid Face, and three additional nodes to make Faces. c) add additional nodes to make Faces; use SvSurfaceSocket for faces, with SvSolidFaceSurface class

At the moment I like c) the most.

@vicdoval @zeffii your opinion?

Screenshot_20200831_215050 Screenshot_20200831_215213

NURBS interpolation + Coons Surface + Extrude Face + Solid Boolean: Screenshot_20200831_221918

Make a Ruled Surface from two interpolated curves, cut a Face from it by perspective projection of some Circle, then solidify this face, then cut holes with boolean: Screenshot_20200902_004509

Cut a Cone by some surface ("split solid by face"), take a central part and make a hole in it with Boolean: Screenshot_20200903_203804

Preflight checklist

Put an x letter in each brackets when you're done this item:

  • Code changes complete.
  • Code documentation complete.
  • Documentation for users complete (or not required, if user never sees these changes).
  • Manual testing done.
  • Unit-tests implemented.
  • Ready for merge.
Ответственный
Назначить
Проверяющие
Запросить ревью
Оценка трудозатрат
Исходная ветка: freecad_nurbs