private ProgGraphicModel convertToProgGraphicModel(GeoDataGridViewModel raw, GeoDataGridViewModel[] dependROIs) { var model = assignValue(raw); /*var basicGeoType = new List<MeasureType>() { * {MeasureType.FitLine}, * {MeasureType.Line}, * {MeasureType.Point}, * {MeasureType.Circle} * }; */ //有相依的ROI var basicROIs = dependROIs; //.Where(p => basicGeoType.Contains(p.GeoType)).ToArray(); int dependROICount = basicROIs.Length; if (dependROICount > 0) { model.ROIs = new ProgGraphicModel[dependROICount]; for (int i = 0; i < dependROICount; i++) { var dependROI = basicROIs[i]; var dependItem = assignValue(dependROI); model.ROIs[i] = dependItem; } } return(model); }
private ProgGraphicModel assignValue(GeoDataGridViewModel raw) { ProgGraphicModel model = null; try { model = new ProgGraphicModel() { ID = raw.RecordID, Name = raw.Name, GeoType = raw.GeoType, RowBegin = raw.Row1, RowEnd = raw.Row2, ColBegin = raw.Col1, ColEnd = raw.Col2, StartPhi = (raw.StartPhi), EndPhi = raw.EndPhi, PointerOrder = raw.PointOrder, Distance = raw.Distance, IsExportItem = raw.IsExportItem, }; } catch (Exception ex) { Hanbo.Log.LogManager.Error(ex); } return(model); }
public ROI ConvertToProgROI(GeoDataGridViewModel raw, GeoDataGridViewModel[] dependROIs, int _circleDistanceSetting) { var model = convertToProgGraphicModel(raw, dependROIs); ROI progROI = null; switch (model.GeoType) { case MeasureType.Angle: progROI = new ROIProgAngle(model); break; case MeasureType.Circle: case MeasureType.PointCircle: progROI = new ROIProgCircle(model) { CircleDistanceSetting = _circleDistanceSetting }; break; case MeasureType.CrossPoint: progROI = new ROIProgPoint(model); break; case MeasureType.Distance: case MeasureType.DistanceX: case MeasureType.DistanceY: progROI = new ROIProgDistance(model); break; case MeasureType.SymmetryLine: progROI = new ROIProgSymmetryLine(model); break; } return(progROI); }
private void SetCoordinateSystemToolStripMenuItem_Click(object sender, EventArgs e) { var menuItem = sender as ToolStripMenuItem; var menuContext = menuItem.GetCurrentParent() as ContextMenuStrip; GeoDataGridViewModel currentModel = getContextMenuGeoDataGridViewModel(menuContext); if (currentModel != null) { var confirmText = String.Format("「{0}」 將設為參考座標?", currentModel.Name); var confirmed = MessageBox.Show(confirmText, "", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes; if (confirmed) { var isExists = _dfCoordinateBindingList.Any(p => p.ID == currentModel.RecordID); if (!isExists) { var nwCoordinate = new RefCoordinate() { ID = currentModel.RecordID, Desc = "", Name = currentModel.Name, }; _dfCoordinateBindingList.Add(nwCoordinate); CoordinateComboBox.SelectedItem = nwCoordinate; } } } }
private void GeoContextMenuStrip_Opening(object sender, CancelEventArgs e) { var pointTypes = new MeasureType[] { MeasureType.Point, MeasureType.Circle, MeasureType.PointCircle, MeasureType.CrossPoint }; var menuContext = sender as ContextMenuStrip; var name = "SetCoordinateSystemToolStripMenuItem"; GeoDataGridViewModel model = getContextMenuGeoDataGridViewModel(menuContext); if (model != null) { var menuItem = menuContext.Items[name]; //.OfType<ToolStripMenuItem>().SingleOrDefault(p => p.Name == name); var isPointType = (pointTypes.Contains(model.GeoType)); menuItem.Enabled = isPointType; } }
public static IMeasureGeoModel Resolve(GeoDataGridViewModel rawModel) { MeasureViewModel model = null; if (rawModel != null) { model = new MeasureViewModel() { Row1 = new HTuple(rawModel.Row1), Row2 = new HTuple(rawModel.Row2), Col1 = new HTuple(rawModel.Col1), Col2 = new HTuple(rawModel.Col2), Distance = new HTuple(rawModel.Distance), GeoType = rawModel.GeoType }; } return(model); }
private GeoDataGridViewModel getContextMenuGeoDataGridViewModel(ContextMenuStrip menuContext) { GeoDataGridViewModel model = null; var dgv = menuContext.SourceControl as DataGridView; if (dgv != null) { var index = dgv.CurrentRow.Index; model = _geoManager.GetAllRecord()[index]; } var tv = menuContext.SourceControl as TreeView; if (tv != null) { var node = tv.SelectedNode; model = _geoManager.GetAllRecord().SingleOrDefault(p => p.RecordID == node.Name); } return(model); }
public static ResultDisplayViewModel CreateDisplayViewModel(GeoDataGridViewModel model, bool textOnly, int circleDistanceSetting) { ResultDisplayViewModel viewModel = null; try { //init var dispXLD = new HXLDCont(); dispXLD.Dispose(); dispXLD.GenEmptyObj(); double posX = model.Col1, posY = model.Row1; string dispName = model.Name; switch (model.GeoType) { case ViewROI.MeasureType.Angle: break; case ViewROI.MeasureType.Circle: case ViewROI.MeasureType.PointCircle: var radius = model.Distance / circleDistanceSetting; dispXLD.GenCircleContourXld(model.Row1, model.Col1, radius, 0.0, 6.28318, "positive", 1.0); viewModel = new ResultDisplayViewModel() { DisplayText = dispName, PositionX = posX, PositionY = posY, }; break; case ViewROI.MeasureType.CrossPoint: case ViewROI.MeasureType.Point: dispXLD.GenCrossContourXld(model.Row1, model.Col1, 12, 0.785398); viewModel = new ResultDisplayViewModel() { DisplayText = dispName, PositionX = posX, PositionY = posY, }; break; case ViewROI.MeasureType.Distance: case ViewROI.MeasureType.DistanceX: case ViewROI.MeasureType.DistanceY: case ViewROI.MeasureType.FitLine: case ViewROI.MeasureType.Line: case ViewROI.MeasureType.SymmetryLine: var arrowXLD = new HXLDCont(); //dispXLD.GenContourPolygonXld(new double[] { model.Row1, model.Row2 }, new double[] { model.Col1, model.Col2 }); posX = (model.Col1 + model.Col2) / 2.0; posY = (model.Row1 + model.Row2) / 2.0; viewModel = new ResultDisplayViewModel() { DisplayText = dispName, PositionX = posX, PositionY = posY, FirstArrowX = model.Col1, FirstArrowY = model.Row1, SecArrowX = model.Col2, SecArrowY = model.Row2, }; break; } // if (!textOnly && viewModel != null) { viewModel.ImageXLD = dispXLD; } } catch (Exception ex) { Hanbo.Log.LogManager.Error(ex); } return(viewModel); }
public static ResultDisplayViewModel CreateDisplayViewModel(GeoDataGridViewModel model) { return(CreateDisplayViewModel(model, false)); }
/// <summary> /// 建立文字及圖形 /// </summary> /// <param name="model"></param> /// <param name="textOnly">是否只建立文字</param> /// <returns></returns> public static ResultDisplayViewModel CreateDisplayViewModel(GeoDataGridViewModel model, bool textOnly) { return(CreateDisplayViewModel(model, textOnly, 1)); }
/// <summary> /// 轉換為 工程圖 ROI /// </summary> /// <param name="raw"></param> /// <param name="dependROIs"></param> /// <returns></returns> public ROI ConvertToProgROI(GeoDataGridViewModel raw, GeoDataGridViewModel[] dependROIs) { return(ConvertToProgROI(raw, dependROIs, 1)); }