Announcements
Welcome to the Revit Ideas Board! Before posting, please read the helpful tips here. Thank you for your Ideas!
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Duplicate a sheet

Duplicate a sheet

Please add the feature to duplicate a sheet - i.e. just right-click on a sheet and go to duplicate without views (perhaps ask for a neme at that point.) 

35 Comments
Yien_Chao
Advisor
Duplicate sheet without view ... is it a empty sheet tou want?
damjanuzelac
Contributor

No, not an empty sheet - but rather one with:

 

- duplicated sheet family type already set

- duplicated sheet number (with "copy" suffix)

- duplicated sheet name (with "copy" suffix)

- position next to the duplicated sheet (because of the similar name and number)

- all the legends and schedules already on the sheet

 

I could, of course, do all this by hand, but duplicating would greatly simplify adding similar sheets. 

 

A nice bonus feature would be if Revit also asked "Would you like to also duplicate corresponding views as Dependent?"

In this case the command can just be called Duplicate sheet

 

 

Zsolt.Varga
Autodesk Support

Similar wish reported in support case by Andrew Lane´s office. 

When duplicating a sheet however, Revit could offer to duplicate the views on the sheet with a suffix/ prefix as well...

glenbob305
Advocate

 

There doesn't seem to be a good reason this isn't possible now.  Revit prevents you from doing this, but it would be so useful.  Revit would have to eliminate the prohibition on placing a view on multiple sheets to achieve this.

 

 

 

 

 

 

Tags (1)
stuart_willows
Enthusiast

I would like to duplicate sheets. This would save a lot of time and energy and would mean that I wouldn't have to re-build a sheet which wants some the same information as others.

pieter7
Advisor
beno
Contributor

How about duplicating a sheet and the views. In this case, it would create a new sheet and duplicate the views on that sheet!

 

Serious time saver!!!

bveron12
Explorer

We sort our sheets with custom shared parameters so it would be helpful it those would be copied as well. I'd love to have an option to keep the legends as well as they usually show up on a series of sheets.

gshodgson
Observer

Please allow sheets to be copied.  It makes no sense that a sheet with four Demo elevations cannot simply be copied to create the New elevation sheet.  It would be as simple as changing the phasing.  There is no reason this should be easier and faster to do in AutoCAD than in Revit.

 

Thank you.

Hi Guys,

 

Whilst this would be great within Revit, there are a couple of options already available: 

 

There are already plugins which do this for you here, most also duplicate and copy views:

https://apps.autodesk.com/RVT/en/List/Search?isAppSearch=True&searchboxstore=RVT&facet=&collection=&...

 

You could also investigate a dynamo script too if you fancied a challenge:

There is a new package that just been launched called bimorphNodes which does exactly what you're asking. More here:

https://forum.dynamobim.com/t/duplicate-sheet-and-rename/6049/7

 

susana.duarte
Advocate

Revit could allow the copy of sheets with everything but the views that it can't duplicate. Just that could be a great improvement!

m.voss.alvine
Advocate

archsmarter is another free option to copy sheets.  tons of other goodies too.

pieter7
Advisor

We use a plugin to do mass duplicating of sheets which works well, but it's a total overkill (in order of maintenance and lincense fees) to just copy one sheet. As a result, only BIM managers have that plugin installed. 

 

Often times regular users have setup a sheet for the plan of the first floor and now they need a new sheet for the second floor. It has the same legend, titleblock, shared sheet parameters, ...

 

1. We would love a simple and fast right click feature: "duplicate sheet"

 

- selects the right titleblock / sheet type

- copies all the (shared) parameters that are assigned to the sheet (we use custom parameters for project browser organization for example)

- copies the legends!!

- ignores all the views on the sheet

 

No option dialog required so it's really fast, easy and intuitive. Ctrl C / Ctrl V a sheet in the PB should trigger this command as well.

 

2. Additionally, a second more advanced feature (perhaps added in a later stage): "duplicate sheet with views":

 

This could trigger a dialog box with:

 

- an option to copy views as dependent

- an option to copy views as duplicates

- an option to copy schedules as instances

- an option to copy schedules as duplicates

- an option to copy legends as instances

- an option to copy legends as duplicates

- # of copies

 

Although a case could be made that the second option is perhaps better served by the plugin market or dynamo.

 

bra_elec
Community Visitor

Amen Pieter!  Those are all great ideas and it indicates why we want this so badly.  Yes you can create every sheet from scratch, but all those extra steps are productivity killers.

bjoern_teutriene
Collaborator

This improvement would be very important for German Revit users. In the of the Revit Wishlist 2017 in Germany it ranked #1 out of 52 wishes. You can find more information on https://www.rug-dach.de/

Viveka_CD
Autodesk Support
richard.taylor
Contributor

Check out Ideate Clone that allows you many options to duplicate a sheet and the viewports contained within that Sheet.  It will even keep views aligned.

Ideate Clone Overview Video

JOfford_13
Advocate

Here's C# code that accomplishes this.  

