Author Topic: Move object to layers  (Read 9301 times)

0 Members and 1 Guest are viewing this topic.

CADwoman

  • Guest
Move object to layers
« Reply #15 on: February 23, 2005, 02:37:45 PM »
So does this mean we need to look into VB for this function? Seems so easy.

Quote from: CAB
Ugh, Looks like Jeff already knew that. :shock:

sinc

  • Guest
Move object to layers
« Reply #16 on: February 23, 2005, 02:52:42 PM »
Just as a note, you might want to consider putting your viewports on some layer other than Defpoints.  Defpoints is weird - it is linked to layer 0 and behaves in odd ways sometimes.  I know in the old days, putting objects on Defpoints was the only way to keep visible objects from plotting on paper, but that isn't true anymore.

Having a dedicated viewport layer is nicer on several levels.  I actually have two that I call -VP-HIDDEN and -VP-VISIBLE.  The hidden layer has plotting disabled in the layer manager.  Preceding the viewport names with a hyphen makes them appear in the layer manager right before layer 0, along with my -XREF layer.

David Hall

  • Automatic Duh Generator
  • King Gator
  • Posts: 4075
Move object to layers
« Reply #17 on: February 23, 2005, 02:57:41 PM »
This is close to what you need for a VBA solution
Code: [Select]
Private Sub AcadDocument_BeginClose()

Dim objLay As AcadLayer, colLay As AcadLayers
Dim Ent As AcadEntity, pVP As AcadPViewport
    On Error GoTo Exit_Here
    If ThisDrawing.Saved = True Then
   
   
        For Each Ent In ThisDrawing.PaperSpace
            If Ent.ObjectName = "AcDbViewport" Then
                Set pVP = Ent
                pVP.Layer = "Defpoints"
                If Not pVP.DisplayLocked Then pVP.DisplayLocked = True
            End If
        Next Ent
       
        ZoomExtents
        ThisDrawing.PurgeAll
        Else: Exit Sub
    End If
 
    ThisDrawing.Save
Exit Sub

Exit_Here:
  MsgBox Err.Description & Err.Number
Exit Sub

End Sub
Everyone has a photographic memory, Some just don't have film.
They say money can't buy happiness, but it can buy Bacon and that's a close second.
Sometimes the question is more important than the answer. (Thanks Kerry for reminding me)

CAB

  • Global Moderator
  • Seagull
  • Posts: 10401
Move object to layers
« Reply #18 on: February 23, 2005, 03:02:15 PM »
Quote from: CADwoman
So does this mean we need to look into VB for this function? Seems so easy.

Quote from: CAB
Ugh, Looks like Jeff already knew that. :shock:


No, you can do it in plain or vislisp. Just can't use the command chprop.
If Jeff or others don't offer you some code I'll look at it on Friday.
Darn work keeps getting in the way. :shock:
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970
Please support this web site.

CAB

  • Global Moderator
  • Seagull
  • Posts: 10401
