.NET

Reply
Distinguished Contributor spu
Distinguished Contributor
Posts: 141
Registered: ‎02-21-2007
Message 1 of 3 (1,232 Views)

Creating new Layout with A3 Paper Size

1232 Views, 2 Replies
01-23-2012 01:06 AM

Hi,

 

I want to add a new layout to drawing with paper size "A3". Please help me to do it properly. this is want i am trying with.  We had a VBA script before as shown bellow.

For Each tlAcadLayout In ThisDrawing.layouts
        If tlAcadLayout.Name = "A3" Then
            blnLayout = True
            tlCurMedia = tlAcadLayout.CanonicalMediaName
            tlConfig = tlAcadLayout.ConfigName
            oldOrg = tlAcadLayout.PlotOrigin
            Exit For
        End If
    Next
 
 With tlAcadLayout
        .RefreshPlotDeviceInfo
        .ConfigName = "None"
        .CanonicalMediaName = "ISO_A3_(420.00_x_297.00_MM)"
        .PlotRotation = ac0degrees
        .PaperUnits = acMillimeters
        .PlotOrigin = ptOrigin
        Call .GetPaperSize(wid, ht)

  End With

 

And I tried to write it to .Net as shown bellow.

 

name ="A3";
            Autodesk.AutoCAD.ApplicationServices.Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
           Autodesk.AutoCAD.EditorInput.Editor ed = doc.Editor;
            Autodesk.AutoCAD.ApplicationServices.DocumentLock doclock = doc.LockDocument();
            Autodesk.AutoCAD.DatabaseServices.Database db = doc.Database;
            Autodesk.AutoCAD.DatabaseServices.TransactionManager trm = db.TransactionManager;
            Autodesk.AutoCAD.DatabaseServices.ObjectId oLayoutObjId;
            try
            {
                using (Autodesk.AutoCAD.DatabaseServices.Transaction tr = trm.StartTransaction())
                {

                    Autodesk.AutoCAD.DatabaseServices.LayoutManager  oLayoutManager = Autodesk.AutoCAD.DatabaseServices.LayoutManager.Current;
                    try
                    {

                        oLayoutObjId = oLayoutManager.CreateLayout(name);
                        Autodesk.AutoCAD.DatabaseServices.Layout oLayout = tr.GetObject(oLayoutObjId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) as Autodesk.AutoCAD.DatabaseServices.Layout; 
                        oLayout.Initialize();
                        //ed.SwitchToPaperSpace(
                        // Get the PlotInfo from the layout
                        Autodesk.AutoCAD.PlottingServices.PlotInfo acPlInfo = new Autodesk.AutoCAD.PlottingServices.PlotInfo();
                        acPlInfo.Layout = oLayout.ObjectId;
                        // Get a copy of the PlotSettings from the layout
                        Autodesk.AutoCAD.DatabaseServices.PlotSettings acPlSet = new Autodesk.AutoCAD.DatabaseServices.PlotSettings(oLayout.ModelType);
                        acPlSet.CopyFrom(oLayout);
                        // Update the PlotConfigurationName property of the PlotSettings object
                        Autodesk.AutoCAD.DatabaseServices.PlotSettingsValidator acPlSetVdr = Autodesk.AutoCAD.DatabaseServices.PlotSettingsValidator.Current;


                        acPlSetVdr.SetPlotType(acPlSet,Autodesk.AutoCAD.DatabaseServices.PlotType.Extents);

                        acPlSetVdr.SetUseStandardScale(acPlSet, true);

                        acPlSetVdr.SetStdScaleType(acPlSet, Autodesk.AutoCAD.DatabaseServices.StdScaleType.ScaleToFit);

                        acPlSetVdr.SetPlotCentered(acPlSet, true);

                        acPlSetVdr.SetPlotPaperUnits(acPlSet, Autodesk.AutoCAD.DatabaseServices.PlotPaperUnit.Millimeters);

                      acPlSetVdr.SetPlotConfigurationName(acPlSet, "DWG To PDF.pc3", "ISO A3 (420.00 x 297.00 MM" );
                      acPlSetVdr.RefreshLists(acPlSet);
                                                   
                      oLayout.CopyFrom(acPlSet);
                        oLayout.CopyFrom(acPlSet);
                        tr.Commit();
                        // initialize the layout
                        ed.Regen();
                       
                    }
                    catch (Exception ex)
                    {
                        System.Windows.Forms.MessageBox.Show(name + " CreateNewLayout  Exception:" + ex.GetType() + "  Message:" + ex.Message);
                        tr.Abort();
                        ed.Regen();
                    }
                  
                }
               
                doclock.Dispose();

            }
            catch(Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(name +  " CreateNewLayout  Exception:" + ex.GetType() + "  Message:" + ex.Message);
            }

 It always throws exception einvalid input at acPlSetVdr.SetPlotConfigurationName(acPlSet, "DWG To PDF.pc3", "ISO A3 (420.00 x 297.00 MM" );

 

Please advice

