Millsy29 发表于 2022-7-6 10:47:02

电子传递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)
)
'()
)


 
谢谢
 
米尔西

VVA 发表于 2022-7-6 10:51:56

_-电子传递

rkmcswain 发表于 2022-7-6 10:54:29

 
不,这仅在命令行中运行电子传递命令。
 
此lisp代码中没有命令定义。
它将在加载后立即运行。

Millsy29 发表于 2022-7-6 10:58:14

你有一个Lisp程序,将电子传递???还是电子传递和分离x-refs???有命令提示吗???

Tharwat 发表于 2022-7-6 11:01:01

试试这个很简单的。。。
(defun c:try ()
(vl-cmdf "_.qsave" "_.-etransmit" "_c" pause )
)
 
祝你好运
 
塔瓦特

Millsy29 发表于 2022-7-6 11:05:10

谢谢你的帮助,它几乎成功了。这段简单的代码让我深入了解了lisp代码。但是没有。zip文件已创建。请参见下面的AutoCAD文本窗口。
 
命令:_-电子传递
正在更新字段。。。
输入选项[创建传递包/仅报告/当前设置/选择
设置]:\u c
正在收集文件。。。
传递包的文件名:\更新块*Model\u空间的索引
完成。
已创建传输:\。拉链
命令:T
 
米尔西

Tharwat 发表于 2022-7-6 11:07:34

现在,我已经试了很多次了,真是太棒了。
 
打开新图形,执行代码并再次检查。
代码唯一会询问你文件的位置。。。
 
尝试不同的方式。
祝你好运
 
塔瓦特

alanjt 发表于 2022-7-6 11:09:20

(command "_.qsave"
      "_.-etransmit"
      "_c"
      (strcat (getvar 'dwgprefix)
                (vl-filename-base (getvar 'dwgname))
                ".zip"
      )
)

Tharwat 发表于 2022-7-6 11:14:10

这是代码的结果。。。。文件已创建。
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.

 
当做
 
塔瓦特

Millsy29 发表于 2022-7-6 11:16:18

这真是太棒了,我真是太感谢你了,艾伦。。。
 
在没有命令提示的情况下,如何将其放置在Palette上的按钮上?或者添加defun C:et命令提示符容易吗?
 
 
米尔西
页: [1] 2
查看完整版本: 电子传递lisp