Jump to content

change the shade plot


WPerciful

Recommended Posts

I was trying to change the shade plot of a view port by lisp but I didn't see any way to do that through the change properties or through the dxf codes.

 

 

 

(progn
(setq ss1 (ssget "x" '((0 . "VIEWPORT"))))
(command "change" ss1 "" "p")
)

Link to comment
Share on other sites

I guess with vla functions would do the trick since that I also could not get it working with DXF codes .

 

(defun c:test (/ ss in )
 (if (setq ss (ssget "_:L" '((0 . "VIEWPORT"))))
   (repeat (setq in (sslength ss))
     (vla-put-shadeplot
       (vlax-ename->vla-object (ssname ss (setq in (1- in))))
       acShadePlotAsDisplayed
     )
   )
 )
 (princ)
)
(vl-load-com)

Link to comment
Share on other sites

  • 4 weeks later...

Tharwat,

 

I have been playing with the command that you wrote up (very handy by the way), to do something very similar which I have been trying to figure out for a while...

 

Have got it working "partially" & came up with a workaround for the other issues I was having, but you may be able to assist with a solution..?

 

I am trying to:

1 - select all viewports on a given layer (ie "VP_Hidden")

2 - change the shade plot of these viewports to Legacy Hidden

3 (which I can add seperatley) - run print command

 

Your command works when I modify it, but I am wondering what the

"_:L" & the sslength ss does..?

Something to do with finding a length..?

 

I was trying to use this to get around the problem of some viewports reverting back to "as displayed" occasionally...

 

Any help would be appreciated...

Thanks... :)

Link to comment
Share on other sites

 

"_:L" to avoid selecting objects on Locked layers .

(sslength ss) is the quantity of selection set to be given to Repeat function to run accordingly .

 

 

 

 

(defun c:Test (/ ss in )
 (if (setq ss (ssget "_:L" '((0 . "VIEWPORT")(8 . "VP_Hidden"))))
   (repeat (setq in (sslength ss))
     (vla-put-shadeplot
       (vlax-ename->vla-object (ssname ss (setq in (1- in))))
       acShadePlotHidden
     )
   )
 )
 (princ)
)
(vl-load-com)

Link to comment
Share on other sites

  • 4 years later...

I know this is an old thread, but perhaps someone can offer assistance.

 

In the code above, ShadePlot settings are modified for PaperSpace viewports.

 

Is it possible with code to set ShadePlot = 0 (As displayed) in the Model layout?

 

Thanks,

Jerry

 

Link to comment
Share on other sites

@jberns Try:

(defun c:test ( / enm)
  (setq elst
    (entget
      (vlax-vla-object->ename
        (vla-get-layout (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
      )
    )
  )
  (entmod
    (subst
      '(76 . 0) ; Gc 76 occurs twice in elst. This will change the 1st occurence.
      (assoc 76 elst)
      elst
    )
  )
  (princ "\nDone! ")
  (princ)
)

 

Edited by Roy_043
Link to comment
Share on other sites

@Roy_043,

 

Thanks for the reply and the code. Success!

 

I am curious what was wrong with this code that I was using:

 

;;; Function to get a collection of all layouts in the drawing
(defun LayoutGet (name)
  (dictsearch
    (cdr (assoc -1 (dictsearch (namedobjdict) "ACAD_LAYOUT")))
    name
  ) ;_dictsearch
) ;_LayoutGet

(defun C:TEST ( / cmps)
  ;; get Model layout plot info and then store as Current Modelspace Page Setup (cmps)
  (setq cmps (LayoutGet "Model"))
  ;; set Shade Plot (76) to 0 = As Displayed, Shade Plot Resolution (77) to 2 = Normal
  (setq cmps (subst (cons 76 0) (assoc 76 cmps) cmps))
  (setq cmps (subst (cons 77 2) (assoc 77 cmps) cmps))
  ;; Modify and then update the modelspace layout
  (entmod cmps)
  (entupd (cdr (assoc -1 cmps)))
) ;_C:TEST

Executing the 'entmod' line returned the list.

Executing the entupd line returned nil, which failed to update the entity (page setup).

 

Regards,

Jerry

Link to comment
Share on other sites

Interesting.

Yes, my posted code 'works' (runs), but the settings in the Plot dialog box are not effected.

I will test again next week, but that was the trouble I encountered. When I made a new named page setup, the shade plot defaulted to legacy wireframe.

When I ran the code, the settings did not change in the PLOT or PAGESETUP dialog box. I was certain the 'entupd' failure was causing the problem.

 

Either way, your code works. Awesome! Thanks again.

 

Kind regards,

Jerry

Link to comment
Share on other sites

This one will set all viewports shade plot to hidden, it even works with multiple layouts.

(defun c:test (/)
  (vl-load-com)
  (setq doc (vlax-get-object "AutoCad.Application")
	adoc (vla-get-ActiveDocument doc)
	lao (vla-get-Layouts adoc)
	cnt (vla-get-Count lao)
	inc 0
	)
  (repeat cnt
    (setq cvprt (vla-item lao inc)
	  inc (+ inc 1)
	  blk (vla-get-Block cvprt)
	  )
    (vlax-for itm blk
      (if
	(vlax-property-available-p itm 'ShadePlot)
	(progn
	  (vla-put-ShadePlot itm acShadePlotHidden)
	  (vla-update itm)
	  )
	)
      )
    )
  (princ)
  )

 

Edited by jonathann3891
  • Like 1
Link to comment
Share on other sites

  • 3 years later...

This page contains exactly the code I'm looking for to adjust Model tab ShadePlot options.

Is there a way also to set it to one of the Visual Styles ie:

     Conceptual, Hidden, Realistic, Shaded, Shaded with Edges, Shades of Grey, SKetchy, X-Ray, Wireframe

I tried changing (cons 76 0) to (cons 76 4) but the setting stays the same.

Any assistance would be helpful. Thanks.

Link to comment
Share on other sites

You need to look at the code by Johnathon the thing I found is that model does not have a shadeplot but does have a visualstyle.

 

(defun c:test (/)
  (vl-load-com)
  (setq 
	adoc (vla-get-ActiveDocument (vlax-get-acad-object))
	lao (vla-get-Layouts adoc)
	cnt (vla-get-Count lao)
	inc 0
	)
(repeat cnt
    (setq cvprt (vla-item lao inc)
	  inc (+ inc 1)
	  blk (vla-get-Block cvprt)
	  )
    (vlax-for itm blk
      (if
	(vlax-property-available-p itm 'ShadePlot)
	(progn
	 (vla-put-ShadePlot itm 6)
	 (vla-put-Visualstyle itm 6)
	 (vla-update itm)
	 )
	)
      )
)
  (princ)
)
(c:test)

 

Edited by BIGAL
Link to comment
Share on other sites

Thanks for your reply. I tried Johnathon's code but that only works for pspace vports and does nothing to Shade Plot options in Model tab. 

I also don't see a "visualstyle" property when I do a dump of the Model object:

Command: (vlax-dump-object (vla-item (vla-get-layouts (vla-get-ActiveDocument (vlax-get-acad-object))) "Model"))
; IAcadLayout: The plot settings and visual properties of a model space or paper space block
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff73841d990>
;   Block (RO) = #<VLA-OBJECT IAcadModelSpace 0000018d62bb3ef8>
;   CanonicalMediaName = "ANSI_A_(8.50_x_11.00_Inches)"
;   CenterPlot = 0
;   ConfigName = "None"
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0000018d3a06b3a8>
;   Handle (RO) = "22"
;   HasExtensionDictionary (RO) = -1
;   ModelType (RO) = -1
;   Name = "Model"
;   ObjectID (RO) = 42
;   ObjectName (RO) = "AcDbLayout"
;   OwnerID (RO) = 43
;   PaperUnits = 0
;   PlotHidden = 0
;   PlotOrigin = (0.0 0.0)
;   PlotRotation = 1
;   PlotType = 0
;   PlotViewportBorders = 0
;   PlotViewportsFirst = -1
;   PlotWithLineweights = -1
;   PlotWithPlotStyles = -1
;   ScaleLineweights = 0
;   ShowPlotStyles = 0
;   StandardScale = 0
;   StyleSheet = ""
;   TabOrder = 0
;   UseStandardScale = -1
;   ViewToPlot = ""

Link to comment
Share on other sites

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