ziele_o2k Posted November 15, 2016 Posted November 15, 2016 Is this correct way to get plot styles file names, and what are other options? [color=RED]([/color][color=BLUE]defun[/color] c:getplotstyles [color=RED]([/color] [color=BLUE]/[/color] pstyp psdir pslst[color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] pstyp [color=RED]([/color][color=BLUE]getvar[/color] [color=#a52a2a]"PSTYLEMODE"[/color][color=RED])[/color] psdir [color=RED]([/color][color=BLUE]vla-get-printerstylesheetpath[/color] [color=RED]([/color][color=BLUE]vla-get-Files[/color] [color=RED]([/color][color=BLUE]vla-get-Preferences[/color] [color=RED]([/color][color=BLUE]vlax-get-Acad-object[/color][color=RED]))))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]if[/color] [color=RED]([/color][color=BLUE]=[/color] pstyp [color=#009900]1[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] pslst [color=RED]([/color][color=BLUE]vl-directory-files[/color] psdir [color=#a52a2a]"*.ctb"[/color] [color=#009900]1[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]setq[/color] pslst [color=RED]([/color][color=BLUE]vl-directory-files[/color] psdir [color=#a52a2a]"*.stb"[/color] [color=#009900]1[/color][color=RED]))[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color] pslst[color=RED])[/color] [color=RED])[/color] Quote
Lee Mac Posted November 15, 2016 Posted November 15, 2016 (vlax-invoke (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))) 'getplotstyletablenames ) You may first wish to call the refreshplotdeviceinfo method to ensure that accurate data is available. Quote
ziele_o2k Posted November 15, 2016 Author Posted November 15, 2016 Thank you Lee, while I was reading about refreshplotdeviceinfo I came to something something like this: (setq Layout (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))) (vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames Layout))) Quote
Grrr Posted November 15, 2016 Posted November 15, 2016 BTW, note that: (vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames Layout))) is the same as: (vlax-invoke Layout 'GetPlotStyleTableNames) Quote
ziele_o2k Posted November 15, 2016 Author Posted November 15, 2016 BTW, note that: (vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames Layout))) is the same as: (vlax-invoke Layout 'GetPlotStyleTableNames) Maybe I don't know much about (vlax-safearray->list) (vlax-variant-value) (vlax-invoke) I have to lern a lot! Quote
ziele_o2k Posted November 15, 2016 Author Posted November 15, 2016 Anyway, this is new and better o function from my first post [color=RED]([/color][color=BLUE]defun[/color] c:getplotstyles [color=RED]([/color] [color=BLUE]/[/color] [color=RED])[/color] [color=RED]([/color][color=BLUE]princ[/color] [color=RED]([/color][color=BLUE]vl-member-if[/color] [color=DARKRED]'[/color][color=RED]([/color][color=BLUE]lambda[/color] [color=RED]([/color]x[color=RED])[/color] [color=RED]([/color][color=BLUE]wcmatch[/color] x [color=RED]([/color][color=BLUE]nth[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=#a52a2a]"PSTYLEMODE"[/color][color=RED])[/color][color=DARKRED]'[/color][color=RED]([/color][color=#a52a2a]"*.stb"[/color] [color=#a52a2a]"*.ctb"[/color][color=RED]))))[/color] [color=RED]([/color][color=BLUE]vlax-invoke[/color] [color=RED]([/color][color=BLUE]vla-get-activelayout[/color] [color=RED]([/color][color=BLUE]vla-get-activedocument[/color] [color=RED]([/color][color=BLUE]vlax-get-acad-object[/color][color=RED])))[/color] [color=DARKRED]'[/color]getplotstyletablenames [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] [color=RED])[/color] Quote
Lee Mac Posted November 15, 2016 Posted November 15, 2016 I would suggest: (defun c:getplotstyles ( / lay pat ) (setq lay (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object))) pat (if (zerop (getvar 'pstylemode)) "*ctb" "*stb") ) (vla-refreshplotdeviceinfo lay) (vl-remove-if '(lambda ( x ) (wcmatch (strcase x t) pat)) (vlax-invoke lay 'getplotstyletablenames)) ) Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.