Beispiel #1
0
        public override void ResolveReferences(Class374 modelBuilder)
        {
            base.ResolveReferences(modelBuilder);
            DxfView handledObject = (DxfView)this.HandledObject;

            if (this.ulong_2 != 0UL)
            {
                DxfUcs dxfUcs = modelBuilder.method_4 <DxfUcs>(this.ulong_2);
                if (dxfUcs != null)
                {
                    handledObject.Ucs = dxfUcs;
                }
            }
            if (this.ulong_3 == 0UL)
            {
                return;
            }
            DxfUcs dxfUcs1 = modelBuilder.method_4 <DxfUcs>(this.ulong_3);

            if (dxfUcs1 == null)
            {
                return;
            }
            handledObject.Ucs = dxfUcs1;
        }
Beispiel #2
0
        public void WriteViewWithInvalidValuesTest()
        {
            var file = new DxfFile();
            var view = new DxfView();

            view.Name = "<view>";
            file.Views.Add(view);

            // values must be positive; will be normalized to 1.0 on write
            view.ViewHeight = -1.0;       // code 40
            view.ViewWidth  = 0.0;        // code 41
            view.LensLength = double.NaN; // code 42
            VerifyFileContains(file, @"
  0
VIEW
  5
#
100
AcDbSymbolTableRecord
  2
<view>
 70
0
 40
1.0
 10
0.0
 20
0.0
 41
1.0
 11
0.0
 21
0.0
 31
1.0
 12
0.0
 22
0.0
 32
0.0
 42
1.0
");
        }
Beispiel #3
0
        public void VerifyTableItemsReportTableAsOwner()
        {
            var file = new DxfFile();
            var view = new DxfView();

            file.Views.Add(view);
            using (var ms = new MemoryStream())
            {
                file.Save(ms); // not needed, but it forces pointers to bind
            }

            // check pointer values
            Assert.NotEqual(0u, view.OwnerHandle);
            Assert.Equal(view.OwnerHandle, file.TablesSection.ViewTable.Handle);

            // check object values
            Assert.True(ReferenceEquals(view.Owner, file.TablesSection.ViewTable));
        }
Beispiel #4
0
        internal static DxfView smethod_6(CloneContext cloneContext, DxfView from)
        {
            if (from == null)
            {
                return((DxfView)null);
            }
            if (from.Name == null)
            {
                throw new Exception("Table record name is null.");
            }
            if (cloneContext.SourceModel == cloneContext.TargetModel)
            {
                return(from);
            }
            DxfView dxfView1 = (DxfView)cloneContext.GetExistingClone((IGraphCloneable)from);

            if (dxfView1 == null)
            {
                cloneContext.TargetModel.Views.TryGetValue(from.Name, out dxfView1);
            }
            if (dxfView1 == null)
            {
                switch (cloneContext.ReferenceResolutionType)
                {
                case ReferenceResolutionType.CloneMissing:
                    DxfView dxfView2 = (DxfView)from.Clone(cloneContext);
                    if (!cloneContext.CloneExact)
                    {
                        cloneContext.TargetModel.Views.Add(dxfView2);
                    }
                    dxfView1 = dxfView2;
                    break;

                case ReferenceResolutionType.FailOnMissing:
                    throw new DxfException(string.Format("Could not resolve reference to VIEW with name {0}", (object)from.Name));
                }
            }
            return(dxfView1);
        }
Beispiel #5
0
        internal static DxfTable ReadFromBuffer(DxfCodePairBufferReader buffer)
        {
            var table = new DxfViewTable();

            table.Items.Clear();
            while (buffer.ItemsRemain)
            {
                var pair = buffer.Peek();
                buffer.Advance();
                if (DxfTablesSection.IsTableEnd(pair))
                {
                    break;
                }

                if (pair.Code == 0 && pair.StringValue == DxfTable.ViewText)
                {
                    var item = DxfView.FromBuffer(buffer);
                    table.Items.Add(item);
                }
            }

            return(table);
        }
Beispiel #6
0
        internal static DxfView FromBuffer(DxfCodePairBufferReader buffer)
        {
            var item = new DxfView();
            while (buffer.ItemsRemain)
            {
                var pair = buffer.Peek();
                if (pair.Code == 0)
                {
                    break;
                }

                buffer.Advance();
                switch (pair.Code)
                {
                    case 70:
                        item.StandardFlags = (int)pair.ShortValue;
                        break;
                    case DxfCodePairGroup.GroupCodeNumber:
                        var groupName = DxfCodePairGroup.GetGroupName(pair.StringValue);
                        item.ExtensionDataGroups.Add(DxfCodePairGroup.FromBuffer(buffer, groupName));
                        break;
                    case 40:
                        item.ViewHeight = (pair.DoubleValue);
                        break;
                    case 10:
                        item.ViewCenterPoint.X = (pair.DoubleValue);
                        break;
                    case 20:
                        item.ViewCenterPoint.Y = (pair.DoubleValue);
                        break;
                    case 41:
                        item.ViewWidth = (pair.DoubleValue);
                        break;
                    case 11:
                        item.ViewDirection.X = (pair.DoubleValue);
                        break;
                    case 21:
                        item.ViewDirection.Y = (pair.DoubleValue);
                        break;
                    case 31:
                        item.ViewDirection.Z = (pair.DoubleValue);
                        break;
                    case 12:
                        item.TargetPoint.X = (pair.DoubleValue);
                        break;
                    case 22:
                        item.TargetPoint.Y = (pair.DoubleValue);
                        break;
                    case 32:
                        item.TargetPoint.Z = (pair.DoubleValue);
                        break;
                    case 42:
                        item.LensLength = (pair.DoubleValue);
                        break;
                    case 43:
                        item.FrontClippingPlane = (pair.DoubleValue);
                        break;
                    case 44:
                        item.BackClippingPlane = (pair.DoubleValue);
                        break;
                    case 50:
                        item.TwistAngle = (pair.DoubleValue);
                        break;
                    case 71:
                        item.ViewMode = (pair.ShortValue);
                        break;
                    case 281:
                        item.RenderMode = (DxfViewRenderMode)(pair.ShortValue);
                        break;
                    case 72:
                        item.IsAssociatedUCSPresent = BoolShort(pair.ShortValue);
                        break;
                    case 73:
                        item.IsCameraPlottable = BoolShort(pair.ShortValue);
                        break;
                    case 332:
                        item.BackgroundObjectPointer = UIntHandle(pair.StringValue);
                        break;
                    case 334:
                        item.SelectionObjectPointer = UIntHandle(pair.StringValue);
                        break;
                    case 348:
                        item.VisualStyleObjectPointer = UIntHandle(pair.StringValue);
                        break;
                    case 361:
                        item.SunOwnershipPointer = UIntHandle(pair.StringValue);
                        break;
                    case 110:
                        item.UCSOrigin.X = (pair.DoubleValue);
                        break;
                    case 120:
                        item.UCSOrigin.Y = (pair.DoubleValue);
                        break;
                    case 130:
                        item.UCSOrigin.Z = (pair.DoubleValue);
                        break;
                    case 111:
                        item.UCSXAxis.X = (pair.DoubleValue);
                        break;
                    case 121:
                        item.UCSXAxis.Y = (pair.DoubleValue);
                        break;
                    case 131:
                        item.UCSXAxis.Z = (pair.DoubleValue);
                        break;
                    case 112:
                        item.UCSYAxis.X = (pair.DoubleValue);
                        break;
                    case 122:
                        item.UCSYAxis.Y = (pair.DoubleValue);
                        break;
                    case 132:
                        item.UCSYAxis.Z = (pair.DoubleValue);
                        break;
                    case 79:
                        item.OrthographicViewType = (DxfOrthographicViewType)(pair.ShortValue);
                        break;
                    case 146:
                        item.UCSElevation = (pair.DoubleValue);
                        break;
                    case 345:
                        item.UCSHandle = UIntHandle(pair.StringValue);
                        break;
                    case 346:
                        item.BaseUCSHandle = UIntHandle(pair.StringValue);
                        break;
                    case (int)DxfXDataType.ApplicationName:
                        item.XData = DxfXData.FromBuffer(buffer, pair.StringValue);
                        break;
                    default:
                        item.TrySetPair(pair);
                        break;
                }
            }

            return item;
        }
Beispiel #7
0
 public void Visit(DxfView value)
 {
     this.dxfHandledObject_0 = (DxfHandledObject)Class906.smethod_6(this.cloneContext_0, value);
 }
Beispiel #8
0
        // For each layout, add a page to the PDF file.
        // Optionally specify a modelView (for model space only).
        // Optionally specify a layout.
        public static void AddLayoutToPdfExporter(
            PdfExporter pdfExporter, GraphicsConfig config, DxfModel model, DxfView modelView, DxfLayout layout
            )
        {
            Bounds3D    bounds;
            const float defaultMargin = 0.5f;
            float       margin        = 0f;
            PaperSize   paperSize     = null;
            bool        useModelView  = false;
            bool        emptyLayout   = false;

            if (layout == null || !layout.PaperSpace)
            {
                // Model space.
                BoundsCalculator boundsCalculator = new BoundsCalculator();
                boundsCalculator.GetBounds(model);
                bounds = boundsCalculator.Bounds;
                if (bounds.Initialized)
                {
                    if (bounds.Delta.X > bounds.Delta.Y)
                    {
                        paperSize = PaperSizes.GetPaperSize(PaperKind.A4Rotated);
                    }
                    else
                    {
                        paperSize = PaperSizes.GetPaperSize(PaperKind.A4);
                    }
                }
                else
                {
                    emptyLayout = true;
                }
                margin       = defaultMargin;
                useModelView = modelView != null;
            }
            else
            {
                // Paper space layout.
                Bounds2D plotAreaBounds = layout.GetPlotAreaBounds();
                bounds      = new Bounds3D();
                emptyLayout = !plotAreaBounds.Initialized;
                if (plotAreaBounds.Initialized)
                {
                    bounds.Update((Point3D)plotAreaBounds.Min);
                    bounds.Update((Point3D)plotAreaBounds.Max);

                    if (layout.PlotArea == PlotArea.LayoutInformation)
                    {
                        switch (layout.PlotPaperUnits)
                        {
                        case PlotPaperUnits.Millimeters:
                            paperSize = new PaperSize(Guid.NewGuid().ToString(), (int)(plotAreaBounds.Delta.X * 100d / 25.4d), (int)(plotAreaBounds.Delta.Y * 100d / 25.4d));
                            break;

                        case PlotPaperUnits.Inches:
                            paperSize = new PaperSize(Guid.NewGuid().ToString(), (int)(plotAreaBounds.Delta.X * 100d), (int)(plotAreaBounds.Delta.Y * 100d));
                            break;

                        case PlotPaperUnits.Pixels:
                            // No physical paper units. Fall back to fitting layout into a known paper size.
                            break;
                        }
                    }

                    if (paperSize == null)
                    {
                        if (bounds.Delta.X > bounds.Delta.Y)
                        {
                            paperSize = PaperSizes.GetPaperSize(PaperKind.A4Rotated);
                        }
                        else
                        {
                            paperSize = PaperSizes.GetPaperSize(PaperKind.A4);
                        }
                        margin = defaultMargin;
                    }
                }
            }

            if (!emptyLayout)
            {
                // Lengths in inches.
                float pageWidthInInches  = paperSize.Width / 100f;
                float pageHeightInInches = paperSize.Height / 100f;

                double   scaleFactor;
                Matrix4D to2DTransform;
                if (useModelView)
                {
                    to2DTransform = modelView.GetMappingTransform(
                        new Rectangle2D(
                            margin * PdfExporter.InchToPixel,
                            margin * PdfExporter.InchToPixel,
                            (pageWidthInInches - margin) * PdfExporter.InchToPixel,
                            (pageHeightInInches - margin) * PdfExporter.InchToPixel),
                        false);
                    scaleFactor = double.NaN; // Not needed for model space.
                }
                else
                {
                    to2DTransform = DxfUtil.GetScaleTransform(
                        bounds.Corner1,
                        bounds.Corner2,
                        new Point3D(bounds.Center.X, bounds.Corner2.Y, 0d),
                        new Point3D(new Vector3D(margin, margin, 0d) * PdfExporter.InchToPixel),
                        new Point3D(new Vector3D(pageWidthInInches - margin, pageHeightInInches - margin, 0d) * PdfExporter.InchToPixel),
                        new Point3D(new Vector3D(pageWidthInInches / 2d, pageHeightInInches - margin, 0d) * PdfExporter.InchToPixel),
                        out scaleFactor
                        );
                }
                if (layout == null || !layout.PaperSpace)
                {
                    pdfExporter.DrawPage(model, config, to2DTransform, paperSize);
                }
                else
                {
                    pdfExporter.DrawPage(model, config, to2DTransform, scaleFactor, layout, null, paperSize);
                }
            }
        }
Beispiel #9
0
 public Class317(DxfView view)
     : base((DxfHandledObject)view)
 {
 }