Author Topic: Sharing my new program...;-)  (Read 4544 times)

0 Members and 1 Guest are viewing this topic.

Andrea

  • Water Moccasin
  • Posts: 2372
Sharing my new program...;-)
« on: October 13, 2006, 12:02:46 PM »
Hi all,..

I have created a new program and decided to share-it to have some comments or suggestions.
Thanks.

Code: [Select]
;| ;
SNAPcmd is a simple utilities allowing users to activate ;
a specific OSMODE during AutoCAD command. ;
By: Andrea Andreetti  2006/09/10 ;
;
This code use: ;
"X:\\Acad\\Usager\\"(getvar "LOGINNAME") "-SNAP.txt") ;
but you can change as your own. ;
(french release) ;
|;




(setq oldsnap (getvar "osmode"))

(defun createSNAPfile (/ snapfile)
  (setq snapfile (open (strcat "X:\\Acad\\Usager\\"(getvar "LOGINNAME") "-SNAP.txt") "w"))
(write-line
"Premièrement,...
merci d'utiliser mon programme...ça me fait plaisir le vous l'offrir.

Vous trouverez ci bas, 2 colonnes, soit une liste de fonctions autoCAD suivit d'un numéro.
Ce numéro est en fait la variable \"OSMODE\". vous n'avez donc qu'à associer la variable \"SMODE\" désiré pour les fonctions utilisées.
Voici vos code actuelles:

------------------------

LINE     *1
PLINE    *2
CIRCLE   *16452

------------------------




Note:
la variable OSMODE définit les accrochages aux objets actifs. Le paramètre est stocké sous forme de code binaire
en utilisant la somme des valeurs suivantes :

0      = AUCun
1      = Extrémité
2      = Milieu
4      = Centre
8      =  Nodal
16     = Quadrant
32     = Intersection
64     = Insertion
128    = Perpendiculaire
256    = Tangente
512    = Proche
1024   = Annule tous les accrochages aux objets.
2048   = Intersection apparente
4096   = EXTension
8192   = Parallèle
 

Pour spécifier plusieurs accrochages aux objets, entrez la somme de leurs valeurs.
Par exemple, l'entrée de la valeur 3 spécifie les accrochages aux objets Extrémité (code binaire 1) et Milieu (code binaire 2).
La valeur 16383 active tous les modes d'accrochage aux objets.
"
snapfile)
  (close snapfile)
)



(if (not (findfile  (strcat "X:\\Acad\\Usager\\"(getvar "LOGINNAME") "-SNAP.txt")))
(createSNAPfile)
)


(defun set_osnap_mode (/ osss osline osfile)

  (setq osfile (open (strcat "X:\\Acad\\Usager\\"(getvar "LOGINNAME") "-SNAP.txt") "r"))
  (setq osline (read-line osfile))
  (while osline
    (if (eq (read osline) (read SOCC))
      (progn
      (setq osss (vl-string-search "*" osline))
      (if osss
(progn
      (setq ossa (read (substr osline (+ osss 2))))
      (setvar "OSMODE" ossa)
        )
      )))
  (setq osline (read-line osfile))
    )
  (close osline)
 
)
   
 


