你好,
我想创建一个插件,能够自动创建工程图(来自工程图选项卡),例如:
1:加载工程图模板
2:从当前打开的布局加载不同视图
3:定义视图位置
4:保存为 dxf 和 PDF
但我找不到相关的 API…
谢谢与致意
Feature
你好,
我想创建一个插件,能够自动创建工程图(来自工程图选项卡),例如:
1:加载工程图模板
2:从当前打开的布局加载不同视图
3:定义视图位置
4:保存为 dxf 和 PDF
但我找不到相关的 API…
谢谢与致意
Feature
工程图主要是 UI 侧的东西,所以我认为你需要研究 UX.Shared 和 UX.Shared.Infrastructure 程序集。
有一些基础类型如 IDrawingContext,以及许多可作为 IActionItem 导入的命令。
尝试了一下,应该是可行的,但还没有弄清楚如何自动创建 pdf 和 dwg。
IApplication app;
IDrawingViewGenerationAction projectAction;
IImportDrawingTemplateAction templateAction;
ICommandRegistry registry;
public override void Execute()
{
templateAction.StartAction();
var a0 = PathUtility.BaseDirectory + "SrcTemplates\\Drawings\\DrawingTemplateA0.vcm";
foreach (var item in templateAction.ActionProperties)
{
if (item.Name == "File")
{
item.Value = a0;
}
}
templateAction.ApplyAction();
var minCorner = app.DrawingWorld.BoundBox.MinCorner;
var maxCorner = app.DrawingWorld.BoundBox.MaxCorner;
var intervalX = (maxCorner.X - minCorner.X) * 0.8 / 3.0;
var intervalY = (maxCorner.Y - minCorner.Y) * 0.8 / 2.0;
var borderX = (maxCorner.X - minCorner.X) * 0.15;
var borderY = (maxCorner.Y - minCorner.Y) * 0.3;
// 顶部视图
projectAction.CreateView(DrawingViewPoints.Top);
var top = (IDrawingView)app.DrawingWorld.LayoutItems.Last();
top.Scale = "1:3";
var topMatrix = new Matrix();
topMatrix.Px = minCorner.X + borderX + intervalX * 0;
topMatrix.Py = minCorner.Y + borderY + intervalY;
top.TransformationInWorld = topMatrix;
// 左侧视图
projectAction.CreateView(DrawingViewPoints.Left);
var left = (IDrawingView)app.DrawingWorld.LayoutItems.Last();
left.Scale = "1:3";
var leftMatrix = new Matrix();
leftMatrix.Px = minCorner.X + borderX + intervalX * 1;
leftMatrix.Py = minCorner.Y + borderY + intervalY;
left.TransformationInWorld = leftMatrix;
// 前视图
projectAction.CreateView(DrawingViewPoints.Front);
var front = (IDrawingView)app.DrawingWorld.LayoutItems.Last();
front.Scale = "1:3";
var frontMatrix = new Matrix();
frontMatrix.Px = minCorner.X + borderX + intervalX * 2;
frontMatrix.Py = minCorner.Y + borderY + intervalY;
front.TransformationInWorld = frontMatrix;
// 底部视图
projectAction.CreateView(DrawingViewPoints.Down);
var bottom = (IDrawingView)app.DrawingWorld.LayoutItems.Last();
bottom.Scale = "1:3";
var bottomMatrix = new Matrix();
bottomMatrix.Px = minCorner.X + borderX + intervalX * 0;
bottomMatrix.Py = minCorner.Y + borderY;
bottom.TransformationInWorld = bottomMatrix;
// 右侧视图
projectAction.CreateView(DrawingViewPoints.Right);
var right = (IDrawingView)app.DrawingWorld.LayoutItems.Last();
right.Scale = "1:3";
var rightMatrix = new Matrix();
rightMatrix.Px = minCorner.X + borderX + intervalX * 1;
rightMatrix.Py = minCorner.Y + borderY;
right.TransformationInWorld = rightMatrix;
// 后视图
projectAction.CreateView(DrawingViewPoints.Back);
var back = (IDrawingView)app.DrawingWorld.LayoutItems.Last();
back.Scale = "1:3";
var backMatrix = new Matrix();
backMatrix.Px = minCorner.X + borderX + intervalX * 2;
backMatrix.Py = minCorner.Y + borderY;
back.TransformationInWorld = backMatrix;
registry.ExecuteAction("ExportToVectorDrawing2D", true, true);
}
@idkfa 谢谢!
@TSy 对于保存为 dxf 和 pdf 有什么想法吗?
你好,
有没有什么地方可以列出所有可能的命令,比如:
谢谢与致意
Feature
你可以从 ICommandRegistry.Actions 获取所有已注册的动作,然后获取每个动作的 IActionItem.Id。
你好@TSy 或者任何能帮忙的人,
如何选择 pdf 或 dxf 并触发导出?
致意
Feature
尝试将 id 为 “ExportToVectorDrawing2D” 的 IActionItem 强制转换为 IExportToVectorDrawingCommand,然后使用该接口的 ApplyAction 方法。
你好@TSy,
我真的很想试试,但我的 VC 4.7 Premium 不知道这个接口!?
但它应该是公共的:
谢谢与致意
Feature
你需要添加对 UX.Shared.Infrastructure 程序集的引用。注意帮助页面显示
程序集:UX.Shared.Infrastructure
再次问好,
有没有办法在成功实现你的魔法后调出对话框服务,以便最终保存文件并保持全自动?→ 无需用户交互…
帮助文档帮助不大:
谢谢与致意
Feature
你好,
看起来 VC 团队中没有人想过有些人会自动化这个工程图的东西…
方法 “GetSupportedFormats” 有时会抛出 nullReferenceException。
帮助文件中缺少很多重要的内容
我该如何获取 FileSaveDialog 而不显示给用户?
为什么 VC 框架很多地方很棒,而有些部分却如此繁琐!?
Feature
我认为只有 Create3d.Shared 是 VC 真正的公共 .NET API。其他所有东西都有点碰运气。
为什么没有合适的 API 来自动化工程图生成和保存?可能他们从 VC 的支持和销售部门没有收到足够多的客户对此用例的请求。
你好@TSy,
这真是个坏消息,我们试图在公司不同部门引入 VC,我必须检查技术可行性… → 所以这个项目在第一步就因为缺少 API 而失败了!
但我还是要感谢你和@idkfa,让我快速了解到这个丑陋的限制!
VC 可能会因此失去一些许可证销售!
致意
Feature
请联系 VC 技术支持。他们可能会为你找到一些变通方法。
我会的…
谢谢与致意
Feature
我已经读过了,也许技术支持也会给我提供可用的 API…
致意
Feature
你好@idkfa,
我最后一个未解决的问题(除了无法保存…
)是创建一个等轴测视图,就像我手动做的那样:
为此,我首先将 vcCamera 设置到我需要的视图(可以工作),然后使用稍作修改的你的代码,但 VC 不接受这个… → 你有什么想法吗?
谢谢与致意
Feature
似乎 DrawingViewPoints.Current 不起作用,建议联系技术支持。
好的,我也会把这个加到我的正式请求中…
谢谢与致意
Feature
上网淘巴领天猫淘宝优惠券,一年省好几千。
广告  ×您是本站第853571名访客 今日有0篇新文章/评论