package ArbitraryGeometry { private import ShapeItems::*; private import SI::*; private import MeasurementReferences::*; // Only topology coordinates/connectivity and sheet selection use SV2A adapters. // All physical placements use standard MeasurementReferences constructs. // Coordinates in mm; face/edge indices are ONE-BASED. item def OffsetAssembly { attribute coordinateFrame { attribute transformation : TranslationRotationSequence { attribute shift : Translation { attribute translationVector = (40,0,0) [mm]; } attribute turn : Rotation { attribute axisDirection = (0,0,1); attribute angle = 25 [deg]; attribute isIntrinsic = true; } attribute :>> elements = (shift,turn); } } item concavePlate : Polygon { attribute coordinateFrame { attribute transformation : TranslationRotationSequence { attribute shift : Translation { attribute translationVector = (0,0,0) [mm]; } attribute turn : Rotation { attribute axisDirection = (0,0,1); attribute angle = 0 [deg]; attribute isIntrinsic = true; } attribute :>> elements = (shift,turn); } } attribute sv2aVertices = ((0,0,0),(80,0,0),(80,30,0),(30,30,0),(30,70,0),(0,70,0)); } item tetra : Polyhedron { attribute coordinateFrame { attribute transformation : TranslationRotationSequence { attribute shift : Translation { attribute translationVector = (20,20,20) [mm]; } attribute turn : Rotation { attribute axisDirection = (0,0,1); attribute angle = 0 [deg]; attribute isIntrinsic = true; } attribute :>> elements = (shift,turn); } } attribute sv2aVertices = ((0,0,0),(45,0,0),(0,45,0),(0,0,60)); attribute sv2aFaces = ((1,3,2),(1,2,4),(2,3,4),(3,1,4)); } } item assembly : OffsetAssembly; item path : Path { attribute coordinateFrame { attribute transformation : TranslationRotationSequence { attribute shift : Translation { attribute translationVector = (0,0,0) [mm]; } attribute turn : Rotation { attribute axisDirection = (0,0,1); attribute angle = 0 [deg]; attribute isIntrinsic = true; } attribute :>> elements = (shift,turn); } } attribute sv2aVertices = ((0,0,0),(-25,30,10),(-40,65,45),(-50,80,60)); } item curve : Parabola { attribute focalDistance = 15 [mm]; attribute coordinateFrame { attribute transformation : TranslationRotationSequence { attribute shift : Translation { attribute translationVector = (-100,0,0) [mm]; } attribute turn : Rotation { attribute axisDirection = (0,0,1); attribute angle = 0 [deg]; attribute isIntrinsic = true; } attribute :>> elements = (shift,turn); } } } item surface : Hyperboloid { attribute transverseAxis = 15 [mm]; attribute conjugateAxis = 25 [mm]; attribute sv2aSheetCount = 1; attribute coordinateFrame { attribute transformation : TranslationRotationSequence { attribute shift : Translation { attribute translationVector = (160,0,0) [mm]; } attribute turn : Rotation { attribute axisDirection = (0,0,1); attribute angle = 0 [deg]; attribute isIntrinsic = true; } attribute :>> elements = (shift,turn); } } } view allGeometryView { expose assembly::**; expose path; expose curve; expose surface; } view meshView { expose assembly::**; } view conicView { expose curve; expose surface; } }