【问题标题】:AutoCAD infobox functionalityAutoCAD 信息框功能
【发布时间】:2012-06-08 01:14:09
【问题描述】:

我想在 AutoCAD 中创建信息框功能。就像您将鼠标悬停在 Google 地球中的某些功能一样,它会向您显示带有图片的信息框。

Something like this

我正在考虑使用调色板,但我不知道如何将其调整为看起来像信息框。

我打算创建 .NET 插件。

有什么建议吗?

【问题讨论】:

  • 回答您自己的问题很好,但您应该将其作为答案而不是添加到问题中。这样,它就可以被投票和接受(例如)。
  • 我不知道,对不起,我会修复它。

标签: .net autocad autocad-plugin


【解决方案1】:

【讨论】:

  • 好答案!有没有什么好的教程可以从 ObjectARX for .Net 开始?几年前我已经在 C++ 中尝试过,但我很快就放弃了,因为文档很差。
  • @besworland (usa.autodesk.com/adsk/servlet/…)。它在 VB.NET 中,但可以很容易地转换为 C#。
  • 谢谢你们!这正是我所需要的。
  • 好吧,正如我在下面回答的那样,我认为最好的方法是使用工具提示。在玩过它之后,我不太喜欢调色板。还有一些关于这个的问题,我如何将磁盘上的一些图片与绘图对象连接起来。是否可以在绘图对象上设置一些自定义属性来保持图像位置的路径?是否可以从autocad界面启动autocad插件,假设有工具栏图标会触发我的信息框插件?谢谢
【解决方案2】:

**嗯,我发现我认为最好的方法是使用 AutoCAD 工具提示。这是代码sn-p:

Autodesk.Windows.ComponentManager.ToolTipOpened +=
            (s, e) =>
            {       
                Autodesk.Internal.Windows.ToolTip tooltip =
                s as Autodesk.Internal.Windows.ToolTip;
                if (tooltip != null)
                {                     
                        var image = new System.Windows.Controls.Image();
                        var bitmapImage = new BitmapImage();
                        bitmapImage.BeginInit();
                        bitmapImage.UriSource = new Uri(@"C:/index.jpeg");
                        bitmapImage.EndInit();
                        image.Source = bitmapImage;
                        tooltip.Height = image.Height;
                        tooltip.Width = image.Width;
                        tooltip.Content = image;
                }
            };

现在我觉得很好。 :)**

正如我在下面的评论中所说,这里是此解决方案的屏幕截图

您可能会注意到,工具提示不在几何体附近,我选择了粉红色的。那是我的最后一个问题。我的流程是,当我选择对象时,我得到了 win 表单 listBox,它为我提供了几个连接到该实体的图像文件。当我选择一个时,它会打开工具提示,但它似乎相对于列表框对话框。我无法找到如何手动设置工具提示位置的解决方案。有什么建议吗?

【讨论】:

  • ToolTipOpened 用于通过功能区、菜单、快速访问工具栏和状态栏打开的工具提示。我认为你不能用它来显示实体的信息。
  • 这很好用,我会截屏给你看。我认为 ToolTipOpened 是工具提示的全局事件处理程序。在其中,我只知道触发事件的工具提示是否是 if 语句中的“简单”工具提示。我也可以看看它是否是功能区之一,然后用那种类型的工具提示做一些事情......
  • 好的,很高兴知道。在 ObjectARX 文档中,写到为使用 Autodesk.Internal.Windows.ToolTip 类的所有工具提示引发此事件
【解决方案3】:

使用 PointMonitor,检测您关注的实体是否在光标位置下,并在适用时弹出您自己的窗口,将图像保存在列表框、组合框等中,更加可控和灵活。该窗口可以是您选择的 WPF 或 WinForm。

这绝对是可行的,并且一些应用程序已经相当成熟地使用了这些技术。必须考虑一些协调转换的东西,例如从窗口像素到AutoCAD显示系统,从DCS到WCS,来回。

现在,唯一剩下的可能就是性能了。希望以下提示对您有所帮助。

  1. 缓存前一个实体 ID。如果光标仍悬停在其上,则不执行任何操作,只保留上一张图像。
  2. 如果用户将光标从一个实体快速移动到另一个实体,则可能不需要丢弃前一个窗口并创建一个新窗口。替换图像应该就足够了。
  3. 提供相同图像的不同分辨率,例如缩略图、预览或精细,并在不同时间显示它们,例如如果光标悬停短于 1 秒仅显示缩略图,如果超过 5 秒则显示精细图片。
  4. 最好为用户提供一些配置方法。

【讨论】:

  • 感谢您的评论,我会分析您的答案并尝试一下。顺便说一句,我尝试的是:1.选择实体,2.记住当前光标位置,3.打开带有要选择的图像的列表框,4.选择图像,5.以编程方式打开带有所选图像的工具提示,6.使用“设置工具提示位置”记住当前光标位置(x,y)”。最后一步没有用,但也许我错过了一些东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2018-05-13
  • 1970-01-01
相关资源
最近更新 更多