lwh_straightline.dart 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import 'dart:ui';
  2. import 'package:fis_measure/interfaces/process/items/item.dart';
  3. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  4. import 'package:fis_measure/interfaces/process/items/types.dart';
  5. import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
  6. import 'package:fis_measure/process/calcuators/three_distance.dart';
  7. import 'package:fis_measure/process/items/item_feature.dart';
  8. import 'package:fis_measure/process/items/top_item.dart';
  9. import 'package:fis_measure/process/items/top_item_feature.dart';
  10. import 'package:fis_measure/process/primitives/straightline.dart';
  11. class LWHStraightLine extends TopMeasureItem<LWHStraightlineFeature> {
  12. static const String _lineLKey = "L";
  13. static const String _lineWKey = "W";
  14. static const String _lineHKey = "H";
  15. late final StraightLine l;
  16. late final StraightLine w;
  17. late final StraightLine h;
  18. LWHStraightLine(ItemMeta meta) : super(meta) {
  19. final metaL = meta.getChildByName(_lineLKey)!;
  20. final metaH = meta.getChildByName(_lineHKey)!;
  21. final metaW = meta.getChildByName(_lineWKey)!;
  22. l = StraightLine.createDistance(metaL, this);
  23. w = StraightLine.createDistance(metaW, this);
  24. h = StraightLine.createDistance(metaH, this);
  25. childItems.add(l);
  26. childItems.add(w);
  27. childItems.add(h);
  28. }
  29. @override
  30. LWHStraightlineFeature buildFeature() => LWHStraightlineFeature(this);
  31. @override
  32. void onCancelingOnce() {}
  33. //ThreeDistMeanCalculator
  34. static LWHStraightLine createVolume(ItemMeta meta, [IMeasureItem? parent]) {
  35. if (meta.measureType != MeasureTypes.VolumeThreeDistance) {
  36. throw ArgumentError();
  37. }
  38. var lwh = LWHStraightLine(meta);
  39. lwh.calculator = VolumeThreeDistanceCal(lwh);
  40. return lwh;
  41. }
  42. static LWHStraightLine createMean(ItemMeta meta, [IMeasureItem? parent]) {
  43. if (meta.measureType != MeasureTypes.ThreeDistanceMean) {
  44. throw ArgumentError();
  45. }
  46. var lwh = LWHStraightLine(meta);
  47. lwh.calculator = ThreeDistMeanCalculator(lwh);
  48. return lwh;
  49. }
  50. static LWHStraightLine createMax(ItemMeta meta, [IMeasureItem? parent]) {
  51. var lwh = LWHStraightLine(meta);
  52. lwh.calculator = ThreeDistMaxCalculator(lwh);
  53. return lwh;
  54. }
  55. }
  56. class LWHStraightlineFeature extends TopMeasureItemFeature {
  57. LWHStraightlineFeature(
  58. ITopMeasureItem refItem,
  59. ) : super(refItem);
  60. }