Пример #1
0
 internal LegacyComponentMassProperty(IXDocument3D doc, IXComponent component, IMassProperty massProperty, IXUnits userUnit)
 {
     Document     = doc;
     Component    = component;
     MassProperty = massProperty;
     UserUnit     = userUnit;
 }
Пример #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");
            }
        }
Пример #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;
Пример #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;
Пример #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];
Пример #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];
Пример #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];
Пример #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];