;; ;;
;; LOAD REACTEUR ;;
;; ;;
(defun loadOreactor ()

(vl-load-com)
(vlr-command-reactor nil '((:vlr-commandWillStart . startOCommand)))
(vlr-command-reactor nil '((:vlr-commandEnded . endOCommand)))
(vlr-command-reactor nil '((:vlr-commandCancelled . cancelOCommand)))
(vlr-command-reactor nil '((:vlr-commandFailed . failedOCommand)))
)


(defun startOCommand (calling-reactor startcommandInfo / SOC)
  (setq SOC (nth 0 startcommandInfo))
  (setq SOCC SOC)
  ;;(setq oldsnap (getvar "OSMODE"))
  ;;(alert (rtos oldsnap))
  (cond       
    ((= SOC "TEXT") (SET_OSNAP_MODE))     
    ((= SOC "MTEXT") (SET_OSNAP_MODE))       
    ((= SOC "DTEXT") (SET_OSNAP_MODE))
    ((= SOC "DIM") (SET_OSNAP_MODE))
    ((= SOC "DIMLINEAR") (SET_OSNAP_MODE))
    ((= SOC "DIMALIGNED") (SET_OSNAP_MODE))
    ((= SOC "DIMBASELINE") (SET_OSNAP_MODE))
    ((= SOC "DIMCONTINUE") (SET_OSNAP_MODE))
    ((= SOC "DIMANGULAR") (SET_OSNAP_MODE))
    ((= SOC "DIMRADIUS") (SET_OSNAP_MODE))
    ((= SOC "DIMDIAMETER") (SET_OSNAP_MODE))
    ((= SOC "DIMORDINATE") (SET_OSNAP_MODE))
    ((= SOC "DIMCENTER") (SET_OSNAP_MODE))
    ((= SOC "QDIM") (SET_OSNAP_MODE))
    ((= SOC "QLEADER") (SET_OSNAP_MODE))
    ((= SOC "HATCH") (SET_OSNAP_MODE))
    ((= SOC "-HATCH") (SET_OSNAP_MODE))
    ((= SOC "BHATCH") (SET_OSNAP_MODE))
    ((= SOC "DONUT") (SET_OSNAP_MODE))
    ((= SOC "LINE") (SET_OSNAP_MODE))
    ((= SOC "PLINE") (SET_OSNAP_MODE))
    ((= SOC "SPLINE") (SET_OSNAP_MODE))
    ((= SOC "XLINE") (SET_OSNAP_MODE))
    ((= SOC "CIRCLE") (SET_OSNAP_MODE))
    ((= SOC "ELLIPSE") (SET_OSNAP_MODE))
    ((= SOC "ARC") (SET_OSNAP_MODE))
    ((= SOC "POINT") (SET_OSNAP_MODE))
    ((= SOC "RAY") (SET_OSNAP_MODE))
    ((= SOC "MLINE") (SET_OSNAP_MODE))
    ((= SOC "TRACE") (SET_OSNAP_MODE))
    ((= SOC "INSERT") (SET_OSNAP_MODE))
    ((= SOC "-INSERT") (SET_OSNAP_MODE))
    ((= SOC "SOLID")(SET_OSNAP_MODE))
    ((= SOC "MVIEW") (SET_OSNAP_MODE))
    ((= SOC "MOVE") (SET_OSNAP_MODE))
    ((= SOC "COPY") (SET_OSNAP_MODE))
    ((= SOC "ROTATE") (SET_OSNAP_MODE))
       
  )                    ;cond
)                    ;defun

(defun endOCommand (calling-reactor endcommandInfo / EOC)
  (setq EOC (nth 0 endcommandInfo))
  (cond       
    ((= EOC "TEXT") (setvar "OSMODE" oldsnap))     
    ((= EOC "MTEXT") (setvar "OSMODE" oldsnap))
    ((= EOC "DTEXT") (setvar "OSMODE" oldsnap))
    ((= EOC "DIM") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMLINEAR") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMALIGNED") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMBASELINE") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMCONTINUE") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMANGULAR") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMRADIUS") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMDIAMETER") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMORDINATE") (setvar "OSMODE" oldsnap))
    ((= EOC "DIMCENTER") (setvar "OSMODE" oldsnap))
    ((= EOC "+DSETTINGS") (setq oldsnap (getvar "osmode")))
    ((= EOC "DSETTINGS") (setq oldsnap (getvar "osmode")))
    ((= EOC "QDIM") (setvar "OSMODE" oldsnap))
    ((= EOC "QLEADER") (setvar "OSMODE" oldsnap))
    ((= EOC "-HATCH") (setvar "OSMODE" oldsnap))
    ((= EOC "HATCH") (setvar "OSMODE" oldsnap))
    ((= EOC "BHATCH") (setvar "OSMODE" oldsnap))
    ((= EOC "DONUT") (setvar "OSMODE" oldsnap))
    ((= EOC "LINE") (setvar "OSMODE" oldsnap))
    ((= EOC "PLINE") (setvar "OSMODE" oldsnap))
    ((= EOC "SPLINE") (setvar "OSMODE" oldsnap))
    ((= EOC "XLINE") (setvar "OSMODE" oldsnap))
    ((= EOC "CIRCLE") (setvar "OSMODE" oldsnap))
    ((= EOC "ELLIPSE") (setvar "OSMODE" oldsnap))
    ((= EOC "ARC") (setvar "OSMODE" oldsnap))
    ((= EOC "POINT") (setvar "OSMODE" oldsnap))
    ((= EOC "RAY") (setvar "OSMODE" oldsnap))
    ((= EOC "MLINE") (setvar "OSMODE" oldsnap))
    ((= EOC "TRACE") (setvar "OSMODE" oldsnap))
    ((= EOC "INSERT") (setvar "OSMODE" oldsnap))
    ((= EOC "-INSERT") (setvar "OSMODE" oldsnap))
    ((= EOC "SOLID") (setvar "OSMODE" oldsnap))   
    ((= EOC "MVIEW") (setvar "OSMODE" oldsnap))
    ((= EOC "MOVE") (setvar "OSMODE" oldsnap))
    ((= EOC "COPY") (setvar "OSMODE" oldsnap))
    ((= EOC "ROTATE") (setvar "OSMODE" oldsnap))
           
  )                    ;cond
)                    ;defun

