电子传递lisp
大家好,我收到了一个电子传递Lisp程序,但我有一个问题。a) 。我找不到运行lisp的命令提示符
b) 。我不确定Lisp程序在整个过程中做了什么。
我希望它做的是创建一个电子传递。压缩文件并放在原始文件旁边。然后分离x参照
我在调色板上创建了一个按钮,用于分离所有工作正常的x-Ref-xr D*。但如果能用Lisp程序同时做到这两件事,那就太好了。有人有这样的Lisp程序吗?
;***SCRIPTABLE ETRANSMIT
(apply
'(lambda ()
(SETVAR "CMDECHO" 0)
(COMMAND "QSAVE" )
;;;*-----------------------------------------------------------
(COMMAND "LAYER" "UNLOCK" "*" "")
(COMMAND "TILEMODE" "0" )
(COMMAND "pspace" )
(command "LAYER" "t" "VIEWPORT" "u" "*" "m" "VIEWPORT" "c" "8" "VIEWPORT" "T" "0" "S" "0" "")
(if(="Model" (getvar "ctab"))
(setq XX1 (ssget "_X" '((0 . "viewport"))))
(progn
(foreach mb (vl-remove "Model"(layoutlist))
(setvar "ctab" mb)
(setvar "psltscale" 1)
(setvar "ltscale" 1)
(setq XX1 (ssget "_X" '((0 . "viewport"))))
(command "-vports" "lock" "off" xx1 ""))))
;;;*-----------------------------------------------------------
(defun removexref (xrefname / blkname)
(if (setq blkname (tblsearch "block" xrefname))
(if (= (cdr (assoc 70 blkname)) 12)
(command ".xref" "d" xrefname)
)
)
(princ)
)
(defun remove-unloaded-xrefs ()
(vlax-for block (vla-get-blocks
(vla-get-activedocument
(vlax-get-acad-object)))
(if (and (= :vlax-true (vla-get-isxref block))
(= 0 (vla-get-count block))
)
(vla-detach block)
)
)
)
(apply
'(lambda ()
(remove-unloaded-xrefs)
(princ)
)
'()
)
;;;*-----------------------------------------------------------
(defun TODAY ( / d yr mo da)
(setq d (rtos (getvar "CDATE") 2 6)
yr (substr d 3 2)
mo (substr d 5 2)
DAY (substr d 7 2)
);setq
(strcat yr mo DAY)
);defun
;;;*-----------------------------------------------------------
(defun NOW ( / d hr mi se)
(setq d (rtos (getvar "CDATE") 2 6)
hr (substr d 10 2)
mi (substr d 12 2)
se (substr d 14 2)
);setq
(strcat hr mi se)
);defun
;;;*-----------------------------------------------------------
(SETQ CPFIX (getvar "dwgprefix"))
(SETQ CDNAM (getvar "dwgNAME"))
(SETQ NDIR (STRCAT "eTran-" (today) "/" ))
(vl-mkDir (strcat CPFIX NDIR ))
;;;*-----------------------------------------------------------
(SETQ NFNAME (strcat (vl-filename-base (getvar "dwgname")) "-" (today) (NOW) ))
;;;*------------------------------------------------------------
(command "saveas" "2004" (strcat (getvar "dwgprefix") NDIR NFNAME ".dwg"))
;;;*------------------------------------------------------------
(command "ETRANSMIT" "CH" "ETRANS" "C" (strcat (getvar "dwgprefix") NFNAME ))
;;;*------------------------------------------------------------
(COMMAND "QSAVE" )
;;;*------------------------------------------------------------
(princ)
)
'()
)
谢谢
米尔西 _-电子传递
不,这仅在命令行中运行电子传递命令。
此lisp代码中没有命令定义。
它将在加载后立即运行。 你有一个Lisp程序,将电子传递???还是电子传递和分离x-refs???有命令提示吗??? 试试这个很简单的。。。
(defun c:try ()
(vl-cmdf "_.qsave" "_.-etransmit" "_c" pause )
)
祝你好运
塔瓦特 谢谢你的帮助,它几乎成功了。这段简单的代码让我深入了解了lisp代码。但是没有。zip文件已创建。请参见下面的AutoCAD文本窗口。
命令:_-电子传递
正在更新字段。。。
输入选项[创建传递包/仅报告/当前设置/选择
设置]:\u c
正在收集文件。。。
传递包的文件名:\更新块*Model\u空间的索引
完成。
已创建传输:\。拉链
命令:T
米尔西 现在,我已经试了很多次了,真是太棒了。
打开新图形,执行代码并再次检查。
代码唯一会询问你文件的位置。。。
尝试不同的方式。
祝你好运
塔瓦特 (command "_.qsave"
"_.-etransmit"
"_c"
(strcat (getvar 'dwgprefix)
(vl-filename-base (getvar 'dwgname))
".zip"
)
) 这是代码的结果。。。。文件已创建。
Command: try _.qsave
Command: _.-etransmit
Updating fields...
Enter an option [Create transmittal package/Report only/CUrrent setup/CHoose
setup] <Report only>: _c
Gathering files ...
Transmittal created: D:\Projects\C-62 Saffarini\C-62 Drainage\DRAINAGE REV.5 -
Standard.zip.
当做
塔瓦特 这真是太棒了,我真是太感谢你了,艾伦。。。
在没有命令提示的情况下,如何将其放置在Palette上的按钮上?或者添加defun C:et命令提示符容易吗?
米尔西
页:
[1]
2