three_ray.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import 'package:fis_measure/interfaces/process/items/item.dart';
  2. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  3. import 'package:fis_measure/process/calcuators/ray.dart';
  4. import 'package:fis_measure/process/items/top_item_feature.dart';
  5. import 'package:fis_measure/process/primitives/ray.dart';
  6. import 'package:fis_measure/process/items/item.dart';
  7. import 'package:fis_measure/process/items/item_feature.dart';
  8. import 'package:fis_measure/process/items/top_item.dart';
  9. abstract class ThreeRayAbstract<T extends MeasureItemFeature>
  10. extends TopMeasureItem<T> {
  11. ThreeRayAbstract(ItemMeta meta) : super(meta);
  12. MeasureItem get child1;
  13. MeasureItem get child2;
  14. MeasureItem get child3;
  15. }
  16. class ThreeRay extends ThreeRayAbstract<ThreeRayFeature> {
  17. @override
  18. bool get ifAutoFinish => true;
  19. @override
  20. bool get ifAutoStart => true;
  21. @override
  22. bool get finishAfterUnactive => false;
  23. late final Ray x;
  24. late final Ray y;
  25. late final Ray z;
  26. ThreeRay(ItemMeta meta) : super(meta) {
  27. final metaX = meta.childItems[0];
  28. final metaY = meta.childItems[1];
  29. final metaZ = meta.childItems[2];
  30. x = Ray.createRay(metaX, this);
  31. y = Ray.createRay(metaY, this);
  32. z = Ray.createRay(metaZ, this);
  33. //TODO:[Gavin] angle 没有传来,暂时写死
  34. y.initializeAngle = 45;
  35. z.initializeAngle = 45;
  36. childItems.add(x);
  37. childItems.add(y);
  38. childItems.add(z);
  39. }
  40. @override
  41. Ray get child1 => x;
  42. @override
  43. Ray get child2 => y;
  44. @override
  45. Ray get child3 => z;
  46. @override
  47. ThreeRayFeature buildFeature() => ThreeRayFeature(this);
  48. @override
  49. void onCancelingOnce() {}
  50. static ThreeRay createThreeRay(ItemMeta meta, [IMeasureItem? parent]) {
  51. ThreeRay threeRay = ThreeRay(meta);
  52. threeRay.calculator = RayDepthCal(threeRay.child1);
  53. return threeRay;
  54. }
  55. }
  56. class ThreeRayFeature extends TopMeasureItemFeature {
  57. ThreeRayFeature(
  58. ITopMeasureItem refItem,
  59. ) : super(refItem);
  60. }