Author Topic: Reactor for ctab  (Read 1309 times)

0 Members and 1 Guest are viewing this topic.

GDF

  • Water Moccasin
  • Posts: 2081
Reactor for ctab
« on: April 20, 2018, 08:56:15 AM »
I have no luck finding a reactor for changing the dimscale setting based upon switching between the ctab setvar change. Don't know enough to roll my own...

Here is one modified example that I can not get to work:
Code: [Select]
;;;Reactor to set Dimscale when switching spaces LPS/wizman 2009-02

(defun setscale    (event parameter)
  (if (eq (car parameter) "Ctab")
    (if (eq (getvar "ctab") "Model")
      (progn
       (if (not ARCH#SCLX)(setq ARCH#SCLX 1))
       (setvar "Dimscale" ARCH#SCLX)
       (setvar "ltscale" (* (getvar "Dimscale") 0.7))
       (setvar "modemacro" (strcat  " "[ " (rtos ARCH#SCLX 2 0) " ]"  "  Lts: [ 0.7 ]"))
      )
      (progn
        (setvar "dimscale" 1)
        (setvar "ltscale" (* (getvar "Dimscale") 0.7))
        (setvar "modemacro" (strcat " "Sc: 1'' = 1'-0''  [ 1 ]"  "  Lts: [ 0.7 ]"))
      )
    )
  )
)
Why is there never enough time to do it right, but always enough time to do it over?
BricsCAD 2020x64 Windows 10x64

GDF

  • Water Moccasin
  • Posts: 2081
Re: Reactor for ctab
« Reply #1 on: April 20, 2018, 01:06:05 PM »
Now I'm trying to get this to work:
(if (not ARCH#SCLX)(setq ARCH#SCLX 1))
(if (not ARCH#LOGO)(setq ARCH#LOGO "Arch Program")

Code: [Select]
;;;LeeMac
;;;http://www.theswamp.org/index.php?action=post;quote=586162;topic=53969.0;last_msg=586168
 
(defun layerstate-callback ( rtr arg / las )
    (if
        (setq las
            (cdr
                (assoc (strcase (car arg))
                   '(                       
                        ("A0-0 COVER"       . "A0-0 COVER")
                        ("A1-0 SITE"       . "A1-0 SITE")
                        ("A1-1 DRIVE-THRU" . "A1-1 DRIVE-THRU")
                        ("A2-0 PHOTO"      . "A2-0 PHOTO")
                        ("A3-0 FLOOR"      . "A3-0 FLOOR")
                        ("A3-1 CEILING"    . "A3-1 CEILING")
("A3-2 BASEMENT"    . "A3-2 BASEMENT")
                        ("A4-0 EXT ELEVS"  . "A4-0 EXT ELEVS")
                        ("K2-0 KITCHEN"    . "K2-0 KITCHEN")
                        ("K2-1 KITCH ELEVS"    . "K2-1 KITCH ELEVS")
                        ("Z1-0 FIELD NOTES"    . "Z1-0 FIELD NOTES")
                    )
                )
            )
        )
        (progn
            (if (= "BRICSCAD" (strcase (getvar 'product)))
              (vl-layerstates-restore (getvar "ctab") 6 NIL 0)
              (layerstate-restore las nil 255)
            )           
            (vla-zoomextents (vlax-get-acad-object))
            (vla-regen (layerstate-doc) acallviewports)



            (cond
              ((= (getvar "ctab") "Model")
                (progn
                  (setvar "Dimscale" ARCH#SCLX)
                  (setvar "ltscale" (* (getvar "Dimscale") 0.7))
                  (setvar "modemacro" (strcat ARCH#LOGO "  <PMdesign>   Sc: [ " (rtos ARCH#SCLX 2 0) " ]   Lts: [ "  (rtos (* ARCH#SCLX 0.33) 2 0)  " ]"))
                )
              )
              ((/= (getvar "ctab") "Model")
                (progn 
                  (setvar "dimscale" 1)
                  (setvar "ltscale" (* (getvar "Dimscale") 0.7))
                  (setvar "modemacro" (strcat ARCH#LOGO "  <PMdesign>   Sc: [ 1 ]   Lts: [ 0.7 ]"))
                )
              )
            )         


               
        )
    )
    (princ)
)
(   (lambda ( )
        (vl-load-com)
        (foreach rtr (cdar (vlr-reactors :vlr-miscellaneous-reactor))
            (if (= "layerstate-reactor" (vlr-data rtr))
                (vlr-remove rtr)
            )
        )
        (vlr-set-notification
            (vlr-miscellaneous-reactor "layerstate-reactor" '((:vlr-layoutswitched . layerstate-callback)))
            'active-document-only
        )
        (eval (list 'defun 'layerstate-doc nil (vla-get-activedocument (vlax-get-acad-object))))
        (princ)
    )
)
(princ "\n*** ----- LayerState Reactor Loaded ------ ***")
(princ)
Why is there never enough time to do it right, but always enough time to do it over?
BricsCAD 2020x64 Windows 10x64

GDF

  • Water Moccasin
  • Posts: 2081
Re: Reactor for ctab
« Reply #2 on: April 21, 2018, 10:43:00 AM »
So how do I get the reactor to fire when switching to "Model" tab?

This only works for layouts...
Code: [Select]
(cond
              ((= (getvar "ctab") "Model")
                (progn
                  (setvar "Dimscale" ARCH#SCLX)
                  (setvar "ltscale" (* (getvar "Dimscale") 0.7))
                  (setvar "modemacro" (strcat ARCH#LOGO "  <PMdesign>   Sc: [ " (rtos ARCH#SCLX 2 0) " ]   Lts: [ "  (rtos (* ARCH#SCLX 0.33) 2 0)  " ]"))
                )
              )
              ((/= (getvar "ctab") "Model")
                (progn 
                  (setvar "dimscale" 1)
                  (setvar "ltscale" (* (getvar "Dimscale") 0.7))
                  (setvar "modemacro" (strcat ARCH#LOGO "  <PMdesign>   Sc: [ 1 ]   Lts: [ 0.7 ]"))
                )
              )
            )         
Why is there never enough time to do it right, but always enough time to do it over?
BricsCAD 2020x64 Windows 10x64

GDF

  • Water Moccasin
  • Posts: 2081
Re: Reactor for ctab
« Reply #3 on: April 21, 2018, 11:20:41 AM »
Got this to work as a separate reactor: (removed it from the first one)



Code: [Select]
;;Changes LTSCALE when switching between model & paper space
(defun   ChangedLayout (reactor layout /)
   (cond
     ((= (getvar "ctab") "Model")         
       (progn
         (setvar "Dimscale" ARCH#SCLX)
         (setvar "ltscale" (* (getvar "Dimscale") 0.7))
         (setvar "modemacro" (strcat ARCH#LOGO "  <PMdesign>   Sc: [ " (rtos ARCH#SCLX 2 0) " ]   Lts: [ "  (rtos (* ARCH#SCLX 0.7) 2 0)  " ]"))
       )
     )
     ((/= (getvar "ctab") "Model")
       (progn 
         (setvar "dimscale" 1)
         (setvar "ltscale" (* (getvar "Dimscale") 0.7))
         (setvar "modemacro" (strcat ARCH#LOGO "  <PMdesign>   Sc: [ 1 ]   Lts: [ 0.7 ]"))
       )
     )
   )
)

(if
  (not *LayoutLTS*)
    (setq *LayoutLTS* (VLR-Miscellaneous-Reactor nil
      '((:VLR-layoutSwitched . ChangedLayout))
    )
  )
)
Why is there never enough time to do it right, but always enough time to do it over?
BricsCAD 2020x64 Windows 10x64