@startuml 'https://plantuml.com/class-diagram interface Vision interface Solid{ base of 3D geometries } Vision <- Solid class VisionGroup{ a group of visions } Vision <-- VisionGroup class VisionBase{ basic vision implementation } Vision <- VisionBase class SolidLabel Solid <--- SolidLabel class SolidGroup Solid <--- SolidGroup VisionGroupBase <-- SolidGroup class SphereLayer GeometrySolid <-- SphereLayer class Sphere GeometrySolid <-- Sphere class Box Hexagon <-- Box class GenericHexagon Hexagon <-- GenericHexagon class Extruded GeometrySolid <-- Extruded class PolyLine Solid <--- PolyLine interface GeometrySolid Solid <--- GeometrySolid interface Hexagon GeometrySolid <-- Hexagon class ConeSegment GeometrySolid <-- ConeSegment class ConeSurface GeometrySolid <-- ConeSurface class Convex Solid <--- Convex class Composite Solid <--- Composite interface SolidReference VisionGroup <---- SolidReference class SolidReferenceGroup VisionGroup <-- SolidReferenceGroup Solid <-- SolidReferenceGroup VisionBase <-- SolidReferenceGroup SolidReference <-- SolidReferenceGroup class ReferenceChild VisionGroup <-- ReferenceChild Solid <-- ReferenceChild SolidReference <-- ReferenceChild class VisionGroupBase VisionBase <-- VisionGroupBase class RootVisionGroup VisionGroupBase <-- RootVisionGroup class VisionOfPlotly VisionBase <-- VisionOfPlotly @enduml