-1

我正在运行 Vanilla AutoCAD 2017 accoreconsole.exe 将启动,但会显示示例屏幕,并且似乎会运行命令,尽管我不知道直接从核心控制台打开文件的方法,所以我真的不能用它做任何事情。

尝试的方法 1. Script Pro 2.0:来自https://knowledge.autodesk.com/support/autocad/downloads/caas/downloads/content/autodesk-customization-conversion-tools.html Script pro 在使用 AutoCAD 时成功执行脚本但是随后当我切换到核心控制台时失败它生成一个日志文件,内容为:读取 C:\Users\Documents\TEST\ARCH01_FIRST FLOOR PLAN - AREA C.dwg 的日志文件时出错

2.Auto Lisp 从 AutoCAD 使用我在 House of BIM 上找到的 Auto Lisp 命令。该命令有效,我测试了几个脚本,我首先使用 AutoCad 中的运行脚本按钮进行了测试,它们有效,但在我使用核心控制台时没有。

这生成了一个名为 accc34642 的临时文件,它读取 m_kernelList 仍然有 1 个条目

/i 核心控制台闪烁然后消失 /I 核心控制台从 Qnew 模板文件路径打开一个新文件

无论 lisp 语句之后发生了什么,这似乎都会发生。

然后核心控制台中的 OPEN 命令不会返回提示或错误,它只会返回两次并且什么都不做。输入文件路径会产生错误

3.Widows 批处理文件 我过去只成功地使用过其中一个,但我检查了那些我发现几个不同网站的文件,但在让脚本执行方面仍然没有运气。我还从不同的文件路径尝试了所有这些

4

4 回答 4

2

Wed0,要开始使用 accoreconsole,这里有几个链接可以帮助您:

1) http://adndevblog.typepad.com/autocad/2012/04/getting-started-with-accoreconsole.html

2) http://through-the-interface.typepad.com/through_the_interface/2012/02/the-autocad-2013-core-console.html

对于第二篇文章,Kean 进行了相当多的详细介绍,但我并不特别喜欢他使用 .bat 文件的方法。使用像 C# 这样的编程语言要好得多。

至于打开文件,其实是可以的!我最近发现了一种使用 accorconsole(或 AutoCAD,如果您喜欢的话)处理 dwg 文件的非常快速的方法。例如,对一批 dwg 文件运行 dbtext 和 mtext 的搜索和替换操作在单个进程上以大约 15 个图纸/秒的速度运行。并行设置 5 个或 6 个将处理接近 5000 个图纸/分钟!我想我会与社区分享这一点,因为在处理大批量 dwg 文件时,这一发现改变了我的公司的游戏规则。

为此,您必须使用 .NET API(或 C++ 等)。我用 C# 编写了所有用于处理的代码,lisp 脚本文件中仅有的两行是 NETLOAD 我的 dll 并调用执行处理的命令。

事实证明,您可以在同一个 accoreconsole 实例中处理多个 dwg 文件。这里的想法是只加载 dwg 数据库而不实际打开绘图(大约需要 70 毫秒),操作数据库,然后保存它。对于 i/ 开关,您可以使用任何虚拟绘图文件,因为它不会影响您的批处理。然后在您的命令方法中的 C# 中,您将执行以下操作:

string[] dwgFiles = Directory.GetFiles("C:\\MyDWGFiles");
foreach(string drawingFilePath in dwgFiles)
{
  using(Database database = new Database(false, true))
  {
    database.ReadDwgFile(drawingFilePath, FileShare.ReadWrite, 
                         true String.Empty);
    using(Transaction transaction = 
         database.TransactionManager.StartTransaction())
    {
      //DO STUFF HERE
      transaction.Commit();
      database.SaveAs(drawingFilePath, DwgVersion.Current);
    }
  }
}

如果您有任何问题或需要更多详细信息,请告诉我,

于 2017-07-15T16:34:57.833 回答
2

AutoCAD Console的主要思想是处理1个文件并退出。在 accoreconsole.exe 的单个实例中处理多个文件时,这对于避免内存碎片和错误也很重要

因此,如前所述,考虑每个实例处理单个文件然后退出的工作流。您甚至可以考虑使用 accoreconsole 的多个实例来一次处理多个文件。

于 2017-04-24T15:24:10.170 回答
0

我不相信可以从核心控制台中打开文件。我相对确定核心控制台必须使用路径作为您希望它打开的绘图的参数进行初始化。一旦打开,您就可以使用该文件。因此,您基本上必须为要处理的每个文件打开一个核心控制台实例。

希望有帮助。

于 2017-04-23T08:18:17.083 回答
0

将 AutoCAD 命令驱动为 dwg 文件的最佳方法是使用“Autodesk Knowledge Network”提出的概念:Out-of-Process .NET

一个。https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-NET/files/GUID-C8C65D7A-EC3A-42D8-BF02-4B13C2EA1A4B-htm.html),

Autodesk 支持此替代方案;accoreconsole 不是。

借助此功能,您可以执行 AutoCAD 软件、打开项目、批量迭代文件和操作数据。最近,我开发了一个有两个要求的插件:

湾。在没有用户干预的情况下执行,并且 c.对所有 Dwg 文件进行交互以执行每个文件的进程;

  1. 像上面的链接一样,我实例化了 AutoCAD 并发送像 lisp sintaxe 这样的命令来调用自定义命令(如"("CUSTOM_CMD", "PARAMS1", "PARAMS2" ...)");

  2. 我的自定义命令是这样的:

    [CommandMethod("CUSTOM_CMD")]
    public static void CustomCmd
    
    {
    
        //stuff iterate on DWGs
    
    }
    

3.评论:重要的是使用线程安全集合(例如ConcurrentBag)来存储Dwg Collection,以确保Next Moving连续Dwgs迭代运行之间不干扰。

于 2019-05-24T04:08:00.023 回答