Esempio n. 1
0
    protected override void GenerateConditions(IWorldState worldState)
    {
        Merchant merchant = worldState.GetMerchant(merchantId);

        conditions = new List <Condition>();
        MoneyCondition moneyCond = new MoneyCondition(buyerId, merchant.saleEntries[saleEntryIndex].price);

        conditions.Add(moneyCond);
        LocationCondition locationCond = new LocationCondition(buyerId, merchant.position);

        conditions.Add(locationCond);
    }
Esempio n. 2
0
        public void RunQuery()
        {
            // ��ȡ��ͼӦ�ó������͹��̶���
            MapApplication mapApi = HostMapApplicationServices.Application;
            ProjectModel proj = mapApi.ActiveProject;
            DrawingSet drawingSet = proj.DrawingSet;

               //������ͼ�μ��߽�
            proj.DrawingSet.ZoomExtents();

              //ʹ��LocationCondition������һ����ѯ����
            LocationCondition qryCondition  =   new LocationCondition ();
            qryCondition.LocationType  = LocationType.LocationInside ;
            qryCondition.JoinOperator = JoinOperator .OperatorAnd ;
               // ����Բ�߽�
            CircleBoundary boundary = null;

            PromptPointResult pointRes = Utility.AcadEditor.GetPoint("\nѡ��ԭ��: ");
            if (pointRes.Status == PromptStatus.OK)
            {
                Point3d point = pointRes.Value;
                PromptDistanceOptions distOptions = new PromptDistanceOptions("\nѡ��뾶: ");
                distOptions.BasePoint = point;
                distOptions.UseBasePoint = true;
                distOptions.DefaultValue = 0.0;
                PromptDoubleResult doubleRes = Utility.AcadEditor.GetDistance(distOptions);
                if (doubleRes.Status == PromptStatus.OK)
                {
                    double rad = doubleRes.Value;
                    boundary = new CircleBoundary(new Point3d(point.X, point.Y, 0.0), rad);
                }
            }
            //
            qryCondition.Boundary = boundary;
            //����һ��������֧
             QueryBranch qryBranch  =  QueryBranch.Create ();
            qryBranch.JoinOperator = JoinOperator.OperatorAnd;
            qryBranch.AppendOperand(qryCondition);
             ////ʹ��PropertyCondition������һ�����Բ�ѯ����(LWPOLYLINE)
            PropertyCondition propCondition= new PropertyCondition();
             //JoinOperator.OperatorAnd, PropertyType.EntityType, ConditionOperator.ConditionEqual, "LWPOLYLINE";
            propCondition.JoinOperator = JoinOperator.OperatorAnd ;
            propCondition.PropertyType  = PropertyType.EntityType ;
            propCondition.ConditionOperator = ConditionOperator.ConditionEqual ;
            propCondition.Value = "LWPOLYLINE";

            //	ͨ��QueryBranch�Ĺ��캯��������һ��������ѯ��֧��
            QueryBranch  subBranch  = new QueryBranch(JoinOperator.OperatorAnd);
             //	����һ�����в�ѯ�����ͷ�֧�IJ�ѯ����
            subBranch.AppendOperand(propCondition);
            qryBranch.AppendOperand(subBranch);
            //  ����һ����ѯ��
            QueryModel qryModel  = proj.CreateQuery (true);
            //	��ɲ�ѯ�Ķ��塣
            qryModel.Define (qryBranch);
            //���û���ģʽ
            qryModel.Mode = QueryType.QueryDraw;
            //�����ѯ
            qryModel.Define(qryBranch);
            //ִ�в�ѯ��
            qryModel.Run();

            Utility.AcadEditor.WriteMessage("\n ��ɲ�ѯ ��");
        }
