Jump to content
ColinHolloway

Lisp Reactor to Detect Changing Drawing Tabs

Recommended Posts

ColinHolloway

Hi All,

 

I am experimenting with contextual ribbon menus based on some drawing properties and I am trying to find if it is possible to setup a reactor that will detect when you change drawings either using Switch Windows or clicking on the drawing tab.

 

Any and all input on this issue greatly appreciated :-)

 

Colin Holloway

Brisbane, Queensland, Australia.

Share this post


Link to post
Share on other sites
Lt Dan's legs

(vlr-DocManager-Reactor "test"
  '((:vlr-documentToBeDeactivated . test)))

(defun test ( own args )
 (and (eq 'VLA-OBJECT (type (car args)))
   (alert (strcat (vla-get-fullname (car args)) " is now active"))
 )
)

 

 

http://knowledge.autodesk.com/support/autocad-mechanical/getting-started/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-AutoLISP/files/GUID-6C371938-A51E-43C8-B4A7-365A595DAB11-htm.html

Edited by Lt Dan's legs

Share this post


Link to post
Share on other sites
ColinHolloway

Thank you so much! That is exactly what I was looking for.

 

Thanks for the quick response too :-)

 

Colin

Share this post


Link to post
Share on other sites
Lt Dan's legs

No worries

Share this post


Link to post
Share on other sites
3dwannab
On 10/7/2015 at 12:45 PM, Lt Dan's legs said:

 


(vlr-DocManager-Reactor "test"
  '((:vlr-documentToBeDeactivated . test)))

(defun test ( own args )
 (and (eq 'VLA-OBJECT (type (car args)))
   (alert (strcat (vla-get-fullname (car args)) " is now active"))
 )
)
 
Thank's Dan, I modified that a bit to include opening new drawings. I just like to have the revcloud size change depending on what space I'm in. 
My code below & the code I got way back for when switching layout tabs.
 
My code is not perfect as usual, it repeats the cmd message. It doubles every tab switch. But I can live with that until I have the know how to fix it.

;; Inital code by Lt Dan's legs October 7, 2015: https://www.cadtutor.net/forum/topic/58172-lisp-reactor-to-detect-changing-drawing-tabs/?do=findComment&comment=482055
;; Modified by 3dwannab 04.08.18
;;  - Sets revcloud size as required whether it be model or paperspace.
;;  - Zooms extents only when switching to a layout sheet.

;; BUG in a rug :)
;; Cannot seem to fix the repeating of the cmd message. It doubles every tab switch.

(vlr-DocManager-Reactor "_SwitchTabsReactor"
	'((:vlr-documentToBeDeactivated . _SwitchTabsReactor)))
(vlr-DocManager-Reactor "_SwitchTabsReactor"
	'((:vlr-documentBecameCurrent . _SwitchTabsReactor)))
(vlr-DocManager-Reactor "_SwitchTabsReactor"
	'((:vlr-documentCreated . _SwitchTabsReactor)))
(defun _SwitchTabsReactor ( own args )
	(and (eq 'VLA-OBJECT (type (car args)))
		(progn
			(setq ac (vlax-get-acad-object)
				do (vla-get-activedocument ac)
				)
			(cond
				((= "Model" (getvar "ctab"))
					(setvar "*REVCLOUDMAXARCLENGTH" 300.0)
					(setvar "*REVCLOUDMINARCLENGTH" 300.0))
				((/= "Model" (getvar "ctab"))
					(if (> (getvar "cvport") 1)
						(progn
							(vla-put-mspace do :vlax-false)
							(vla-zoomextents ac)
							(vla-put-mspace do :vlax-true)
							)
						(progn
							(vla-zoomextents ac)
							(setvar "*REVCLOUDMAXARCLENGTH" 6.0)
							(setvar "*REVCLOUDMINARCLENGTH" 6.0))))
				)
			(if (/= (vla-get-fullname (car args)) "")
				(progn (princ (strcat "\n\t\t*** _SwitchTabsReactor msg: '" (vla-get-name (car args)) "' is now active ***"))(princ))
				(progn (princ "\n\t\t*** _SwitchTabsReactor msg: A new drawing is now active ***")(princ))
				)
			)
		)
	)
 
Layout Tab switch reactor

;;After loading this file a reactor will automatically perform
;;a zoom extents on the layout when switching layouts
;;Use stope to stop the reactor and starte to restart.
;;D.C. Broad, Jr. 4/7/2016
;;Monitor system variable "clayout" to check for changes.
(if (null zereact)
	;;global variable zereact holds the reactor pointer
	(setq zereact (vlr-sysvar-reactor
		(getvar "clayout")
		'((:vlr-sysvarchanged . zoome))
		)
	)
	)
;;To start the reactor again
(defun c:starte () (vlr-add zereact))
;;To stop the reactor
(defun c:stope () (vlr-remove zereact))
;;Callback function to
;;zooms extents when layout is switched.
(defun zoome (r l / ac do active-reactors)
	(setq ac (vlax-get-acad-object)
		do (vla-get-activedocument ac)
		)
	(if (and
		(= (car l) "CLAYOUT")
		(/= (vlr-data r) (getvar "clayout"))
		)
	(PROGN
		(vlr-data-set r (getvar "clayout"))
	;;disable all reactors temporarily
	(setq active-reactors (apply 'append (mapcar 'cdr (vlr-reactors))))
	(vlr-remove-all)

	(if (= "Model" (getvar "ctab"))
		(progn
			; (vla-zoomextents ac)
			(foreach n rac (vlr-add (cadr n)))
			(setvar "*REVCLOUDMAXARCLENGTH" 300.0)
			(setvar "*REVCLOUDMINARCLENGTH" 300.0)
			(print n)
			)
		(progn
			(if (> (getvar "cvport") 1)
				(progn
					(vla-put-mspace do :vlax-false)
					(vla-zoomextents ac)
					(vla-put-mspace do :vlax-true)
					(foreach n rac (vlr-add (cadr n)))

					)
				(progn
					(vla-zoomextents ac)
					(print n)
					(setvar "*REVCLOUDMAXARCLENGTH" 6.0)
					(setvar "*REVCLOUDMINARCLENGTH" 6.0)
					)
				)
			)
		)
	;;re-enable all reactors
	(foreach obj active-reactors (vlr-add obj))

	)
	;;else not an applicable sysvar change or no layout switch.
	)
	)

 

 
 
 
 
1
Edited by 3dwannab
Added switching layout tabs code

Share this post


Link to post
Share on other sites
Jef!
On 9/4/2018 at 4:17 PM, 3dwannab said:

My code is not perfect as usual, it repeats the cmd message. It doubles every tab switch. But I can live with that until I have the know how to fix it.

Hi @3dwannab!

This is my first dig in reactors. Here's what I found out about your issue: When you change the active dwg, your reactor get fired 4 times. Once by the :vlr-documentToBeDeactivated, and 3 times by :VLR-documentBecameCurrent.
First point first:  You don't need to trigger it "on your way out" with documentToBeDeactivated, since you trigger it on your way back in. So :vlr-documentToBeDeactivated could be removed altogether.
2nd point: I'm not exactly sure why :VLR-documentBecameCurrent triggers it 3 times, but when I look at help (2015), the description goes as follow "The current document has been changed. This does not necessarily imply that the document has been activated..." I havn't found any distinction between the 3 times, no matters where I looked (vlr-type, vlr-data, vlr-reactions), so my feeling is that it might be triggered once by the dwg reacting to "loosing focus", once by "getting the focus back" and a third time when getting activated. I'm not sure why it is like that by design, because beside if there is a way that I havn't found yet to distinguish between these 3 callbacks, I really wonder what use it could have if it fires 3 times. I tried to use :vlr-documentToBeActivated  instead, but got an error, probably because the doc is about to become the current document, and is not active yet. Good news! I found a way to get the reactor to fire (and only once!) at changing active drawing by using :vlr-sysvarchanged and monitoring change in the  "*ONLINEFILEID" variable. To be honest I'm quite baffled as to why it doesn't trigger twice per dwg, as if the reactor is active in dwg A, it should detect the both changes of active dwg from A to B and B to A, but it doesn't. Go figure.

 

So, I solely modified the _SwitchTabsReactor code to be functional with the new reactor, I didn't change anything else. For zoome either you posted a partial code, or either there are some remnants from where zoome came from, because at 2 places there is a "foreach n rac" and rac isn't defined. The code stores the original reactors, remove them all, adds the rac reactors "foreach n rac", then reactivates the original reactors. Maybe the deactivation/reactivation is required to avoid a loops depending on the action done and the reactor'S nature, but here in this context it is useless. You also have (print n) at 2 places which make nil appear on tab change. Since you use both zoome/_switch to deal with rev cloud sizes, I would consider using _swreac as global like you used zereac, and also add vlr-add/vlr-remove them along in starte and stope. Up to you! Without further due, here it is without the bug in a rug buggy bug.

(vlr-sysvar-reactor ;Jef!
		(getvar "dwgname")
		'((:vlr-sysvarchanged . _SwitchTabsReactor))
		)
;; Inital code by Lt Dan's legs October 7, 2015: https://www.cadtutor.net/forum/topic/58172-lisp-reactor-to-detect-changing-drawing-tabs/?do=findComment&comment=482055
;;;;;;;;;;;;;;;;;;;;;
;; Modified by 3dwannab 04.08.18
;; BUG in a rug :)
;; Cannot seem to fix the repeating of the cmd message. It doubles every tab switch.
;;;;;;;;;;;;;;;;;;;;;
;; Modified by Jef! on 2018-09-07
;; Removed 3dwannabe's bug in a rug :D
;; (Changed :vlr-documentToBeDeactivated , :vlr-documentBecameCurrent & :vlr-documentCreated
;; for a single :vlr-sysvarchanged. Solely changed the code according to that change, and left the rest as is.
;;;;;;;;;;;;;;;;;;;;;
;;  - Sets revcloud size as required whether it be model or paperspace.
;;  - Zooms extents only when switching to a layout sheet.


(defun _SwitchTabsReactor ( own args / )
  (if (= (car args) "*ONLINEFILEID")
      (progn
         (setq ac (vlax-get-acad-object)
               do (vla-get-activedocument ac)
         )
         (cond
           ((= "Model" (getvar "ctab"))
            (setvar "*REVCLOUDMAXARCLENGTH" 300.0)
            (setvar "*REVCLOUDMINARCLENGTH" 300.0)
           )
           ((/= "Model" (getvar "ctab"))
            (if (> (getvar "cvport") 1)
                (progn
                   (vla-put-mspace do :vlax-false)
                   (vla-zoomextents ac)
                   (vla-put-mspace do :vlax-true)
                )
                (progn
                  (vla-zoomextents ac)
                  (setvar "*REVCLOUDMAXARCLENGTH" 6.0)
                  (setvar "*REVCLOUDMINARCLENGTH" 6.0))
            )
           )
         )
         (if (/= (getvar 'savename) "");(/= (vla-get-fullname (car args)) "")
             (progn (princ (strcat "\n\t\t*** _SwitchTabsReactor msg: '" (getvar 'savename) "' is now active ***")))
             (progn (princ "\n\t\t*** _SwitchTabsReactor msg: A new drawing is now active ***"))
         )
      )
    )
  (princ)
)

Tell me if it behaves as expected :)

Share this post


Link to post
Share on other sites
Grrr

Wouldn't this be enough:

(defun RevCldTabSwitch:CB ( rtr arg / v doc acad )
  (setq v (if (= "MODEL" (strcase (car arg))) 300. 6.))
  (if (and (= 6. v) (> (getvar "cvport") 1))
    (progn
      (setq doc (vla-get-ActiveDocument (setq acad (vlax-get-acad-object))))
      (vla-put-MSpace doc :vlax-false)
      (vla-ZoomExtents acad)
      (vla-put-MSpace doc :vlax-true)
    )
    (mapcar 'setvar '("*REVCLOUDMAXARCLENGTH" "*REVCLOUDMINARCLENGTH") (list v v))
  ); if 
); defun 

(defun _IncludeRevCldTabSwitch ( b )
  (foreach rtr (cdar (vlr-reactors :VLR-Miscellaneous-Reactor)) (if (= "RevCldTabSwitch" (vlr-data rtr)) (vlr-remove rtr)) )
  (if b (vlr-Miscellaneous-Reactor "RevCldTabSwitch" '((:VLR-layoutSwitched . RevCldTabSwitch:CB))))
); defun

(defun C:starte nil (_IncludeRevCldTabSwitch t) (princ) )
(defun C:stope nil (_IncludeRevCldTabSwitch nil) (princ) )

(C:starte)

 

Share this post


Link to post
Share on other sites
rlx

Nice one Grrr  😎 even though I'm not sure what I have to do in order to pass the the 1st if statement. If I switch to pspace V is 6 and cvport is 1 and if I switch to mspace V is 300 and cvport is 2 but thats probably cause I dont have an appropriate drawing. But the reactor mechanism functions as it should I suppose 🐲

gr.Rlxr

Edited by rlx

Share this post


Link to post
Share on other sites
Grrr
6 minutes ago, rlx said:

I'm not sure what I have to do in order to pass the the 1st if statement. If I switch to pspace V is 6 and cvport is 1 and if I switch to mspace V is 300 and cvport is 2 but thats probably cause I dont have an appropriate drawing

 

Me neither, Rlx - I just translated 3dwannab's code, so the mechanism should be the same, and I don't have test drawing aswell.

Anyway I think that the LayoutSwitched event should be in better use, instead of the SysVarSwitched one.

 

BTW did few test with the DocumentBecameCurrent event, indeed this is true:

On 9/4/2018 at 11:17 PM, 3dwannab said:

It doubles every tab switch

I mean If I have 3 opened documents, and I just define my reactor in the first one, when I 

  • switch from the 1st to the 2nd, the callback function fires once
  • switch from the 1st to the 3rd, the callback function fires once
  • switch from the 2st to the 3nd, the callback function doesn't fire
  • switch from the 2nd or 3rd to the 1st, the callback function fires once
  • switch from the 2nd to 3rd and vice-versa, and in the end I switch to the 1st, the callback function fires twice (I think 1 fire, per individual document switch)
16 minutes ago, rlx said:

🐲

 

I see they added a special emoji for you! :D

Share this post


Link to post
Share on other sites
rlx

Yes! I'm very happy with this new emoje 😁

 

I only use the documentBecameCurrent reactor myself. It toggles a button (changes the bitmap) on my toolbar so I always see if I'm in SDI or MDI mode. I use a lot of scripts and for some commands SDI works best and other situations prefere MDI. For the rest I try not to use reactors due to their unpredictable nature when having to many in the same room.

 

Hve a good weekend Grrr!

 

🍻   

Share this post


Link to post
Share on other sites
3dwannab

Hi,

 

Sorry for the late reply but it seems one of the solutions don't work as expected. @Grrr's is good for switching layout tabs. But drawings tabs is what was causing the looping problem.

 

Scenario:

  • I've two drawings open.
  • The current one in modelspace with 300 set as the rev cloud min and max size
  • And the other one in paperspace.
  • I change drawing tab to the one in paperspace, unfortunately, @rlx your code doesn't change anything.

Share this post


Link to post
Share on other sites
rlx
4 minutes ago, 3dwannab said:

Hi,

 

Sorry for the late reply but it seems one of the solutions don't work as expected. @Grrr's is good for switching layout tabs. But drawings tabs is what was causing the looping problem.

 

Scenario:

  • I've two drawings open.
  • The current one in modelspace with 300 set as the rev cloud min and max size
  • And the other one in paperspace.
  • I change drawing tab to the one in paperspace, unfortunately, @rlx your code doesn't change anything.

 

My code wasn't meant to change anything , only give me a visual of the state of SDI because it doesn't operate on tab level but document level only. Why not make a wrapper for the revcloud command itself and before execute the revcloud command itself  , test for model / paperspace?

Share this post


Link to post
Share on other sites
Jef!
On 9/8/2018 at 6:09 AM, rlx said:

If I switch to pspace V is 6 and cvport is 1 and if I switch to mspace V is 300 and cvport is 2 but thats probably cause I dont have an appropriate drawing

The only thing needed is a dwg with a layout that has a mview. If you switch to pspace V is 6 and cvport is 1 only if you have no mview active. in pspace cvport will be 2 if a mview is active, hence why the original code had 2 nested if statements.

 

On 9/8/2018 at 6:26 AM, Grrr said:

I just translated 3dwannab's code, so the mechanism should be the same, and I don't have test drawing aswell.

Roughly this is what the original code did

- if in model: put rev vars to 300
- if in paperspace then...

  • if a viewport was active: deactivated the vp, zoom extend and reactivated vp. (left rev vars unchanged)
  • if no vport were active: zoom extend, and changed rev vars to 6

It cannot be accomplished with a single if statement, so what you missed during translation is that your code doesn't do the zoom extend when you go in PS if/when no mviews are active. Even with that fixed you would still have an unwanted behavior that my version didn't have: vars "*REVCLOUDMAXARCLENGTH" "*REVCLOUDMINARCLENGTH" are not dwg dependant. If in dwg A you go in model, go in dwg B, and go to PS in dwg B, "*REVCLOUDMAXARCLENGTH" and  "*REVCLOUDMINARCLENGTH" will be set will be set to 6. Change active dwg to A again (which is in model), "*REVCLOUDMAXARCLENGTH" and  "*REVCLOUDMINARCLENGTH" will still be set will be set to 6, when in fact you need them to be at 300, hence the reason why the original code was made in 2 parts: because you also need to detect a change in the active drawing, which unfortunately brings the multiple firing of the reactor back if we try using :vlr-documentBecameCurrent.

On 9/8/2018 at 6:26 AM, Grrr said:

I mean If I have 3 opened documents, and I just define my reactor in the first one, when I 

  • switch from the 1st to the 2nd, the callback function fires once
  • switch from the 1st to the 3rd, the callback function fires once
  • switch from the 2st to the 3nd, the callback function doesn't fire
  • switch from the 2nd or 3rd to the 1st, the callback function fires once
  • switch from the 2nd to 3rd and vice-versa, and in the end I switch to the 1st, the callback function fires twice (I think 1 fire, per individual document switch)

Regarding your 3rd and 4th points (At least in CAD 2015 which seems the version you are using), it is exactly as I said in my previous message:  :VLR-documentBecameCurrent triggers 3 timesonce when the doc loose focus, and twice when it regains focus. (The only time it reacts only twice is it would seem, the first time the doc loose focus: it doesn't react, which is quite baffling in itself. After that it gets triggered trice systematically). It is however not affected by how many other dwg are opened, or by the qty of times you switch between docs that don't have the reactor in them. Please try my reactor monitoring reactor and tell me if you get the same result as me. You will be able to see what gets trigger, when, by what and in which drawing. It is quite enlightening, even if it brings more questions than answers. I'd be curious to see if Bricscad has the same behavior with it...

(vlr-DocManager-Reactor "Jef!:reactormonSTRdescription"
	'((:vlr-documentBecameCurrent . Jef!:reactormon)))

(defun Jef!:reactormon ( calling-reactor commandInfo /  reactType reactData reactCall dwgname reactEvent reactCallback) ;ori
  (setq ;reactInfo own
      ;get the reactor Type
      reactType (vl-symbol-name (vlr-type calling-reactor))
      ;get the Application Data
      reactData (vlr-data calling-reactor)
      ;get the Callback list
      reactCall (car (vlr-reactions calling-reactor))
      ;get the dwgname
      dwgname (vla-get-name (car commandInfo))
      ;extract the Event Reactor
      reactEvent (vl-symbol-name (car reactCall))      ;extract the Callback Function
      reactCallback (vl-symbol-name (cdr reactCall))
   )
   (alert (strcat "("reactType" "reactData "\n   \'"(vl-princ-to-string (vlr-reactions calling-reactor))")"
                  "\nhas reacted in the folowing dwg:"
                  "\n--->   "dwgname"   <---"
                  "\n\nReactor Arg 1 of 2 (calling reactor): "(vl-princ-to-string calling-reactor)
                  "\nReactor Arg 2 of 2 (calling reactor info): "(vl-princ-to-string commandInfo)
                  
                  "\n\nA " "\"" reactType "\"" " named " "\"" reactData "\""
                  "\nwas triggered by a " "\"" reactEvent "\"" " event call." 
                  "\nCallback Data was passed to the \"" reactCallback "\" call back function."
                  "\n\nNOTIF IN: --->   "(vl-princ-to-string(vlr-notification calling-reactor))"   <---"
                  ;"\nOwners: "(vlr-owners calling-reactor); (only for OBJECT reactors)
                  "\nPersistant?: "(vl-princ-to-string(vlr-pers-p calling-reactor))
         )
  )
  (princ)
)

Ok... tldr? Here'S an hybrid of both our codes complimentary of Jef!'s bug in a rug removal services... :)
I just monitor 2 variables, both in an unique function, and act upon change in clayout (tab change) or *onlinefiledid (dwg change). So far I haven't found any way to get undesired effects as is. I also changed acad local var by acd... acad is a protected symbol. Even if localized, better safe than sorry... and vlide don't like it anyway! ^^ 

*The commented if, if uncommented, will print the same notice that a dwg change was detected as the original function did. IMO it doesn't give any pertinent information for the user, and can spam the command history if the user change repeatedly, hence the reason why I commented it.

(defun RevCldCTab&DWGSwitch:CB ( rtr arg / v doc acd )
;;; inspired by Grrr's RevCldTabSwitch:CB (2018-09-08)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Modified by Jef! on 2018-09-10
;; (Removed Grrr's bugs in a rug) :D
  (if (or (= (car arg) "CLAYOUT")
          (= (car arg) "*ONLINEFILEID")
      )
      (progn
        (setq v (if (= "MODEL" (strcase (getvar 'ctab))) 300. 6.))
        (if (and (= 6. v);in both PS cases will need doc to ze, so let'S define it here once, and only when in PS. 
                 (setq doc (vla-get-ActiveDocument (setq acd (vlax-get-acad-object))))
            )
            (if (> (getvar "cvport") 1)
                (progn;ps but in vp: dont change rev, but deactivate vp ze and reactivate vp
                  (vla-put-MSpace doc :vlax-false)
                  (vla-ZoomExtents acd)
                  (vla-put-MSpace doc :vlax-true)
                )
                (progn;ps but NOT in vp: change rev, ze
                  (vla-ZoomExtents acd)
                  (mapcar 'setvar '("*REVCLOUDMAXARCLENGTH" "*REVCLOUDMINARCLENGTH") (list v v))
                )
            )
          ;Ms change rev
          (mapcar 'setvar '("*REVCLOUDMAXARCLENGTH" "*REVCLOUDMINARCLENGTH") (list v v))
        )
;;;        (if (= (car arg) "*ONLINEFILEID")
;;;            (progn
;;;              (if (/= (getvar 'savename) "")
;;;                (princ (strcat "\n\t\t*** _SwitchTabsReactor msg: '" (getvar 'savename) "' is now active ***"))
;;;                (princ "\n\t\t*** _SwitchTabsReactor msg: A new drawing is now active ***")
;;;              )
;;;            )
;;;        )
      )
  )
  (princ)
)
(defun _IncludeRevCldCTab&DWGSwitch:CB ( b )
  (foreach x (apply 'append (mapcar 'cdr (vlr-reactors))) (if (= "RevCldVarUpdater" (vlr-data x)) (vlr-remove x)))
  (if b (vlr-sysvar-reactor "RevCldVarUpdater" '((:vlr-sysvarchanged . RevCldCTab&DWGSwitch:CB)))
  )
)
(defun C:starte nil (_IncludeRevCldCTab&DWGSwitch:CB t) (princ) )
(defun C:stope nil (_IncludeRevCldCTab&DWGSwitch:CB nil) (princ) )
(C:starte)

I liked your _include approach, quite easy to follow for a reactor newbie. :thumbsup:

Share this post


Link to post
Share on other sites
renkor

Hello, i am trying to guess what the lisp does, but i cant...

 

could someone explain me?

 

thanks.

 

Share this post


Link to post
Share on other sites
Jef!
2 hours ago, renkor said:

Hello, i am trying to guess what the lisp does, but i cant...

 

could someone explain me?

Hi Renkor.

There are quite few snippets here - work in progress -, the main one (the last code section of my previous post) is what the topic is about. It is a reactor, that when activated via the command "starte", will automatically change the "*REVCLOUDMAXARCLENGTH" & "*REVCLOUDMINARCLENGTH" variables (used to drive the dimensions of revision clouds.) depending on layout and dwg change, for a value of 300 in model and 6 in paperspaces. It will also automatically zoom extend any paper space upon change of layout. 

22 hours ago, Jef! said:

Roughly this is what the original code did

- if in model: put rev vars to 300
- if in paperspace then...

  • if a viewport was active: deactivated the vp, zoom extend and reactivated vp. (left rev vars unchanged)
  • if no vport were active: zoom extend, and changed rev vars to 6

 

The original code had a side effect of being triggered multiple times (It was functionnal, but it was noticeable because it printed the same text repeatedly at the command line.). Grrr and me rewrote the code, much more concisely, and within a single reactor and a single callback function. 

Share this post


Link to post
Share on other sites
renkor
On 9/11/2018 at 11:04 PM, Jef! said:

Hi Renkor.

There are quite few snippets here - work in progress -, the main one (the last code section of my previous post) is what the topic is about. It is a reactor, that when activated via the command "starte", will automatically change the "*REVCLOUDMAXARCLENGTH" & "*REVCLOUDMINARCLENGTH" variables (used to drive the dimensions of revision clouds.) depending on layout and dwg change, for a value of 300 in model and 6 in paperspaces. It will also automatically zoom extend any paper space upon change of layout. 

 

 

Ok, thanks a lot.

Share this post


Link to post
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
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

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