DWG Destroyer Posted July 30, 2009 Posted July 30, 2009 Hey. Been having a play with the customisation of commands etc. and have developed a macro that will change the working layer to another essentially for dimensions, then set the dimension style to that of another upon selecting and finally produce a dimension, effectively creating a uniform dimension to its predecessor and finally switching back to the previous layer. All works fine, UNTIL the designated layer destined for the said dimension becomes non existent in the drawing of which then AutoCAD asks what to do instead. Obviously it would make sense to engineer the code for new a layer to be created etc. which would be fine, but my question is; when a problem such as this arises, and it becomes possible that the macro may need to satisfy one of two branches, what sort of coding would be involved in order to overcome such instances? Im guessing there are other ways around it, such as always requesting the layer be created under a specific name regardless of whether it exists or not and therefore succeding that way, but there must be a better way? Here's what I have come up with so far, feel free to criticize heavily. ^C^C-layer;_s;"CSP_DIMS";;-dimstyle;R;;\_dimaligned;\\\_layerp Cheers guys! Quote
Lee Mac Posted July 30, 2009 Posted July 30, 2009 I would use a reactor to perform this sort of task, reacting from all the dimension commands. Quote
DWG Destroyer Posted July 30, 2009 Author Posted July 30, 2009 I would use a reactor to perform this sort of task, reacting from all the dimension commands. Hmmm. Any chance of indulging me with some info on this? Even a link or something would do. Im kinda new to it and F1 in CAD is not being friendly today ;[ Quote
Lee Mac Posted July 30, 2009 Posted July 30, 2009 Hmmm. Any chance of indulging me with some info on this? Even a link or something would do. Im kinda new to it and F1 in CAD is not being friendly today ;[ Sorry, am just preparing something for you Quote
Lee Mac Posted July 30, 2009 Posted July 30, 2009 Ok, something like this: (defun c:ReON () (vl-load-com) (if (not *Dim:React*) (progn (setq *Dim:React* (vlr-command-reactor nil (list (cons :vlr-CommandWillStart 'StrtComm) (cons :vlr-CommandEnded 'EndComm) (cons :vlr-CommandCancelled 'CanComm)))) (if (not (tblsearch "LAYER" "CSP_DIMS")) (vla-add (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object))) "CSP_DIMS")) (princ "\n<<- Reactor Initiated ->>"))) (princ)) (defun StrtComm (React Args / *doc) (setq old#lay (getvar "CLAYER")) (if (wcmatch (strcase (car Args)) "DIM*") (setvar "CLAYER" "CSP_DIMS"))) (defun EndComm (React Args) (if (and old#lay (wcmatch (strcase (car Args)) "DIM*")) (setvar "CLAYER" old#lay))) (defun CanComm (React Args) (if (and old#lay (wcmatch (strcase (car Args)) "DIM*")) (setvar "CLAYER" old#lay))) (defun c:ReOFF (/ old#lay) (if *Dim:React* (progn (vlr-remove *Dim:React*) (setq *Dim:React* nil) (princ "\n<<- Reactor Deactivated ->>"))) (princ)) Instructions: Type ReON to activate the reactor. Only needs to be called once per drawing session. Draw some dimensions. If you want to deactivate the reactor, type ReOFF. Quote
Lee Mac Posted July 30, 2009 Posted July 30, 2009 Or, to incorporate the dimstyle also: (defun c:ReON ( ) (vl-load-com) (setq *doc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (not *Dim:React*) (progn (setq *Dim:React* (vlr-command-reactor nil (list (cons :vlr-CommandWillStart 'StrtComm) (cons :vlr-CommandEnded 'EndComm) (cons :vlr-CommandCancelled 'CanComm)))) (if (not (tblsearch "LAYER" "CSP_DIMS")) (vla-add (vla-get-layers *doc) "CSP_DIMS")) (if (not (tblsearch "DIMSTYLE" "Tester")) (vla-add (vla-get-Dimstyles *doc) "Tester")) (princ "\n<<- Reactor Initiated ->>"))) (princ)) (defun StrtComm (React Args) (setq old#lay (getvar "CLAYER")) (if (wcmatch (strcase (car Args)) "DIM*") (progn (vl-catch-all-apply (function (lambda ( ) (vla-put-ActiveDimstyle *doc (vla-item (vla-get-Dimstyles *doc) "Tester"))))) (setvar "CLAYER" "CSP_DIMS")))) (defun EndComm (React Args) (if (and old#lay (wcmatch (strcase (car Args)) "DIM*")) (setvar "CLAYER" old#lay))) (defun CanComm (React Args) (if (and old#lay (wcmatch (strcase (car Args)) "DIM*")) (setvar "CLAYER" old#lay))) (defun c:ReOFF (/ old#lay *doc) (if *Dim:React* (progn (vlr-remove *Dim:React*) (setq *Dim:React* nil) (princ "\n<<- Reactor Deactivated ->>"))) (princ)) Quote
DWG Destroyer Posted July 30, 2009 Author Posted July 30, 2009 Or, to incorporate the dimstyle also: (defun c:ReON ( ) (vl-load-com) (setq *doc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (not *Dim:React*) (progn (setq *Dim:React* (vlr-command-reactor nil (list (cons :vlr-CommandWillStart 'StrtComm) (cons :vlr-CommandEnded 'EndComm) (cons :vlr-CommandCancelled 'CanComm)))) (if (not (tblsearch "LAYER" "CSP_DIMS")) (vla-add (vla-get-layers *doc) "CSP_DIMS")) (if (not (tblsearch "DIMSTYLE" "Tester")) (vla-add (vla-get-Dimstyles *doc) "Tester")) (princ "\n<<- Reactor Initiated ->>"))) (princ)) (defun StrtComm (React Args) (setq old#lay (getvar "CLAYER")) (if (wcmatch (strcase (car Args)) "DIM*") (progn (vl-catch-all-apply (function (lambda ( ) (vla-put-ActiveDimstyle *doc (vla-item (vla-get-Dimstyles *doc) "Tester"))))) (setvar "CLAYER" "CSP_DIMS")))) (defun EndComm (React Args) (if (and old#lay (wcmatch (strcase (car Args)) "DIM*")) (setvar "CLAYER" old#lay))) (defun CanComm (React Args) (if (and old#lay (wcmatch (strcase (car Args)) "DIM*")) (setvar "CLAYER" old#lay))) (defun c:ReOFF (/ old#lay *doc) (if *Dim:React* (progn (vlr-remove *Dim:React*) (setq *Dim:React* nil) (princ "\n<<- Reactor Deactivated ->>"))) (princ)) Wow, 'nuff text! I went ahead and dropped the code above into my acaddoc.pgp file, and sure enough it works like a charm. What I now question is, as an alternative to manually invoking a "REON" command, could I incorporate it into my dimension button so it initiates "REON" every time I click the button so that I don’t have to remember to run it (and of course switch it off again after), of might this be unfavourable due to potential errors occurring further down the line? Also, although your reply has indeed solved my dimensioning dilemmas, I would like to know more of the coding you are using to attain such results. Clearly it is a more powerful method compared to the simplistic one I am using, and I would appreciate it to no end if you could possibly advise some further reading into this subject. Thanks a bunch for what you have given me so far! Quote
Lee Mac Posted July 30, 2009 Posted July 30, 2009 You only need to invoke reON once at the start of the drawing session, and the reactor will work until either reOFF is invoked, or the drawing is closed. You could put the code into your ACADDOC.lsp file, and include another line: (c:reON) So that the reactor is initiated every time you open a drawing. For information on reactors, I think AfraLISP has some info: http://www.afralisp.net/vl/reactors1.htm But also check the Visual LISP Editor (VLIDE) help files. Lee Quote
DWG Destroyer Posted July 31, 2009 Author Posted July 31, 2009 Great! Thanks a bunch for this, another trick in the bag Quote
Lee Mac Posted July 31, 2009 Posted July 31, 2009 Not a problem, One final version - this will reset the old dimension style after the command has executed: [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ReON [b][color=RED]([/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *dim_lay* [b][color=#ff00ff]"CSP_DIMS"[/color][/b] [i][color=#990099];; <<-- Change these[/color][/i] *dim_sty* [b][color=#ff00ff]"Tester"[/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] *Dim:React*[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *Dim:React* [b][color=RED]([/color][/b][b][color=BLUE]vlr-command-reactor[/color][/b] [b][color=BLUE]nil[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [color=Blue][b]:vlr-CommandWillStart[/b][/color] [b][color=DARKRED]'[/color][/b]StrtComm[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=Blue]:vlr-CommandEnded [/color][/b] [b][color=DARKRED]'[/color][/b]EndComm[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=Blue]:vlr-CommandCancelled[/color][/b] [b][color=DARKRED]'[/color][/b]CanComm[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#ff00ff]"LAYER"[/color][/b] *dim_lay*[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-layers[/color][/b] *doc[b][color=RED])[/color][/b] *dim_lay*[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]tblsearch[/color][/b] [b][color=#ff00ff]"DIMSTYLE"[/color][/b] *dim_sty*[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-add[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Dimstyles[/color][/b] *doc[b][color=RED])[/color][/b] *dim_sty*[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<<- Reactor Initiated ->>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] StrtComm [b][color=RED]([/color][/b]React Args[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] old#lay [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b][b][color=RED])[/color][/b] old#sty [b][color=RED]([/color][/b][b][color=BLUE]getvar[/color][/b] [b][color=#ff00ff]"DIMSTYLE"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]or[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Args[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"*DIM*"[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]eq[/color][/b] [b][color=#ff00ff]"QLEADER"[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Args[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveDimstyle[/color][/b] *doc [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Dimstyles[/color][/b] *doc[b][color=RED])[/color][/b] *dim_sty*[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b] *dim_lay*[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] EndComm [b][color=RED]([/color][/b]React Args[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] old#lay old#sty [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Args[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"DIM*"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveDimstyle[/color][/b] *doc [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Dimstyles[/color][/b] *doc[b][color=RED])[/color][/b] old#sty[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b] old#lay[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] CanComm [b][color=RED]([/color][/b]React Args[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] old#lay old#sty [b][color=RED]([/color][/b][b][color=BLUE]wcmatch[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]strcase[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]car[/color][/b] Args[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=#ff00ff]"DIM*"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-catch-all-apply[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b] [b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-put-ActiveDimstyle[/color][/b] *doc [b][color=RED]([/color][/b][b][color=BLUE]vla-item[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-Dimstyles[/color][/b] *doc[b][color=RED])[/color][/b] old#sty[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setvar[/color][/b] [b][color=#ff00ff]"CLAYER"[/color][/b] old#lay[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ReOFF [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] old#lay old#sty *doc *dim_lay* *dim_sty*[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] *Dim:React* [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlr-remove[/color][/b] *Dim:React*[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *Dim:React* [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<<- Reactor Deactivated ->>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] The Dimension layer and style can be changed at the top Lee Quote
briankstan Posted August 5, 2009 Posted August 5, 2009 great little app here. would it be possible to code in multiple dimension styles? if I wanted to use it for 3 different dim styles and on different layers how would I go about doing that? Quote
Lee Mac Posted August 5, 2009 Posted August 5, 2009 Hi briankstan, Thanks I'm glad you like them. I'm sure I could modify this to suit your various dimension styles/layers. I shall make it clear where you can modify things. Lee EDIT: just to clarify, how would you want it to deal with the different layer/style combinations? How would the program know which to set? Quote
briankstan Posted August 6, 2009 Posted August 6, 2009 Hi briankstan, Thanks I'm glad you like them. I'm sure I could modify this to suit your various dimension styles/layers. I shall make it clear where you can modify things. Lee EDIT: just to clarify, how would you want it to deal with the different layer/style combinations? How would the program know which to set? I really wouldn't just mind, turning them on as needed. say I type Reon, then it asks me for 1,2 or 3 etc. then I can select the one I want at any given time. Is it possible to do that in one lisp? Quote
Lee Mac Posted August 6, 2009 Posted August 6, 2009 Ok Brian, I think I understand what you are getting at. Try this: (defun c:ReON (/ tmp) (or *nth (setq *nth 0)) (setq *dim_table* '( ;;<<-- Adjustments -->> ;; Layers . Styles ("DIM_LAYER1" . "DIM_STYL1") ("DIM_LAYER2" . "DIM_STYL2") ("DIM_LAYER3" . "DIM_STYL3") ;;<<------------------->> ))(vl-load-com) (setq *doc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (not *Dim:React*) (progn (setq *Dim:React* (vlr-command-reactor nil (list (cons :vlr-CommandWillStart 'StrComm) (cons :vlr-CommandEnded 'EndComm) (cons :vlr-CommandCancelled 'CanComm)))) (foreach x *dim_table* (if (not (tblsearch "LAYER" (car x))) (vla-add (vla-get-layers *doc) (car x))) (if (not (tblsearch "DIMSTYLE" (cdr x))) (vla-add (vla-get-Dimstyles *doc) (cdr x)))) (princ "\n<<- Reactor Initiated ->>"))) (initget (+ 2 4)) (or (not (setq tmp (getint (strcat "\nSpecify Config [1-" (itoa (length *dim_table*)) "] <" (itoa (1+ *nth)) "> : ")))) (setq *nth (1- tmp))) (princ)) (defun StrComm (React Args / pos) (setq old#lay (getvar "CLAYER") old#sty (getvar "DIMSTYLE")) (if (or (wcmatch (strcase (car Args)) "*DIM*") (eq "QLEADER" (strcase (car Args)))) (progn (setq pos (nth *nth *dim_table*)) (vl-catch-all-apply (function (lambda ( ) (vla-put-ActiveDimstyle *doc (vla-item (vla-get-Dimstyles *doc) (cdr pos)))))) (setvar "CLAYER" (car pos)))) (princ)) (defun EndComm (React Args) (if (and old#lay old#sty (wcmatch (strcase (car Args)) "DIM*")) (progn (vl-catch-all-apply (function (lambda ( ) (vla-put-ActiveDimstyle *doc (vla-item (vla-get-Dimstyles *doc) old#sty))))) (setvar "CLAYER" old#lay))) (princ)) (defun CanComm (React Args) (if (and old#lay old#sty (wcmatch (strcase (car Args)) "DIM*")) (progn (vl-catch-all-apply (function (lambda ( ) (vla-put-ActiveDimstyle *doc (vla-item (vla-get-Dimstyles *doc) old#sty))))) (setvar "CLAYER" old#lay))) (princ)) (defun c:ReOFF (/ old#lay old#sty *doc *nth *dim_table*) (if *Dim:React* (progn (vlr-remove *Dim:React*) (setq *Dim:React* nil) (princ "\n<<- Reactor Deactivated ->>"))) (princ)) Populate the table at the top. To change the config mid-session, just type ReOn again - this will not affect the Reactor, but will affect the layer and style choice. When you want to completely deactivate the Reactor, type reOff. Quote
briankstan Posted August 6, 2009 Posted August 6, 2009 that worked just as I wanted it to. is there a way to fill in what style they would be? 1. 1" scale 2. 1 1/2" scale 3. full scale Quote
Lee Mac Posted August 6, 2009 Posted August 6, 2009 that worked just as I wanted it to. is there a way to fill in what style they would be? 1. 1" scale 2. 1 1/2" scale 3. full scale You mean at the option selection, show what the style name is? Quote
briankstan Posted August 6, 2009 Posted August 6, 2009 You mean at the option selection, show what the style name is? correct Quote
Lee Mac Posted August 6, 2009 Posted August 6, 2009 Perhaps? (defun c:ReON (/ tmp str i) (or *nth (setq *nth 0)) (setq *dim_table* '( ;;<<-- Adjustments -->> ;; Layers . Styles ("DIM_LAYER1" . "DIM_STYL1") ("DIM_LAYER2" . "DIM_STYL2") ("DIM_LAYER3" . "DIM_STYL3") ;;<<------------------->> ))(vl-load-com) (setq *doc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (not *Dim:React*) (progn (setq *Dim:React* (vlr-command-reactor nil (list (cons :vlr-CommandWillStart 'StrComm) (cons :vlr-CommandEnded 'EndComm) (cons :vlr-CommandCancelled 'CanComm)))) (foreach x *dim_table* (if (not (tblsearch "LAYER" (car x))) (vla-add (vla-get-layers *doc) (car x))) (if (not (tblsearch "DIMSTYLE" (cdr x))) (vla-add (vla-get-Dimstyles *doc) (cdr x)))) (princ "\n<<- Reactor Initiated ->>"))) (setq i 1 str (strcat (itoa i) (chr 46) (cdar *dim_table*))) (foreach x (cdr *dim_table*) (setq i (1+ i) str (strcat str (chr 32) (itoa i) (chr 46) (cdr x)))) (initget (+ 2 4)) (or (not (setq tmp (getint (strcat "\nSpecify Config: " str " <" (itoa (1+ *nth)) "> : ")))) (setq *nth (1- tmp))) (princ)) (defun StrComm (React Args / pos) (setq old#lay (getvar "CLAYER") old#sty (getvar "DIMSTYLE")) (if (or (wcmatch (strcase (car Args)) "*DIM*") (eq "QLEADER" (strcase (car Args)))) (progn (setq pos (nth *nth *dim_table*)) (vl-catch-all-apply (function (lambda ( ) (vla-put-ActiveDimstyle *doc (vla-item (vla-get-Dimstyles *doc) (cdr pos)))))) (setvar "CLAYER" (car pos)))) (princ)) (defun EndComm (React Args) (if (and old#lay old#sty (wcmatch (strcase (car Args)) "DIM*")) (progn (vl-catch-all-apply (function (lambda ( ) (vla-put-ActiveDimstyle *doc (vla-item (vla-get-Dimstyles *doc) old#sty))))) (setvar "CLAYER" old#lay))) (princ)) (defun CanComm (React Args) (if (and old#lay old#sty (wcmatch (strcase (car Args)) "DIM*")) (progn (vl-catch-all-apply (function (lambda ( ) (vla-put-ActiveDimstyle *doc (vla-item (vla-get-Dimstyles *doc) old#sty))))) (setvar "CLAYER" old#lay))) (princ)) (defun c:ReOFF (/ old#lay old#sty *doc *nth *dim_table*) (if *Dim:React* (progn (vlr-remove *Dim:React*) (setq *Dim:React* nil) (princ "\n<<- Reactor Deactivated ->>"))) (princ)) Quote
Lee Mac Posted August 6, 2009 Posted August 6, 2009 that did it. Thank you very much. I'm happy that you like it Quote
Recommended Posts
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.