Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
Showing results for
Show only
|
Search instead for
Did you mean:
This page has been translated for your convenience with an automatic translation service. This is not an official translation and may contain errors and inaccurate translations. Autodesk does not warrant, either expressly or implied, the accuracy, reliability or completeness of the information translated by the machine translation service and will not be liable for damages or losses caused by the trust placed in the translation service.Translate
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.)
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.
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.
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.
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.
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.
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.
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/
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.
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 { }
}