大家好,
我正在努力做到这一点:
-提示用户浏览特定文件夹(例如,在服务器上共享)
-如果按了escape,或以某种方式取消了命令,则什么也不做,只对“未更改”发出警报。
-如果选择了一个文件夹,则使用结果使其成为新的PrinterStyleSheerDir。
-将当前PrinterStyleSheetDir中的所有文件复制到新文件,并将新文件设置为活动文件。
这是我在互联网上得到很多帮助后编写的代码。
-
- (defun browsefolder (title / shlobj folder fldobj); [color=red]outval[/color]
- ; If outval is localize it is not working therefore after;
- (vl-load-com)
- (setq
- shlobj (vla-getinterfaceobject
- (vlax-get-acad-object)
- "Shell.Application"
- )
- folder (vlax-invoke-method shlobj 'browseforfolder 0 title 0)
- )
- (vlax-release-object shlobj)
- (if folder
- (progn
- (setq
- fldobj (vlax-get-property folder 'self)
- outval (vlax-get-property fldobj 'path)
- )
- (vlax-release-object folder)
- (vlax-release-object fldobj)
- outval
- )
- )
- )
- (browsefolder "Select shared folder")
- [color=red]; until here I have no trouble[/color]
- (if
- (not (= outval nil))
- (
- (setq cPrinterStyleSheetDir
- (strcat (getenv "PrinterStyleSheetDir") "\")
- )
- (foreach file (vl-directory-files cPrinterStyleSheetDir "*.*" 1)
- (vl-file-copy
- (strcat cPrinterStyleSheetDir file)
- (strcat outval file)
- )
- )
- (princ)
- (setenv "PrinterStyleSheetDir" outval)
- ); end if not nil
- (Alert "No folder selected - nothing changed")
- ); end if
- (princ)
这和if条件有关。。。如果我没有选择文件夹(转义或取消),那么没有什么问题。
如果我确实选择了一个文件夹,那么即使使用了该文件夹,我仍然会收到2个错误。有人能帮我把这段代码写得更清楚吗?
我的意思是,它确实有效,但有一些令人讨厌的副作用。
Tnx准备就绪。 |