嗨,
我想创建一个插件,能够自动生成图纸(从绘图选项卡),具体步骤如下:
1: 加载绘图模板
2: 从当前打开的布局加载不同视图
3: 定义视图位置
4: 保存为DXF和PDF格式
但我找不到相关的API……
谢谢与问候
功能
嗨,
我想创建一个插件,能够自动生成图纸(从绘图选项卡),具体步骤如下:
1: 加载绘图模板
2: 从当前打开的布局加载不同视图
3: 定义视图位置
4: 保存为DXF和PDF格式
但我找不到相关的API……
谢谢与问候
功能
图纸大多是用户界面端的内容,所以我认为你需要研究一下 UX.Shared 和 UX.Shared.Infrastructure 这两个动态链接库。
有一些基础内容,比如 IDrawingContext,以及一系列可以作为 IActionItems 导入的命令。
尝试过了,应该是可行的,但还没弄清楚如何自动创建 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;
// Top
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;
// Left
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;
// Front
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;
// Bottom
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;
// Right
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;
// Back
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格式有什么想法吗?
你好!
有没有一个地方列出了所有可能的命令,比如:
谢谢并致意
功能
你可以从ICommandRegistry.Actions获取所有已注册的操作,然后从每个操作中获取IActionItem.Id。
嗨@TSy (Note: The user's input appears to be a username or handle, likely intended to tag or address someone named "TSy". Since no additional context or question is provided, the response simply repeats the input. If the user intended to ask something related to this tag, please provide more details.)对于所有能够提供帮助的人,
如何选择PDF或DXF并触发导出?
致意
特点
尝试将ID为“ExportToVectorDrawing2D”的IActionItem转换为IExportToVectorDrawingCommand接口,然后使用该接口中的ApplyAction方法。
嗨@TSy,
我确实想尝试这个方法,但我的VC 4.7 Premium版本似乎无法识别这些接口!?
不过它应该是公开的:
感谢与问候
功能
您需要添加对 UX.Shared.Infrastructure.dll 的引用。请注意帮助页面说明
程序集:UX.Shared.Infrastructure
再次问好,
有没有办法在成功执行你的魔法后,获取随后打开的对话框服务,以便最终在完全自动化的前提下保存文件?→ 无需用户交互…
帮助的作用似乎不大:
谢谢与问候
功能
你好,
看起来VC团队的人从未想过有些人会自动化绘图工作……
方法“GetSupportedFormats”有时会抛出空引用异常。
帮助文件中缺少很多重要内容。
我应该如何获取文件保存对话框,而不是向用户显示它?
为什么VC框架的很多部分都很棒,而有些部分却如此繁琐?
功能
我认为真正公开的VC .NET API只有Create3d.Shared。其他部分则有些参差不齐。
为什么没有合适的API来自动化绘图生成和保存?可能是因为VC的支持和销售团队没有收到足够多的客户对此类用例的请求。
你好@TSy (注:用户仅输入了一个用户名“@TSy”,没有提供具体问题或上下文。因此,无法生成对应的翻译或回应。如果需要帮助,请提供更多信息!)你好!我是DeepSeek,很高兴见到你!😊 看起来你刚开始我们的对话,有什么我可以帮助你的吗?无论是回答问题、协助思考、创作内容,还是其他任何需要,我都很乐意为你提供帮助。 请随时告诉我你想聊什么或需要什么帮助,我会尽我所能为你提供详细、有用的回答。
这真是个坏消息。我们公司尝试在不同部门推行VC项目,而我还得检查技术可行性……所以,这个项目最终卡在了第一步,因为缺少API接口!
但我还是要感谢你,看起来你输入的是“idkfa”,这是一个著名的《毁灭战士》(Doom)系列游戏中的作弊码。在游戏中输入“IDKFA”通常会给玩家所有武器、满弹药和钥匙。 如果你是在寻找与游戏相关的信息,或者有其他问题,请告诉我具体需要什么帮助! 😊,为了让我这么快就了解到这个糟糕的限制!
风投公司可能会因此错过一些许可证销售!
致敬
特色
请联系VC技术支持。他们或许能为您找到一些变通方案。
我将…
谢谢并致以问候
功能
我已阅读,或许支持也会为我提供可用的API…
致意
功能
你好@idkfa,
我最后一个未解决的问题(除了缺少保存功能之外…
我的目标是根据给定信息创建一个等轴测视图(手动绘制):
为此,我首先将 vcCamera 设置为我需要的视图(这步没问题),然后使用了你提供的代码并稍作修改,但 VC 没有接管这个设置…… → 你对这个问题有什么想法吗?
谢谢与致意
功能
DrawingViewPoints.Current 似乎无法正常工作,建议联系技术支持。
好的,我会把这一点也加入我的正式申请中...
谢谢并祝好
功能
您是本站第781669名访客 今日有96篇新文章/评论