private static ICuboidEntity CuboidByLengthsCore(ICoordinateSystemEntity contextCoordinateSystem, double length, double width, double height) { string kMethod = "Cuboid.ByLengths"; if (length.LessThanOrEqualTo(0.0)) { throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "length"), "length"); } if (height.LessThanOrEqualTo(0.0)) { throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "height"), "height"); } if (width.LessThanOrEqualTo(0.0)) { throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "width"), "width"); } if (null == contextCoordinateSystem) { throw new System.ArgumentNullException("contextCoordinateSystem"); } if (!contextCoordinateSystem.IsScaledOrtho()) { throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "Shear CoordinateSystem", kMethod)); } ICuboidEntity entity = HostFactory.Factory.CuboidByLengths(contextCoordinateSystem, length, width, height); if (null == entity) { throw new System.Exception(string.Format(Properties.Resources.OperationFailed, kMethod)); } return(entity); }
private static void AssertUniScaledOrtho(ICoordinateSystemEntity csEntity) { if (csEntity.IsUniscaledOrtho()) { return; } if (csEntity.IsScaledOrtho()) { throw new System.ArgumentException(string.Format(Properties.Resources.NotSupported, "Non Uniform Scaling", "Text")); } else { throw new System.ArgumentException(string.Format(Properties.Resources.NotSupported, "Shear Transform", "Text")); } }
internal override Geometry TransformBy(ICoordinateSystemEntity csEntity) { //Let the default code handle orthogonal transform. if (csEntity.IsScaledOrtho()) { return(base.TransformBy(csEntity)); } using (IPointEntity origin = Origin.PointEntity.CopyAndTransform(CoordinateSystem.WCS.CSEntity, csEntity) as IPointEntity) { using (IPointEntity pt = Origin.PointEntity.CopyAndTranslate(Normal.IVector) as IPointEntity) { using (IPointEntity transformPt = pt.CopyAndTransform(CoordinateSystem.WCS.CSEntity, csEntity) as IPointEntity) { Vector normal = origin.GetVectorTo(transformPt).Normalize(); return(Plane.ByOriginNormal(origin.ToPoint(false, null), normal, Size)); } } } }
private static IConeEntity CylinderByRadiusHeightCore(ICoordinateSystemEntity contextCoordinateSystem, double radius, double height) { string kMethod = "Cylinder.ByRadiusHeight"; if (radius.LessThanOrEqualTo(0.0)) { throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "radius"), "radius"); } if (height.LessThanOrEqualTo(0.0)) { throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "height"), "height"); } if (null == contextCoordinateSystem) { throw new System.ArgumentNullException("contextCoordinateSystem"); } if (!contextCoordinateSystem.IsUniscaledOrtho()) { if (contextCoordinateSystem.IsScaledOrtho()) { throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "Non Uniform Scaled CoordinateSystem", kMethod)); } else { throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "Shear CoordinateSystem", kMethod)); } } IConeEntity entity = HostFactory.Factory.ConeByRadiusLength(contextCoordinateSystem, radius, radius, height); if (null == entity) { throw new System.Exception(string.Format(Properties.Resources.OperationFailed, kMethod)); } return(entity); }
private static ICuboidEntity CuboidByLengthsCore(ICoordinateSystemEntity contextCoordinateSystem, double length, double width, double height) { string kMethod = "Cuboid.ByLengths"; if (length.LessThanOrEqualTo(0.0)) throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "length"), "length"); if (height.LessThanOrEqualTo(0.0)) throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "height"), "height"); if (width.LessThanOrEqualTo(0.0)) throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "width"), "width"); if (null == contextCoordinateSystem) throw new System.ArgumentNullException("contextCoordinateSystem"); if(!contextCoordinateSystem.IsScaledOrtho()) throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "Shear CoordinateSystem", kMethod)); ICuboidEntity entity = HostFactory.Factory.CuboidByLengths(contextCoordinateSystem, length, width, height); if (null == entity) throw new System.Exception(string.Format(Properties.Resources.OperationFailed, kMethod)); return entity; }
internal override Geometry TransformBy(ICoordinateSystemEntity csEntity) { //Let the default code handle orthogonal transform. if (csEntity.IsScaledOrtho()) return base.TransformBy(csEntity); using (IPointEntity origin = Origin.PointEntity.CopyAndTransform(CoordinateSystem.WCS.CSEntity, csEntity) as IPointEntity) { using (IPointEntity pt = Origin.PointEntity.CopyAndTranslate(Normal.IVector) as IPointEntity) { using (IPointEntity transformPt = pt.CopyAndTransform(CoordinateSystem.WCS.CSEntity, csEntity) as IPointEntity) { Vector normal = origin.GetVectorTo(transformPt).Normalize(); return Plane.ByOriginNormal(origin.ToPoint(false, null), normal, Size); } } } }
private static void AssertUniScaledOrtho(ICoordinateSystemEntity csEntity) { if (csEntity.IsUniscaledOrtho()) return; if (csEntity.IsScaledOrtho()) throw new System.ArgumentException(string.Format(Properties.Resources.NotSupported, "Non Uniform Scaling", "Text")); else throw new System.ArgumentException(string.Format(Properties.Resources.NotSupported, "Shear Transform", "Text")); }
private static IConeEntity CylinderByRadiusHeightCore(ICoordinateSystemEntity contextCoordinateSystem, double radius, double height) { string kMethod = "Cylinder.ByRadiusHeight"; if (radius.LessThanOrEqualTo(0.0)) throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "radius"), "radius"); if (height.LessThanOrEqualTo(0.0)) throw new System.ArgumentException(string.Format(Properties.Resources.LessThanZero, "height"), "height"); if (null == contextCoordinateSystem) throw new System.ArgumentNullException("contextCoordinateSystem"); if (!contextCoordinateSystem.IsUniscaledOrtho()) { if(contextCoordinateSystem.IsScaledOrtho()) throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "Non Uniform Scaled CoordinateSystem", kMethod)); else throw new System.ArgumentException(string.Format(Properties.Resources.InvalidInput, "Shear CoordinateSystem", kMethod)); } IConeEntity entity = HostFactory.Factory.ConeByRadiusLength(contextCoordinateSystem, radius, radius, height); if (null == entity) throw new System.Exception(string.Format(Properties.Resources.OperationFailed, kMethod)); return entity; }