1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import 'package:fis_measure/interfaces/process/items/item.dart';
- import 'package:fis_measure/interfaces/process/items/item_metas.dart';
- import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
- import 'package:fis_measure/process/calcuators/calculator.dart';
- import 'package:fis_measure/process/items/top_item.dart';
- import 'package:fis_measure/process/items/top_item_feature.dart';
- import 'package:fis_measure/process/primitives/straightline.dart';
- import 'package:vid/us/vid_us_unit.dart';
- class Afi extends TopMeasureItem<AfiFeature> {
- static const String _lineQ1Key = "Q1";
- static const String _lineQ2Key = "Q2";
- static const String _lineQ3Key = "Q3";
- static const String _lineQ4Key = "Q4";
- late final StraightLine q1;
- late final StraightLine q2;
- late final StraightLine q3;
- late final StraightLine q4;
- Afi(ItemMeta meta) : super(meta) {
- final metaQ1 = meta.getChildByName(_lineQ1Key)!;
- final metaQ2 = meta.getChildByName(_lineQ2Key)!;
- final metaQ3 = meta.getChildByName(_lineQ3Key)!;
- final metaQ4 = meta.getChildByName(_lineQ4Key)!;
- q1 = StraightLine.createDistance(metaQ1, this);
- q2 = StraightLine.createDistance(metaQ2, this);
- q3 = StraightLine.createDistance(metaQ3, this);
- q4 = StraightLine.createDistance(metaQ4, this);
- childItems.add(q1);
- childItems.add(q2);
- childItems.add(q3);
- childItems.add(q4);
- }
- @override
- bool get finishAfterUnactive => true;
- @override
- AfiFeature buildFeature() => AfiFeature(this);
- static Afi createAfi(ItemMeta meta, [IMeasureItem? parent]) {
- final afi = Afi(meta);
- afi.calculator = AfiSumCal(afi);
- return afi;
- }
- }
- class AfiFeature extends TopMeasureItemFeature {
- AfiFeature(Afi refItem) : super(refItem);
- }
- class AfiSumCal extends Calculator<Afi, double> {
- AfiSumCal(Afi ref) : super(ref);
- @override
- void calculate() {
- if (ref.feature == null) return;
- final vQ1 = findChildFeature(ref.q1)?.value;
- final vQ2 = findChildFeature(ref.q2)?.value;
- final vQ3 = findChildFeature(ref.q3)?.value;
- final vQ4 = findChildFeature(ref.q4)?.value;
- double q1 = 0;
- double q2 = 0;
- double q3 = 0;
- double q4 = 0;
- VidUsUnit unit = VidUsUnit.None;
- if (vQ1 != null) {
- q1 = vQ1.pickFloat()!;
- unit = vQ1.unit;
- }
- if (vQ2 != null) {
- q2 = vQ2.pickFloat()!;
- unit = vQ2.unit;
- }
- if (vQ3 != null) {
- q3 = vQ3.pickFloat()!;
- unit = vQ3.unit;
- }
- if (vQ4 != null) {
- q4 = vQ4.pickFloat()!;
- unit = vQ4.unit;
- }
- final afi = q1 + q2 + q3 + q4;
- updateFloatValue(afi, unit: unit, useRound: true);
- }
- }
|