ziele_o2k 发表于 2022-7-5 16:59:54

获取打印样式名称列表

这是获取打印样式文件名的正确方法吗?还有其他选项吗?

(defun c:getplotstyles ( / pstyp psdir pslst)
(setq
   pstyp (getvar "PSTYLEMODE")
   psdir (vla-get-printerstylesheetpath (vla-get-Files (vla-get-Preferences (vlax-get-Acad-object))))
)
(if (= pstyp 1)
   (setq pslst (vl-directory-files psdir "*.ctb" 1))
   (setq pslst (vl-directory-files psdir "*.stb" 1))
)
(princ pslst)
)

Lee Mac 发表于 2022-7-5 17:11:08

您可能首先希望调用refreshplotdeviceinfo方法,以确保有准确的数据可用。

ziele_o2k 发表于 2022-7-5 17:28:19

谢谢李,
当我阅读refreshplotdeviceinfo时,我想到了这样的事情:
    (setq Layout (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))))
   (vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames Layout)))

Grrr 发表于 2022-7-5 17:39:16

顺便说一句,请注意:
(vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames Layout)))
与以下内容相同:
(vlax-invoke Layout 'GetPlotStyleTableNames)

ziele_o2k 发表于 2022-7-5 17:46:47

也许我不太了解
(vlax-safearray->list)
(vlax-variant-value)
(vlax-invoke)
我得学很多!

ziele_o2k 发表于 2022-7-5 17:54:19

无论如何,这是我第一篇文章中新的更好的o函数

(defun c:getplotstyles ( / )
(princ
   (vl-member-if
   '(lambda (x) (wcmatch x (nth (getvar "PSTYLEMODE")'("*.stb" "*.ctb"))))
   (vlax-invoke
       (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))
       'getplotstyletablenames
   )
   )
)
)

Lee Mac 发表于 2022-7-5 18:04:48

我建议:
7
页: [1]
查看完整版本: 获取打印样式名称列表