(defun cancelOCommand (calling-reactor cancelcommandInfo / COC)
  (setq COC (nth 0 cancelcommandInfo))
  (cond
     
    ((= COC "TEXT") (setvar "OSMODE" oldsnap))
    ((= COC "MTEXT") (setvar "OSMODE" oldsnap))
    ((= COC "DTEXT") (setvar "OSMODE" oldsnap))
    ((= COC "DIM") (setvar "OSMODE" oldsnap))
    ((= COC "DIMLINEAR") (setvar "OSMODE" oldsnap))
    ((= COC "DIMALIGNED") (setvar "OSMODE" oldsnap))
    ((= COC "DIMBASELINE") (setvar "OSMODE" oldsnap))
    ((= COC "DIMCONTINUE") (setvar "OSMODE" oldsnap))
    ((= COC "DIMANGULAR") (setvar "OSMODE" oldsnap))
    ((= COC "DIMRADIUS") (setvar "OSMODE" oldsnap))
    ((= COC "DIMDIAMETER") (setvar "OSMODE" oldsnap))
    ((= COC "DIMORDINATE") (setvar "OSMODE" oldsnap))
    ((= COC "DIMCENTER") (setvar "OSMODE" oldsnap))
    ((= COC "QDIM") (setvar "OSMODE" oldsnap))
    ((= COC "QLEADER") (setvar "OSMODE" oldsnap))
    ((= COC "HATCH") (setvar "OSMODE" oldsnap))
    ((= COC "-HATCH") (setvar "OSMODE" oldsnap))
    ((= COC "BHATCH") (setvar "OSMODE" oldsnap))
    ((= COC "DONUT") (setvar "OSMODE" oldsnap))
    ((= COC "LINE") (setvar "OSMODE" oldsnap))
    ((= COC "PLINE") (setvar "OSMODE" oldsnap))
    ((= COC "SPLINE") (setvar "OSMODE" oldsnap))
    ((= COC "XLINE") (setvar "OSMODE" oldsnap))
    ((= COC "CIRCLE") (setvar "OSMODE" oldsnap))
    ((= COC "ELLIPSE") (setvar "OSMODE" oldsnap))
    ((= COC "ARC") (setvar "OSMODE" oldsnap))
    ((= COC "POINT") (setvar "OSMODE" oldsnap))
    ((= COC "RAY") (setvar "OSMODE" oldsnap))
    ((= COC "MLINE") (setvar "OSMODE" oldsnap))
    ((= COC "TRACE") (setvar "OSMODE" oldsnap))
    ((= COC "INSERT") (setvar "OSMODE" oldsnap))
    ((= COC "-INSERT") (setvar "OSMODE" oldsnap))
    ((= COC "SOLID") (setvar "OSMODE" oldsnap))
    ((= COC "MVIEW") (setvar "OSMODE" oldsnap))
    ((= COC "MOVE") (setvar "OSMODE" oldsnap))
    ((= COC "COPY") (setvar "OSMODE" oldsnap))
    ((= COC "ROTATE") (setvar "OSMODE" oldsnap))
   
   
     
  )                    ;cond
)                    ;defun


