Browse Source

polygon test passed

melon.yin 2 years ago
parent
commit
4a5eafc97d

+ 1 - 0
lib/measure_page_test.dart

@@ -337,6 +337,7 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
     MeasureTypes.Depth,
     MeasureTypes.Volume,
     MeasureTypes.AreaPerimeterEllipse,
+    MeasureTypes.AreaPerimeterPolyline,
   ];
 
   final scrollController = ScrollController();

+ 9 - 3
lib/process/primitives/polyline.dart

@@ -46,7 +46,7 @@ class Polyline extends MeasureItem<PolylineFeature> {
       }
       doCalculate();
 
-      if (false) {
+      if (f.startPoint.almostEquals(f.endPoint)) {
         doFeatureFinish();
       }
     }
@@ -75,7 +75,8 @@ class PolylineFeature extends MeasureItemFeature {
   bool _isClosed = false;
   double _splineTension = 0.0;
   PolylineFeature(IMeasureItem refItem, DPoint point) : super(refItem) {
-    innerPoints.add(point);
+    innerPoints.add(point.clone());
+    innerPoints.add(point.clone());
   }
 
   DPoint get startPoint => innerPoints.first;
@@ -118,7 +119,12 @@ class PolylineFeature extends MeasureItemFeature {
       final offsetB = convert2ViewPoint(size, b).toOffset();
       canvas.drawDashLine(offsetA, offsetB, 1, 10, paintPan);
       final isLast = len - i == 1;
-      drawVertex(canvas, offsetB, isLast);
+      if (isLast) {
+        drawVertex(canvas, offsetB, isActive);
+        canvas.drawDashLine(offsetB, startOffset, 1, 10, paintPan);
+      } else {
+        drawVertex(canvas, offsetB, false);
+      }
     }
   }
 }

+ 15 - 0
lib/process/workspace/application.dart

@@ -472,6 +472,21 @@ class Application implements IApplication {
       return;
     }
 
+    if (name == MeasureTypes.AreaPerimeterPolyline) {
+      activeMeasureItem = MeasureItemFactory.createItem(
+        ItemMeta(
+          MeasureTypes.AreaPerimeterPolyline,
+          measureType: MeasureTypes.AreaPerimeterPolyline,
+          description: MeasureTypes.AreaPerimeterPolyline,
+          outputs: [
+            ItemOutputMeta("Perimeter", "Perimeter", VidUsUnit.cm),
+            ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
+          ],
+        ),
+      );
+      return;
+    }
+
     activeMeasureItem = null;
   }