将视角调整到标准俯视图视角
This commit is contained in:
parent
a2018576e5
commit
e0d598a070
@ -17,6 +17,11 @@ namespace NavisworksTransport.Utils
|
||||
/// </summary>
|
||||
private const int VIEW_UPDATE_DELAY_MS = 100;
|
||||
|
||||
/// <summary>
|
||||
/// 包围盒扩展系数(用于 ZoomBox 调整视野范围)
|
||||
/// </summary>
|
||||
private const double VIEW_BOUNDING_BOX_EXPANSION_FACTOR = 1.4;
|
||||
|
||||
/// <summary>
|
||||
/// 智能调整视角:调整到路径中心,确保整个路径都在视野内
|
||||
/// </summary>
|
||||
@ -97,17 +102,30 @@ namespace NavisworksTransport.Utils
|
||||
|
||||
// 3. 创建当前视角的副本(关键:使用 CreateCopy 而不是 new Viewpoint())
|
||||
Viewpoint newViewpoint = doc.CurrentViewpoint.Value.CreateCopy();
|
||||
|
||||
// 设置标准俯视图的相机配置
|
||||
// 相机位置:在目标正上方
|
||||
newViewpoint.Position = cameraPosition;
|
||||
newViewpoint.PointAt(focusCenter); // 让相机指向聚焦中心
|
||||
newViewpoint.WorldUpVector = new UnitVector3D(0, 0, 1); // Z轴向上
|
||||
|
||||
// 4. 使用 ZoomBox 调整视野范围(使用视野包围盒,确保整个路径都在视野内)
|
||||
newViewpoint.ZoomBox(viewBoundingBox);
|
||||
// 直接设置 Rotation 为无旋转(单位四元数),实现标准的俯视图
|
||||
// 这样可以彻底清除任何旋转,使视图与世界坐标轴对齐
|
||||
newViewpoint.Rotation = new Rotation3D();
|
||||
|
||||
// 5. 应用视角到文档
|
||||
// 设置向上向量:Y 轴向上(标准俯视图的向上方向)
|
||||
newViewpoint.WorldUpVector = new UnitVector3D(0, 1, 0);
|
||||
|
||||
// 4. 扩展路径包围盒,避免边缘贴得太近
|
||||
double boxWidth = viewBoundingBox.Max.X - viewBoundingBox.Min.X;
|
||||
double expansionMargin = boxWidth * (VIEW_BOUNDING_BOX_EXPANSION_FACTOR - 1) / 2;
|
||||
BoundingBox3D expandedViewBoundingBox = BoundingBoxGeometryUtils.ExpandBoundingBox(viewBoundingBox, expansionMargin);
|
||||
|
||||
// 5. 使用 ZoomBox 调整视野范围(使用扩展后的视野包围盒,确保整个路径都在视野内)
|
||||
newViewpoint.ZoomBox(expandedViewBoundingBox);
|
||||
|
||||
// 6. 应用视角到文档
|
||||
doc.CurrentViewpoint.CopyFrom(newViewpoint);
|
||||
|
||||
LogManager.Info($"视角已调整完成: 俯视图, 基准尺寸={baseDimension:F2}米, 相机距离={cameraDistanceMeters:F2}米, FOV=自动");
|
||||
LogManager.Info($"视角已调整完成: 俯视图(已摆正), 基准尺寸={baseDimension:F2}米, 相机距离={cameraDistanceMeters:F2}米, FOV=自动, 包围盒扩展系数={VIEW_BOUNDING_BOX_EXPANSION_FACTOR:F1}, 扩展边距={expansionMargin:F2}米");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user