(defun failedOCommand (calling-reactor failedcommandInfo / FOC)
  (setq FOC (nth 0 failedcommandInfo))
  (cond     
    ((= FOC "TEXT") (setvar "OSMODE" oldsnap))
    ((= FOC "MTEXT") (setvar "OSMODE" oldsnap))   
    ((= FOC "DTEXT") (setvar "OSMODE" oldsnap))
    ((= FOC "DIM") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMLINEAR") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMALIGNED") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMBASELINE") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMCONTINUE") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMANGULAR") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMRADIUS") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMDIAMETER") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMORDINATE") (setvar "OSMODE" oldsnap))
    ((= FOC "DIMCENTER") (setvar "OSMODE" oldsnap))
    ((= FOC "QDIM") (setvar "OSMODE" oldsnap))
    ((= FOC "QLEADER") (setvar "OSMODE" oldsnap))
    ((= FOC "HATCH") (setvar "OSMODE" oldsnap))
    ((= FOC "-HATCH") (setvar "OSMODE" oldsnap))
    ((= FOC "BHATCH") (setvar "OSMODE" oldsnap))
    ((= FOC "DONUT") (setvar "OSMODE" oldsnap))
    ((= FOC "LINE") (setvar "OSMODE" oldsnap))
    ((= FOC "PLINE") (setvar "OSMODE" oldsnap))
    ((= FOC "SPLINE") (setvar "OSMODE" oldsnap))
    ((= FOC "XLINE") (setvar "OSMODE" oldsnap))
    ((= FOC "CIRCLE") (setvar "OSMODE" oldsnap))
    ((= FOC "ELLIPSE") (setvar "OSMODE" oldsnap))
    ((= FOC "ARC") (setvar "OSMODE" oldsnap))
    ((= FOC "POINT") (setvar "OSMODE" oldsnap))
    ((= FOC "RAY") (setvar "OSMODE" oldsnap))
    ((= FOC "MLINE") (setvar "OSMODE" oldsnap))
    ((= FOC "TRACE") (setvar "OSMODE" oldsnap))
    ((= FOC "INSERT") (setvar "OSMODE" oldsnap))
    ((= FOC "-INSERT") (setvar "OSMODE" oldsnap))
    ((= FOC "SOLID") (setvar "OSMODE" oldsnap))
    ((= FOC "MVIEW") (setvar "OSMODE" oldsnap))
    ((= FOC "MOVE") (setvar "OSMODE" oldsnap))
    ((= FOC "COPY") (setvar "OSMODE" oldsnap))
    ((= FOC "ROTATE") (setvar "OSMODE" oldsnap))
     
  )                    ;cond
)                    ;defun




;; Automatic Load ;;
(loadOreactor)
Keep smile...

sinc

  • Guest
Re: Sharing my new program...;-)
« Reply #1 on: October 13, 2006, 12:24:02 PM »
Didn't try the program, so I'm not entirely sure how it works.

But are you familiar with Temporary Keyboard Overrides (added in 2006)?  They might make this routine unnecessary, if you're running 2006 or 2007.  Basically, holding down SHIFT or SHIFT+some other key can change various settings.  By default, holding down SHIFT toggles ORTHO mode.  So, if you're in the middle of a command and suddenly need to use ORTHO for one selection, you can simply hold down SHIFT and make the selection.  Similarly, if ORTHO is already on, holding down SHIFT will disable ORTHO until you release SHIFT again.

