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); }
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); }
internal static ParameterExpression AsParameterExpression(this ObjectModelType objectType) { return(Expression.Parameter(objectType.ToType())); }