Example #1
0
        /// <summary>
        /// Calculates the insertion rotation matrix.
        /// </summary>
        /// <param name="insertionUnits">The insertion units.</param>
        /// <returns>The insert transformation matrix.</returns>
        public Matrix3 GetTransformation(DrawingUnits insertionUnits)
        {
            double  docScale = UnitHelper.ConversionFactor(this.Block.Record.Units, insertionUnits);
            Matrix3 trans    = MathHelper.ArbitraryAxis(this.Normal);

            trans *= Matrix3.RotationZ(this.rotation * MathHelper.DegToRad);
            trans *= Matrix3.Scale(this.scale * docScale);

            return(trans);
        }
Example #2
0
 /// <summary>
 /// Initializes a new instance of the <c>BlockRecord</c> class.
 /// </summary>
 /// <param name="name">Block definition name.</param>
 public BlockRecord(string name)
     : base(DxfObjectCode.BlockRecord)
 {
     if (string.IsNullOrEmpty(name))
         throw new ArgumentNullException(nameof(name));
     this.name = name;
     this.layout = null;
     this.units = DefaultUnits;
     this.allowExploding = true;
     this.scaleUniformly = false;
     this.xData = new XDataDictionary();
 }
Example #3
0
        /// <summary>
        /// Gets the conversion factor between drawing units.
        /// </summary>
        /// <param name="from">Original drawing units.</param>
        /// <param name="to">Destination drawing units.</param>
        /// <returns>The conversion factor between the drawing units.</returns>
        public static double ConversionFactor(DrawingUnits from, DrawingUnits to)
        {
            if (from == DrawingUnits.Unitless || to == DrawingUnits.Unitless)
            {
                return(1.0);
            }

            decimal factor1 = (decimal)UnitFactors[(int)from];
            decimal factor2 = (decimal)UnitFactors[(int)to];

            return((double)(factor1 / factor2));
        }
Example #4
0
 /// <summary>
 /// Initializes a new instance of the <c>BlockRecord</c> class.
 /// </summary>
 /// <param name="name">Block definition name.</param>
 internal BlockRecord(string name)
     : base(DxfObjectCode.BlockRecord)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw new ArgumentNullException(nameof(name));
     }
     this.name           = name;
     this.layout         = null;
     this.units          = DefaultUnits;
     this.allowExploding = true;
     this.scaleUniformly = false;
 }
Example #5
0
 /// <summary>
 /// Initializes a new instance of the <c>BlockRecord</c> class.
 /// </summary>
 /// <param name="name">Block definition name.</param>
 public BlockRecord(string name)
     : base(DxfObjectCode.BlockRecord)
 {
     if (string.IsNullOrEmpty(name))
     {
         throw (new ArgumentNullException("name"));
     }
     this.name           = name;
     this.layout         = null;
     this.units          = DefaultUnits;
     this.allowExploding = true;
     this.scaleUniformly = false;
     this.xData          = new XDataDictionary();
     AddUnitsXData();
 }
Example #6
0
        /// <summary>
        /// Gets the conversion factor between image and drawing units.
        /// </summary>
        /// <param name="from">Original image units.</param>
        /// <param name="to">Destination drawing units.</param>
        /// <returns>The conversion factor between the units.</returns>
        public static double ConversionFactor(ImageUnits from, DrawingUnits to)
        {
            // more on the dxf format none sense, they don't even use the same integers for the drawing and the image units
            int rasterUnits = 0;

            switch (from)
            {
            case ImageUnits.Unitless:
                rasterUnits = 0;
                break;

            case ImageUnits.Millimeters:
                rasterUnits = 4;
                break;

            case ImageUnits.Centimeters:
                rasterUnits = 5;
                break;

            case ImageUnits.Meters:
                rasterUnits = 6;
                break;

            case ImageUnits.Kilometers:
                rasterUnits = 7;
                break;

            case ImageUnits.Inches:
                rasterUnits = 1;
                break;

            case ImageUnits.Feet:
                rasterUnits = 2;
                break;

            case ImageUnits.Yards:
                rasterUnits = 10;
                break;

            case ImageUnits.Miles:
                rasterUnits = 3;
                break;
            }
            return(UnitFactors[rasterUnits, (int)to]);
        }
Example #7
0
        public override void CopyFrom(DxfHandledObject from, CloneContext cloneContext)
        {
            base.CopyFrom(from, cloneContext);
            DxfBlock dxfBlock = (DxfBlock)from;

            this.blockFlags_0       = dxfBlock.blockFlags_0;
            this.blockStatusFlags_0 = dxfBlock.blockStatusFlags_0;
            this.vector3D_0         = dxfBlock.vector3D_0;
            this.string_0           = dxfBlock.string_0;
            this.string_1           = dxfBlock.string_1;
            this.string_2           = dxfBlock.string_2;
            this.BlockBegin         = (DxfBlockBegin)dxfBlock.BlockBegin.Clone(cloneContext);
            this.BlockEnd           = (DxfBlockEnd)dxfBlock.BlockEnd.Clone(cloneContext);
            if (object.ReferenceEquals((object)dxfBlock.dxfEntityCollection_0, (object)cloneContext.SourceModel.Entities))
            {
                this.method_10(cloneContext.TargetModel.Entities);
            }
            this.drawingUnits_0 = dxfBlock.drawingUnits_0;
            this.bool_0         = dxfBlock.bool_0;
            this.bool_1         = dxfBlock.bool_1;
        }
 /// <summary>
 /// Gets the conversion factor between units.
 /// </summary>
 /// <param name="from">Original value units.</param>
 /// <param name="to">Destination value units.</param>
 /// <returns>The conversion factor between the passed units.</returns>
 public static double ConversionFactor(DrawingUnits from, ImageUnits to)
 {
     return 1/ConversionFactor(to, from);
 }