Holding down SHIFT in conjunction with other keys will trigger a running OSNAP temporarily.  For example, I can hold down SHIFT+C at any time, and get the CENTER osnap.  Similarly, SHIFT+E activates the END osnap, SHIFT+Z activates the PERP osnap, SHIFT+R activates the NEAR osnap, etc.  This behavior is completely customizable in the CUI.  (The CEN and END overrides are there by default, but I had to create the PERP and NEAR ones myself...)

The only real drawback is that Autocad sometimes gets confused, and mis-interprets a Temporary Keyboard Override as Text Entry.  Then the keyboard repeat kicks in, and you can get a string of letters like "ccccccccccccc" instead of the CEN osnap.  But all-in-all, it's a very handy feature.

Holding down SHIFT and right-clicking the mouse also calls up the OSNAP shortcut menu, which is handy.  Starting in either 2006 or 2007, there's a "Snap to mid between 2 points" option that should have been added years ago...   :wink:

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: Sharing my new program...;-)
« Reply #2 on: October 13, 2006, 12:24:41 PM »
Suggestion: When dealing with lists of data establish a variable (or variables) to host the data and then refer to the variable(s) rather than referring to (repeated) hard coded in-situ lists. You're creating a maintenance nightmare going the latter route. It would change those 300 odd lines of code down to less than 200.
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

Greg B

  • Seagull
  • Posts: 12417
  • Tell me a Joke!
Re: Sharing my new program...;-)
« Reply #3 on: October 13, 2006, 12:33:45 PM »
I'm not much for programming anymore, but that was all french to me.   :laugh:

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: Sharing my new program...;-)
« Reply #4 on: October 13, 2006, 01:04:07 PM »
In the remote chance you don't know what I'm talking about consider this --

Code: [Select]
...

(setq *commandList2*
    (append
       '(   "+DSETTINGS"
            "DSETTINGS"
        )   
        (setq *commandList1*
           '(   "ARC"
                "BHATCH"
                "CIRCLE"
                "COPY"
                "DIM"
                "DIMALIGNED"
                "DIMANGULAR"
                "DIMBASELINE"
                "DIMCENTER"
                "DIMCONTINUE"
                "DIMDIAMETER"
                "DIMLINEAR"
                "DIMORDINATE"
                "DIMRADIUS"
                "DONUT"
                "DTEXT"
                "ELLIPSE"
                "HATCH"
                "-HATCH"
                "INSERT"
                "-INSERT"
                "LINE"
                "MLINE"
                "MOVE"
                "MTEXT"
                "MVIEW"
                "PLINE"
                "POINT"
                "QDIM"
                "QLEADER"
                "RAY"
                "ROTATE"
                "SOLID"
                "SPLINE"
                "TEXT"
                "TRACE"
                "XLINE"
            )
        )
    )
)

(defun CommonFunction1 ( commandName )
    ;;  note, *commandList1* is a global
    (if (member commandName *commandList1*)
        (setvar "osmode" oldsnap) ;; is oldsnap a global?
    )
)


(defun CommonFunction2 ( commandName )
    ;;  note, *commandList2* is a global
    (if
        (member
            (setq socc commandName) ;; is socc supposed to be a global?
            *commandList2*
        )
        (set_osnap_mode)
    )   
)


(defun startOCommand ( calling-reactor startcommandInfo )
    (CommonFunction2 (car startcommandInfo))
)


(defun endOCommand ( calling-reactor endcommandInfo )
    (CommonFunction1 (car endcommandInfo))
)


(defun cancelOCommand ( calling-reactor cancelcommandInfo )
    (CommonFunction1 (car cancelcommandInfo))
)

...

PS: I didn't run your proggy (or the code I penned) and have no idea what the former does. Just semantic suggestions.

Edit: Fixed spelling, consolidated code, added a couple comments.
« Last Edit: October 13, 2006, 01:20:34 PM by MP »
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

