NavisworksTransport/src/Commands/ReadTransformTestCommand.cs

67 lines
2.6 KiB
C#

using System;
using System.Linq;
using System.Windows;
using Autodesk.Navisworks.Api;
using Autodesk.Navisworks.Api.Plugins;
using NavisworksTransport.Core;
namespace NavisworksTransport.Commands
{
[PluginAttribute("ReadTransformTest", "YourDeveloperID", DisplayName = "读取Transform测试")]
[AddInPluginAttribute(AddInLocation.AddIn)]
public class ReadTransformTestCommand : AddInPlugin
{
public override int Execute(params string[] parameters)
{
try
{
var doc = Autodesk.Navisworks.Api.Application.ActiveDocument;
var selection = doc.CurrentSelection.SelectedItems;
if (selection.Count == 0)
{
MessageBox.Show("请先选择一个对象!", "提示");
return 0;
}
var item = selection.First();
// 读取Transform
var transform = item.Transform;
var components = transform.Factor();
var bbox = item.BoundingBox();
var center = bbox.Center;
var info = $"=== Transform信息 ===\n\n";
info += $"对象: {item.DisplayName}\n\n";
info += $"包围盒中心:\n";
info += $" X = {center.X:F3}\n";
info += $" Y = {center.Y:F3}\n";
info += $" Z = {center.Z:F3}\n\n";
info += $"Transform.Translation:\n";
info += $" X = {components.Translation.X:F3}\n";
info += $" Y = {components.Translation.Y:F3}\n";
info += $" Z = {components.Translation.Z:F3}\n\n";
info += $"Transform.Scale:\n";
info += $" X = {components.Scale.X:F3}\n";
info += $" Y = {components.Scale.Y:F3}\n";
info += $" Z = {components.Scale.Z:F3}\n\n";
info += $"Transform.Rotation:\n";
info += $" Axis = ({components.Rotation.Axis.X:F3}, {components.Rotation.Axis.Y:F3}, {components.Rotation.Axis.Z:F3})\n";
info += $" Angle = {components.Rotation.Angle:F6} rad = {components.Rotation.Angle * 180 / Math.PI:F2}°\n";
LogManager.Info(info);
MessageBox.Show(info, "Transform信息", MessageBoxButton.OK);
return 0;
}
catch (Exception ex)
{
MessageBox.Show($"错误: {ex.Message}", "错误");
LogManager.Error($"读取Transform失败: {ex.Message}\n{ex.StackTrace}");
return 1;
}
}
}
}