This commit is contained in:
ShrlAlgo
2025-07-11 09:20:23 +08:00
parent c7b104f44f
commit 4d35cadb56
840 changed files with 102347 additions and 11595 deletions

View File

@@ -1,9 +1,12 @@
using System.Collections.ObjectModel;
using System.Windows;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Nice3point.Revit.Toolkit.External.Handlers;
@@ -118,32 +121,50 @@ public partial class SectionBoxControllerViewModel : ObservableObject
{
return;
}
var boundingBox = elements[0].get_BoundingBox(view3D);
var maxX = boundingBox.Max.X;
var maxY = boundingBox.Max.Y;
var maxZ = boundingBox.Max.Z;
var minX = boundingBox.Min.X;
var minY = boundingBox.Min.Y;
var minZ = boundingBox.Min.Z;
foreach (var elem in elements)
{
var box = elem.get_BoundingBox(view3D);
maxX = Math.Max(box.Max.X, maxX);
maxY = Math.Max(box.Max.Y, maxY);
maxZ = Math.Max(box.Max.Z, maxZ);
minX = Math.Min(box.Min.X, minX);
minY = Math.Min(box.Min.Y, minY);
minZ = Math.Min(box.Min.Z, minZ);
}
XYZ gmax = XYZ.Zero;
XYZ gmin = XYZ.Zero;
if (!boundingBox.Enabled)
{
MessageBox.Show("当前三维剖面框不可用", "错误");
}
doc.InvokeSub(
sub =>
{
//var boundingBox = elements[0].get_BoundingBox(view3D);
//var maxX = boundingBox.Max.X;
//var maxY = boundingBox.Max.Y;
//var maxZ = boundingBox.Max.Z;
//var minX = boundingBox.Min.X;
//var minY = boundingBox.Min.Y;
//var minZ = boundingBox.Min.Z;
//foreach (var elem in elements)
//{
// var box = elem.get_BoundingBox(view3D);
// maxX = Math.Max(box.Max.X, maxX);
// maxY = Math.Max(box.Max.Y, maxY);
// maxZ = Math.Max(box.Max.Z, maxZ);
// minX = Math.Min(box.Min.X, minX);
// minY = Math.Min(box.Min.Y, minY);
// minZ = Math.Min(box.Min.Z, minZ);
//}
var elementIds = elements.Select(e => e.Id).ToList();
var g = doc.Create.NewGroup(elementIds);
var boundingBox = g.get_BoundingBox(null);
gmax = g.get_BoundingBox(null).Max;
gmin = g.get_BoundingBox(null).Min;
sub.RollBack();
if (!boundingBox.Enabled)
{
MessageBox.Show("当前三维剖面框不可用", "错误");
}
});
//var newbox = new BoundingBoxXYZ
//{
// Max = new XYZ(maxX, maxY, maxZ),
// Min = new XYZ(minX, minY, minZ)
//};
var newbox = new BoundingBoxXYZ
{
Max = new XYZ(maxX, maxY, maxZ),
Min = new XYZ(minX, minY, minZ)
Max = gmax,
Min = gmin
};
//XYZ origin = new XYZ(0, 0, 0);
//XYZ axis = new XYZ(0, 0, 1);