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);
        }
Пример #4
0
        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;
                    }
                }
            }
        }
Пример #5
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
 public static ResultDisplayViewModel CreateDisplayViewModel(GeoDataGridViewModel model)
 {
     return(CreateDisplayViewModel(model, false));
 }
Пример #10
0
 /// <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));
 }