Andrea

  • Water Moccasin
  • Posts: 2372
Re: Sharing my new program...;-)
« Reply #5 on: October 13, 2006, 01:07:38 PM »
 :?  your right MP
Thanks. I will try to change my program.

Sinc,
Yes I know all that,..but all users here have same CUI or MNS menu loaded from network on (READ ONLY mode)...
also this is very unuseful when changing PC each 6 month and need to backup all PGP or any other short-cut b4.
all PGP CFG and other program configuration file, like SNAPcmd...are in a network drive to prevent computer crashing
or any other local change.
Keep smile...

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: Sharing my new program...;-)
« Reply #6 on: October 13, 2006, 01:12:17 PM »
You're welcome Andrea; have fun.

:)
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

Andrea

  • Water Moccasin
  • Posts: 2372
Re: Sharing my new program...;-)
« Reply #7 on: October 13, 2006, 03:35:46 PM »
there it is...
My code revised...


Code: [Select]
;| ;
SNAPcmd is a simple utilities allowing users to activate ;
a specific OSMODE during AutoCAD command. ;
By: Andrea Andreetti  2006/09/13 ;
;
This code use: ;
"X:\\Acad\\Usager\\"(getvar "LOGINNAME") "-SNAP.txt") ;
but you can change as your own. ;
(french release) ;
|;



;;global variables
(setq oldsnap (getvar "osmode"))
(setq snapfilename (strcat "X:\\Acad\\Usager\\"(getvar "LOGINNAME") "-SNAP.txt"))




;;TXT file creation
(defun createSNAPfile (/ snapfile)
  (setq snapfile (open snapfilename "w"))
(write-line
"Premièrement,...
merci d'utiliser mon programme...ça me fait plaisir le vous l'offrir.

Vous trouverez ci bas, 2 colonnes, soit une liste de fonctions autoCAD suivit d'un numéro.
Ce numéro est en fait la variable \"OSMODE\". vous n'avez donc qu'à associer la variable \"SMODE\" désiré pour les fonctions utilisées.
Voici vos code actuelles:

------------------------

LINE     *1
PLINE    *2
CIRCLE   *16452

------------------------




Note:
la variable OSMODE définit les accrochages aux objets actifs. Le paramètre est stocké sous forme de code binaire
en utilisant la somme des valeurs suivantes :

0      = AUCun
1      = Extrémité
2      = Milieu
4      = Centre
8      =  Nodal
16     = Quadrant
32     = Intersection
64     = Insertion
128    = Perpendiculaire
256    = Tangente
512    = Proche
1024   = Annule tous les accrochages aux objets.
2048   = Intersection apparente
4096   = EXTension
8192   = Parallèle
 

Pour spécifier plusieurs accrochages aux objets, entrez la somme de leurs valeurs.
Par exemple, l'entrée de la valeur 3 spécifie les accrochages aux objets Extrémité (code binaire 1) et Milieu (code binaire 2).
La valeur 16383 active tous les modes d'accrochage aux objets.
"
snapfile)
  (close snapfile)
)
(if (not (findfile snapfilename))
(createSNAPfile)
)




