Example #1
0
        internal static Type ToType(this ObjectModelType objectType)
        {
            Type type = null;

            switch (objectType)
            {
            case ObjectModelType.Object:
                type = typeof(ObjectModel);
                break;

            case ObjectModelType.Block:
                type = typeof(BlockInstanceModel);
                break;

            case ObjectModelType.Group:
                type = typeof(ObjectGroupModel);
                break;

            default:
                break;
            }

            return(type);
        }
Example #2
0
        public static IEnumerable <RhinoObject> ExecuteQuery(RhinoDoc doc, QueryGroupModel query, ObjectModelType objectType)
        {
            // get typed collections from rhino doc, not all might be needed
            // but because we get them as IEnumerables, the performance cost should be close to none
            var objectModels = GetObjectModels(doc);

            //var blockInstanceModels = GetBlockInstanceModels(doc);
            //var objectGroupModels = GetObjectGroupModels(doc);

            switch (objectType)
            {
            case ObjectModelType.Object:
                var parameter     = ObjectModelType.Object.AsParameterExpression();
                var expression    = query.GetExpression(parameter);
                var lambda        = Expression.Lambda <Func <ObjectModel, bool> >(expression, parameter);
                var objectQueryFn = lambda.Compile();
                return(objectModels.Where(o => objectQueryFn(o)).Select(o => o.BaseObject));

            case ObjectModelType.Block:
                break;

            case ObjectModelType.Group:
                break;

            default:
                break;
            }

            return(null);
        }
Example #3
0
 internal static ParameterExpression AsParameterExpression(this ObjectModelType objectType)
 {
     return(Expression.Parameter(objectType.ToType()));
 }