/// <summary> /// Creates a block with the given name, reference coordinate system and from the /// specified geometries /// </summary> /// <param name="blockName">the block name</param> /// <param name="referenceCoordinateSystem">the reference coordinate system</param> /// <param name="contents">the geometries contained in the block</param> /// <returns></returns> public static DSBlock FromGeometry(string blockName, DSCoordinateSystem referenceCoordinateSystem, DSGeometry[] contents) { string kMethodName = "DSBlock.FromGeometry"; if (null == referenceCoordinateSystem) { throw new ArgumentNullException("contextCoordinateSystem"); } if (string.IsNullOrEmpty(blockName)) { throw new ArgumentException(string.Format(Properties.Resources.InvalidInput, blockName, kMethodName), "blockName"); } IGeometryEntity[] hosts = contents.ConvertAll(DSGeometryExtension.ToEntity <DSGeometry, IGeometryEntity>); if (null == hosts || hosts.Length == 0) { throw new ArgumentException(string.Format(Properties.Resources.InvalidInput, "geometries", kMethodName), "geometries"); } IBlockHelper helper = HostFactory.Factory.GetBlockHelper(); if (null == helper) { throw new InvalidOperationException(string.Format(Properties.Resources.OperationFailed, kMethodName)); } if (helper.DefineBlock(referenceCoordinateSystem.CSEntity, blockName, hosts)) { return(new DSBlock(blockName)); } return(null); }