0

我想在 .dwg 文件的所有块上运行 ATTOUT 例程,使用核心控制台来自动化应用程序。

我在我的 AutoCAD 2016 安装的 Express 文件夹中使用默认的“attout.lsp”,因为我想在所有块上使用它并且不需要选择特定块。

我试过了 :

accoreconsole.exe /i C:/<pathing_to_my_dwg_file>/sample1.dwg /s test-attout.scr

其中 test-attout.scr 是:

(load "attout.lsp" "/omg it"s not working)

结果如下:

`Redirect stdout (file: C:\Users\lboey\AppData\Local\Temp\accc64962).
AutoCAD Core Engine Console - Copyright Autodesk, Inc 2009-2013.
Regenerating layout.

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 from the preferred value. Use SY
SVARMONITOR command to view changes.


Command:
Command:

Command:
Command: (load "attout" "omg it's not loading")_quit


Command:`

我是 AutoCAD 的新手,非常感谢任何建议。

谢谢大家!!

4

3 回答 3

2

此命令(ATTOUT)将显示一个对话框,这就是它在控制台上不起作用的原因。此外,任何使用 COM 的 LISP 都将无法工作 (vl-load-com)

于 2015-08-11T13:00:19.313 回答
0

我会回答我自己的问题:

  1. 创建一个 my_script.scr 文件
(load "C:\\Program Files\\...\\my_routine.lsp")> 
att-out
  1. 创建一个 AutoLisp 例程文件 my_routine.lsp

(defun c:att-out () (load "attout") (setq out (strcat (getvar> "dwgprefix") (acet-filename-path-remove (acet-filename-ext-remove> (getvar "dwgname") )) .txt" )) (setq ss (ssget "X" '((0 . "INSERT") (66 . 1)))) (bns_attout out ss) )

  1. 使用 acad.exe 调用脚本

acad.exe C:\Program Files...\a_simple_dwg.dwg /b my_script.scr

Autocad Core Console 现在处于早期开发阶段,因此自动化操作链的最简单方法是使用 AutoLisp。

于 2015-08-21T14:04:08.647 回答
-1

my_routine.lsp可在 Autocad 2011 上稍作调整

(defun c:att-out () (load "attout") (setq out (strcat (getvar "dwgprefix") (acet-filename-path-remove (acet-filename-ext-remove (getvar "dwgname"))) ".txt" )) (setq ss (ssget "X" '((0 . "INSERT") (66 . 1)))) (bns_attout out ss))

谢谢@user3336544

于 2016-02-22T14:44:36.793 回答