Example #1
0
 internal LegacyComponentMassProperty(IXDocument3D doc, IXComponent component, IMassProperty massProperty, IXUnits userUnit)
 {
     Document     = doc;
     Component    = component;
     MassProperty = massProperty;
     UserUnit     = userUnit;
 }
Example #2
0
        private static LegacyComponentMassProperty CreateComponentMassProperty(IXComponent[] comps, IXUnits units)
        {
            if (comps?.Length == 1)
            {
                var comp   = comps.First();
                var refDoc = (ISwDocument3D)comp.ReferencedDocument;

                if (!refDoc.IsCommitted)
                {
                    throw new NotLoadedMassPropertyComponentException(comp);
                }

                var massPrps = refDoc.Model.Extension.CreateMassProperty();

                //NOTE: always resolving the system units as it is requried to get units from the assembly (not the component) for the units and also by some reasons incorrect COG is returned for the user units
                massPrps.UseSystemUnits = true;

                return(new LegacyComponentMassProperty(refDoc, comp, massPrps, units));
            }
            else
            {
                throw new NotSupportedException("Only single component is supported for scope in the assembly");
            }
        }
Example #3
0
 /// <summary>
 /// Converts the time value from the system units (seconds) to user units
 /// </summary>
 /// <param name="unit">Units</param>
 /// <param name="systemValue">System value of time (seconds)</param>
 /// <returns>Equivalent user value</returns>
 public static double ConvertTimeToUserValue(this IXUnits unit, double systemValue)
 => unit.GetTimeConversionFactor() * systemValue;
Example #4
0
 /// <summary>
 /// Converts the angle value from the user unit to system units (radians)
 /// </summary>
 /// <param name="unit">Units</param>
 /// <param name="userValue">User value</param>
 /// <returns>Equivalent system value of angle (radians)</returns>
 public static double ConvertAngleToSystemValue(this IXUnits unit, double userValue)
 => unit.GetAngleConversionFactor() / userValue;
Example #5
0
 /// <summary>
 /// Gets the time conversion factor from system units (seconds) to user units
 /// </summary>
 /// <param name="unit">Units</param>
 /// <returns>Conversion factor</returns>
 public static double GetTimeConversionFactor(this IXUnits unit)
 => m_TimeConvFactor[unit.Time];
Example #6
0
 /// <summary>
 /// Gets the angle conversion factor from system units (radians) to user units
 /// </summary>
 /// <param name="unit">Units</param>
 /// <returns>Conversion factor</returns>
 public static double GetAngleConversionFactor(this IXUnits unit)
 => m_AngleConvFactor[unit.Angle];
Example #7
0
 /// <summary>
 /// Gets the mass conversion factor from system units (kilograms) to user units
 /// </summary>
 /// <param name="unit">Units</param>
 /// <returns>Conversion factor</returns>
 public static double GetMassConversionFactor(this IXUnits unit)
 => m_MassConvFactor[unit.Mass];
Example #8
0
 /// <summary>
 /// Gets the length conversion factor from system units (meters) to user units
 /// </summary>
 /// <param name="unit">Units</param>
 /// <returns>Conversion factor</returns>
 public static double GetLengthConversionFactor(this IXUnits unit)
 => m_LengthConvFactor[unit.Length];