import 'package:fis_measure/interfaces/process/items/item.dart'; import 'package:fis_measure/interfaces/process/items/item_metas.dart'; import 'package:fis_measure/process/calcuators/ray.dart'; import 'package:fis_measure/process/items/top_item_feature.dart'; import 'package:fis_measure/process/primitives/ray.dart'; import 'package:fis_measure/process/items/item.dart'; import 'package:fis_measure/process/items/item_feature.dart'; import 'package:fis_measure/process/items/top_item.dart'; abstract class ThreeRayAbstract extends TopMeasureItem { ThreeRayAbstract(ItemMeta meta) : super(meta); MeasureItem get child1; MeasureItem get child2; MeasureItem get child3; } class ThreeRay extends ThreeRayAbstract { @override bool get ifAutoFinish => true; @override bool get ifAutoStart => true; @override bool get finishAfterUnactive => false; late final Ray x; late final Ray y; late final Ray z; ThreeRay(ItemMeta meta) : super(meta) { final metaX = meta.childItems[0]; final metaY = meta.childItems[1]; final metaZ = meta.childItems[2]; x = Ray.createRay(metaX, this); y = Ray.createRay(metaY, this); z = Ray.createRay(metaZ, this); //TODO:[Gavin] angle 没有传来,暂时写死 y.initializeAngle = 45; z.initializeAngle = 45; childItems.add(x); childItems.add(y); childItems.add(z); } @override Ray get child1 => x; @override Ray get child2 => y; @override Ray get child3 => z; @override ThreeRayFeature buildFeature() => ThreeRayFeature(this); @override void onCancelingOnce() {} static ThreeRay createThreeRay(ItemMeta meta, [IMeasureItem? parent]) { ThreeRay threeRay = ThreeRay(meta); threeRay.calculator = RayDepthCal(threeRay.child1); return threeRay; } } class ThreeRayFeature extends TopMeasureItemFeature { ThreeRayFeature( ITopMeasureItem refItem, ) : super(refItem); }