Regards,

Shijith

Distinguished Contributor
SENL1362
Posts: 138
Registered: ‎07-20-2011
Message 2 of 3 (1,223 Views)

Re: Creating new Layout with A3 Paper Size

01-23-2012 03:09 AM in reply to: spu

Reading the source it looks you mixed the paper and modelspaces.

Layout== paperspace, therefore you have to define the new PlotSettings using

PlotSettings np = new PlotSettings(false);  //paperspace

You specified: Autodesk.AutoCAD.DatabaseServices.PlotSettings acPlSet =

new  Autodesk.AutoCAD.DatabaseServices.PlotSettings(oLayout.ModelType);

 

Switch to Layout using:

            db.TileMode = false;        //goto Paperspace if not already
            ed.SwitchToPaperSpace();    //turn PVP off

 

Don't you want to save the newly created NamedPlotStyle ?     //tr.Abort();

 

 

 

Distinguished Contributor spu
Distinguished Contributor
Posts: 141
Registered: ‎02-21-2007
Message 3 of 3 (1,220 Views)

Re: Creating new Layout with A3 Paper Size

01-23-2012 04:28 AM in reply to: spu

Thanks man that worked perfectly for me. This is my code, though not final yet may be useful for somebody latter.

 private void CreateNewLayout(string name)
        {
            Autodesk.AutoCAD.ApplicationServices.Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
           Autodesk.AutoCAD.EditorInput.Editor ed = doc.Editor;
            Autodesk.AutoCAD.ApplicationServices.DocumentLock doclock = doc.LockDocument();
            Autodesk.AutoCAD.DatabaseServices.Database db = doc.Database;
            Autodesk.AutoCAD.DatabaseServices.TransactionManager trm = db.TransactionManager;
            Autodesk.AutoCAD.DatabaseServices.ObjectId oLayoutObjId;
            try
            {
                using (Autodesk.AutoCAD.DatabaseServices.Transaction tr = trm.StartTransaction())
                {
                    Autodesk.AutoCAD.DatabaseServices.LayoutManager  oLayoutManager = Autodesk.AutoCAD.DatabaseServices.LayoutManager.Current;
                    try
                    {
                        oLayoutObjId = oLayoutManager.CreateLayout(name);
                        Autodesk.AutoCAD.DatabaseServices.Layout oLayout = tr.GetObject(oLayoutObjId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) as Autodesk.AutoCAD.DatabaseServices.Layout; 
                        oLayout.Initialize();                     
                        Autodesk.AutoCAD.PlottingServices.PlotInfo acPlInfo = new Autodesk.AutoCAD.PlottingServices.PlotInfo();
                        acPlInfo.Layout = oLayout.ObjectId;
                        // Get a copy of the PlotSettings from the layout
                      
                     //   Autodesk.AutoCAD.DatabaseServices.PlotSettings acPlSet = new Autodesk.AutoCAD.DatabaseServices.PlotSettings(oLayout.ModelType);

                        Autodesk.AutoCAD.DatabaseServices.PlotSettings acPlSet = new Autodesk.AutoCAD.DatabaseServices.PlotSettings(false);  //paperspace
  



                        acPlSet.CopyFrom(oLayout);
                        // Update the PlotConfigurationName property of the PlotSettings object
                        Autodesk.AutoCAD.DatabaseServices.PlotSettingsValidator acPlSetVdr = Autodesk.AutoCAD.DatabaseServices.PlotSettingsValidator.Current;
                        acPlSetVdr.SetPlotConfigurationName(acPlSet, "DWG to PDF.pc3", "ISO_A3_(420.00_x_297.00_MM)");
                        acPlSetVdr.SetPlotRotation(acPlSet, Autodesk.AutoCAD.DatabaseServices.PlotRotation.Degrees000);
                        acPlSetVdr.SetPlotPaperUnits(acPlSet, Autodesk.AutoCAD.DatabaseServices.PlotPaperUnit.Millimeters);
                        oLayout.CopyFrom(acPlSet);                
                        tr.Commit();
                        oLayoutManager.CurrentLayout = name;
                        db.TileMode = false;        //goto Paperspace if not already
                        ed.SwitchToPaperSpace();    //turn PVP off
                        // initialize the layout
                        ed.Regen();                       
                    }
                    catch (Exception ex)
                    {
                        System.Windows.Forms.MessageBox.Show(name + " CreateNewLayout  Exception:" + ex.GetType() + "  Message:" + ex.Message);
                        tr.Abort();
                        ed.Regen();
                    } 
                }
                doclock.Dispose();
            }
            catch(Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(name +  " CreateNewLayout  Exception:" + ex.GetType() + "  Message:" + ex.Message);
            }
        }

 

You are not logged in.

Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register

Announcements
Welcome to the new Autodesk Community!
If this is your first visit, click here to get started and make the most of the Community. Let us know what you think of the new experience in the Community Feedback Forum.

Need installation help?

Start with some of our most frequented solutions to get help installing your software.

Ask the Community