示例#1
0
        public void Measure(MeasureTypeEnum measureType)
        {
            m_measureType = measureType;

            bStillMeasure = true;

            m_interactionEvents = m_inventorApplication.CommandManager.CreateInteractionEvents();
            m_Interaction_OnTerminate_Delegate = new InteractionEventsSink_OnTerminateEventHandler(InteractionEvents_OnTerminate);
            m_interactionEvents.OnTerminate   += m_Interaction_OnTerminate_Delegate;

            m_MeasureEvents = m_interactionEvents.MeasureEvents;

            m_Measure_OnMeasure_Delegate = new MeasureEventsSink_OnMeasureEventHandler(MeasureEvents_OnMeasure);
            m_MeasureEvents.OnMeasure   += m_Measure_OnMeasure_Delegate;

            m_interactionEvents.Start();

            if (m_measureType == MeasureTypeEnum.kDistanceMeasure)
            {
                m_MeasureEvents.Measure(MeasureTypeEnum.kDistanceMeasure);
            }

            do
            {
                m_inventorApplication.UserInterfaceManager.DoEvents();
            }while (bStillMeasure);

            m_interactionEvents.Stop();

            m_MeasureEvents     = null;
            m_interactionEvents = null;
        }
示例#2
0
文件: ToolBox.cs 项目: AnuoF/MapFrame
        /// <summary>
        /// 测量
        /// </summary>
        /// <param name="measureType">测量类型,有距离、面积和方位角</param>
        public void Measure(MeasureTypeEnum measureType)
        {
            ReleaseTool();   // 执行命令前,先释放上一次的工具命令

            switch (measureType)
            {
            case MeasureTypeEnum.Distance:
                currentTool = new MeasureDistance(gmapControl);
                break;

            case MeasureTypeEnum.Area:
                currentTool = new MeasureArea(gmapControl);
                break;

            case MeasureTypeEnum.Angle:
                currentTool = new MeasureAngle(gmapControl);
                break;

            default:
                break;
            }

            if (currentTool != null)
            {
                currentTool.CommondExecutedEvent += CommondExecutedEvent;
                currentTool.RunCommond();
            }
        }