Example #9
0
        /// <summary>
        /// Calculates the insertion rotation matrix.
        /// </summary>
        /// <param name="insertionUnits">The insertion units.</param>
        /// <returns>The insert rotation matrix.</returns>
        public Matrix3 GetTransformation(DrawingUnits insertionUnits)
        {
            double docScale = UnitHelper.ConversionFactor(this.Block.Record.Units, insertionUnits);
            Matrix3 trans = MathHelper.ArbitraryAxis(this.normal);
            trans *= Matrix3.RotationZ(this.rotation * MathHelper.DegToRad);
            trans *= Matrix3.Scale(this.scale * docScale);

            return trans;
        }
Example #10
0
 /// <summary>
 /// Gets the conversion factor between units.
 /// </summary>
 /// <param name="from">Original value units.</param>
 /// <param name="to">Destination value units.</param>
 /// <returns>The conversion factor between the passed units.</returns>
 public static double ConversionFactor(DrawingUnits from, ImageUnits to)
 {
     return(1 / ConversionFactor(to, from));
 }
Example #11
0
 /// <summary>
 /// Converts a value from one drawing unit to another.
 /// </summary>
 /// <param name="value">Number to convert.</param>
 /// <param name="from">Original drawing units.</param>
 /// <param name="to">Destination drawing units.</param>
 /// <returns>The converted value to the new drawing units.</returns>
 public static double ConvertUnit(double value, DrawingUnits from, DrawingUnits to)
 {
     return(value * ConversionFactor(from, to));
 }
Example #12
0
 /// <summary>
 /// Gets the conversion factor between drawing units.
 /// </summary>
 /// <param name="from">Original drawing units.</param>
 /// <param name="to">Destination drawing units.</param>
 /// <returns>The conversion factor between the drawing units.</returns>
 public static double ConversionFactor(DrawingUnits from, DrawingUnits to)
 {
     return(UnitFactors[(int)from, (int)to]);
 }
Example #13
0
 /// <summary>
 /// Initializes a new instance of the <c>BlockRecord</c> class.
 /// </summary>
 /// <param name="name">Block definition name.</param>
 public BlockRecord(string name)
     : base(name, DxfObjectCode.BlockRecord)
 {
     this.units = DrawingUnits.Unitless;
 }
 /// <summary>
 /// Gets the conversion factor between image and drawing units.
 /// </summary>
 /// <param name="from">Original image units.</param>
 /// <param name="to">Destination drawing units.</param>
 /// <returns>The conversion factor between the units.</returns>
 public static double ConversionFactor(ImageUnits from, DrawingUnits to)
 {
     // more on the dxf format none sense, they don't even use the same integers for the drawing and the image units
     int rasterUnits = 0;
     switch (from)
     {
         case ImageUnits.Unitless:
             rasterUnits = 0;
             break;
         case ImageUnits.Millimeters:
             rasterUnits = 4;
             break;
         case ImageUnits.Centimeters:
             rasterUnits = 5;
             break;
         case ImageUnits.Meters:
             rasterUnits = 6;
             break;
         case ImageUnits.Kilometers:
             rasterUnits = 7;
             break;
         case ImageUnits.Inches:
             rasterUnits = 1;
             break;
         case ImageUnits.Feet:
             rasterUnits = 2;
             break;
         case ImageUnits.Yards:
             rasterUnits = 10;
             break;
         case ImageUnits.Miles:
             rasterUnits = 3;
             break;
     }
     return UnitFactors[rasterUnits, (int)to];
 }
 /// <summary>
 /// Gets the conversion factor between drawing units.
 /// </summary>
 /// <param name="from">Original drawing units.</param>
 /// <param name="to">Destination drawing units.</param>
 /// <returns>The conversion factor between the drawing units.</returns>
 public static double ConversionFactor(DrawingUnits from, DrawingUnits to)
 {
     return UnitFactors[(int)from, (int)to];
 }
 /// <summary>
 /// Converts a value from one drawing unit to another.
 /// </summary>
 /// <param name="value">Number to convert.</param>
 /// <param name="from">Original drawing units.</param>
 /// <param name="to">Destination drawing units.</param>
 /// <returns>The converted value to the new drawing units.</returns>
 public static double ConvertUnit(double value, DrawingUnits from, DrawingUnits to)
 {
     return value * ConversionFactor(from, to);
 }
Example #17
0
 /// <summary>
 /// Gets the conversion factor between units.
 /// </summary>
 /// <param name="from">Original value units.</param>
 /// <param name="to">Destination value units.</param>
 /// <returns>The conversion factor between the passed units.</returns>
 public static double ConversionFactor(DrawingUnits from, ImageUnits to)
 {
     return(ConversionFactor(from, ImageToDrawingUnits(to)));
 }