67 lines
2.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|