/// <summary> /// Lets you resize selected objects in a uniform manner, making them larger or smaller equally in all directions. You can also lock the scaling factor in any of the directions. /// </summary> /// <param name="entityToScale">The entity to scale.</param> /// <param name="scaleFactor">The scale value.</param> /// <param name="lockX">Locked in x if true.</param> /// <param name="lockY">Locked in y if true.</param> /// <param name="lockZ">Locked in z if true.</param> /// <param name="scaleOrigin">Objects are scaled relative to the scale origin.</param> /// <remarks></remarks> public static void ScaleUniform( IPSScalable entityToScale, double scaleFactor, bool lockX, bool lockY, bool lockZ, Geometry.Point scaleOrigin = null) { _powerSHAPE = ((PSEntity)entityToScale).PowerSHAPE; ((PSEntity)entityToScale).AddToSelection(true); _powerSHAPE.DoCommand("EDIT SCALE"); _powerSHAPE.DoCommand("UNIFORM"); _powerSHAPE.DoCommand("VALUE " + scaleFactor); if (lockX) { _powerSHAPE.DoCommand("LOCK X ON"); } else { _powerSHAPE.DoCommand("LOCK X OFF"); } if (lockY) { _powerSHAPE.DoCommand("LOCK Y ON"); } else { _powerSHAPE.DoCommand("LOCK Y OFF"); } if (lockZ) { _powerSHAPE.DoCommand("LOCK Z ON"); } else { _powerSHAPE.DoCommand("LOCK Z OFF"); } if (scaleOrigin != null) { _powerSHAPE.DoCommand("SCALEORIGIN"); _powerSHAPE.DoCommand(scaleOrigin.ToString()); } if (_powerSHAPE.Version.Major > 11) { _powerSHAPE.DoCommand("APPLY"); _powerSHAPE.DoCommand("DISMISS"); } else { _powerSHAPE.DoCommand("CANCEL"); } }
/// <summary> /// Resizes surfaces and solids according to their volume as projected on to the active workplane. /// </summary> /// <param name="entityToScale">The entity to scale.</param> /// <param name="newVolume">The new projected volume.</param> /// <param name="lockX">Locked in x if true.</param> /// <param name="lockY">Locked in y if true.</param> /// <param name="lockZ">Locked in z if true.</param> /// <param name="scaleOrigin">Objects are scaled relative to the scale origin.</param> /// <remarks></remarks> public static void ScaleProjectedVolume( IPSScalable entityToScale, double newVolume, bool lockX, bool lockY, bool lockZ, Geometry.Point scaleOrigin = null) { _powerSHAPE = ((PSEntity)entityToScale).PowerSHAPE; ((PSEntity)entityToScale).AddToSelection(true); _powerSHAPE.DoCommand("EDIT SCALE"); _powerSHAPE.DoCommand("UNIFORM"); _powerSHAPE.DoCommand("VALUE " + newVolume); if (lockX) { _powerSHAPE.DoCommand("LOCK X ON"); } else { _powerSHAPE.DoCommand("LOCK X OFF"); } if (lockY) { _powerSHAPE.DoCommand("LOCK Y ON"); } else { _powerSHAPE.DoCommand("LOCK Y OFF"); } if (lockZ) { _powerSHAPE.DoCommand("LOCK Z ON"); } else { _powerSHAPE.DoCommand("LOCK Z OFF"); } if (scaleOrigin != null) { _powerSHAPE.DoCommand("SCALEORIGIN"); _powerSHAPE.DoCommand(scaleOrigin.ToString()); } _powerSHAPE.DoCommand("APPLY"); _powerSHAPE.DoCommand("DISMISS"); }