示例#3
0
        private void MeasureEvents_OnMeasure(MeasureTypeEnum MeasureType, double MeasuredValue, NameValueMap Context)
        {
            string strMeasuredValue;

            if (m_measureType == MeasureTypeEnum.kDistanceMeasure)
            {
                strMeasuredValue = m_inventorApplication.ActiveDocument.UnitsOfMeasure.GetStringFromValue(MeasuredValue, UnitsTypeEnum.kDefaultDisplayLengthUnits);
                MessageBox.Show("Distance = " + strMeasuredValue, "Measure Distance");

                bStillMeasure = false;
            }
        }
        private void measureOpenButton_Click(object sender, EventArgs e)
        {
            // set measure type
            measureType = MeasureTypeEnum.OPEN;

            // set measuring flag
            isMeasuring = true;

            // disable ui
            enableUi(false);

            // start background task
            measureBackgroundWorker.RunWorkerAsync();
        }
        /// <summary>
        /// 根据XML 反序列化
        /// </summary>
        /// <param name="xmlNode"></param>
        /// <returns></returns>
        private BIFStruct UnSerializePoint(XmlNode xmlNode)
        {
            BIFStruct bif = new BIFStruct();

            int arrayNo = 0;

            int.TryParse(xmlNode.SelectSingleNode("ArrayNo").InnerText, out arrayNo);

            string pointNo = xmlNode.SelectSingleNode("PointNo").InnerText;

            double height = 0.0;

            double.TryParse(xmlNode.SelectSingleNode("Height").InnerText, out height);

            double distance = 0.0;

            double.TryParse(xmlNode.SelectSingleNode("Distance").InnerText, out distance);

            StaffTypeEnum staffType = ("Upright" == xmlNode.SelectSingleNode("StaffType").InnerText ? StaffTypeEnum.Upright
                : StaffTypeEnum.Down);

            string referNo = xmlNode.SelectSingleNode("ReferNo").InnerText;

            MeasureTypeEnum measureType = MeasureTypeEnum.I;

            switch (xmlNode.SelectSingleNode("MeasureType").InnerText)
            {
            case "B": measureType = MeasureTypeEnum.B; break;

            case "I": measureType = MeasureTypeEnum.I; break;

            case "F": measureType = MeasureTypeEnum.F; break;

            default: measureType = MeasureTypeEnum.I; break;
            }

            string isReferNo = xmlNode.SelectSingleNode("IsReferNo").InnerText;

            double elevation = 0.0;

            double.TryParse(xmlNode.SelectSingleNode("Elevation").InnerText, out elevation);

            double designElevation = 0.0;

            double.TryParse(xmlNode.SelectSingleNode("DesignElevation").InnerText, out designElevation);

            double cut = 0.0;

            double.TryParse(xmlNode.SelectSingleNode("Cut").InnerText, out cut);

            double fill = 0.0;

            double.TryParse(xmlNode.SelectSingleNode("Fill").InnerText, out fill);

            double deltaHeight = 0.0;

            double.TryParse(xmlNode.SelectSingleNode("DeltaHeight").InnerText, out deltaHeight);

            bif.ArrayNo         = arrayNo;
            bif.PointNo         = pointNo;
            bif.Height          = height;
            bif.Distance        = distance;
            bif.StaffType       = staffType;
            bif.ReferNo         = referNo;
            bif.MeasureType     = measureType;
            bif.IsReferNo       = isReferNo;
            bif.Elevation       = elevation;
            bif.DesignElevation = designElevation;
            bif.Cut             = cut;
            bif.Fill            = fill;
            bif.DeltaHeightDh   = deltaHeight;

            return(bif);
        }
        private void ExtendPort(int portNumber, long activeMarkerNumber, MeasureTypeEnum measureType, bool includeLoss)
        {
            // validate active marker number
            if (activeMarkerNumber > 0)
            {
                object err;

                double[] markerData;
                int      numberOfMarkers;

                double markerExtendedPhase;
                double markerExtendedPhaseFreq;

                double markerLogMagnitude;
                double markerLogMagnitudeFreq;

                try
                {
                    // set measurement parameter of trace 1
                    string parameter = "";
                    switch (portNumber)
                    {
                    default:
                    case 1:
                        parameter = "S11";
                        break;

                    case 2:
                        parameter = "S22";
                        break;
                    }
                    Program.vna.app.SCPI.Calculate[selectedChannel].Parameter[1].DEFine = parameter;

                    // ------------------------------------------------------------------------------------------------

                    // generate a single trigger and wait for completion
                    err = Program.vna.app.SCPI.INITiate[selectedChannel].IMMediate;
                    err = Program.vna.app.SCPI.TRIGger.SEQuence.SINGle;

                    // set trace 1 data format to expanded phase
                    Program.vna.app.SCPI.CALCulate[selectedChannel].SELected.FORMat = "UPHase";

                    // get marker data
                    markerData = Program.vna.app.SCPI.CALCulate[selectedChannel].SELected.MARKer.DATA;

                    // determine number of markers
                    numberOfMarkers = (int)markerData[0];

                    // validate number of markers
                    if (numberOfMarkers >= activeMarkerNumber)
                    {
                        // read frequency and delay values of active marker
                        markerExtendedPhaseFreq = markerData[(3 * (int)activeMarkerNumber) - 2];
                        markerExtendedPhase     = markerData[(3 * (int)activeMarkerNumber) - 1];

                        // calculate the delay
                        double markerGroupDelay = 0.0;

                        // is short being measured?
                        if (measureType == MeasureTypeEnum.SHORT)
                        {
                            // yes...
                            markerGroupDelay = -0.5 * ((markerExtendedPhase - 180) / 360) * (1 / markerExtendedPhaseFreq);
                        }
                        else
                        {
                            // no...
                            markerGroupDelay = -0.5 * (markerExtendedPhase / 360) * (1 / markerExtendedPhaseFreq);
                        }

                        // set port extension delay
                        Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].TIME = markerGroupDelay;

                        // include loss?
                        if (checkBoxCompensateForLoss.Checked == true)
                        {
                            // yes...
                            // set trace 1 data format to logarithmic magnitude
                            Program.vna.app.SCPI.CALCulate[selectedChannel].SELected.FORMat = "MLOGarithmic";

                            // read frequency and logarithmic magnitude values of active marker
                            markerData             = Program.vna.app.SCPI.CALCulate[selectedChannel].SELected.MARKer.DATA;
                            markerLogMagnitudeFreq = markerData[(3 * (int)activeMarkerNumber) - 2];
                            markerLogMagnitude     = markerData[(3 * (int)activeMarkerNumber) - 1];
                            markerLogMagnitude     = -1 * (markerLogMagnitude / 2);

                            // set port frequency and loss to measured values for point 1
                            Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].FREQuency[1]     = markerLogMagnitudeFreq;
                            Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].LOSS[1]          = markerLogMagnitude;
                            Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].INCLude[1].STATe = true;

                            // point 2 is not used
                            Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].INCLude[2].STATe = false;
                            Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].FREQuency[2]     = 1000000000;
                            Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].LOSS[2]          = 0;
                        }
                        else
                        {
                            // be sure loss compensation is disabled for this port
                            Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].INCLude[1].STATe = false;
                            Program.vna.app.SCPI.SENSe[selectedChannel].CORRection.EXTension.PORT[portNumber].INCLude[2].STATe = false;
                        }
                    }
                }
                catch
                {
                    throw;
                }
            }
        }