FreeCAD as a kernel-based OpenCasCAD open source CAD software, you can download the source code on GitHub. Read the source code, CAD software architecture helps us to learn, to understand the underlying geometry algorithms.
Caesar Lu Shangyu by the blogger self-organize (purely for the love of three-dimensional CAD software development)
How to view the type of support FreeCAD
= DC FreeCAD.newDocument ()
dc.supportedTypes ()
Caesar Lu Shangyu
2020 March 24
['App::DocumentObject', 'App::GeoFeature', 'App::FeatureTest', 'App::FeatureTestException', 'App::FeaturePython', 'App::GeometryPython', 'App::DocumentObjectGroup', 'App::DocumentObjectGroupPython', 'App::DocumentObjectFileIncluded', 'App::InventorObject', 'App::VRMLObject', 'App::Annotation', 'App::AnnotationLabel', 'App::MeasureDistance', 'App::MaterialObject', 'App::MaterialObjectPython', 'App::TextDocument', 'App::Placement', 'App::OriginFeature', 'App::Plane', 'App::Line', 'App::Part', 'App::Origin', 'Part::Feature', 'Part::FeatureExt', 'Part::BodyBase', 'Part::FeaturePython', 'Part::FeatureGeometrySet', 'Part::CustomFeature', 'Part::CustomFeaturePython', 'Part::Primitive', 'Part::Box', 'Part::Spline', 'Part::Boolean', 'Part::Common', 'Part::MultiCommon', 'Part::Cut', 'Part::Fuse', 'Part::MultiFuse', 'Part::Section', 'Part::FilletBase', 'Part::Fillet', 'Part::Chamfer', 'Part::Compound', 'Part::Extrusion', 'Part::Revolution', 'Part::Mirroring', 'Part::ImportStep', 'Part::ImportIges', 'Part::ImportBrep', 'Part::CurveNet', 'Part::Polygon', 'Part::Circle', 'Part::Ellipse', 'Part::Vertex', 'Part::Line', 'Part::Ellipsoid', 'Part::Plane', 'Part::Sphere', 'Part::Cylinder', 'Part::Prism', 'Part::RegularPolygon', 'Part::Cone', 'Part::Torus', 'Part::Helix', 'Part::Spiral', 'Part::Wedge', 'Part::Part2DObject', 'Part::Part2DObjectPython', 'Part::Face', 'Part::RuledSurface', 'Part::Loft', 'Part::Sweep', 'Part::Offset', 'Part::Offset2D', 'Part::Thickness', 'Part::Datum']