问题标签 [objectarx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1109 浏览

.net - 如何提高 .NET 插件开发的速度?

我正在开发一个使用 .NET 4.6 程序集的 AutoCAD 插件。我发现开发过程非常令人沮丧;API 非常大,除了入门之外的文档到处都是,很难找到。完成任何事情的唯一方法似乎就是在 Visual Studio 中制作原型函数并查看它是否有效。然后需要几分钟来加载 AutoCAD 并附加一个调试器,这破坏了我的原型设计工作流程。

如果我可以使用 Linqpad 之类的东西来对我的应用程序进行原型制作,那将非常方便,这样我就可以找到我正在寻找的数据。我不同意使用 Linqpad 的想法。但是,如果有另一种我想念的技术,我很想听听。

我不确定这是否是我可以通过专业版实现的目标,但由于没有试用版,我无法找到。

0 投票
1 回答
617 浏览

c# - 在图形 AutoCad C# 中存储数据

在一个 dwg 文件中,我将有几张图纸。每个都作为一个单独的整体。我想制作一个叠加层来描述条形图并从图中绘制它们。编号是自动完成的。最重要的是,每幅画都是从头开始,从位置 1(同一文件中的所有内容)开始。

如何存储所有条形数据?

值必须保持不变。再次打开文件时,您必须有权继续绘图。

我知道有,XData但我不知道如何在这种情况下应用它。在我看来,以某种方式将变量分配给对象似乎并不重要。最新版本中是否没有更多存储选项,例如字典或列表?

您可以创建一个外部数据库并存储您需要的所有信息吗?如果真是这样,那么是以哪种方式?

存储的数据不仅仅是整个集合的单个值。一根钢筋会包含不同的信息,例如数量、长度、直径,并且图纸中的钢筋可以非常多。

附加问题:条由描述、尺寸和线或折线组成。将此集合放在具有 MText MLeader 和 Polyline 对象的新类中,还是作为具有元素和属性的块更好?

可以在论坛或博客中找到的所有内容都是几年前的,我希望我们已经有了一些有趣的方法来解决给定的问题。预先感谢您的帮助。

0 投票
1 回答
2809 浏览

c# - AutoCAD Plugin Development by Example

I am interested in developing an AutoCAD plugin and am trying to understand the relationships between several different types of AutoCAD plugin files:

  • Managed DLLs that ship with AutoCAD plugins
  • ARX files that ship with AutoCAD plugins
  • CUIX files that ship with AutoCAD plugins

From what I can tell these three files are all inter-related and work together to initialize and load a plugin, I'm just not seeing the forest through the trees as to what information each file type contains, which files loads or depends on the others, etc.

It sounds like a plugin's core functionality is supposed to go inside the ARX file, and written in C++ and compiled for the native/target platform.

It also sounds like, at startup, AutoCAD loads its plugin DLLs, which are all managed .NET libraries (typically written in C#), and in turn they invoke their native/compiled respective ARX files. As to where the CUIX file comes into play, I still have no idea.

Can anyone help explain the relatioships & dependencies of these files, and what types of code/logic/data goes inside of them? Thanks in advance!

0 投票
1 回答
421 浏览

c# - 创建布局和逻辑 AutoCAD 插件对话框

全新的 AutoCAD 插件开发。我正在尝试创建一个插件,作为 AutoCAD 内部的整个主菜单选项加载(让我们将此菜单称为“ Fizzbuzz”菜单,当用户选择其中一个菜单项(例如Fizzbuzz >> Foobar)时,我想要一个简单的对话框/窗口显示在 AutoCAD 左上角的屏幕上。

我试图弄清楚这个对话框/弹出窗口的演示/布局逻辑需要去哪里(它存在于什么文件中,我如何创建/编辑它?),同样重要的是:事件驱动的位置GUI逻辑需要去(再次:我要编辑什么文件以及用什么语言?)。“ GUI 逻辑”是指:假设我的对话框中有一个复选框或按钮……当用户单击/与这些 UI 组件交互时,我需要执行自定义逻辑。

知道哪些文件包含新 AutoCAD 插件的这种类型的演示/GUI 逻辑以及我如何创建/编辑它们?提前致谢!

0 投票
2 回答
1303 浏览

.net - 加载 AutoCAD 插件的顺序是什么?

自动加载应用程序的方法很少 - AutoCAD 启动时的插件。我知道那些:

  • 启动套件 - 由 GUI 附加
  • 列表项%appdata%....\support\zwcad2018.lsp(我用的是ZWCAD,也许在Acad,还有一条路。很久以前我在Acad工作的时候是acad.lsp,但那是Windows UAC功能之前的时代)。
  • *.mnl在加载相应的 *.mnu 时加载(旧时尚方式,但 ZWCAD 可能)Acad 呢?
  • 按需加载:HKEY_CURRENT_USER\Software\ZWSOFT\ZWCAD\2018\en-US\Applications\MyApplicationName
  • zwcaddoc.lsp如果我的应用程序的路径在选项/文件/支持文件搜索路径中
  • 使用/ld开关的应用程序快捷方式
  • acad.rx

加载应用程序的顺序是什么?如果这里没有列出其他方法,请告诉我。可能 ARX 或 .Net 应用程序也可能以另一种方式加载。

0 投票
1 回答
240 浏览

autocad - 从 AcDbRegion 获取曲线的方法是什么?

在我AcDbRegion::createFromCurves用来创建区域的 ObjectARX 应用程序中,工作正常。

现在我需要在拥有AcDbRegion. 我的意思是类似于AcDbHatch::getLoopAt

任何人都可以指出获得解决方案的方法吗?

0 投票
2 回答
282 浏览

autocad - 如何将 LSP 转换为 objectarx C# 以关闭 Autocad 多段线?

我需要创建一个 C# objectarx 函数来检查折线是否已连接并打开。如果是这样,则关闭它们的折线。此示例代码无法使用,因为它不会检查它是否已连接:

我发现了如何做到这一点,但它在 LISP 中。有谁知道如何将其转换为 C# objectarx .net?

更新#1

我实际上想要做的是确定是否应该关闭折线。想象一条形状为字母 C 的折线和另一条形状为字母 O 的折线。在这种情况下,我想关闭形状为字母 O 的折线。

例子:

0 投票
0 回答
934 浏览

c++ - 在编写 ObjectARX / C++ / MFC 堆栈 AutoCAD 插件时如何拦截 WM_GESTURE 或 WM_TOUCH Windows 消息?

我正在编写一个使用 C++ 和 Microsoft 基础类框架 (MFC) 的 AutoCAD 插件,并将 ObjectARX 源库链接到 AutoCAD,这有助于我将我的插件与 AutoCAD 的本机代码集成。

我目前遇到的问题是,我无法拦截在使用捏合、缩放或平移等触摸屏手势时创建的 Windows 消息。

这是我在下面实现的钩子方法的一个示例。我基本上能够接收所有鼠标事件(左键单击、左键单击、鼠标滚轮、右键单击、双击等)。问题是,当我在触摸屏上使用手指执行捏合和缩放或两指平移等手势时,没有 Windows 消息会转发到此挂钩。我会假设 WM_GESTURE 或 WM_TOUCH 消息也会被这个钩子拦截。

但是,AutoCAD 的主框架窗口中的绘图仍然可以响应我正在制作的这些手势操作。即,当我用手指捏合、缩放和平移时,我可以使用 AutoCAD 的本地缩放和平移功能。我现在遇到的问题是,在我需要阻止或修改此默认功能的情况下,我无法拦截或修改这些手势事件。

在一个被调用的单独方法中,我有这行代码,它将用 ObjectARX 注册钩子。

我尝试编写一些代码来模拟透明窗口来拦截 Windows 消息(正如我所看到的向其他提出类似问题的人提出的建议)。不幸的是,至少从我尝试过的代码来看,我仍然无法拦截这些类型的 Windows 消息 (WM_GESTURE / WM_TOUCH)。

我现在想知道是否需要做一些特别或特别的事情来检索这些消息。或者可能是我从根本上不理解某些东西并且在解决这个问题时采取了完全错误的方式。

我想到的另一个潜在解决方案想法是找到一种方法来覆盖 AutoCAD 的主框架“Wnd”(窗口)类并特别覆盖“WndProc”方法,因为我在网上看到了其他类似的建议。问题是我不确定如何使用 ObjectARX 正确地做到这一点。我相信要获得主框架窗口,您可以使用下面的以下代码行。

注意:我只针对 Windows 10 机器。

非常感谢任何见解或帮助,因为我在试图解决这个问题时压力很大,而这一点感觉就像我在浪费时间。

非常感谢您的时间和努力。

0 投票
1 回答
271 浏览

visual-c++ - 创建多个对象 Autocad 的最佳方法是什么?

我正在学习 ObjectArx,据我所知,在 Arx 中创建对象有 3 种常用方法:

  • 使用 acdbEntMake
  • 使用record.append(实体)
  • 使用 record.append 和 transaction 的组合

所以,我的问题是:当我应该在每种情况下使用它们时,有人可以帮助我吗?它们之间的性能差异很大吗?

与以下两种方法相比,当对象数量很大时,我会犹豫是否使用 acdbentmake,因为我看到很少有提到它的示例。

0 投票
2 回答
194 浏览

autocad - 如何在 AutoLISP 或 ObjectARX 中以提升的权限运行应用程序

我需要在 AutoCAD/ZWCAD 中运行需要提升权限的应用程序。

通过 LISP,我可以使用以下命令运行应用程序:

但是对于需要电梯权限的应用程序startapp返回nil并且应用程序无法运行。

也试过:

但我得到了:

那么是否有任何其他方式来运行需要提升权限的外部应用程序?