429014673 发表于 2013-12-14 18:38:11

打印样式添加路径问题

如何用程序为打印样式添加一个搜索路径(如D盘A文件夹),原来CAD默认的打印样式 路径不更改的前提下.


edata 发表于 2013-12-14 18:38:12

;;;在原来的打印样式基层上添加新的打印样式路径。
;;;此方法将使得菜单->文件->打印样式管理器出错,提示无法找到路径.
;;;选择文件夹对话框采用秋枫函数
;;;cad2006cn测试通过
(defun c:tt(/ pspath old_path n_path bakps k)
(vl-load-com)
(initget "Y")
(if (and (setq bakps(vl-registry-read "HKEY_CURRENT_USER\\PrinterStylePath"));恢复初始路径
           (= (if (setq k (getkword "\n是否恢复CAD打印样式表安装默认路径(Y):"))(strcase k)) "Y"))
    (progn
      (princ "\n开始恢复")
    (setenv "PrinterStyleSheetDir" bakps)
    (vl-registry-delete "HKEY_CURRENT_USER\\PrinterStylePath");删除备份注册表
    )
    (progn
      (alert"此方法将使得菜单->文件->打印样式管理器出错,提示无法找到路径.")
      (if(setq pspath(qf_getFolder "选择添加打印样式路径:"));秋枫文件夹对话框函数
(progn   
    (setq old_path(getenv "PrinterStyleSheetDir"))
    (if (vl-registry-read "HKEY_CURRENT_USER\\PrinterStylePath")(princ)      
    (vl-registry-write "HKEY_CURRENT_USER\\PrinterStylePath" "" old_path));备份初始路径到注册表
    (setq n_path (strcat old_path ";" pspath))
    (setenv "PrinterStyleSheetDir" n_path)
    )
(princ"\n未指定路径")
)
      )
    )
(princ "\n新的打印样式路径为:")
(getenv "PrinterStyleSheetDir")
)

;; 本代码仅提供作为应用上的参考, 而未声明或隐含任何保证; 对于任何特殊
;; 用途之适应性, 以及商业销售所隐含作出的保证, 在此一概予以否认.
;; ==================================================================
;; 作者:秋枫,参考了灯火的VBA程序
;; 用法:(qf_getFolder msg)
;; 例子:(qf_getFolder "选择文件夹:")
;; 返回值:字符串,文件夹路径,如果点了cancel, 返回nil

(defun qf_getFolder (msg / WinShell shFolder path catchit)
(vl-load-com)
(setq winshell (vlax-create-object "Shell.Application"))
(setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 1))
(setq
    catchit (vl-catch-all-apply
            '(lambda ()
               (setq shFolder (vlax-get-property shFolder 'self))
               (setq path (vlax-get-property shFolder 'path))
               )
            )
)
(if (vl-catch-all-error-p catchit)
    nil
    path
)
)

edata 发表于 2013-12-14 21:51:48

鱼与熊掌,不可兼得。

edata 发表于 2013-12-14 22:04:33

cad2006通过测试。可以搜索到样式表,即为所求,但是通过菜单 文件->打印样式管理器,无法打开样式路径,因为路径非法。

页: [1]
查看完整版本: 打印样式添加路径问题