FastFiber

OPGELOST - lisp code "zoom"

Gestart door gery, vr 07 04 2017, 10:21:19

Vorige topic - Volgende topic

gery

Is het zoom commando een LISP routine? Zo ja, waar vind ik die?

Ik zoek eigenlijk de lisp-code die
Command: ZOOM
Viewport is view-locked. Switching to Paper space.

Specify corner of window, enter a scale factor (nX or nXP), or
[All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: e
Regenerating layout.

Switching back to Model space.

doet.
AutoCAD 2020 - Windows 10

cadtools@gmail.com

Kun je niet acceptabel werken met VPMAX in layout vp?

EddyBeerke

Ik heb een keer iets gemaakt zodat je zoomwindow hebt.
En een zoomextents.
Maar wat jij nu wil snap ik niet.
Kun je uitleggen wat je bedoeld?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

gery

#3
Als je in een locked viewport in een layout het zoom commando initieert, wordt automatisch overgeschakeld naar paperspace, en na beëindigen van het zoom commando wordt er automatisch teruggeschakeld naar modelspace.
In het tekstscherm verschijnt dit:
Command: ZOOM
Viewport is view-locked. Switching to Paper space.

Specify corner of window, enter a scale factor (nX or nXP), or
[All/Center/Dynamic/Extents/Previous/Scale/Window/Object] <real time>: e
Regenerating layout.

Switching back to Model space.

Ik zou deze functionaliteit willen inbouwen in lisp "zoomminext.lsp" uit topic http://www.cadsite.be/smf/index.php?topic=6556.msg34478#msg34478, want die code houdt geen rekening met de viewport lock.
AutoCAD 2020 - Windows 10


EddyBeerke

Om eerlijk te zijn... ik snap echt niet wat het nu doet...
Kan dat uitgelegd worden... ik heb de nieuwe code geprobeerd maar ik 'zie' het gewoon niet.
Dus wat is het nut van deze lisp?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

roy_043

@Eddy: Wat begrijp je niet? Het tijdelijk omschakelen naar PS bij _Zoom als een VP gelockt is, of het idee achter ZoomMinExt?

cadtools@gmail.com

#7
Dit is een oude 'tilemode swith' die ik gebruikte toen er nog geen annotative scales bestond.
Misschien toch nog bruikbaar, als die van Roy_043 niet beter is..

command:TS


(defun c:tis ()
      (command "-view" "save" "VSR_1")
      (c:vpl)
      (command "tilemode" "1")
      (command "-view" "r" "VSR_1")
     
  )

; selest vp scale
(defun c:ts ()
    (c:svp)
    (c:tis))

  (defun c:svp ()
  (setvar "TileMode" 0) ;  Force PaperSpace
  (command "-layer" "on" "defpoints" "")
  (if (/= (getvar "cvport") 1)
    (progn
    (setq currentscalevalue (getvar "cannoscalevalue")) 
    (command "_pspace") ; close the view port
    ;(command "zoom" "extents") ; irritant
    )
    ;(command "zoom" "extents") 
  )
 
  (setq vpflag (getvar "cvport")) ; get viewport #
  (while (= vpflag 1) ; No active viewport, Loop until one is picked
    (setq sel-vport (car (entsel "\nSelect view port: ")))
    (if (= sel-vport nil)
      (alert  "select a viewport")
      (progn
;---------

(command "-vports" "lock" "off" sel-vport "")
(setq currentscalevalue (getvar "cannoscalevalue"))


---------
        (setq entvport (entget sel-vport))
        (if (and;; not all vp objects are LWPolylines
              ;;(= (cdr (assoc 0 entvport)) "LWPOLYLINE")
              (setq vptest (member '(102 . "{ACAD_REACTORS") entvport))
              (setq vptest (member '(102 . "}") (reverse vptest)))
              (assoc 330 vptest)
            )
          (setq entvport (entget (cdr (assoc 330 vptest))))
        )

        (if (= (cdr (assoc 0 entvport)) "VIEWPORT")
          (progn
            (setq vpflag (cdr (assoc 69 entvport))
            )
            (command "mspace")
            (setvar "cvport" vpflag)
    ;(command "cannoscale" (/ 1 currentscalevalue))   does not function !!! swamp.org !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          ) ;  endif  viewport
        )
      )
    ) ;  endif cond  sel-vport
  ) ;endwhile (= vpFlag 1)
;  (command "layerp")
)

;*****************************************
; naar paperspace HARD

(defun c:tsps ()
  (setvar "cmdecho" 0)
  (setq tip (getvar "tilemode"))
  (setq ddscale (getvar "dimscale"))
  (setq ddhuisstijl (getvar "userr5"))  ; bekijk lts huisstijl instelling

(setq getpslts (getvar "psltscale"))
(setq getpslts_t (rtos getpslts 2 0))
(if (= getpslts 1) (setvar "userr4" 1) (setvar "userr4" 0.001))
(if (= getpslts 1) (setq gettekst " (millimeter)") (setq gettekst " (meter)"))

  (setq dds_sc (* ddscale ddhuisstijl))
  (setq lts_ps 1)
  (SETQ dds_sc_t (rtos dds_sc 2 0))
  (SETQ lts_ps_t (rtos lts_ps 2 0))

;-> naar paperspace
   (setvar "psltscale" 1)
   (setvar "cmdecho" 0)
   (setvar "ucsicon" 1)
   (setvar "ucsfollow" 0) ;niet gebruiken in paperspace
   (setvar "regenmode" 0) ;regenauto tijdelijk uit
   (setvar "ltscale" lts_ps)
   (setvar "tilemode" 0)
   (setvar "regenmode" 1)
   (command "pspace")
   (command "zoom" "e")
   (prompt ( strcat " *** LTS-waarde (paperspace) : "
         lts_ps_t  )
                   
           )
  )

;*****************************************
; naar modelspace HARD

(defun c:tsms ()
 
  (setvar "cmdecho" 0)
  (setq tip (getvar "tilemode"))
  (setq ddprescale (getvar "dimscale"))
  (if (= ddprescale 0) (setq ddscale 10) (setq ddscale ddprescale))
  (setq ddhuisstijlpre (getvar "userr5"))  ; bekijk lts huisstijl instelling
  (if (= ddhuisstijlpre 0) (setq ddhuisstijl 1) (setq ddhuisstijl (getvar "userr5")))
  (setq ddhuisstijl_t (rtos ddhuisstijl 2 0))
 
(setq getpslts (getvar "psltscale"))
(setq getpslts_t (rtos getpslts 2 0))
(if (= getpslts 1) (setvar "userr4" 1) (setvar "userr4" 0.001))
(if (= getpslts 1) (setq gettekst " (millimeter)") (setq gettekst_t " (meter)"))
 
  (setq dds_sc (* ddscale ddhuisstijl))
  (setq lts_ps ddhuisstijl)
  (SETQ dds_sc_t (rtos dds_sc 2 0))
  (SETQ lts_ps_t (rtos lts_ps 2 0))

  ;-> naar modelspace
      (setvar "cmdecho" 0)
      (setvar "regenmode" 0) ;regenauto tijdelijk uit
      (if (= getpslts 1) (setvar "ltscale" dds_sc) (setvar "ltscale" ddhuisstijl))
      (setvar "tilemode" 1)
      (setvar "ucsicon" 1)
      (setvar "regenmode" 1)
      (if (= getpslts 1) (prompt ( strcat " *** LTS-waarde (modelspace) : " dds_sc_t gettekst ))
(prompt ( strcat " *** LTS-waarde (modelspace) : " ddhuisstijl_t  gettekst ))
               )

   (princ)
)

;*****************************************
; VZS          viewport ZOOM switch   

(defun C:VZS () (VZS))

(defun VZS (/ LTS_PS)
  (setq VAR_CMDECHO (getvar "cmdecho"))
  (setq ddhuisstijl (getvar "userr5"))  ; bekijk lts huisstijl instelling
  (setvar "cmdecho" 0)
  (command "UNDO" "BE")

  (if (= 1 (getvar "tilemode")) ;-> naar paperspace
    (progn (setvar "psltscale" 1)
           (setvar "cmdecho" 0)
           (setvar "ucsicon" 1)
           (setvar "ucsfollow" 0) ;niet gebruiken in paperspace
           (setvar "regenmode" 0) ;regenauto tijdelijk uit
           (setvar "ltscale" ddhuisstijl)
           (setvar "tilemode" 0)
           (setvar "regenmode" 1)
           (command "pspace")
           (command "zoom" "e")
           (prompt "*** LTS-waarde (paperspace) : ")
           )               
                   
           
    ())
 
  (if (= 0 (getvar "tilemode")) ;-> in modelspace
    (progn
      (command "view" "s" "VSR_0")
      (command "mspace")
      (prompt
        "\n** Two simultaneous clicks required for a non-current viewport. **"
      ) ;_ end of prompt
      (command "mview" "lock" "off" "all" ""); alle viewport unlocked ...
      (setq PT_VP (getpoint "\nSelect internal point within viewport:"))
      (command "-view" "save" "VSR_1")
      (command "tilemode" "1")
      (setq dimvar (getvar "dimscale"))    ;added DDS - Hlam
      (setq dds_scale (* dimvar ddhuisstijl))        ;DDS
      (command "tilemode" "1")              ;DDS
      (setvar "ltscale" dds_scale)
      (command "-view" "r" "VSR_1")
      ) ;_ end of progn
    (ts)
  ) ;_ end of if
  (command "UNDO" "E")
  (setvar "cmdecho" VAR_CMDECHO)
  (princ)
) ;_ end of DEFUN



EddyBeerke

Citaat van: roy_043 op ma 10 04 2017, 20:09:11
@Eddy: Wat begrijp je niet? Het tijdelijk omschakelen naar PS bij _Zoom als een VP gelockt is, of het idee achter ZoomMinExt?
Ik begrijp de bedoeling niet.
Als ik in een gelockt vp aan het zoomen ben dan schakelt acad altijd over naar pspace en weer terug naar modelspace.
Als het vp niet gelockt is dan zoom je alleen in het vp ->> dus krijg je andere schaal.
Ik begrijp het nut dus niet -->> het doel.

Citaat van: cadtools@gmail.com op ma 10 04 2017, 23:10:23
...
command:TS

Als ik deze lisp gebruik dan mis ik de (c:vpl) functie.



Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

gery

Citaat van: EddyBeerke op di 11 04 2017, 09:22:09Ik begrijp de bedoeling niet.
Als ik in een gelockt vp aan het zoomen ben dan schakelt acad altijd over naar pspace en weer terug naar modelspace.
Als het vp niet gelockt is dan zoom je alleen in het vp ->> dus krijg je andere schaal.
Ik begrijp het nut dus niet -->> het doel.
Het normale zoom commando werkt idd zo, maar niet deze lisp: http://www.cadsite.be/smf/index.php?topic=6556.msg34478#msg34478. En om de schaal in VP's niet per ongeluk te wijzigen bij gebruik van die andere lisp, had ik graag die functionaliteit uit het normale zoom commando ook in de lisp uit dat andere topic gehad, en daar heeft Eddy nu voor gezorgd.
AutoCAD 2020 - Windows 10

EddyBeerke

Citaat van: gery op di 11 04 2017, 10:42:53
En om de schaal in VP's niet per ongeluk te wijzigen ...

Dan kun je beter deze lisp toepassen:
(defun c:AllLayoutsVPLock ( / lo_len x)
(defun VPLock()
(command "ZOOM" "Extents")
(Command "-vports" "lock" "on" "all" "")
(princ "\nAlle viewports gelocked.\n")
(princ)
)
(setq cmdsave (getvar "cmdecho"))
  (setvar "cmdecho" 0)
(setq oldLayout (getvar "CTAB"))
(setq lo_len (length (layoutlist)))
  (setq x lo_len)
  (while (> x 0)
    (princ (strcat "\n " (itoa x) ":"))
    (setq x (- x 1))
    (princ (nth x (layoutlist)))
(command "layout" "set" (nth x (layoutlist)))
(VPLock)
);end while
(command "layout" "set" oldLayout)
(princ "AllLayoutsVPLock is klaar...")
(setvar "cmdecho" cmdsave)
(princ)

);end defun

Commando: AllLayoutsVPLock
Werking: Gaat alle Layouts af en zet alle viewports op lock.
Reden: Als een viewport niet gelocked is, en je zoomt in of uit, is de schaal en de viewcenter naar de haaien...
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

roy_043

Citaat van: EddyBeerke op di 11 04 2017, 09:22:09
Ik begrijp het nut dus niet -->> het doel.
Eddy, de oude versie van ZoomMinExt hield geen rekening met gelockte viewports, de nieuwe versie doet dat wel. Deze door Gery gevraagde aanpassing lijkt mij een alleszins nuttig.

EddyBeerke

Citaat van: roy_043 op di 11 04 2017, 19:24:41
Citaat van: EddyBeerke op di 11 04 2017, 09:22:09
Ik begrijp het nut dus niet -->> het doel.
Eddy, de oude versie van ZoomMinExt hield geen rekening met gelockte viewports, de nieuwe versie doet dat wel. Deze door Gery gevraagde aanpassing lijkt mij een alleszins nuttig.
Dus het gaat alleen om het zoomen in een viewport, meer niet?
Als dat zo is dan moet je alleen je vp locken... Dan heb je toch ook wat je wilt. Of denk ik te simpel?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

gery

Citaat van: EddyBeerke op wo 12 04 2017, 07:32:16
Dus het gaat alleen om het zoomen in een viewport, meer niet?
Als dat zo is dan moet je alleen je vp locken... Dan heb je toch ook wat je wilt. Of denk ik te simpel?
"Zoom" in een locked VP doet idd wat het moet.
"ZoomMinExt" in een locked VP deed dat niet, maar dat heeft Roy ondertussen aangepast waardoor nu ook ZoomMinExt rekening houdt met de lock.
AutoCAD 2020 - Windows 10

EddyBeerke

Citaat van: gery op wo 12 04 2017, 09:25:28
Citaat van: EddyBeerke op wo 12 04 2017, 07:32:16
Dus het gaat alleen om het zoomen in een viewport, meer niet?
Als dat zo is dan moet je alleen je vp locken... Dan heb je toch ook wat je wilt. Of denk ik te simpel?
"Zoom" in een locked VP doet idd wat het moet.
"ZoomMinExt" in een locked VP deed dat niet, maar dat heeft Roy ondertussen aangepast waardoor nu ook ZoomMinExt rekening houdt met de lock.
Dat snap ik wel maar wat ie de meerwaarde van deze lisp als je aleen je vp moet locken?
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/