- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想重写我的 Revit 插件之一,以便它通过 MVVM 使用 WPF,因为与 Windows 窗体相比,我更喜欢 WPF 的外观和功能。
我已将 Jeremy Tammik 的 Revit 模板向导用于基于表单的加载项,但添加 WPF 用户控件似乎不起作用(无法找到 xaml 资源的运行时错误)。
我在示例中发现了一个 WPF MVVM revit 添加(AddMaterials, here is the github link ,它将从 Excel 电子表格添加 Material ),但它不符合我期望在顶层看到的内容。
第三个问题很容易解决,只需将窗口从 WPF 应用程序项目复制到类库项目中即可。但我不太明白如果不遵循模板中的 app.cs 代码,类库将如何在 Revit 中实例化。还有其他人以这种方式创建加载项吗?如果是的话,您能让我了解任何有帮助的技巧或讨论吗?有人为 Visual Studio 创建过 WPF Revit 插件模板吗?
当我添加 WPF 窗口并尝试实例化它时,出现错误,指出找不到 xaml 资源(System.IO.IOException:无法找到资源“xxxx.xaml”)。我尝试根据谷歌搜索此错误时找到的建议来修复此问题,但无济于事。我认为它来自于基于表单的项目,并且我可能必须从一个没有表单内容的新项目开始。
我现在已经验证,您确实可以从 Revit AddIn Wizzard 开始并使用 WPF 。 。 。我从头开始,复制到另一个项目中创建的窗口中并让它运行(在添加各种引用、命名空间等之后)。所以我的问题似乎只是与原始项目有关,它已经添加了一堆表单内容。
最佳答案
是的,我正在使用 WPF 创建 Revit 插件。效果很好。您可以从 SDK 示例轻松创建自己的 WPF 模板:
我并不是特别熟悉 AddMaterials 项目,但为了澄清您的要点。
Revit 插件 - 这不是文件名 (app.cs),而是它们必须扩展 IExternalApplication
或 IExternalCommand
。如果您要创建 xaml 界面(而不仅仅是从功能区按钮运行命令),您将使用“IExternalApplication”作为入口点。在示例中查找类似的内容:
public class ThisApplication : IExternalApplication ...
我没有使用顶级 app.xaml,而是使用由 Revit 应用程序调用的 page.xaml 页面。就我而言,这些是页面而不是 Windows,它们扩展了 IDockablePaneProvider 类。这些必须在应用程序中注册,然后可以显示、隐藏您的 Pane 等。我想这对于 Windows 来说会更简单,但我自己还没有这样做过。对于可停靠 Pane ,您的 xaml.cs 应该以如下形式开始:
public partial class MainPage : Page, Autodesk.Revit.UI.IDockablePaneProvider ...
是的,该项目是一个类库,因为它是类的集合,其中至少有一个类扩展了 IExternalApplication
或 IExternalCommand
。请记住,您不是在创建独立的应用程序,而是向现有 Windows 应用程序 (Revit) 添加功能。 Revit 将实例化 ThisApplication
类,然后在 Revit 应用程序启动时调用其 .OnStartup()
方法。不过,这不应阻止您向项目添加 .xaml 或 .cs 文件。我可以使用 VS Community 2015 使用 Ctrl-Shift-A 来完成此操作。
希望这能让您开始 - 我已经能够在 Revit 中实现 WPF UI,而无需任何 WPF 经验,而且我什至不是真正的程序员,所以这绝对是可能的。祝你好运!
附录
如果您想将 WPF 元素添加到现有的 Revit 插件中,可以按照此处的说明进行操作:How can I connect xaml and xaml.cs files
最终,我发现将我的插件代码迁移到由工作示例制作的模板中更容易,您可能也想尝试这种方法。
关于wpf - WPF Revit 插件的最佳起点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40096793/
我想用 revit api 控制加载族和创建类型的事件。有人可以给我一个方向吗?我不太了解我阅读的文档。 最佳答案 首先,您需要通过在 IExternalApplication OnStartup 方
我使用过 RevitPythonShell 和 Dynamo,但我想使用我现有的 Python IDE (Eclipse),我在其中配置了日志记录、调试、GitHub 集成等。 我对事务和整个 API
使用 Revit Python Shell,我尝试提示用户选择一个房间。我一直在阅读并实现此处描述的方法 Revit Python Pick Object / Select Object 。它工作正常
假设我想创建一个基于云的服务,该服务可以连接到 Revit Server 并获取模型数据、对其进行处理,然后在基于 Web 的界面中向用户返回一些有用的信息。然后用户修改模型并将更改提交到服务器。我的
我打开文件 A,其中链接了 x 个文件 B。文件 B 还链接了 x 个文件 C。我想知道文件 C 的位置名称。 我使用 dynamo for revit 收集文件 A 中的 RevitLinkInst
在 Revit API 中,我知道我可以获得当前正在运行的 Revit 实例的版本(ControlledApplication.VersionBuild,ControlledApplication.V
我正在尝试使用 Revit API 激活 View 。我想要做的正是提示用户选择一些墙,但是当用户被问到时,他无法切换 View 以选择更多墙(此时一切都变灰了)。 所以我想激活的 View (我的意
长期以来,我一直在使用 Autodesk Forge 的 Model Derivative API(成功)将 Revit 文件导出到 IFC。 但是,我注意到即使使用法语版软件(即 Revit FRA
我有一个非常“笼统”的问题。我正在使用 Revit API(使用 python)进行开发,有时我会观察到 Revit session 在我的测试和试验期间变得更慢(Revit 保持打开的时间越长,它似
我尝试使用 python 编辑我的 Revit.ini 文件,但是我仍然收到以下错误。今天大部分时间我都在用头撞墙。在此感谢任何帮助。 我一直在 python 2.7 上使用 ConfigParser
我需要为许多元素(>100'000 个项目)找到大纲。目标元素来自 FilteredElementCollector。像往常一样,我正在寻找最快的方法。 现在我尝试遍历所有元素以获取其 Bouding
有一个元素的参数有 5 个选择(组合框的样式)。我知道如何获取当前选定的选项,但是有没有办法检索其他 4 个选项? 最佳答案 它们存储在 SimilarObjectTypes作为 ElementSet
我想重写我的 Revit 插件之一,以便它通过 MVVM 使用 WPF,因为与 Windows 窗体相比,我更喜欢 WPF 的外观和功能。 我已将 Jeremy Tammik 的 Revit 模板向导
我看到一个已经运行多年的基准有一些奇怪的行为。该基准适用于 Autodesk Revit,它可以使用日志文件来自动执行任务和记录时间。基准测试将读取一系列模块化日志文件的 XML 文件,这些文件可以根
我有这段代码,但我不知道如何显示我选择的墙的位置、高度和长度: using System; using System.Collections.Generic; using System.Linq; u
是否可以在不运行 Revit 的情况下创建与 Revit 数据库模型交互的我自己的 Revit API 代码的单元测试。 如果是这样,如何实现。 最佳答案 我参与了其中提到的一些话题。我什至参与过一个
我对 C# 和编码还很陌生。如果可能的话,我正在寻找一些帮助来弄清楚如何修复这段代码以使其正常工作。 他们单独工作。我可以在功能区上创建一个新按钮并执行标准的 hello world。我还有一个宏,可
我正在尝试拦截 Revit 并阻止窗口打开。具体来说,我试图将基调应用于一个对象,然后让用户创建一个基调标签,但是我这样做的任何方式都让他们放置基调,但随后立即给他们对话框来选择一个基调,但我不' 希
我想在查看器中放置一些 Three.js 对象,并在 Revit 模型中获得该对象的估计坐标。如何将这些坐标转换为查看器坐标以放置对象? 最佳答案 由于 Forge 查看器默认会对加载的模型应用全局偏
在执行 IExternalCommand 时,我可以通过 ExternalCommandData 轻松获取应用程序和文档 UIApplication uiApp = commandDa
我是一名优秀的程序员,十分优秀!