问题标签 [autocad-plugin]

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 投票
1 回答
2891 浏览

c# - 获取运行 Windows 窗体控件的应用程序

我正在制作一个Autocad Plugin运行良好的程序Windows Forms 并且我已经创建了一个user control (winforms)可以在将来以我喜欢的任何形式进行复制。

问题是

从控件的代码中,如何获取运行该控件的应用程序实例?

(可能是纯粹的winforms问题)

代码:

在插件中,我可以毫无问题地获得 Autocad 应用程序实例。

此用户控件旨在separate assembly (dll)在插件应用程序中被引用,因此它无法直接访问应用程序实例。


关于场景的一点解释:

Autocad 有一个Main Assembly作为插件运行的。该程序集已实例化 Autocad 应用程序。

现在我有一些有用的表单控件可用于 Autocad,它们位于separate assembly. (那是因为我想在我喜欢的许多不同的插件中使用它们)。

因此,Autocad 运行main assemblymain assembly运行separate assembly.

为了正常工作,这些控件需要能够访问运行main assembly.

今天我将应用程序用作控件中的一个属性,在使用它们之前我必须设置它。(如果我忘记设置,则会引发异常)。因为我无法控制带有参数的创建者。

我希望控件检测它们正在运行的应用程序,因此我避免了这种解决方法。

0 投票
2 回答
1195 浏览

algorithm - 查找包围点的多边形的算法 - 仅定义线

我有一张带有许多直线的 2D 绘图。所有这些线在数学上都是已知的。他们独立于其他人。

您可以考虑我知道每条线的起点和终点,我可以使它们相交以找到所有交点。(详细地说,它们在 Autocad 中,但我只能通过代码工作。所以,我想要一个算法而不是 Autocad 解决方案,尽管也欢迎 Autocad 解决方案)。

问题是:给定一个点(任何地方),我想找到包含它的较小多边形。该多边形将由最近的线形成。


细节:

我没有声明的多边形。只是线条。任意数量的行,任意大小,任意位置。和一个给定的点。

这些线可能形成一个多边形,多或无。因此,多边形的外观没有规则。任意数量的边,没有规律性。(形成多边形的点是通过与线相交来找到的。线是有限的,如果它们不相交,它们就不会形成多边形。)

我的答案是包含给定点的最小多边形。

0 投票
0 回答
260 浏览

visual-studio-2010 - 将 64 位项目复制到 32 位项目

有没有一种简单的方法可以将 64 位 Visual Studio 2010 项目复制到 32 位项目而无需再次设置某些属性???(或者甚至制作一个适用于 32 位和 64 位机器的项目???)

阅读详情:

