Пример #1
0
        void SetUpSizeAndPrint(
            Autodesk.Revit.DB.ViewSheet vs,
            Autodesk.Revit.DB.PrintManager printManager,
            Autodesk.Revit.DB.IPrintSetting printSetting
            )
        {
            Autodesk.Revit.DB.BoundingBoxUV bbUV = vs.Outline;
            double x = UnitUtils.ConvertFromInternalUnits(
                bbUV.Max.U - bbUV.Min.U, Autodesk.Revit.DB.DisplayUnitType.DUT_MILLIMETERS);
            double y = UnitUtils.ConvertFromInternalUnits(
                bbUV.Max.V - bbUV.Min.V, Autodesk.Revit.DB.DisplayUnitType.DUT_MILLIMETERS);

            if (x == 0 || y == 0)
            {
                return;
            }

            string sheetSize = GetSheetSize(x, y, 100);

            if (x > y)
            {
                printSetting.PrintParameters.PageOrientation =
                    Autodesk.Revit.DB.PageOrientationType.Landscape;
            }
            else
            {
                printSetting.PrintParameters.PageOrientation
                    = Autodesk.Revit.DB.PageOrientationType.Portrait;
            }

            foreach (Autodesk.Revit.DB.PaperSize ps in printManager.PaperSizes)
            {
                if (ps.Name == sheetSize)
                {
                    printSetting.PrintParameters.PaperSize = ps;
                    break;
                }
            }
            Trace.Write("Selected paper sized: " + printSetting.PrintParameters.PaperSize.Name);

            using (Autodesk.Revit.DB.Transaction t = new Autodesk.Revit.DB.Transaction(vs.Document)) {
                t.Start("temp");
                printManager.PrintSetup.CurrentPrintSetting = printSetting;
                //printManager.Apply();
                printManager.PrintSetup.SaveAs("temp");
                printManager.SubmitPrint(vs);
                //vs.Print(true);
                t.RollBack();
            }
        }
Пример #2
0
        void SetUpSizeAndPrint(Autodesk.Revit.DB.ViewSheet vs,
                               Autodesk.Revit.DB.PrintManager printManager,
                               Autodesk.Revit.DB.IPrintSetting printSetting)
        {
            Autodesk.Revit.DB.BoundingBoxUV bbUV = vs.Outline;
            double x = bbUV.Max.U - bbUV.Min.U;
            double y = bbUV.Max.V - bbUV.Min.V;

            if (x == 0 || y == 0)
            {
                return;
            }

            x = Converter.ConvertFromInternalUnits(x,
                                                   Autodesk.Revit.DB.DisplayUnitType.DUT_MILLIMETERS);
            y = Converter.ConvertFromInternalUnits(y,
                                                   Autodesk.Revit.DB.DisplayUnitType.DUT_MILLIMETERS);

            Trace.Write("x = " + x + "; y = " + y);

            string sheetSize = GetSheetSize(x, y, 100);

            if (x > y)
            {
                printSetting.PrintParameters.PageOrientation =
                    Autodesk.Revit.DB.PageOrientationType.Landscape;
            }
            else
            {
                printSetting.PrintParameters.PageOrientation
                    = Autodesk.Revit.DB.PageOrientationType.Portrait;
            }

            Trace.Write("sheetSize = " + sheetSize +
                        "; PageOrientation: " + printSetting.PrintParameters.PageOrientation.ToString());

            foreach (Autodesk.Revit.DB.PaperSize ps in printManager.PaperSizes)
            {
                if (ps.Name == sheetSize)
                {
                    Trace.Write("ps.Name = " + ps.Name);
                    printSetting.PrintParameters.PaperSize = ps;
                    break;
                }
            }
            using (Autodesk.Revit.DB.Transaction t = new Autodesk.Revit.DB.Transaction(vs.Document)) {
                t.Start("temp");
                printManager.PrintToFileName =
                    System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments) + vs.Name + ".pdf";
                printManager.PrintSetup.CurrentPrintSetting = printSetting;
                printManager.PrintSetup.SaveAs("temp");
                printManager.Apply();
                vs.Print(true);
                t.RollBack();

                /*unsafe {
                 *  System.IntPtr hwnd = NativeDlls.FindWindow(null, "Сохранить PDF-файл как");
                 *  Trace.Write("hwnd = " + hwnd.ToInt64());
                 *  if (hwnd.ToInt64() > 0) {
                 *      long lResult = NativeDlls.SendMessage(hwnd, 16, 0, 0);
                 *  }
                 * }*/
            }
        }