Esempio n. 3
0
        /// <summary>
        /// Defines the query.
        /// </summary>
        /// <param name="queryModel">The query model.</param>
        /// <returns></returns>
        private bool DefineQuery(QueryModel queryModel)
        {
            //_logger.Info("Defining AutoCAD Map Query...");

            bool retVal = false;

            //_logger.Debug("Start DefineQuery");
            try
            {
                // create query branch
                //
                QueryBranch queryBranch = QueryBranch.Create();

                // create query conditions
                //
                IList <QueryCondition> queryConditions = new List <QueryCondition>();

                // location filter
                //
                if (this.UseBoundry)
                {
                    //_logger.Info("Defining AutoCAD Map Location Query...");
                    // define the window based on the users selection points
                    //
                    LocationCondition qryCondition = new LocationCondition();
                    qryCondition.JoinOperator = JoinOperator.OperatorAnd;
                    qryCondition.LocationType = this.LocationType;
                    LocationBoundary boundary = new PolygonBoundary(this.SelectionPoints);
                    qryCondition.Boundary = boundary;
                    queryBranch.AppendOperand(qryCondition);
                    queryConditions.Add(qryCondition);
                }

                // object filter
                //
                if (this.ObjectFilters.Count == 0)
                {
                    //_logger.Info("Defining AutoCAD Map Property * Query...");
                    PropertyCondition propCondition = new PropertyCondition();
                    propCondition.JoinOperator = JoinOperator.OperatorAnd;
                    propCondition.PropertyType = PropertyType.EntityType;
                    propCondition.Value        = "*";
                    queryBranch.AppendOperand(propCondition);
                    queryConditions.Add(propCondition);
                }
                else
                {
                    bool isFirstObjectType = true;
                    int  firstIndex        = 0;
                    int  lastIndex         = 0;

                    firstIndex = queryBranch.OperandCount;
                    //_logger.Info("Defining AutoCAD Map Property Query...");
                    foreach (string objectFilter in this.ObjectFilters)
                    {
                        PropertyCondition propCondition = new PropertyCondition();
                        if (isFirstObjectType == true)
                        {
                            propCondition.JoinOperator = JoinOperator.OperatorAnd;
                            isFirstObjectType          = false;
                        }
                        else
                        {
                            propCondition.JoinOperator = JoinOperator.OperatorOr;
                        }
                        propCondition.PropertyType = PropertyType.EntityType;
                        propCondition.Value        = objectFilter;
                        queryBranch.AppendOperand(propCondition);
                        queryConditions.Add(propCondition);
                    }

                    //TODO: Why does queryBranch.Group not work?
                    if (this.ObjectFilters.Count > 1)
                    {
                        lastIndex  = queryBranch.OperandCount - firstIndex;
                        lastIndex -= 1;
                        queryBranch.Group(firstIndex, lastIndex);
                    }
                }

                // block name filter
                //
                if (this.BlockNameFilters.Count > 0)
                {
                    bool isFirstBlockName = true;
                    int  firstIndex       = 0;
                    int  lastIndex        = 0;

                    firstIndex = queryBranch.OperandCount;
                    //_logger.Info("Defining AutoCAD Map Block Name Query...");
                    foreach (string blockNameFilter in this.BlockNameFilters)
                    {
                        PropertyCondition propCondition = new PropertyCondition();
                        if (isFirstBlockName == true)
                        {
                            propCondition.JoinOperator = JoinOperator.OperatorAnd;
                            isFirstBlockName           = false;
                        }
                        else
                        {
                            propCondition.JoinOperator = JoinOperator.OperatorOr;
                        }
                        propCondition.PropertyType = PropertyType.BlockName;
                        propCondition.Value        = blockNameFilter;
                        queryBranch.AppendOperand(propCondition);
                        queryConditions.Add(propCondition);
                    }

                    //TODO: Why does queryBranch.Group not work?
                    if (this.BlockNameFilters.Count > 1)
                    {
                        lastIndex  = queryBranch.OperandCount - firstIndex;
                        lastIndex -= 1;
                        queryBranch.Group(firstIndex, lastIndex);
                    }
                }

                // layer filter
                //
                foreach (string layerFilter in this.LayerFilters)
                {
                    PropertyCondition layerPropertyCondition = new PropertyCondition();
                    layerPropertyCondition.JoinOperator = JoinOperator.OperatorAnd;
                    layerPropertyCondition.PropertyType = PropertyType.Layer;
                    layerPropertyCondition.Value        = layerFilter;
                    queryBranch.AppendOperand(layerPropertyCondition);
                    queryConditions.Add(layerPropertyCondition);
                }

                // Define query
                //
                queryModel.Define(queryBranch);

                // clean up
                foreach (QueryCondition pc in queryConditions)
                {
                    pc.Dispose();
                }
                queryBranch.Dispose();

                retVal = true;
            }
            catch (System.Exception ex)
            {
                //_logger.Error("Error defining query", ex);
                throw;
                //AcadUtilities.WriteMessage("\nError defining query");
            }
            //_logger.Debug("End DefineQuery");
            return(retVal);
        }
Esempio n. 4
0
 public This CheckLocation(LocationCondition loc)
 {
     AddCondition(Condition.LocationCheck(loc));
     return(this as This);
 }
Esempio n. 5
0
 public static Condition LocationCheck(LocationCondition loc)
 {
     return(New("location_check").Set("predicate", loc));
 }