internal static GEOM[] ToArray <GEOM, ENTITY>(this ENTITY[] hosts, bool persist = true, DSGeometry context = null) where GEOM : DSGeometry where ENTITY : IGeometryEntity { if (null == hosts) { return(null); } List <GEOM> objects = new List <GEOM>(); foreach (var item in hosts) { if (null == item) { continue; } GEOM obj = DSGeometry.ToGeometry(item, persist, context) as GEOM; if (obj == null) { continue; } objects.Add(obj); } return(objects.ToArray()); }
protected override DSGeometry GetGeometryCore(out bool autodispose) { ISolidEntity solid = ShellEntity.GetSolidGeometry(); autodispose = true; return(DSGeometry.ToGeometry(solid)); }
protected override DSGeometry GetGeometryCore(out bool autodispose) { IGeometryEntity entity = MeshEntity.Geometry; autodispose = true; return(DSGeometry.ToGeometry(entity, true)); }
protected override DSGeometry GetGeometryCore(out bool autodispose) { ISurfaceEntity surf = FaceEntity.GetSurfaceGeometry(); autodispose = true; return(DSGeometry.ToGeometry(surf)); }
/// <summary> /// Extracts the geometries contained in the block reference /// </summary> /// <returns></returns> public DSGeometry[] ExtractGeometry() { List <DSGeometry> geometries = new List <DSGeometry>(); IGeometryEntity[] entities = BlockEntity.ExtractGeometry(); foreach (var entity in entities) { if (null != entity) { geometries.Add(DSGeometry.ToGeometry(entity, true, this)); } } return(geometries.ToArray()); }
/// <summary> /// /// </summary> /// <returns></returns> public DSGeometry SelectNearest(DSGeometry[] contextGeometries) { if (contextGeometries == null) { throw new System.ArgumentNullException("contextGeometries"); } IGeometryEntity[] hostentities = contextGeometries.ConvertAll(DSGeometryExtension.ToEntity <DSGeometry, IGeometryEntity>); if (hostentities == null) { throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "contextGeometries", "SelectNearest"), "contextGeometries"); } int nearestIndex = GetIndexOfNearestGeometry(hostentities, PointEntity); IGeometryEntity nearestGeom = hostentities[nearestIndex]; return(DSGeometry.ToGeometry(nearestGeom, false)); //returning one of the existing geometry, so persist is no-op. }
/// <summary> /// Creates geometry from given set of data /// </summary> /// <param name="geomType">Geometry type</param> /// <param name="data">Collection of input data to create geometry from</param> /// <returns>Collection of Geometry created using the given data</returns> public static DSGeometry[] CreateGeometryFromData(string geomType, Array data) { Func <GeometryDataSerializer, IDesignScriptEntity> reader = mSerializers.GetReader(geomType); if (reader == null) { return(null); } List <DSGeometry> geometry = new List <DSGeometry>(); GeometryDataSerializer stream = new GeometryDataSerializer(data); while (!stream.DoneReading()) { IGeometryEntity entity = reader(stream) as IGeometryEntity; geometry.Add(DSGeometry.ToGeometry(entity, true)); } return(geometry.ToArray()); }
private static GeomClass ToGeometry <GeomClass, GeomEntity>(this GeomEntity host, bool persist = false, DSGeometry context = null) where GeomClass : DSGeometry where GeomEntity : IGeometryEntity { return(DSGeometry.ToGeometry(host, persist, context) as GeomClass); }