public static void Duplicate(this ViewSheet sheet)
{
    var doc = sheet.Document;
    var titleblockId = sheet.GetTitleblockId();
    var newSheet = ViewSheet.Create(doc, titleblockId);

    newSheet.CopyParametersFrom(sheet);

    try
    {
        newSheet.SheetNumber = sheet.SheetNumber + " Copy";
    }
    catch { }

    var viewportIds = sheet.GetAllViewports();

    foreach (var id in viewportIds)
    {
        var viewport = doc.GetElement(id) as Viewport;
        viewport.CopyTo(newSheet);
    }

    sheet.CopyFamilyInstancesTo(newSheet);
    sheet.CopyTextNotesTo(newSheet);
}
public static void CopyParametersFrom(this Element e, Element elementToCopyFrom)
{
    foreach (Parameter oldParam in elementToCopyFrom.Parameters)
    {
        if (oldParam.IsReadOnly
            || !oldParam.HasValue
            || oldParam.Definition.Name == "Name"
            || oldParam.Definition.Name == "Sheet Number"
            || oldParam.Definition.Name == "View Name")
            continue;

        // locate the new parameter (if it exists)
        var p = e.GetParameter(oldParam.Definition.Name);

        if (p != null && oldParam.StorageType == p.StorageType)
        {
            try
            {
                switch (p.StorageType)
                {
                    case StorageType.Double:
                        p.Set(oldParam.AsDouble());
                        break;
                    case StorageType.ElementId:
                        p.Set(oldParam.AsElementId());
                        break;
                    case StorageType.Integer:
                        p.Set(oldParam.AsInteger());
                        break;
                    case StorageType.String:
                        p.Set(oldParam.AsString());
                        break;
                }
            }
            catch { }
        }
    }
}

 

public static void CopyFamilyInstancesTo(this ViewSheet sheet, ViewSheet target)
{
    var doc = sheet.Document;

    var collector = new FilteredElementCollector(doc, sheet.Id);
    var annotations = collector.OfClass(typeof(FamilyInstance)).Cast<FamilyInstance>();

    foreach (var anno in annotations)
    {
        try
        {
            anno.CopyToSamePlace(() =>
            {
                return doc.Create.NewFamilyInstance(XYZ.Zero, anno.Symbol, target);
            });
        }
        catch { }
    }
}
public static void CopyToSamePlace(this Element e, Func<Element> copyMethod)
{
    var doc = e.Document;

    var view1 = doc.GetElement(e.OwnerViewId) as View;
    var bb1 = e.get_BoundingBox(view1);
    var center1 = bb1.GetCenter();

    var newElement = copyMethod();

    var view2 = doc.GetElement(newElement.OwnerViewId) as View;
    var bb2 = newElement.get_BoundingBox(view2);
    var center2 = bb2.GetCenter();

    var translation = new XYZ(center1.X - center2.X, center1.Y - center2.Y, 0);
    ElementTransformUtils.MoveElement(doc, newElement.Id, translation);
}
public static void CopyTextNotesTo(this ViewSheet sheet, ViewSheet target)
{
    var doc = sheet.Document;

    var collector = new FilteredElementCollector(doc, sheet.Id);
    var textNotes = collector.OfClass(typeof(TextNote)).Cast<TextNote>();

    foreach (var note in textNotes)
    {
        try
        {
            note.CopyToSamePlace(() =>
            {
                var tn = TextNote.Create(doc, target.Id, XYZ.Zero, note.Text, note.GetTypeId());
                tn.Width = note.Width;

                // this is required for the bounding-box calculation
                doc.Regenerate();

                return tn;
            });
        }
        catch { }
    }
}

 

public static void CopyTo(this Viewport viewport, ViewSheet to)
{
    var doc = viewport.Document;
    var view = doc.GetElement(viewport.ViewId) as View;

    try
    {
        viewport.CopyToSamePlace(() =>
        {
            var newViewId = view.Duplicate(ViewDuplicateOption.WithDetailing);
            var newView = doc.GetElement(newViewId);

            var vp = Viewport.Create(doc, to.Id, newViewId, XYZ.Zero);
            vp.CopyParametersFrom(viewport);

            return vp;
        });
    }
    catch { }
}

 

zedezd
Participant

the copy of a sheet should include

- copy the values for project parameters added to sheets (we have extra parameters for discipline, category etc)

- copy all legends (with same viewport type)

- copy all schedules

- copy all notes on sheet (textnotes, lines)...

- copy all images on sheet

 

basically as much of an identical copy as revit will allow

richard.taylor
Contributor




@zedezd wrote:

the copy of a sheet should include

- copy the values for project parameters added to sheets (we have extra parameters for discipline, category etc)

- copy all legends (with same viewport type)

- copy all schedules

- copy all notes on sheet (textnotes, lines)...

- copy all images on sheet

 

basically as much of an identical copy as revit will allow


Ideate Clone which is part of IdeateApps does everything you ask for.

 

Can't find what you're looking for? Ask the community or share your knowledge.

Submit Idea  

Autodesk Design & Make Report


Autodesk Design & Make Report