Bläddra i källkod

优化单位转换机制

gavin.chen 8 månader sedan
förälder
incheckning
590d149027

+ 13 - 13
lib/process/calcuators/urm_calcuators/urm_vessel_measure.dart

@@ -57,49 +57,48 @@ class URMVesselMeasureCal extends Calculator<URMVesselMeasure, double> {
             VidUsUnit.None);
         for (var output in ref.meta.outputs) {
           if (output.name == MeasureTerms.MaxVessDistance) {
-            output.unit = VidUsUnit.None;
+            output.unit = VidUsUnit.mm;
             feature.updateFloatValue(
                 output, vessMeasureResult.maxVessDistance, output.unit);
           } else if (output.name == MeasureTerms.MinVessDistance) {
-            output.unit = VidUsUnit.None;
+            output.unit = VidUsUnit.mm;
             feature.updateFloatValue(
                 output, vessMeasureResult.minVessDistance, output.unit);
           } else if (output.name == MeasureTerms.MeanVessDistacne) {
-            output.unit = VidUsUnit.None;
+            output.unit = VidUsUnit.mm;
             feature.updateFloatValue(
                 output, vessMeasureResult.meanVessDistacne, output.unit);
           } else if (output.name == MeasureTerms.StdVessDistance) {
-            output.unit = VidUsUnit.None;
+            output.unit = VidUsUnit.mm;
             feature.updateFloatValue(output,
                 math.sqrt(vessMeasureResult.varianceVessDistance), output.unit);
           } else if (output.name == MeasureTerms.MaxVessDiameter) {
-            output.unit = VidUsUnit.None;
+            output.unit = VidUsUnit.mm;
             feature.updateFloatValue(
                 output, vessMeasureResult.maxVessDiameter, output.unit);
           } else if (output.name == MeasureTerms.MinVessDiameter) {
-            output.unit = VidUsUnit.None;
+            output.unit = VidUsUnit.mm;
             feature.updateFloatValue(
                 output, vessMeasureResult.minVessDiameter, output.unit);
           } else if (output.name == MeasureTerms.MeanVessDiameter) {
-            output.unit = VidUsUnit.None;
+            output.unit = VidUsUnit.mm;
             feature.updateFloatValue(
                 output, vessMeasureResult.meanVessDiameter, output.unit);
           } else if (output.name == MeasureTerms.StdVessDiameter) {
-            output.unit = VidUsUnit.None;
+            output.unit = VidUsUnit.mm;
             feature.updateFloatValue(output,
                 math.sqrt(vessMeasureResult.varianceVessDiameter), output.unit);
           } else if (output.name == MeasureTerms.VesselCount) {
             output.unit = VidUsUnit.None;
-            feature.updateFloatValue(
-                output, vessMeasureResult.vesselCount.toDouble(), output.unit);
+            feature.updateStringValue(
+                output, vessMeasureResult.vesselCount.toString(), output.unit);
           } else if (output.name == MeasureTerms.Distance) {
-            output.unit = VidUsUnit.None;
-
+            final viewport = feature.hostVisualArea!.viewport!;
+            output.unit = viewport.xUnit;
             feature.updateFloatValue(output, cmlength, output.unit);
           }
         }
         List<Point<double>> outerExterPoints = [];
-        // TODO 差一道坐标系转换
         outresult.outerExterPoints?.forEach((element) {
           // TODO C#
           // UnitExtension.TryConvertUnit((float)outerExterPoints[i].Y, Unit.mm, Unit.um, out value);
@@ -112,6 +111,7 @@ class URMVesselMeasureCal extends Calculator<URMVesselMeasure, double> {
         });
         urmApplication.onUpdateChart?.call(
           URMChartParams(
+            featureId: ref.feature!.id,
             cmlength: cmlength,
             minPointIndex: vessMeasureResult.minPos,
             maxPointIndex: vessMeasureResult.maxPos,

+ 2 - 1
lib/process/unit/convert/convert.dart

@@ -43,7 +43,8 @@ class UnitValueConverter {
   }
 
   void _init() {
-    _add(LengthMap());
+    _add(LengthMapCM());
+    _add(LengthMapMM());
     _add(TimeMap());
     _add(SpeedMap());
     _add(AreaMap());

+ 14 - 2
lib/process/unit/convert/length.dart

@@ -2,8 +2,8 @@ import 'package:vid/us/vid_us_unit.dart';
 
 import 'abstract.dart';
 
-class LengthMap extends UnitMapBase {
-  LengthMap() : super(VidUsUnit.cm);
+class LengthMapCM extends UnitMapBase {
+  LengthMapCM() : super(VidUsUnit.cm);
 
   @override
   void initMap() {
@@ -13,3 +13,15 @@ class LengthMap extends UnitMapBase {
     add(VidUsUnit.um, 0.0001);
   }
 }
+
+class LengthMapMM extends UnitMapBase {
+  LengthMapMM() : super(VidUsUnit.mm);
+
+  @override
+  void initMap() {
+    add(VidUsUnit.cm, 10);
+    add(VidUsUnit.inch, 25.4);
+    add(VidUsUnit.ft, 304.8);
+    add(VidUsUnit.um, 0.001);
+  }
+}

+ 2 - 0
lib/process/workspace/urm/application.dart

@@ -189,6 +189,7 @@ class URMApplication extends Application {
 }
 
 class URMChartParams {
+  final int featureId;
   final List<Point<double>> outerExterPoints;
   final List<Point<double>> line;
   final double cmlength;
@@ -196,6 +197,7 @@ class URMChartParams {
   final int minPointIndex;
 
   URMChartParams({
+    required this.featureId,
     required this.outerExterPoints,
     required this.line,
     required this.cmlength,