Код: Выделить всё
namespace CropboxUtil
{
[Transaction(TransactionMode.Manual)]
internal static class ViewUtility
{
public static void CropToBoundingBox(this View view, short clearance = 5)
{
Document document = view.Document;
using (var transaction = new Transaction(document))
{
transaction.Start("Visual Coordinate Grid: CropToBoundingBox");
BoundingBoxXYZ elementsBoundingBox = view.GetBoundingBoxOfElements();
if (elementsBoundingBox != null)
{
view.CropBoxActive = true;
view.CropBoxVisible = true;
view.CropBox = elementsBoundingBox;
transaction.Commit();
}
else
{
TaskDialog.Show("Error!", "Não foi possível definir os limites dos elementos!");
transaction.RollBack();
}
}
}
public static BoundingBoxXYZ GetBoundingBoxOfElements(this View view)
{
List elements = view.GetElements();
try
{
double maxX = elements.Max(e => e.get_BoundingBox(view).Max.X);
double maxY = elements.Max(e => e.get_BoundingBox(view).Max.Y);
double maxZ = elements.Max(e => e.get_BoundingBox(view).Max.Z);
double minX = elements.Min(e => e.get_BoundingBox(view).Min.X);
double minY = elements.Min(e => e.get_BoundingBox(view).Min.Y);
double minZ = elements.Min(e => e.get_BoundingBox(view).Min.Z);
XYZ max = new XYZ(maxX, maxY, maxZ);
XYZ min = new XYZ(minX, minY, minZ);
return new BoundingBoxXYZ
{
Max = max,
Min = min,
};
}
catch (Autodesk.Revit.Exceptions.ApplicationException)
{
throw;
}
}
public static List GetElements(this View view)
{
Document document = view.Document;
Category sectionCategory = Category.GetCategory(document, BuiltInCategory.OST_Sections);
return new FilteredElementCollector(document, view.Id)
.WhereElementIsNotElementType()
.WhereElementIsViewIndependent()
.Where(e => e.CanBeHidden(view))
.Where(e => e.Category != sectionCategory)
.Cast()
.ToList();
}
}
}
Если рамка обрезки меньше ограничений объектов представления, она корректируется правильно.
/>Но если рамка обрезки больше, чем пределы объектов представления, она остается неизменной. Но это должно быть. Но его следует сжать до возможно меньшего размера, который содержит ограничения на объекты.
Есть мысли?
PS.: Параметр разрешения предназначен для использования в будущем.
Подробнее здесь: https://stackoverflow.com/questions/785 ... w-using-re
Мобильная версия