;;create associated COMMAND list -> slist2
(defun createCMDlist (/ osfile osline oss)
(setq slist2 '())
(setq osfile (open snapfilename "r"))
(setq osline (read-line osfile))
  (while osline
    (setq osss (vl-string-search "*" osline))
    (if osss
      (setq slist2
     (append
        (list
           (substr
          (strcase osline) 1 (vl-string-search " " osline)
   )
        ) slist2
       )
      )
    )
    (setq osline (read-line osfile))
  )
;;(close osfile)
)
(createCMDlist)



     

;;set the snap mode
(defun set_osnap_mode (/ osss osline osfile)

  (setq osfile (open snapfilename "r"))
  (setq osline (read-line osfile))
  (while osline
    (if (eq (read osline) (read SOCC))
      (progn
      (setq osss (vl-string-search "*" osline))
      (if osss
(progn
      (setq ossa (read (substr osline (+ osss 2))))
      (setvar "OSMODE" ossa)
        )
      )))
  (setq osline (read-line osfile))
    )
 ;; (close osline)
 
)
   
 


;; ;;
;; LOAD REACTEUR ;;
;; ;;
(defun loadOreactor ()

(setq slist1 '( "+DSETTINGS" "DSETTINGS"))
 
(vl-load-com)
(vlr-command-reactor nil '((:vlr-commandWillStart . startOCommand)))
(vlr-command-reactor nil '((:vlr-commandEnded . endOCommand)))
(vlr-command-reactor nil '((:vlr-commandCancelled . cancelOCommand)))
(vlr-command-reactor nil '((:vlr-commandFailed . failedOCommand)))
)





;;ON START
(defun startOCommand ( calling-reactor startcommandInfo / soc )
    (if (member (setq socc (car startcommandInfo)) slist2)       
        (set_osnap_mode)
    )   
)

;;ON END
(defun endOCommand ( calling-reactor endcommandInfo )
    (if (member (car endcommandInfo) slist2)
        (setvar "OSMODE" oldsnap)
    )
    (if (member (car endcommandInfo) slist1)
        (setq oldsnap (getvar "osmode"))
    )
)

;;ON CANCEL
(defun cancelOCommand (calling-reactor cancelcommandInfo )
    (if (member (car cancelcommandInfo) slist2)
        (setvar "OSMODE" oldsnap)
    )
)

;;ON FAILED
(defun failedOCommand (calling-reactor failedcommandInfo )
    (if (member (car failedcommandInfo) slist2)
        (setvar "OSMODE" oldsnap)
    )
)




;; Automatic Load ;;
(loadOreactor)
Keep smile...

Patrick_35

  • Guest
Re: Sharing my new program...;-)
« Reply #8 on: October 13, 2006, 05:27:36 PM »
Hi
If your SDI > 0 and you run or open a new drawing, you have an error because you don't remove your reactors
You can use :vlr-beginclose in vlr-editor

@+

sinc

  • Guest
Re: Sharing my new program...;-)
« Reply #9 on: October 13, 2006, 06:23:12 PM »

Sinc,
Yes I know all that,..but all users here have same CUI or MNS menu loaded from network on (READ ONLY mode)...
also this is very unuseful when changing PC each 6 month and need to backup all PGP or any other short-cut b4.
all PGP CFG and other program configuration file, like SNAPcmd...are in a network drive to prevent computer crashing
or any other local change.

That should not be an issue.  I had absolutley no problems moving all my Temporary Keyboard Shortcuts from 2006 to 2007 - it was one of the easiest parts of the migration.

Having all your users use a read-only CUI is not a great solution, but given how terrible the CUI is in both 2006 and 2007, I understand why you are using that method...  I'm SERIOUSLY HOPING that Autodesk manages to get a usable CUI out in 2008, so we can actually use Enterprise CUIs.  I'm not going to hold my breath, though...   :realmad:

cparnell

  • Guest
Re: Sharing my new program...;-)
« Reply #10 on: October 23, 2006, 11:50:05 AM »
Andrea:

This appears to be a routine that I have been looking for since 2006 came out and my OSNAP accelerators could no longer be used. However when I loaded your routine, I got the following error.

bad argument type: streamp nil

Thanks for sharing.

Andrea

  • Water Moccasin
  • Posts: 2372
Re: Sharing my new program...;-)
« Reply #11 on: October 24, 2006, 04:51:22 PM »
Andrea:

This appears to be a routine that I have been looking for since 2006 came out and my OSNAP accelerators could no longer be used. However when I loaded your routine, I got the following error.

bad argument type: streamp nil

Thanks for sharing.

maybe you ned to change your path directory...
eg:
(setq snapfilename (strcat "C:\\Program files\\"(getvar "LOGINNAME") "-SNAP.txt"))

or any existing folder.

Work fine in our offices.
Keep smile...