batch plot帮助。
我想在一些折叠中制作绘图图形怎么了?
....
....
(地图车
'(λ(图纸)
(setq文件(vla open(vla get documents(vlax get acad object))dwg))
(PTE:plotting2“cannon2.pc3”“ST eng.ctb”“A4”1文件)
)
图纸
)
,,,
,,,
(defun PTE:plotting2(设备ctb paper num type acDoc/actLay)(vl load com)
(setq actLay(vla get ActiveLayout acDoc);;모형 或布局
)
(vlax invoke方法actlay’RefreshPlotDeviceInfo)
(vla put Configname actlay设备);
(vla put CanonicalMediaName actlay paper);
(vla put PaperUnits actlay 1)
(vla put PlotRotation actlay 1)
(vla put PlotType actlay type)
(vla put StandardScale Actlay acScaleToFit)
(vla put Use StandardScale actlay:vlax true)
(vla put CenterPlot actlay:vlax true)
(vla put PlotWithPlotStyles actlay:vlax true);
(vla put样式表actlay ctb);
(vla put PlotHidden actlay:vlax false)
(vla put NumberOfCopies(vla get Plot acdoc)num)
(if(=类型4)(vla GetWindowToPlot actLay p1 p2))
(vla PlotToDevice(vla get Plot acDoc))
;(vla PlotToFile(vla get plot acdoc)(strcat(getvar“DWGPREFIX”)(vl filename base(getvar“DWGNAME”))).PDF)
) 假设子功能“PTE:plotting2”起作用,我建议从脚本调用它,并使用脚本打开/关闭图形。 总是多亏了李·麦克。。。
我想以只读方式打开文件。。。。如何使用脚本打开文件(只读)。。。?
我现在学习visual lisp。。我想知道这个消息来源有什么问题。。。?
为什么需要以只读方式打开它才能打印?打开它,不要保存。 有人总是通过网络打开我的文件
如果已打开文件,则我的脚本源出错
我用你的子程序。谢谢
以下是示例源。。
(defun c:zoome()
(PTE:script“zoom e”T nil)
)
(defun PTE:script(cmd save first/directory dwgs dwg scr name f)
;;______________________________________________________________ 子功能-01
(defun LM:GetAllFiles(Dir Subs Filetype/GetSubFolders)
;; ? 李Mac 2010
(defun GetSubFolders(文件夹/u f)
(地图车
(功能
(lambda(f)(setq _f(strcat文件夹“\\”f))
(cons \u f(apply(function append)(GetSubFolders \u f)))
)
)
(cddr(vl目录文件文件夹nil-1))
)
)
(应用(函数附加)
(vl删除(报价为零)
(地图车
(功能
(lambda(文件路径)
(地图车
(功能
(lambda(文件名)
(strcat文件路径“\\”文件名)
)
)
(vl目录文件文件路径文件类型1)
)
)
)
(append(list Dir)(apply(function append)(if subs(GetSubFolders Dir)))
)
)
)
)
;;______________________________________________________________ 子功能-02
(defun LM:directoryDialog(msg dir flag/Shell HWND Fold Self Path ac)
(vl load com)
;; ? 李Mac 2010
(setq Shell(vla getInterfaceObject(setq ac(vlax get acad object))“Shell.Application”)
HWND(vl catch all apply‘vla get HWND(list ac))
Fold(vlax invoke方法Shell的BrowseForFolder(if(vl-catch-all-error-p HWND)0 HWND)msg flag dir))
(vlax释放对象外壳)
(如果折叠
(程序
(setq Self(vlax get property Fold'Self)路径(vlax get property Self'路径))
(vlax释放对象自身)
(vlax释放物体折叠)
(和(“\\”(子路径(strlen路径)))
(setq路径(substr路径1(1-(strlen路径Ю)Ю)))
)
)
路径
)
(setvar“cmdecho”0)
(setq目录(LM:directoryDialog)无1)
(if(eq“\\”(substr目录(strlen目录)))
(setq目录(substr目录1(1-(strlen目录)))
)
(setq dwg(LM:GetAllFiles目录nil“*.dwg”))
(setq fname(vl filename mktemp“ST script.scr”)
f(打开fname“w”)
)
(如果首先
(程序
(写入行“_.QSAVE”f)
(写入行“_.CLOSE”f)
)
)
(foreach dwg图纸
(程序
(写入行(strcat“uu.OPEN”“dwg”\)f)
(写入行cmd f)
(如果保存(写入行“_QSAVE”f))
(写入行“_.CLOSE”f)
)
)
(关闭f)
(命令“_.SCRIPT”fname)
(vl文件删除fname)
(普林斯)
) 张贴代码时请使用代码标签:
Your Code Here
读这个。 关于脚本,您可以找到以下使用程序:
http://lee-mac.com/scriptwriter.html 谢谢你的建议。李:)
我使用wscript,但它是相同的问题;;
如果我已经打开文件并运行脚本,则提示此消息
“是否以只读方式打开文件?”
;;; 可能先检查它是否打开,如果是,请对提示说“是”:
检查文件是否打开
(findfile (strcat <FilePath> <Filename> ".dwl")) 事实上,我认为找到“*.dwl”之前
但如果autocad关闭时出错(ctrl+alt+del),dwl文件将保留。。
当然,删除文件,然后没有问题。
编写lisp脚本在我的工作中非常重要,因为我处理许多dwg。
所以我想让perpect script lisp成为我的贪婪。
我需要学习更多。。然后想到李·麦克。
你是个好人
页:
[1]