Move object to layers
« Reply #19 on: February 23, 2005, 03:18:33 PM »
OK, work can wait. :)
Try this:
Code: [Select]
(defun c:vp2layer( / lyr ssvp idx)
  (vl-load-com)
  (setq lyr "0" ; enter your layer here
        clr "")
  (if (not(setq tbl (tblsearch "LAYER" lyr)))
      (command "._Layer" "_Make" lyr "_Color" (if (= Clr "") "_White" Clr) lyr "")
  )

  (and (setq ssvp (ssget "X" '((0 . "VIEWPORT"))))
       (repeat (setq idx (sslength ssvp))
  (vla-put-layer
  (vlax-ename->vla-object (ssname ssvp (setq idx (1- idx))))
  lyr
)
       )
  )
  (print (strcat "All viewports are now onlayer " lyr "."))
  (princ)
)
(prompt "\nViewport to layer loaded, Enter vp2layer to run.")
(princ)
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970
Please support this web site.

Jeff_M

  • King Gator
  • Posts: 4094
  • C3D user & customizer
Move object to layers
« Reply #20 on: February 23, 2005, 04:35:49 PM »
Good job CAB! I would've put it before work too. :D

Here's yours modified to add the lock portion.
Code: [Select]

(defun c:vp2layer( / lyr ssvp idx)
  (vl-load-com)
  (setq lyr "0" ; enter your layer here
        clr "")
  (if (not(setq tbl (tblsearch "LAYER" lyr)))
      (command "._Layer" "_Make" lyr "_Color" (if (= Clr "") "_White" Clr) lyr "")
  )

  (and (setq ssvp (ssget "X" '((0 . "VIEWPORT"))))
       (repeat (setq idx (sslength ssvp))
(setq vp (vlax-ename->vla-object (ssname ssvp (setq idx (1- idx)))))
(vla-put-layer vp lyr)
(vla-put-displaylocked vp :vlax-true)
    )
       )
  (print (strcat "All viewports are now locked and on layer " lyr "."))
  (princ)
)
(prompt "\nViewport to layer loaded, Enter vp2layer to run.")
(princ)

CADwoman

  • Guest
Move object to layers
« Reply #21 on: February 24, 2005, 12:42:00 PM »
You guys are great! The only thing is, when I ran it' the Layer command displays everything it's doing. So I've been trying to modify by using Subst. Something like this. I'm still trying to figure it out, but what do you think?

(setq ssvp (subst (cons 8 lyr)(assoc 8 ssvp) ssvp))

._Layer
Current layer:  "A-ANNO-REFR"
Enter an option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
_Make
Enter name for new layer (becomes the current layer) <A-ANNO-REFR>: A-ANNO-VPRT
Enter an option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
Plot
Enter a plotting preference [Plot/No plot] <Plot>: N
Enter layer name(s) for this plot preference <A-ANNO-VPRT>: A-ANNO-VPRT Enter
an option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
_Color
New color [Truecolor/COlorbook] <7 (white)>: _White
Enter name list of layer(s) for color 7 (white) <A-ANNO-VPRT>: A-ANNO-VPRT
Enter an option
[?/Make/Set/New/ON/OFF/Color/Ltype/LWeight/Plot/Freeze/Thaw/LOck/Unlock/stAte]:
"All viewports are now display locked and moved to layer A-ANNO-VPRT."

Quote from: Jeff_M
Good job CAB! I would've put it before work too. :D

Here's yours modified to add the lock portion.
Code: [Select]

(defun c:vp2layer( / lyr ssvp idx)
  (vl-load-com)
  (setq lyr "0" ; enter your layer here
        clr "")
  (if (not(setq tbl (tblsearch "LAYER" lyr)))
      (command "._Layer" "_Make" lyr "_Color" (if (= Clr "") "_White" Clr) lyr "")
  )

  (and (setq ssvp (ssget "X" '((0 . "VIEWPORT"))))
       (repeat (setq idx (sslength ssvp))
(setq vp (vlax-ename->vla-object (ssname ssvp (setq idx (1- idx)))))
(vla-put-layer vp lyr)
(vla-put-displaylocked vp :vlax-true)
    )
       )
  (print (strcat "All viewports are now locked and on layer " lyr "."))
  (princ)
)
(prompt "\nViewport to layer loaded, Enter vp2layer to run.")
(princ)

CAB

  • Global Moderator
  • Seagull
  • Posts: 10401
Move object to layers
« Reply #22 on: February 24, 2005, 12:50:05 PM »
Quite Mode. :)
Code: [Select]
(defun c:vp2layer( / lyr ssvp idx usercmd)
  (vl-load-com)
  (setq usercmd (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setq lyr "0" ; enter your layer here
        clr "")
  (if (not(setq tbl (tblsearch "LAYER" lyr)))
      (command "._Layer" "_Make" lyr "_Color" (if (= Clr "") "_White" Clr) lyr "")
  )

  (and (setq ssvp (ssget "X" '((0 . "VIEWPORT"))))
       (repeat (setq idx (sslength ssvp))
    (setq vp (vlax-ename->vla-object (ssname ssvp (setq idx (1- idx)))))
    (vla-put-layer vp lyr)
    (vla-put-displaylocked vp :vlax-true)
    )
       )
  (print (strcat "All viewports are now locked and on layer " lyr "."))
  (setvar "CMDECHO" usercmd)
  (princ)
)
(prompt "\nViewport to layer loaded, Enter vp2layer to run.")
(princ)
I've reached the age where the happy hour is a nap. (°¿°)
Windows 10 core i7 4790k 4Ghz 32GB GTX 970
Please support this web site.

CADwoman

  • Guest
Move object to layers
« Reply #23 on: February 24, 2005, 12:54:01 PM »
oops, I forgot about that. Thanks. See what happens when I try to sound smart like you guys.   :wink:

Quote from: CAB
Quite Mode. :)
Code: [Select]
(defun c:vp2layer( / lyr ssvp idx usercmd)
  (vl-load-com)
  (setq usercmd (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (setq lyr "0" ; enter your layer here
        clr "")
  (if (not(setq tbl (tblsearch "LAYER" lyr)))
      (command "._Layer" "_Make" lyr "_Color" (if (= Clr "") "_White" Clr) lyr "")
  )

  (and (setq ssvp (ssget "X" '((0 . "VIEWPORT"))))
       (repeat (setq idx (sslength ssvp))
    (setq vp (vlax-ename->vla-object (ssname ssvp (setq idx (1- idx)))))
    (vla-put-layer vp lyr)
    (vla-put-displaylocked vp :vlax-true)
    )
       )
  (print (strcat "All viewports are now locked and on layer " lyr "."))
  (setvar "CMDECHO" usercmd)
  (princ)
)
(prompt "\nViewport to layer loaded, Enter vp2layer to run.")
(princ)