|
@@ -55,163 +55,163 @@ class URMRectCal extends Calculator<URMRect, double> {
|
|
|
String description = "URM\n Calculating...";
|
|
|
updateStringValue(description);
|
|
|
|
|
|
- switch (type) {
|
|
|
- case MeasureTypes.DensitySR:
|
|
|
- case MeasureTypes.SRRoiDensity:
|
|
|
- case MeasureTypes.Roi1:
|
|
|
- case MeasureTypes.Roi2:
|
|
|
- await getSRRoiDensityResult(urmApplication, startPoint, endPoint);
|
|
|
- break;
|
|
|
- case MeasureTypes.FractalDimSR:
|
|
|
- case MeasureTypes.SRROIFractalDim:
|
|
|
- await getSRRoiFractalDimResult(urmApplication, startPoint, endPoint);
|
|
|
- break;
|
|
|
- case MeasureTypes.SRRoiVel:
|
|
|
- await getSRRoiVelResult(urmApplication, startPoint, endPoint);
|
|
|
- break;
|
|
|
- case MeasureTypes.URMVelMeasure:
|
|
|
- await getURMVelMeasureResult(urmApplication, startPoint, endPoint);
|
|
|
- break;
|
|
|
- default:
|
|
|
- }
|
|
|
+ // switch (type) {
|
|
|
+ // case MeasureTypes.DensitySR:
|
|
|
+ // case MeasureTypes.SRRoiDensity:
|
|
|
+ // case MeasureTypes.Roi1:
|
|
|
+ // case MeasureTypes.Roi2:
|
|
|
+ // await getSRRoiDensityResult(urmApplication, startPoint, endPoint);
|
|
|
+ // break;
|
|
|
+ // case MeasureTypes.FractalDimSR:
|
|
|
+ // case MeasureTypes.SRROIFractalDim:
|
|
|
+ // await getSRRoiFractalDimResult(urmApplication, startPoint, endPoint);
|
|
|
+ // break;
|
|
|
+ // case MeasureTypes.SRRoiVel:
|
|
|
+ // await getSRRoiVelResult(urmApplication, startPoint, endPoint);
|
|
|
+ // break;
|
|
|
+ // case MeasureTypes.URMVelMeasure:
|
|
|
+ // await getURMVelMeasureResult(urmApplication, startPoint, endPoint);
|
|
|
+ // break;
|
|
|
+ // default:
|
|
|
+ // }
|
|
|
} catch (e) {
|
|
|
logger.e('URM Measure error: $e');
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //✅ URM 测量项 2
|
|
|
- Future<void> getSRRoiDensityResult(
|
|
|
- URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetSRRoiVelResult? result =
|
|
|
- await app.getSRRoiVelResult(startPoint, endPoint);
|
|
|
- if (result != null) {
|
|
|
- print("URM Measure output: ${result.output} ");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if ([MeasureTerms.URMDenROI, MeasureTerms.URMDenFractalDim]
|
|
|
- .contains(output.name)) {
|
|
|
- output.unit = VidUsUnit.percent;
|
|
|
- feature.updateFloatValue(output, result.output, output.unit);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
-
|
|
|
- //✅ URM 测量项 3 未验证需要组合测量项
|
|
|
- Future<void> getSRRoiFractalDimResult(
|
|
|
- URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetSRRoiFractalDimResult? result =
|
|
|
- await app.getSRRoiFractalDimResult(startPoint, endPoint);
|
|
|
- if (result != null) {
|
|
|
- print("URM Measure output: ${result.output} ");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.URMDenFractalDim) {
|
|
|
- output.unit = VidUsUnit.None;
|
|
|
- feature.updateFloatValue(output, result.output, output.unit);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
-
|
|
|
- //✅ URM 测量项 7 未验证需要组合测量项
|
|
|
- Future<void> getSRRoiVelResult(
|
|
|
- URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetSRRoiVelResult? result =
|
|
|
- await app.getSRRoiVelResult(startPoint, endPoint);
|
|
|
- if (result != null) {
|
|
|
- print("URM Measure output: ${result.output} ");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.SRRoiVel) {
|
|
|
- output.unit = VidUsUnit.percent;
|
|
|
- feature.updateFloatValue(output, result.output, output.unit);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
-
|
|
|
- //✅ URM 测量项 9
|
|
|
- Future<void> getURMVelMeasureResult(
|
|
|
- URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetURMVelMeasureResult? result =
|
|
|
- await app.getURMVelMeasureResult(startPoint, endPoint);
|
|
|
- if (result != null) {
|
|
|
- // TODO 全部内容展示
|
|
|
- print("URM Measure inMaxVel: ${result.inMaxVel} ");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.URMVelMax) {
|
|
|
- output.unit = VidUsUnit.mms;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.maxVel + app.urmMinVel, VidUsUnit.mms);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.URMVelMin) {
|
|
|
- output.unit = VidUsUnit.mms;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.minVel + app.urmMinVel, VidUsUnit.mms);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.URMVelMean) {
|
|
|
- output.unit = VidUsUnit.mms;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.meanVel + app.urmMinVel, VidUsUnit.mms);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.URMVelStd) {
|
|
|
- output.unit = VidUsUnit.mms;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, sqrt(result.varianceVel), VidUsUnit.mms);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.Area) {
|
|
|
- output.unit = VidUsUnit.cm2;
|
|
|
- feature.updateFloatValue(output, result.roiArea, VidUsUnit.cm2);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
+ // //✅ URM 测量项 2
|
|
|
+ // Future<void> getSRRoiDensityResult(
|
|
|
+ // URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetSRRoiVelResult? result =
|
|
|
+ // await app.getSRRoiVelResult(startPoint, endPoint);
|
|
|
+ // if (result != null) {
|
|
|
+ // print("URM Measure output: ${result.output} ");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if ([MeasureTerms.URMDenROI, MeasureTerms.URMDenFractalDim]
|
|
|
+ // .contains(output.name)) {
|
|
|
+ // output.unit = VidUsUnit.percent;
|
|
|
+ // feature.updateFloatValue(output, result.output, output.unit);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //✅ URM 测量项 3 未验证需要组合测量项
|
|
|
+ // Future<void> getSRRoiFractalDimResult(
|
|
|
+ // URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetSRRoiFractalDimResult? result =
|
|
|
+ // await app.getSRRoiFractalDimResult(startPoint, endPoint);
|
|
|
+ // if (result != null) {
|
|
|
+ // print("URM Measure output: ${result.output} ");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.URMDenFractalDim) {
|
|
|
+ // output.unit = VidUsUnit.None;
|
|
|
+ // feature.updateFloatValue(output, result.output, output.unit);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //✅ URM 测量项 7 未验证需要组合测量项
|
|
|
+ // Future<void> getSRRoiVelResult(
|
|
|
+ // URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetSRRoiVelResult? result =
|
|
|
+ // await app.getSRRoiVelResult(startPoint, endPoint);
|
|
|
+ // if (result != null) {
|
|
|
+ // print("URM Measure output: ${result.output} ");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.SRRoiVel) {
|
|
|
+ // output.unit = VidUsUnit.percent;
|
|
|
+ // feature.updateFloatValue(output, result.output, output.unit);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //✅ URM 测量项 9
|
|
|
+ // Future<void> getURMVelMeasureResult(
|
|
|
+ // URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetURMVelMeasureResult? result =
|
|
|
+ // await app.getURMVelMeasureResult(startPoint, endPoint);
|
|
|
+ // if (result != null) {
|
|
|
+ // // TODO 全部内容展示
|
|
|
+ // print("URM Measure inMaxVel: ${result.inMaxVel} ");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.URMVelMax) {
|
|
|
+ // output.unit = VidUsUnit.mms;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.maxVel + app.urmMinVel, VidUsUnit.mms);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.URMVelMin) {
|
|
|
+ // output.unit = VidUsUnit.mms;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.minVel + app.urmMinVel, VidUsUnit.mms);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.URMVelMean) {
|
|
|
+ // output.unit = VidUsUnit.mms;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.meanVel + app.urmMinVel, VidUsUnit.mms);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.URMVelStd) {
|
|
|
+ // output.unit = VidUsUnit.mms;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, sqrt(result.varianceVel), VidUsUnit.mms);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.Area) {
|
|
|
+ // output.unit = VidUsUnit.cm2;
|
|
|
+ // feature.updateFloatValue(output, result.roiArea, VidUsUnit.cm2);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
class URMLocationCal extends Calculator<Location, double> {
|
|
@@ -236,7 +236,7 @@ class URMLocationCal extends Calculator<Location, double> {
|
|
|
final point = ref.feature!.point.clone();
|
|
|
final startPoint = point.scale2Size(urmResultSize);
|
|
|
print("URM Measure startPoint: $startPoint");
|
|
|
- await getSRLoactionVelResult(urmApplication, startPoint);
|
|
|
+ // await getSRLoactionVelResult(urmApplication, startPoint);
|
|
|
return;
|
|
|
} catch (e) {
|
|
|
logger.e('URM Measure error: $e');
|
|
@@ -245,31 +245,31 @@ class URMLocationCal extends Calculator<Location, double> {
|
|
|
}
|
|
|
|
|
|
// ✅ URM 测量项 6
|
|
|
- Future<void> getSRLoactionVelResult(
|
|
|
- URMApplication app, DPoint startPoint) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetSRLoactionVelResult? result =
|
|
|
- await app.getSRLoactionVelResult(startPoint);
|
|
|
- if (result != null) {
|
|
|
- print("URM Measure output: ${result.output}");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.SRVel) {
|
|
|
- output.unit = VidUsUnit.mms;
|
|
|
- feature.updateFloatValue(output, result.output, output.unit);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
+ // Future<void> getSRLoactionVelResult(
|
|
|
+ // URMApplication app, DPoint startPoint) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetSRLoactionVelResult? result =
|
|
|
+ // await app.getSRLoactionVelResult(startPoint);
|
|
|
+ // if (result != null) {
|
|
|
+ // print("URM Measure output: ${result.output}");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.SRVel) {
|
|
|
+ // output.unit = VidUsUnit.mms;
|
|
|
+ // feature.updateFloatValue(output, result.output, output.unit);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
}
|
|
|
|
|
|
class URMStraightLineCal extends Calculator<StraightLine, double> {
|
|
@@ -303,188 +303,188 @@ class URMStraightLineCal extends Calculator<StraightLine, double> {
|
|
|
final startPoint = leftTopPercent.scale2Size(urmResultSize);
|
|
|
final endPoint = rightBottomPercent.scale2Size(urmResultSize);
|
|
|
|
|
|
- switch (type) {
|
|
|
- case MeasureTypes.SRCurvature:
|
|
|
- await getSRCurvatureResult(urmApplication, startPoint, endPoint);
|
|
|
- break;
|
|
|
- case MeasureTypes.URMDensityMeasure:
|
|
|
- await getURMDenMeasureResult(urmApplication, startPoint, endPoint);
|
|
|
- break;
|
|
|
- case MeasureTypes.URMVesselMeasure:
|
|
|
- final feature = ref.feature!;
|
|
|
- final viewport = feature.hostVisualArea!.viewport!;
|
|
|
- final p1 = feature.startPoint;
|
|
|
- final p2 = feature.endPoint;
|
|
|
- final pp1 = viewport.convert(p1);
|
|
|
- final pp2 = viewport.convert(p2);
|
|
|
- final cmlength = (pp2 - pp1).length.abs();
|
|
|
- await getURMVessMeasureResult(
|
|
|
- urmApplication, startPoint, endPoint, cmlength);
|
|
|
- break;
|
|
|
- default:
|
|
|
- }
|
|
|
+ // switch (type) {
|
|
|
+ // case MeasureTypes.SRCurvature:
|
|
|
+ // await getSRCurvatureResult(urmApplication, startPoint, endPoint);
|
|
|
+ // break;
|
|
|
+ // case MeasureTypes.URMDensityMeasure:
|
|
|
+ // await getURMDenMeasureResult(urmApplication, startPoint, endPoint);
|
|
|
+ // break;
|
|
|
+ // case MeasureTypes.URMVesselMeasure:
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // final viewport = feature.hostVisualArea!.viewport!;
|
|
|
+ // final p1 = feature.startPoint;
|
|
|
+ // final p2 = feature.endPoint;
|
|
|
+ // final pp1 = viewport.convert(p1);
|
|
|
+ // final pp2 = viewport.convert(p2);
|
|
|
+ // final cmlength = (pp2 - pp1).length.abs();
|
|
|
+ // await getURMVessMeasureResult(
|
|
|
+ // urmApplication, startPoint, endPoint, cmlength);
|
|
|
+ // break;
|
|
|
+ // default:
|
|
|
+ // }
|
|
|
} catch (e) {
|
|
|
logger.e('URM Measure error: $e');
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // ✅ URM 测量项 1
|
|
|
- Future<void> getSRCurvatureResult(
|
|
|
- URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetSRCurvatureResult? result =
|
|
|
- await app.getSRCurvatureResult(startPoint, endPoint);
|
|
|
- if (result != null) {
|
|
|
- print(
|
|
|
- "URM Measure curvature: ${result.curvature} nums: ${result.outPointsNum}");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.SRCurvature) {
|
|
|
- output.unit = VidUsUnit.None;
|
|
|
- feature.updateFloatValue(output, result.curvature, output.unit);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
-
|
|
|
- //✅ URM 测量项 8
|
|
|
- Future<void> getURMDenMeasureResult(
|
|
|
- URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetURMDenMeasureResult? result =
|
|
|
- await app.getURMDenMeasureResult(startPoint, endPoint);
|
|
|
- if (result != null) {
|
|
|
- print(
|
|
|
- "URM Measure inMaxDensity: ${result.inMaxDensity} inMeanDensity: ${result.inMeanDensity}");
|
|
|
- // description = "${(result.inMaxDensity).toStringAsFixed(2)}mm/s ...";
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.URMDenROI) {
|
|
|
- output.unit = VidUsUnit.percent;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.roiDen * 100, VidUsUnit.percent);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.URMDenFractalDim) {
|
|
|
- output.unit = VidUsUnit.None;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.roiFractalDim, VidUsUnit.None);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.URMDenMax) {
|
|
|
- output.unit = VidUsUnit.None;
|
|
|
- feature.updateFloatValue(output, result.maxDensity, VidUsUnit.None);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.URMDenMin) {
|
|
|
- output.unit = VidUsUnit.None;
|
|
|
- feature.updateFloatValue(output, result.minDensity, VidUsUnit.None);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.URMDenMean) {
|
|
|
- output.unit = VidUsUnit.None;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.meanDensity, VidUsUnit.None);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.URMDenStd) {
|
|
|
- output.unit = VidUsUnit.None;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, sqrt(result.varianceDensity), VidUsUnit.None);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.Area) {
|
|
|
- output.unit = VidUsUnit.cm2;
|
|
|
- feature.updateFloatValue(output, result.roiArea, VidUsUnit.cm2);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
-
|
|
|
- //✅ URM 测量项 10
|
|
|
- Future<void> getURMVessMeasureResult(URMApplication app, DPoint startPoint,
|
|
|
- DPoint endPoint, double cmlength) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetUrmVessMeasureResult? result =
|
|
|
- await app.getURMVessMeasureResult(startPoint, endPoint, cmlength);
|
|
|
- if (result != null) {
|
|
|
- app.onUpdateChart?.call(
|
|
|
- URMChartParams(
|
|
|
- cmlength: cmlength,
|
|
|
- minPointIndex: result.minPos,
|
|
|
- maxPointIndex: result.maxPos,
|
|
|
- points: convertPoints(result.outputPoints),
|
|
|
- ),
|
|
|
- );
|
|
|
- print(
|
|
|
- "URM Measure inMaxDensity: ${result.maxVessDiameter} inMeanDensity: ${result.meanVessDistacne}");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.MaxVessDistance) {
|
|
|
- output.unit = VidUsUnit.mm;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.maxVessDistance, VidUsUnit.mm);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.MinVessDistance) {
|
|
|
- output.unit = VidUsUnit.mm;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.minVessDistance, VidUsUnit.mm);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.MeanVessDistacne) {
|
|
|
- output.unit = VidUsUnit.mm;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.meanVessDistacne, VidUsUnit.mm);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.StdVessDistance) {
|
|
|
- output.unit = VidUsUnit.mm;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, sqrt(result.varianceVessDistance), VidUsUnit.mm);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.MaxVessDiameter) {
|
|
|
- output.unit = VidUsUnit.mm;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.maxVessDiameter, VidUsUnit.mm);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.MinVessDiameter) {
|
|
|
- output.unit = VidUsUnit.mm;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.minVessDiameter, VidUsUnit.mm);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.MeanVessDiameter) {
|
|
|
- output.unit = VidUsUnit.mm;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, result.meanVessDiameter, VidUsUnit.mm);
|
|
|
- }
|
|
|
- if (output.name == MeasureTerms.StdVessDiameter) {
|
|
|
- output.unit = VidUsUnit.mm;
|
|
|
- feature.updateFloatValue(
|
|
|
- output, sqrt(result.varianceVessDiameter), VidUsUnit.mm);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
+ // // ✅ URM 测量项 1
|
|
|
+ // Future<void> getSRCurvatureResult(
|
|
|
+ // URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetSRCurvatureResult? result =
|
|
|
+ // await app.getSRCurvatureResult(startPoint, endPoint);
|
|
|
+ // if (result != null) {
|
|
|
+ // print(
|
|
|
+ // "URM Measure curvature: ${result.curvature} nums: ${result.outPointsNum}");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.SRCurvature) {
|
|
|
+ // output.unit = VidUsUnit.None;
|
|
|
+ // feature.updateFloatValue(output, result.curvature, output.unit);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //✅ URM 测量项 8
|
|
|
+ // Future<void> getURMDenMeasureResult(
|
|
|
+ // URMApplication app, DPoint startPoint, DPoint endPoint) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetURMDenMeasureResult? result =
|
|
|
+ // await app.getURMDenMeasureResult(startPoint, endPoint);
|
|
|
+ // if (result != null) {
|
|
|
+ // print(
|
|
|
+ // "URM Measure inMaxDensity: ${result.inMaxDensity} inMeanDensity: ${result.inMeanDensity}");
|
|
|
+ // // description = "${(result.inMaxDensity).toStringAsFixed(2)}mm/s ...";
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.URMDenROI) {
|
|
|
+ // output.unit = VidUsUnit.percent;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.roiDen * 100, VidUsUnit.percent);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.URMDenFractalDim) {
|
|
|
+ // output.unit = VidUsUnit.None;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.roiFractalDim, VidUsUnit.None);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.URMDenMax) {
|
|
|
+ // output.unit = VidUsUnit.None;
|
|
|
+ // feature.updateFloatValue(output, result.maxDensity, VidUsUnit.None);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.URMDenMin) {
|
|
|
+ // output.unit = VidUsUnit.None;
|
|
|
+ // feature.updateFloatValue(output, result.minDensity, VidUsUnit.None);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.URMDenMean) {
|
|
|
+ // output.unit = VidUsUnit.None;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.meanDensity, VidUsUnit.None);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.URMDenStd) {
|
|
|
+ // output.unit = VidUsUnit.None;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, sqrt(result.varianceDensity), VidUsUnit.None);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.Area) {
|
|
|
+ // output.unit = VidUsUnit.cm2;
|
|
|
+ // feature.updateFloatValue(output, result.roiArea, VidUsUnit.cm2);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //✅ URM 测量项 10
|
|
|
+ // Future<void> getURMVessMeasureResult(URMApplication app, DPoint startPoint,
|
|
|
+ // DPoint endPoint, double cmlength) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetUrmVessMeasureResult? result =
|
|
|
+ // await app.getURMVessMeasureResult(startPoint, endPoint, cmlength);
|
|
|
+ // if (result != null) {
|
|
|
+ // app.onUpdateChart?.call(
|
|
|
+ // URMChartParams(
|
|
|
+ // cmlength: cmlength,
|
|
|
+ // minPointIndex: result.minPos,
|
|
|
+ // maxPointIndex: result.maxPos,
|
|
|
+ // points: convertPoints(result.outputPoints),
|
|
|
+ // ),
|
|
|
+ // );
|
|
|
+ // print(
|
|
|
+ // "URM Measure inMaxDensity: ${result.maxVessDiameter} inMeanDensity: ${result.meanVessDistacne}");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.MaxVessDistance) {
|
|
|
+ // output.unit = VidUsUnit.mm;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.maxVessDistance, VidUsUnit.mm);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.MinVessDistance) {
|
|
|
+ // output.unit = VidUsUnit.mm;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.minVessDistance, VidUsUnit.mm);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.MeanVessDistacne) {
|
|
|
+ // output.unit = VidUsUnit.mm;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.meanVessDistacne, VidUsUnit.mm);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.StdVessDistance) {
|
|
|
+ // output.unit = VidUsUnit.mm;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, sqrt(result.varianceVessDistance), VidUsUnit.mm);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.MaxVessDiameter) {
|
|
|
+ // output.unit = VidUsUnit.mm;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.maxVessDiameter, VidUsUnit.mm);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.MinVessDiameter) {
|
|
|
+ // output.unit = VidUsUnit.mm;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.minVessDiameter, VidUsUnit.mm);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.MeanVessDiameter) {
|
|
|
+ // output.unit = VidUsUnit.mm;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, result.meanVessDiameter, VidUsUnit.mm);
|
|
|
+ // }
|
|
|
+ // if (output.name == MeasureTerms.StdVessDiameter) {
|
|
|
+ // output.unit = VidUsUnit.mm;
|
|
|
+ // feature.updateFloatValue(
|
|
|
+ // output, sqrt(result.varianceVessDiameter), VidUsUnit.mm);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
|
|
|
List<Point> convertPoints(List<UrmPoint>? points) {
|
|
|
if (points == null) return [];
|
|
@@ -523,76 +523,76 @@ class URMTraceCal extends Calculator<AreaItemAbstract, double> {
|
|
|
final List<DPoint> points =
|
|
|
feature.innerPoints.map((e) => e.scale2Size(urmResultSize)).toList();
|
|
|
|
|
|
- switch (type) {
|
|
|
- case MeasureTypes.SRTraceDensity:
|
|
|
- await getSRTraceVelResult(urmApplication, convertPoints(points));
|
|
|
- break;
|
|
|
- case MeasureTypes.SRTraceFractalDim:
|
|
|
- await getSRTraceFractalDimResult(
|
|
|
- urmApplication, convertPoints(points));
|
|
|
- break;
|
|
|
- default:
|
|
|
- }
|
|
|
+ // switch (type) {
|
|
|
+ // case MeasureTypes.SRTraceDensity:
|
|
|
+ // await getSRTraceVelResult(urmApplication, convertPoints(points));
|
|
|
+ // break;
|
|
|
+ // case MeasureTypes.SRTraceFractalDim:
|
|
|
+ // await getSRTraceFractalDimResult(
|
|
|
+ // urmApplication, convertPoints(points));
|
|
|
+ // break;
|
|
|
+ // default:
|
|
|
+ // }
|
|
|
} catch (e) {
|
|
|
logger.e('URM Measure error: $e');
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //✅ URM 测量项 4
|
|
|
- Future<void> getSRTraceVelResult(
|
|
|
- URMApplication app, List<UrmPoint> points) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetSRTraceVelResult? result = await app.getSRTraceVelResult(points);
|
|
|
- if (result != null) {
|
|
|
- print("URM Measure output: ${result.output} ");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.URMDenROI) {
|
|
|
- output.unit = VidUsUnit.percent;
|
|
|
- feature.updateFloatValue(output, result.output, output.unit);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
-
|
|
|
- //✅ URM 测量项 5
|
|
|
- Future<void> getSRTraceFractalDimResult(
|
|
|
- URMApplication app, List<UrmPoint> points) async {
|
|
|
- String description = "URM\n Measuring";
|
|
|
- try {
|
|
|
- GetSRTraceFractalDimResult? result =
|
|
|
- await app.getSRTraceFractalDimResult(points);
|
|
|
- if (result != null) {
|
|
|
- print("URM Measure output: ${result.output} ");
|
|
|
- final feature = ref.feature!;
|
|
|
- for (var output in ref.meta.outputs) {
|
|
|
- if (output.name == MeasureTerms.URMDenFractalDim) {
|
|
|
- output.unit = VidUsUnit.None;
|
|
|
- feature.updateFloatValue(output, result.output, output.unit);
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- throw Exception("URM Measure API error");
|
|
|
- }
|
|
|
- } catch (e) {
|
|
|
- description = " ";
|
|
|
- updateStringValue(description);
|
|
|
-
|
|
|
- return;
|
|
|
- }
|
|
|
- ref.application.updateRenderReady.emit(this, null);
|
|
|
- }
|
|
|
+ // //✅ URM 测量项 4
|
|
|
+ // Future<void> getSRTraceVelResult(
|
|
|
+ // URMApplication app, List<UrmPoint> points) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetSRTraceVelResult? result = await app.getSRTraceVelResult(points);
|
|
|
+ // if (result != null) {
|
|
|
+ // print("URM Measure output: ${result.output} ");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.URMDenROI) {
|
|
|
+ // output.unit = VidUsUnit.percent;
|
|
|
+ // feature.updateFloatValue(output, result.output, output.unit);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //✅ URM 测量项 5
|
|
|
+ // Future<void> getSRTraceFractalDimResult(
|
|
|
+ // URMApplication app, List<UrmPoint> points) async {
|
|
|
+ // String description = "URM\n Measuring";
|
|
|
+ // try {
|
|
|
+ // GetSRTraceFractalDimResult? result =
|
|
|
+ // await app.getSRTraceFractalDimResult(points);
|
|
|
+ // if (result != null) {
|
|
|
+ // print("URM Measure output: ${result.output} ");
|
|
|
+ // final feature = ref.feature!;
|
|
|
+ // for (var output in ref.meta.outputs) {
|
|
|
+ // if (output.name == MeasureTerms.URMDenFractalDim) {
|
|
|
+ // output.unit = VidUsUnit.None;
|
|
|
+ // feature.updateFloatValue(output, result.output, output.unit);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // } else {
|
|
|
+ // throw Exception("URM Measure API error");
|
|
|
+ // }
|
|
|
+ // } catch (e) {
|
|
|
+ // description = " ";
|
|
|
+ // updateStringValue(description);
|
|
|
+
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // ref.application.updateRenderReady.emit(this, null);
|
|
|
+ // }
|
|
|
|
|
|
List<UrmPoint> convertPoints(List<DPoint> points) {
|
|
|
List<UrmPoint> urmPoints = [];
|