为什么我的AutoCAD accoreconsole打开文件或执行脚本?

时间:2017-04-20 22:10:50

标签: batch-file autocad autolisp

我正在运行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 脚本专业版在使用AutoCAd时成功执行脚本但是当我切换到Core Console时失败 它会生成一个日志文件,其中包含:读取C:\ Users \ Documents \ TEST \ ARCH01_FIRST FLOOR PLAN - AREA C.dwg

的日志文件时出错

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

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

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

打开一个新文件

这似乎发生在lisp声明之后的任何事情。

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

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

4 个答案:

答案 0 :(得分:0)

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

希望有所帮助。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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处理dwg文件的非常快速的方法(如果你喜欢的话,还是AutoCAD)。例如,在一批dwg文件上运行dbtext和mtext的搜索和替换操作在单个进程上以大约15个绘图/秒运行。并行设置5或6将接近5000图纸/分钟!我想我会与社区分享这个,因为在处理大量dwg文件时,这个发现对我的公司来说是一个改变游戏规则的行为。

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

事实证明,您可以在accoreconsole的同一个实例中处理多个dwg文件。这里的想法是只加载dwg数据库而不实际打开图形(需要约70ms),操纵数据库,然后保存它。对于i / switch,您可以使用任何虚拟绘图文件,因为它对您的批次没有影响。然后在命令方法的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);
    }
  }
}

如果您有任何疑问或需要更多详细信息,请与我们联系,

答案 3 :(得分:0)

将AutoCAD命令作为dwg文件驱动的最佳方法是使用“ Autodesk知识网络”提出的概念:进程外.NET

a。 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软件,打开项目,对文件进行批处理迭代并处理数据。最近,我开发了一个具有两个要求的插件:

b。无需用户干预即可执行,并且 C。插入所有Dwg文件以执行每个文件的进程;

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

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

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

3.Comments:使用Thread Safe Collection(例如ConcurrentBag)存储Dwg Collection很重要,以确保Next Moving连续Dwgs迭代操作的运行不会受到干扰。