我有一个项目,我在 64 位机器上编译,并在 64 位机器上运行。(DLL对于Autocad Plug in

DLL can work in 32 bit台机器也是,但有一个问题。我愿意can load it in Autocad。但是在我的代码的任何一点DLL calls a method from Autocad.Interop libraries, those methods cannot be found

尝试在 64 位 Autocad 中运行的 32 位版本也是如此。因此,64 位项目只能在 64 位 Autocad 中运行。而 32 位项目只能在 32 位 Autocad 中运行。

那是因为interop libraries are different from 64 to 32 bit Autocad应用程序。

我想出了一个解决方案:创建一个以 32 位 autocad.interop 为参考的复制项目。编译并运行良好。(这意味着我的机器中有 32 位参考,但它不适用于我的 64 位 autocad)

现在,我的generated 32 bit project can work in 32 machines,但是not in 64

但我需要不断地将文件从 64 项目复制到 32 项目。我所做的是从 32 项目中删除并排除所有 32 个文件并替换为 64 个文件。然后再次包含。

如果我不必Embedded Resources再次将所有资源设置为(因为它们已重置为Resource),那将是一件好事。

那么,我怎样才能以更简单的方式做到这一点???

0 投票
1 回答
914 浏览

browser - 是否有任何允许旋转 3D DWG 对象的浏览器插件或 js 库?

你见过这样的事情吗?我试过http://www.autodwg.com/dwg-viewer/dwgviewx.htm,但它似乎只支持 2D 对象

另一个问题是它应该在 IE8 下工作。

0 投票
1 回答
1588 浏览

c# - 如何在不使用 Autocad.Interop 的情况下枚举 Autocad 实体?

我想枚举 Autocad 绘图中的所有实体,但不使用Autocad.Interop参考。

使用互操作,我可以选择:

但是通过Object Arx参考资料,我只能找到使用数据库中的事务获取实体的教程,通过 ID 获取对象。我认为放慢工作速度真的很无聊。

0 投票
3 回答
1201 浏览

c# - AutoCAD 在尝试从 .Net 命令打开模式对话框时崩溃

我正在开发一个 AutoCAD .Net 插件,其中包含一个打开模式窗口的命令。该窗口应显示一个网页。

但它有一个奇怪的错误,这里有一个简单的代码来重现它:

或者更简单:

以下是 AutoCAD 崩溃后的一系列步骤:

  1. 从命令行 (TEST_BROWSER) 调用命令。
  2. 关闭出现的窗口。
  3. 再次调用相同的命令
  4. 出现错误信息:http: //i.stack.imgur.com/sFWMX.png

如果打开非模态(无模式)窗口,或者不使用 Web 浏览器,或者在不使用命令的情况下调用代码,它工作正常。

但我需要一个带有从命令行调用的浏览器的模式窗口。

有没有其他人遇到过同样的问题?

0 投票
1 回答
2240 浏览

c# - 从 dwg 文件中获取 Mtext 数据

我有一些有趣的任务。在其中一张图中,我有一个 MText 字段。所以,我的插件需要知道如何从这张图和其他图中准确地获取该字段。有什么属性或smth,我可以用什么来确定不同图纸上的多行文本字段?

0 投票
1 回答
6731 浏览

.net - .NET 中的 AutoCAD -INSERT 命令

我的任务是将 AutoCAD 插件从 VBA 转换为 VB.NET,但我目前有点卡住了。

我正在处理的命令创建一个新层(如果它已经存在,则选择它作为活动层),然后执行 2 个“-INSERT”命令,给出用户选择的点和一个 dwg 文件。然后,先前的有源层被重置为有源层。

插入命令看起来像这样:

注意:命令中的所有换行符都添加为vbCR(not vbCrLf)。

我的问题是,如何在 .NET 中针对 ObjectARX 获得相同的结果?我不能使用SendStringToExecute,因为它是异步的(没有回调),所以换句话说,一旦它完成执行,我就无法重置当前层。必须有某种方法可以在纯 .NET 代码中复制此功能,可能使用 .NET 代码,BlockTable但我不知道如何。

我试过按照这里找到的文章:http: //through-the-interface.typepad.com/through_the_interface/2006/08/import_blocks_f.html,但这对文档根本没有明显的影响。我也尝试使用myDatabase.Insert(transform, otherDatabase, False),命令提示符说明了已经存在的块,因此被跳过,但我仍然没有看到任何变化。我不知道“-INSERT”命令在幕后实际上有多大的魔力,但是在 .NET 中复制它是否可行?还是以某种方式可以作为普通方法调用(而不是作为发送以由 AutoCAD 处理的文本命令)?

0 投票
1 回答
48 浏览

.net - 从 USB 激活程序获取信息

我的同事使用名为 RCAD 的 AutoCAD 2010 插件(不确定它是否是正确的名称),但它仅适用于安装在虚拟机上的 Windows XP,并且当他们插入特定的 USB 时它会激活。我需要开发相同的插件AutoCAD 2014 具有与该插件相同的功能,但首先我需要从 USB 和程序获取信息。我在 USB 中找不到任何 dll 或文件,因为所有文件都被隐藏了。我如何访问文件或获取来自 USB 的一些信息?我可以用 .NET 反射器或其他东西破解程序吗?任何建议都会有所帮助,因为我不知道从这里开始。谢谢。

0 投票
1 回答
4292 浏览

vb.net - 使用 .NET 在 AutoCAD 中加载(和执行)一个 lisp 文件

我目前正在将一些旧的 AutoCAD 插件从 VBA 重写为 VB.NET。事实证明,所述插件的(相当大的)部分是在 LISP 中实现的,我被告知不要这样做。所以问题变成了在 .NET 的 AutoCAD 中运行 LISP 代码。现在,网上有一些资源解释了这样做的必要过程(比如这个),但他们都理所当然地认为 lisp-files/functions 已经加载。我目前正在挠头试图弄清楚如何转换的 VBA 函数是 a "(LOAD ""<file>"")",并且脚本的构建方式是它在加载时自动执行(它是一个简单的脚本,不注册函数,只是从头到尾运行并做到这一点)。

所以我的问题是。如何从 .NET 插件加载(并因此执行)AutoCAD 中的 lisp 文件?