绘图窗口中的AutoCAD(也是LT)combox控件,ChooseString未找到打印机

时间:2019-01-31 13:04:00

标签: autohotkey autocad

我制作了一个AutoHotkey脚本,可以将图形打印为PDF;但是,我在AutoCAD的绘图对话框中使用特定的组合框时遇到问题。此组合框使您可以选择已安装的打印机或打印机配置文件之一。我要选择的打印机是内置打印机之一,称为“ DWG To PDF.pc3” 。这是我不起作用的代码段(它似乎无能为力): Control , ChooseString , DWG , ComboBox1 , Plot - Model

此外,我尝试使用带引号和不带引号(这总是很难告诉我何时需要引述文字文本)和全名-无效。我的解决方法(我希望是暂时的)是使用Control , Choose , N。这是不希望的,因为不同的用户可能安装了更多或更少的打印机,这将影响所需打印机在列表中的放置位置。这是该代码的片段: Control , Choose , 20 , ComboBox1 , Plot - Model

作为参考,我已经安装了AutoHotkey版本1.1.30.01-2018年11月11日。

我想念什么?或有任何建议或创意解决方案(甚至来自其他编程语言)?谢谢!

编辑:

TL; DR-主要用于LT。

整个上下文-我拥有完整的AutoCAD(机械),并使用LISP来完成许多任务。实际上,几年前,我已经在许多论坛上使用了您的(Lee Mac's)教程和有用的帖子来开始使用它。在我的公司,我们有27个LT(11个席位)席位,在那里我建立了带有SCR文件的公司功能区,用于一些事情,包括打印。这种情况有些不同,因为某些用户需要能够选择一些不同的预配置打印选项。

当然,我可以为此目的制作更多的SCR文件,但是它们缺少AHK可以提供的防止用户错误的功能。的确,我在AHK上有一个工作程序,但是这与我的标准还差得很远,因为只有一个特定的组合框似乎有些不可思议。因此,如果有人可以引导我解决这个问题,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,如果您可以确定宿主应用程序是AutoCAD的完整版本还是AutoCAD LT的精简版本,这将很有帮助,因为前者支持完全自定义使用AutoLISP,.NET或ObjectARX API(因此此任务很简单),而后者不支持自定义,这意味着必须使用第三方工具(例如AutoHotKey


如果您可以访问完整版AutoCAD ,则可以使用以下AutoLISP程序来完成打印为PDF的任务:

(defun c:pdfall ( / *error* cmd ctb )

    (defun *error* ( msg )
        (if ctb (setvar 'ctab ctb))
        (if cmd (setvar 'cmdecho cmd))
        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
            (princ (strcat "\nError: " msg))
        )
        (princ)
    )

    (setq ctb (getvar 'ctab)
          cmd (getvar 'cmdecho)
    )
    (setvar 'cmdecho 0)
    (foreach lay (layoutlist)
        (setvar 'ctab lay)
        (command
            "_.-plot"
            "_Y" ;; Detailed plot configuration? [Yes/No]:
            ""   ;; Enter a layout name <Current-Layout>:
            "DWG To PDF.pc3" ;; Enter an output device name:
            "ISO full bleed A4 (297.00 x 210.00 MM)" ;; Enter paper size:
            "_M" ;; Enter paper units [Inches/Millimeters]:
            "_L" ;; Enter drawing orientation [Portrait/Landscape]:
            "_N" ;; Plot upside down? [Yes/No]:
            "_E" ;; Enter plot area [Display/Extents/Limits/View/Window]:
            "_F" ;; Enter plot scale (Plotted Inches=Drawing Units) or [Fit] <1=1>:
            "_C" ;; Enter plot offset (x,y) or [Center]:
            "_Y" ;; Plot with plot styles? [Yes/No]:
            "monochrome.ctb" ;; Enter plot style table name (enter . for none):
            "_Y" ;; Plot with lineweights? [Yes/No]:
            "_N" ;; Scale lineweights with plot scale? [Yes/No]:
            "_N" ;; Plot paper space first? [Yes/No]:
            "_N" ;; Hide paperspace objects? [Yes/No]:
            (LM:uniquefilename (strcat (getvar 'dwgprefix) lay ".pdf"))
            "_N" ;; Save changes to page setup [Yes/No]:
            "_Y" ;; Proceed with plot [Yes/No]:
        )
    )
    (setvar 'ctab ctb)
    (setvar 'cmdecho cmd)
    (princ)
)

;; Unique Filename  -  Lee Mac
;; Returns a filename suffixed with the smallest integer required for uniqueness

(defun LM:uniquefilename ( fnm )
    (if (findfile fnm)
        (apply
           '(lambda ( pth bse ext / tmp )
                (setq tmp 1)
                (while (findfile (setq fnm (strcat pth bse "(" (itoa (setq tmp (1+ tmp))) ")" ext))))
            )
            (fnsplitl fnm)
        )
    )
    fnm
)

(princ)

但是,假设您只能访问基本的 AutoCAD LT 平台,我建议使用PLOT命令的命令行版本:-PLOT,以便您只需要按可预测的提示顺序提供键盘输入,而不用与对话框界面进行交互,该对话框根据上次使用的设置而有所不同。

在使用-PLOT命令时,Paperspace Layout的提示顺序将如上面发布的AutoLISP程序中所示,即:

"_.-plot"
"_Y" ;; Detailed plot configuration? [Yes/No]:
""   ;; Enter a layout name <Current-Layout>:
"DWG To PDF.pc3" ;; Enter an output device name:
"ISO full bleed A4 (297.00 x 210.00 MM)" ;; Enter paper size:
"_M" ;; Enter paper units [Inches/Millimeters]:
"_L" ;; Enter drawing orientation [Portrait/Landscape]:
"_N" ;; Plot upside down? [Yes/No]:
"_E" ;; Enter plot area [Display/Extents/Limits/View/Window]:
"_F" ;; Enter plot scale (Plotted Inches=Drawing Units) or [Fit] <1=1>:
"_C" ;; Enter plot offset (x,y) or [Center]:
"_Y" ;; Plot with plot styles? [Yes/No]:
"monochrome.ctb" ;; Enter plot style table name (enter . for none):
"_Y" ;; Plot with lineweights? [Yes/No]:
"_N" ;; Scale lineweights with plot scale? [Yes/No]:
"_N" ;; Plot paper space first? [Yes/No]:
"_N" ;; Hide paperspace objects? [Yes/No]:
<Your PDF Filename Here>
"_N" ;; Save changes to page setup [Yes/No]:
"_Y" ;; Proceed with plot [Yes/No]: