public void AddAlertToUser(string message, string user, AlertType type, PositionClass positionClass = PositionClass.TopRight, string Timeout = "5000")
        {
            var notificationHub = GlobalHost.ConnectionManager.GetHubContext <NotificationHub>();

            if (NotificationHub.Connections.TryGetValue(user, out ConnectionHandler connId))
            {
                foreach (string s in connId.ConnectionId)
                {
                    notificationHub.Clients.Client(s).displayStatus(message, type.ToString(), Alert.GetStringValue(positionClass), Timeout);
                }
            }
        }
Esempio n. 2
0
        public override void Open(string fileName)
        {
            Close();
            sr = new StreamReader(fileName);

            this.FileName = fileName;
            iter          = new MascotGenericFormatIterator <Peak>(sr);

            string line;
            int    scan     = 1;
            long   position = 0;

            while ((line = sr.ReadLine()) != null)
            {
                if (line.StartsWith(MascotGenericFormatConstants.MSMS_SCAN_TAG))
                {
                    Match m = scanRegex.Match(line);
                    scan            = Convert.ToInt32(m.Groups[1].Value);
                    positions[scan] = new PositionClass()
                    {
                        Position = position
                    };
                }
                else if (line.StartsWith(MascotGenericFormatConstants.RETENTION_TIME_TAG))
                {
                    positions[scan].RetentionTimeInSecond = MyConvert.ToDouble(line.Substring(MascotGenericFormatConstants.RETENTION_TIME_TAG.Length + 1));
                }
                else if (line.StartsWith(MascotGenericFormatConstants.END_PEAK_LIST_TAG))
                {
                    position = StreamUtils.GetCharpos(sr);
                }
            }

            List <int> scans = new List <int>(positions.Keys);

            if (scans.Count > 0)
            {
                firstScan = scans[0];
                lastScan  = scans[scans.Count - 1];
            }
            else
            {
                firstScan = 0;
                lastScan  = -1;
            }
        }
        /// <summary>
        /// 基本消息,但不包含键盘的预处理消息(Del enter 上下左右)
        /// </summary>
        /// <param name="m"></param> 
        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_CHAR:
                    base.WndProc(ref m); // 输入      
                    //Tiptimer.Enabled = false;//时间片停转
                    string curRow = GetCaretString(0, 0);

                    if (curRow.Contains(":"))
                    { //取标号
                        curRow = curRow.Split(':')[1];
                    }
                    string[] rowInfo = curRow.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    if (rowInfo.Length != 0)
                    {//非空 且并不是操作指令刚结束 也不是按清空键
                        AutoAttribute(rowInfo);
                    }
                    SetTipFloating(GetWordPosition(), 0);  // 提示
                    return;
                case WM_LBUTTONDOWN://鼠标左键  // 打断点
                    base.WndProc(ref m);//点两次光标才有效
                    this.commandTipSet.HideALL();
                    //SetTipFloating(GetWordPosition());
                    //this.commandTipSetting1.ShowTipText(GetCaretString(0));
                    ///20090709点击不显示提示

                    //if (this.commandTipSetting1 != null)
                    //{
                    //    this.commandTipSetting1.Items.Clear();
                    //    this.commandTipSetting1.Hide();
                    //}
                    //int x = (int)m.LParam & (0xFFFF);
                    //int y = ((int)m.LParam >> 16);
                    //PositionClass maxPc = new PositionClass();
                    //maxPc.LineNo = this.LineCount - 1; // 最大行号
                    //maxPc.ColNo = 0;
                    //RectClass maxRc = (RectClass)PosFromChar(maxPc); // 最大行号的位置
                    //if (x < 25 && y <           Rc.bottom)
                    //{// 单击有效边距处
                    //    //if(slBreakPoints.ContainsKey(
                    //    PositionClass ps = (PositionClass)GetSelFromPoint(x + 25, y);  // 点击边距是获得不到位置,必须在内容里
                    //    if (alBreakPoints.Contains(ps.LineNo))
                    //    {
                    //        RemoveBreakPoint(ps.LineNo);
                    //    }
                    //    else
                    //    {
                    //        if (ps.LineNo < this.LineCount)
                    //        {
                    //            if (this.Code.editingOperator != null)
                    //            {
                    //                if (!this.Code.editingOperator[ps.LineNo].Equals("MPS") && !this.Code.editingOperator[ps.LineNo].Equals("MPP")
                    //                    && !this.Code.editingOperator[ps.LineNo].Equals("MRD")
                    //                    && !this.Code.editingOperator[ps.LineNo].Equals("ANB") && !this.Code.editingOperator[ps.LineNo].Equals("ORB"))
                    //                {
                    //                    AddBreakPoint(ps.LineNo);
                    //                }
                    //                else
                    //                {
                    //                    //CassMessageBox.CassMessageBox.Information("该位置未能插入断点!");
                    //                }
                    //            }
                    //            else
                    //            {
                    //                //CassMessageBox.CassMessageBox.Information("请先编译再新建断点!");
                    //            }
                    //            //AddBreakPoint(ps.LineNo);
                    //            //SetRunLine(ps.LineNo);
                    //        }
                    //    }
                    //}
                    break;
                case WM_NCPAINT:
                    base.WndProc(ref m);
                    //this.CreateGraphics().FillEllipse(Brushes.Red, new Rectangle(0, 0, 10, 10));
                    //SetTipFloating(GetWordPosition());
                    //GetWordPosition();
                    //this.commandTipSetting1.ShowTipText(GetCaretString(0));
                    return;
                case WM_PAINT:
                    base.WndProc(ref m);
                    foreach (int lineNo in alBreakPoints)
                    {
                        PositionClass pc = new PositionClass();
                        pc.ColNo = 0;
                        pc.LineNo = lineNo;

                        //RectClass rc = (RectClass)PosFromChar(pc);
                        //Bitmap imageBreakPoint = global::SystemConfiguration.Properties.Resources.BreakPoint;
                        //this.CreateGraphics().FillEllipse(Brushes.Red, new Rectangle(8, rc.top, 15, 15));
                        //this.CreateGraphics().DrawImage(imageBreakPoint, new Point(8, rc.top));
                        //imageBreakPoint.Dispose();
                    }
                    if (iRunLineNo > -1 && iRunLineNo < LineCount)
                    {
                        PositionClass pc = new PositionClass();
                        pc.ColNo = 0;
                        pc.LineNo = iRunLineNo;

                        //RectClass rc = (RectClass)PosFromChar(pc);
                        //Bitmap imageBreakPoint = global::SystemConfiguration.Properties.Resources.RUN;
                        //if (alBreakPoints.Contains(iRunLineNo))
                        //imageBreakPoint = global::SystemConfiguration.Properties.Resources.Break_Run;
                        //this.CreateGraphics().DrawImage(imageBreakPoint, new Point(8, rc.top));
                        //imageBreakPoint.Dispose();
                    }
                    return;
                case MS_MOVE:
                    //GetChildAtPoint(Control.MousePosition);
                    //this.commandTipSet.Location = Control.MousePosition;
                    //if (Tiptimer.Enabled == false)
                    //{
                    //    Tiptimer.Start();
                    //}
                    //else
                    //{//时间片已经启动,则重启
                    //    Tiptimer.Stop();
                    //    Tiptimer.Start();
                    //}                  
                    break;
                case WM_LBUTTONMID:
                    //if (commandTipSet.Items.Count != 0)
                    //{
                        commandTipSet.HideALL();
                    //} 
                    break;
                default:
                    break;
            }

            base.WndProc(ref m);
        }
 public Player()
 {
     Position = new PositionClass();
 }
