/// <summary>
        /// Returns the Major/Minor device class as a string.
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
#if PCL
            // PCL is missing GetFields() but it doesn't matter since the PCL is only a placeholder
            return(MinorClass.ToString());
#else
            string majorClassName = MajorClass.ToString();

            if (MajorClass != BluetoothMajorClass.Miscellaneous)
            {
                if (MinorClass == BluetoothMinorClass.Uncategorized)
                {
                    // return just the Major class
                    return(majorClassName);
                }

#if WINDOWS_PHONE_APP || NETSTANDARD1_4
                foreach (FieldInfo fi in typeof(BluetoothMinorClass).GetRuntimeFields())
#else
                foreach (FieldInfo fi in typeof(BluetoothMinorClass).GetFields())
#endif
                {
                    string minorName = fi.Name;
                    if (minorName.StartsWith(majorClassName))
                    {
                        if ((int)fi.GetValue(null) == (int)MinorClass)
                        {
                            // return the correct Minor class
                            return(minorName);
                        }
                    }
                }
            }

            // if it doesn't match a known major/minor class return the raw value
            return(RawValue.ToString("X8"));
#endif
        }
Esempio n. 2
0
        private void OnFinishedDraw()
        {
            if (this._drawTool != null && this._drawTool.GeoType == DrawType.SelectOne &&
                this._drawTool.GetSelectFeatureLayerPickResult() != null && this._drawTool.GetSelectPoint() != null)
            {
                try
                {
                    IFeatureLayer fl = this._drawTool.GetSelectFeatureLayerPickResult().FeatureLayer;
                    if (fl == null)
                    {
                        return;
                    }
                    FacilityClass facc = Dictionary3DTable.Instance.GetFacilityClassByDFFeatureClassID(fl.FeatureClassId.ToString());
                    if (facc == null || facc.Name != "PipeLine")
                    {
                        XtraMessageBox.Show("您选中的不是管线设施,请选择管线设施。", "提示");
                        return;
                    }
                    DF3DFeatureClass dffc = DF3DFeatureClassManager.Instance.GetFeatureClassByID(fl.FeatureClassId.ToString());
                    if (dffc == null || dffc.GetFeatureClass() == null)
                    {
                        return;
                    }
                    IImagePointSymbol ips = new ImagePointSymbol();
                    ips.Size      = SystemInfo.Instance.SymbolSize;
                    ips.ImageName = Path.Combine(Application.StartupPath, "..\\Resource\\Images\\POI\\accidentPoint.png");

                    IPoint intersectPoint = this._drawTool.GetSelectPoint();

                    _rPoint = d3.ObjectManager.CreateRenderPoint(intersectPoint, ips, d3.ProjectTree.RootID);
                    _rPoint.MinVisibleDistance = 499;
                    _rPoint.MaxVisibleDistance = 99999;

                    _particleEffect = d3.ObjectManager.CreateParticleEffect(d3.ProjectTree.RootID);
                    MajorClass mc = LogicDataStructureManage3D.Instance.GetMajorClassByDFFeatureClassID(fl.FeatureClassId.ToString());
                    if (mc != null)
                    {
                        this.teCarrierType.Text = mc.ToString();
                    }
                    if (mc != null && (mc.Name == "PS" || mc.Name == "GS"))
                    {
                        _particleEffect.ImageName = Path.Combine(Application.StartupPath, "..\\Resource\\Images\\ParticleEffect\\water.png");

                        _particleEffect.ParticleBillboardType = gviParticleBillboardType.gviParticleBillboardOrientedMoveDirection;
                        //_particleEffect.setTextureTileRange(8, 8, 63, 63);
                        _particleEffect.EmissionMinRate          = 1600;
                        _particleEffect.EmissionMaxRate          = 1300;
                        _particleEffect.EmissionMinAngle         = 0;
                        _particleEffect.EmissionMaxAngle         = 0.025 * Math.PI; // 改成一个圆
                        _particleEffect.EmissionMinMoveSpeed     = 25;
                        _particleEffect.EmissionMaxMoveSpeed     = 30;
                        _particleEffect.EmissionMinRotationSpeed = 0;
                        _particleEffect.EmissionMaxRotationSpeed = 0;

                        _particleEffect.ParticleMinLifeTime     = 4.5;
                        _particleEffect.ParticleMaxLifeTime     = 5.5;
                        _particleEffect.EmissionMinParticleSize = 0.2;
                        _particleEffect.EmissionMaxParticleSize = 0.25;

                        _particleEffect.EmissionMinScaleSpeed = 0;
                        _particleEffect.EmissionMaxScaleSpeed = 0;
                        _particleEffect.ParticleBirthColor    = 0xffffffff;
                        _particleEffect.ParticleDeathColor    = 0x00ffffff;
                        _particleEffect.VerticalAcceleration  = 5;
                        _particleEffect.Damping          = 0.5;
                        _particleEffect.WindAcceleration = 0;
                        _particleEffect.WindDirection    = 0;
                        IEulerAngle v3t = new EulerAngle();
                        v3t.Set(90, 45, 0);
                        _particleEffect.EmissionDirectionEulerAngle = v3t;
                    }
                    else
                    {
                        _particleEffect.ImageName             = Path.Combine(Application.StartupPath, "..\\Resource\\Images\\ParticleEffect\\smoke1.png");
                        _particleEffect.ParticleBillboardType = gviParticleBillboardType.gviParticleBillboardOrientedCamera;
                        _particleEffect.SetTextureTileRange(8, 8, 63, 63);  // 58,58位置的图有问题
                        _particleEffect.EmissionMinRate          = 20;
                        _particleEffect.EmissionMaxRate          = 30;
                        _particleEffect.EmissionMinAngle         = 0;
                        _particleEffect.EmissionMaxAngle         = 3.14 * 2.0; // 改成一个圆
                        _particleEffect.EmissionMinMoveSpeed     = 0;
                        _particleEffect.EmissionMaxMoveSpeed     = 1;
                        _particleEffect.EmissionMinRotationSpeed = -1;
                        _particleEffect.EmissionMaxRotationSpeed = 1;

                        _particleEffect.ParticleMinLifeTime     = 10;
                        _particleEffect.ParticleMaxLifeTime     = 12;
                        _particleEffect.EmissionMinParticleSize = 0.75;
                        _particleEffect.EmissionMaxParticleSize = 0.9;

                        _particleEffect.EmissionMinScaleSpeed = 1.5;
                        _particleEffect.EmissionMaxScaleSpeed = 1.85;
                        _particleEffect.ParticleBirthColor    = 0xffffffff;
                        _particleEffect.ParticleDeathColor    = 0x00ffffff;
                        _particleEffect.VerticalAcceleration  = -2;
                        _particleEffect.Damping          = 0;
                        _particleEffect.WindAcceleration = 0;
                        _particleEffect.WindDirection    = 0;
                    }
                    _particleEffect.MinVisibleDistance = 0;
                    _particleEffect.MaxVisibleDistance = 500;

                    _particleEffect.Start(-1);
                    IPoint   pttemp = (new GeometryFactoryClass()).CreateGeometry(gviGeometryType.gviGeometryPoint, gviVertexAttribute.gviVertexAttributeZ) as IPoint;
                    IVector3 v3     = new Vector3();
                    v3.Set(intersectPoint.X, intersectPoint.Y, intersectPoint.Z);
                    pttemp.Position = v3;
                    _particleEffect.SetCircleEmitter(pttemp, 0);

                    this._drawTool.End();
                }
                catch (Exception ex)
                {
                }
                finally
                {
                }
            }
        }