通过JAVA程序与AutoCAD连接的任何想法.我正在寻找一种可以直接与AutoCAD会话(甚至启动一个)连接的解决方案,它与AutoCAD的.NET扩展一起使用.或者通过JAVA使用ObjectARX的任何方式,绝对不会在其上编写完整的JNI包装器.
补充:我们正在寻找开源的东西.如果没有,我们准备在开源中创建一个,如果有人可以伸出援助之手解释如何完成它.我们看了JNA和JaWin.与JNI合作的JNA可能有所帮助,但太难看了.另一方面,JaWin在过去的4年里没有更新过,所以有点怀疑地使用它.
我试图修改 .dwg 文件并在完成后覆盖 .dwg 文件,所有这些都无需在 autocad 中打开它。我读过有关 RealDWG 的内容,但这里的目标不是处于独立模式。autocad插件从autocad运行,需要修改和写入当前项目中未打开的一些.dwg文件。到目前为止,我创建了一个数据库对象并将 .dwg 文件读入其中,但当我想重写它时出现错误。这是 C# 代码,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
namespace ModifyClosedDWG
{
public class DWGEditor
{
private static string filepath = @"E:\...\DrawingTest.dwg";
[CommandMethod("modifyDWG")]
public void addTextToDWG()
{
Database workingDB = HostApplicationServices.WorkingDatabase;
Editor ed = doc.Editor;
Database db = new Database(false, true);
try
{
db.ReadDwgFile(filepath, System.IO.FileShare.ReadWrite, false, "");
db.CloseInput(true);
HostApplicationServices.WorkingDatabase = db;
}
catch (Autodesk.AutoCAD.Runtime.Exception e)
{
ed.WriteMessage("\nUnable to read drawing …Run Code Online (Sandbox Code Playgroud) 我的任务是将AutoCAD插件从VBA翻译成VB.NET,我现在有点卡住了.
我正在处理的命令创建一个新层(或者如果它已经存在则选择它作为活动层),然后执行2"-INSERT"命令给出用户选择的点和dwg文件.然后,将先前的活动层重置为活动层.
insert-command看起来像这样:
-INSERT
C:\path\to\file.dwg
<point.x>,<point.y>,<point.z>
<documentScale>
Run Code Online (Sandbox Code Playgroud)
注意:命令中的所有换行符都添加为vbCR(不vbCrLf).
我的问题是,如何在.NET中针对ObjectARX实现相同的结果?我无法使用,SendStringToExecute因为它是异步的(没有回调),所以换句话说,一旦完成执行,我就无法重置当前层.必须有一些方法在纯.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处理的文本命令)?
我尝试使用 netload 命令在 accoreconsole.exe (AutoCAD 2016) 中加载自定义 .net dll,但无法加载 dll。
以下是 accoreconsole.exe 的输出:
Redirect stdout (file: C:\Users\amitp\AppData\Local\Temp\accc37242).
AutoCAD Core Engine Console - Copyright Autodesk, Inc 2009-2013.
Usage:
AcCoreConsole.exe [/i <input dwg>] /s <script>[/product <product>] [/l <language
>] [/isolate <userid> <userDataFolder>] [/readonly] [/p[rofile] <profile>]
Example:
AcCoreConsole.exe /i 8th_floor.dwg /s test.scr /l en-US
Regenerating model.
**** System Variable Changed ****
1 of the monitored system variables has changed from the preferred value. Use SY
1 of the monitored system variables has changed …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 AutoCAD 插件,它使用 .NET 4.6 程序集。我发现开发过程非常令人沮丧;API 非常大,除了入门之外的文档也到处都是,而且很难找到。完成任何事情的唯一方法似乎就是在 Visual Studio 中制作函数原型并查看它是否有效。然后需要几分钟的时间来加载 AutoCAD 并附加调试器,这破坏了我的原型制作工作流程。
如果我可以使用 Linqpad 之类的东西来制作我的应用程序原型,这样我就可以找到我正在寻找的数据,那将会非常方便。我并不认同使用 Linqpad 的想法;然而,如果我缺少另一种技术,我很想听听。
我不确定这是否是我可以通过专业版实现的目标,但由于没有试用,我无法找到答案。
我正计划开发一款软件,该软件可以读取和处理.dwg文件中的数据。我决定不使用自己的库来处理数据文件的“读取”,而是决定使用RealDWG或Teigha,但是我一直在努力确切地了解它们的工作方式。
我希望在承诺支付许可之前先试用图书馆。我注意到RealDWG是ObjectARX(更具体地说是ObjectDBX)的子集,我可以从中获得试用许可证。因此,如果我下载ObjetARX,是否可以使用ObjectDBX子集来开发应用程序原型?这样做的局限性(如果有)是什么?
我的另一个选择是使用Teigha,从长远来看,这会比RealDWG慢吗?使用RealDWG或Teigha的利弊是什么?
自动加载应用程序的方法很少 - AutoCAD启动时的插件.我知道那些:
%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 如果我的应用程序的路径在选项/文件/支持文件搜索路径中 /ldswitch的应用程序快捷acad.rx 加载应用程序的方式顺序是什么?如果此处未列出其他方式,请告诉我们.也可能以另一种方式加载ARX或.Net应用程序.
我对开发 AutoCAD 插件感兴趣,并试图了解几种不同类型的 AutoCAD 插件文件之间的关系:
据我所知,这三个文件都是相互关联的,并且一起工作来初始化和加载插件,我只是没有看到森林中的每个文件类型包含哪些信息,哪些文件加载或依赖于其他人等等
听起来插件的核心功能应该放在 ARX 文件中,并用 C++ 编写并针对本机/目标平台进行编译。
听起来好像在启动时,AutoCAD 会加载其插件 DLL,这些都是托管 .NET 库(通常用 C# 编写),然后它们依次调用其本机/编译的相应 ARX 文件。至于CUIX文件在哪里发挥作用,我仍然不知道。
任何人都可以帮助解释这些文件的关系和依赖关系,以及它们内部的代码/逻辑/数据类型是什么?提前致谢!
在ModelSpace中,我的区域受到某些曲线的限制(将它们连接起来具有AcDbRegion)。
我还绘制了AcDbLine。
我需要的是分割线以仅在区域内获得线。
我知道如何获取交点,但是如何找到连接两个交点的线是否在内部?还是外面?