Esempio n. 5
0
        private void ShowFlowDirect(IFeatureLayerPickResult pr)
        {
            if (pr == null)
            {
                return;
            }
            IRowBuffer row    = null;
            IFdeCursor cursor = null;

            try
            {
                int fid = pr.FeatureId;
                DF3DFeatureClass dffc = DF3DFeatureClassManager.Instance.GetFeatureClassByID(pr.FeatureLayer.FeatureClassId.ToString());
                if (dffc == null)
                {
                    return;
                }
                IFeatureClass fc  = dffc.GetFeatureClass();
                FacilityClass fac = dffc.GetFacilityClass();
                if (fc == null || fac == null || fac.Name != "PipeLine")
                {
                    return;
                }
                DFDataConfig.Class.FieldInfo fi = fac.GetFieldInfoBySystemName("FlowDirect");
                if (fi == null)
                {
                    return;
                }
                IFieldInfoCollection fiCol = fc.GetFields();
                int index = fiCol.IndexOf(fi.Name);
                if (index == -1)
                {
                    return;
                }
                int indexShape = fiCol.IndexOf("Shape");

                IQueryFilter filter = new QueryFilter();
                filter.WhereClause = "oid=" + fid;
                cursor             = fc.Search(filter, false);
                row = cursor.NextRow();
                if (row == null)
                {
                    return;
                }

                IPolyline line = null;
                if (indexShape != -1 && !row.IsNull(indexShape))
                {
                    object obj = row.GetValue(indexShape);
                    if (obj != null && obj is IPolyline)
                    {
                        line = obj as IPolyline;
                    }
                }
                string flowDirectValue = "0";
                int    type            = 1;// 1表示具有流向字段;2表示从高到低
                if (!row.IsNull(index))
                {
                    flowDirectValue = row.GetValue(index).ToString();
                    if (flowDirectValue != "0" && flowDirectValue != "1")
                    {
                        flowDirectValue = "0";
                    }
                    type = 1;
                }
                else if (line != null)
                {
                    if (line.StartPoint.Z > line.EndPoint.Z)
                    {
                        flowDirectValue = "0";
                    }
                    else
                    {
                        flowDirectValue = "1";
                    }
                    type = 2;
                }
                if (line == null)
                {
                    return;
                }

                if (this._isAuth)
                {
                    #region 流向渲染1
                    FacClassReg reg = FacilityInfoService.GetFacClassRegByFeatureClassID(fc.Guid.ToString());
                    if (reg == null)
                    {
                        return;
                    }
                    TopoClass tc = FacilityInfoService.GetTopoClassByFacClassCode(reg.FacClassCode);
                    if (tc == null)
                    {
                        return;
                    }
                    FacStyleClass        style          = null;
                    List <FacStyleClass> facilityStyles = FacilityInfoService.GetFacStyleByFacClassCode(reg.FacClassCode);
                    if ((facilityStyles != null) && (facilityStyles.Count > 0))
                    {
                        style = facilityStyles[0];
                    }
                    PipeLineFac       plfac = new PipeLineFac(reg, style, row, tc);
                    IRenderModelPoint rmp   = null;
                    DrawGeometry.Ocx = DF3DApplication.Application.Current3DMapControl;
                    plfac.ShowFlowDirection(int.Parse(flowDirectValue), out rmp);
                    if (rmp != null)
                    {
                        this._listRender.Add(rmp.Guid);
                    }
                    #endregion
                }
                else
                {
                    #region 流向渲染2
                    IEulerAngle angle    = DF3DApplication.Application.Current3DMapControl.Camera.GetAimingAngles2(line.StartPoint, line.EndPoint);
                    double      dia      = 0.0;
                    string      diaField = fac.GetFieldInfoNameBySystemName("Diameter");
                    int         indexDia = fiCol.IndexOf(diaField);
                    if (indexDia != -1 && !row.IsNull(indexDia))
                    {
                        string diaStr    = row.GetValue(indexDia).ToString();
                        int    indexDia1 = diaStr.ToString().IndexOf('*');
                        if (indexDia1 != -1)
                        {
                            var dia1 = int.Parse(diaStr.ToString().Substring(0, indexDia1));
                            var dia2 = int.Parse(diaStr.ToString().Substring(indexDia1 + 1, diaStr.ToString().Length));
                            dia = ((dia1 > dia2) ? dia1 : dia2) * 0.001;
                        }
                        else
                        {
                            dia = int.Parse(diaStr) * 0.001;
                        }
                    }
                    List <IPoint> points = new List <IPoint>();
                    if (flowDirectValue == "0")
                    {
                        for (int i = 0; i < line.PointCount; i++)
                        {
                            IPoint pt = line.GetPoint(i);
                            pt.Z += dia / 2;
                            points.Add(pt);
                        }
                    }
                    else if (flowDirectValue == "1")
                    {
                        for (int i = line.PointCount - 1; i >= 0; i--)
                        {
                            IPoint pt = line.GetPoint(i);
                            pt.Z += dia / 2;
                            points.Add(pt);
                        }
                    }
                    for (int i = 0; i < points.Count - 1; i++)
                    {
                        IPoint pt1 = points[i];
                        var    pt2 = points[i + 1];

                        double delt = 0;
                        double _rate, _distance;
                        if (!(Math.Abs(dia) < 0.0000001))
                        {
                            delt = 2.0 * dia;
                            if (dia <= 0.5 && dia >= 0.3)
                            {
                                _rate     = 7 * dia;
                                _distance = 3 * dia / 0.4;
                            }
                            else if (dia < 0.3 && dia > 0.1)
                            {
                                _rate     = 12 * dia;
                                _distance = 6 * dia / 0.4;
                            }
                            else if (dia <= 0.1)
                            {
                                _rate     = 22 * dia;
                                _distance = 9 * dia / 0.4;
                            }
                            else
                            {
                                _rate     = 3.5 * dia;
                                _distance = 1.5 * dia / 0.4;
                            }
                        }
                        else
                        {
                            _rate     = 2.0;
                            _distance = 3.0;
                            //z = maxZ + 0.2;
                            delt = 0.2;
                        }
                        List <IPoint> list = DisPerseLine(pt1, pt2, _distance);
                        if (list.Count < 2)
                        {
                            return;
                        }
                        List <IPoint>    list1   = new List <IPoint>();
                        IGeometryFactory geoFact = new GeometryFactoryClass();
                        for (int j = 0; j < list.Count - 1; j++)
                        {
                            IPoint p = geoFact.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);
                            p.X = (list[j].X + list[j + 1].X) / 2;
                            p.Y = (list[j].Y + list[j + 1].Y) / 2;
                            p.Z = (list[j].Z + list[j + 1].Z) / 2;
                            list1.Add(p);
                        }

                        for (var m = 0; m < list1.Count; m++)
                        {
                            IPosition pos = new PositionClass();
                            pos.X            = list1[m].X;
                            pos.Y            = list1[m].Y;
                            pos.Altitude     = list1[m].Z + delt;
                            pos.AltitudeType = gviAltitudeType.gviAltitudeTerrainAbsolute;
                            pos.Heading      = angle.Heading;
                            pos.Tilt         = angle.Tilt;
                            pos.Roll         = angle.Roll;
                            UInt32 color;
                            if (type == 1)
                            {
                                color = 0xFFFFFF00;
                            }
                            else
                            {
                                color = 0xFF00FFFF;
                            }
                            ITerrainArrow rArrow = DF3DApplication.Application.Current3DMapControl.ObjectManager.CreateArrow(pos, 0.8 * _rate, 3, color, color, DF3DApplication.Application.Current3DMapControl.ProjectTree.RootID);
                            this._listRender.Add(rArrow.Guid);
                        }
                    }
                    #endregion
                }
            }
            catch (Exception ex)
            {
            }
            finally
            {
                if (cursor != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(cursor);
                    cursor = null;
                }
                if (row != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(row);
                    row = null;
                }
            }
        }
        public void AddAlert(string message, string CallerMethod, string CallerClass, AlertType type, Exception ex, PositionClass positionClass = PositionClass.TopRight, string Timeout = "5000")
        {
            var notificationHub = GlobalHost.ConnectionManager.GetHubContext <NotificationHub>();

            if (NotificationHub.Connections.TryGetValue(User.Identity.Name, out ConnectionHandler connId))
            {
                foreach (string s in connId.ConnectionId)
                {
                    notificationHub.Clients.Client(s).displayStatus(message, type.ToString(), Alert.GetStringValue(positionClass));
                }
            }

            log.Error($"[{CallerMethod}] {ex.Message}", ex);
        }
Esempio n. 7
0
 public void Initialize()
 {
     _position = new PositionClass();
     _target   = new PrivateObject(_position);
 }