Jump to content

Recommended Posts

Posted

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]

Posted
(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.

Posted

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)))

Posted

BTW, note that:

(vlax-safearray->list (vlax-variant-value (vla-GetPlotStyleTableNames Layout)))

is the same as:

(vlax-invoke Layout 'GetPlotStyleTableNames)

Posted
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!

Posted

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]

Posted

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))
)

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...