Jump to content

HappyBirthday.lsp ==>Fun vs. prank


Bluebird1973

Recommended Posts

Hi together,

 

I would like to play a trick on my draftsman colleagues and I needed some help.

...feel free to improve my poor coding...

 

 


[color=RED]([/color][color=BLUE]defun[/color] c:HappyBirthday [color=RED]([/color][color=BLUE]/[/color] [color=BLUE]UserName[/color] [color=BLUE]User1[/color] [color=BLUE]B-Day_Date[/color] [color=BLUE]R-age[/color] [color=BLUE]age[/color] [color=BLUE]ry[/color][color=RED])[/color]

[color=RED]([/color][color=BLUE]if[/color] [color=#990099];list of users for the pop-ups[/color]
	[color=RED]([/color][color=BLUE]setq[/color] [color=BLUE]UserName[/color] [color=RED]([/color][color=BLUE]strcase[/color][color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]loginname[color=RED])))[/color]
	[color=RED]([/color][color=BLUE]progn[/color]
		[color=RED]([/color][color=BLUE]cond[/color]
[color=#990099];						User Name						User						Birthday						retirement age[/color]
			[color=RED](([/color][color=BLUE]equal[/color] [color=BLUE]UserName[/color] [color=#a52a2a]"MH019"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] [color=BLUE]User1[/color] [color=#a52a2a]"Michael"[/color]		[color=BLUE]B-Day_Date[/color] [color=#a52a2a]"19991003"[/color]			[color=BLUE]R-age[/color] [color=#009900]67[/color][color=RED]))[/color]
			[color=RED](([/color][color=BLUE]equal[/color] [color=BLUE]UserName[/color] [color=#a52a2a]"MH019"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] [color=BLUE]User1[/color] [color=#a52a2a]"Michael"[/color]		[color=BLUE]B-Day_Date[/color] [color=#a52a2a]"20180109"[/color]			[color=BLUE]R-age[/color] [color=#009900]67[/color][color=RED]))[/color]
			[color=RED](([/color][color=BLUE]equal[/color] [color=BLUE]UserName[/color] [color=#a52a2a]"MH019"[/color][color=RED])[/color] [color=RED]([/color][color=BLUE]setq[/color] [color=BLUE]User1[/color] [color=#a52a2a]"Michael"[/color]		[color=BLUE]B-Day_Date[/color] [color=#a52a2a]"20180110"[/color]			[color=BLUE]R-age[/color] [color=#009900]67[/color][color=RED]))[/color]
			[color=RED]([/color][color=BLUE]T[/color]		[color=RED]([/color][color=BLUE]princ[/color] [color=#a52a2a]"\n\nSorry, User not listed !!!"[/color][color=RED]))[/color]
		[color=RED])[/color][color=#990099];_cond end[/color]
	[color=RED])[/color][color=#990099];_progn end[/color]
[color=RED])[/color][color=#990099];_if end[/color]

[color=RED]([/color][color=BLUE]setq[/color] [color=BLUE]age[/color] [color=RED]([/color][color=BLUE]itoa[/color] [color=RED]([/color][color=BLUE]-[/color] [color=RED]([/color][color=BLUE]atoi[/color] [color=RED]([/color][color=BLUE]substr[/color] [color=RED]([/color][color=BLUE]rtos[/color] [color=RED]([/color][color=BLUE]fix[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]CDATE[color=RED])))[/color] [color=#009900]1[/color] [color=#009900]4[/color][color=RED]))[/color] [color=RED]([/color][color=BLUE]atoi[/color] [color=RED]([/color][color=BLUE]substr[/color] [color=BLUE]B-Day_Date[/color] [color=#009900]1[/color] [color=#009900]4[/color][color=RED]))[/color] [color=RED])[/color] [color=RED]))[/color][color=#990099];calculating the age of the user[/color]
[color=RED]([/color][color=BLUE]setq[/color] [color=BLUE]ry[/color]	[color=RED]([/color][color=BLUE]itoa[/color] [color=RED]([/color][color=BLUE]-[/color] [color=BLUE]R-age[/color] [color=RED]([/color][color=BLUE]atoi[/color] [color=BLUE]age[/color][color=RED]))))[/color][color=#990099];remaining years until retirement[/color]

[color=RED]([/color][color=BLUE]alert[/color]
	[color=RED]([/color][color=BLUE]strcat[/color] 
		[color=#a52a2a]"Hello "[/color] [color=BLUE]User1[/color] [color=#a52a2a]"!"[/color]
		[color=#a52a2a]"\n\nHerzlichen Glückwunsch zum "[/color] [color=BLUE]age[/color] [color=#a52a2a]". Geburtstag !!!"[/color]
		[color=#a52a2a]"\n\nCongratulations on your "[/color] [color=BLUE]age[/color] [color=#a52a2a]"st/nd/rd/ th birthday !!!"[/color] [color=#990099];here I need some help for the e.g. 21st, 22nd, 23rd, 24th.[/color]
		[color=#a52a2a]"\n\n\n\nVon jetzt an, sind es nur noch "[/color] [color=BLUE]ry[/color] [color=#a52a2a]" Jahre bis zur Rente \n... Also hau rein ... :-)"[/color]
		[color=#a52a2a]"\n\nFrom now on, there are only "[/color] [color=BLUE]ry[/color] [color=#a52a2a]"  years left to retirement \n... so get in there ... :-)"[/color]
		[color=#a52a2a]"\n\n\nKeyuser Michael"[/color]
		[color=RED])[/color]
[color=RED])[/color]
[color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color]
[color=RED])[/color]

[color=#990099];original code from 06.01.2011/Lee Mac changed on my needs[/color]
[color=#990099];http://www.cadtutor.net/forum/showthread.php?55800-Differences-in-exiting-AutoCAD&p=378358&viewfull=1#post378358[/color]
[color=RED]([/color][color=BLUE]if[/color]
[color=RED]([/color][color=BLUE]not[/color]
	[color=RED]([/color][color=BLUE]and[/color]
		[color=RED]([/color][color=BLUE]setq[/color] [color=BLUE]date[/color] [color=RED]([/color][color=BLUE]getenv[/color] [color=#a52a2a]"OnceAYear"[/color][color=RED]))[/color]
		[color=RED]([/color][color=BLUE]<[/color] [color=RED]([/color][color=BLUE]fix[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]CDATE[color=RED]))[/color] [color=RED]([/color][color=BLUE]atoi[/color] [color=BLUE]date[/color][color=RED]))[/color]
	[color=RED])[/color][color=#990099];_end and[/color]
[color=RED])[/color][color=#990099];_end not[/color]
[color=RED]([/color][color=BLUE]progn[/color]
	[color=RED]([/color]c:HappyBirthday[color=RED])[/color]
	[color=RED]([/color][color=BLUE]setenv[/color] [color=#a52a2a]"OnceAYear"[/color] [color=RED]([/color][color=BLUE]itoa[/color] [color=RED]([/color][color=BLUE]+[/color] [color=#009900]10000[/color] [color=RED]([/color][color=BLUE]fix[/color] [color=RED]([/color][color=BLUE]getvar[/color] [color=DARKRED]'[/color]CDATE[color=RED])))))[/color]	[color=#990099];stored in windows registry [HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R19.1\ACAD-D004:409\FixedProfile\General][/color]
[color=RED])[/color][color=#990099];_end progn[/color]
[color=RED])[/color][color=#990099];_end if[/color]
[color=RED]([/color][color=BLUE]princ[/color][color=RED])[/color]


 

Thank you in advanced !!! :D

 

kind regards

Bluebird1973

Link to comment
Share on other sites

  • Replies 29
  • Created
  • Last Reply

Top Posters In This Topic

  • Lee Mac

    8

  • Bluebird1973

    7

  • Grrr

    5

  • BIGAL

    3

Top Posters In This Topic

Posted Images

here's one way to get the suffix

 

(setq suffix (chr (last (vl-string->list age))))
(cond ((eq suffix "1") (setq suffix "st"))
     ((eq suffix "2") (setq suffix "nd"))
     ((eq suffix "3") (setq suffix "rd"))
     ( T (setq suffix "th"))
)

Link to comment
Share on other sites

here's one way to get the suffix

 

(setq suffix (chr (last (vl-string->list age))))
(cond ((eq suffix "1") (setq suffix "st"))
     ((eq suffix "2") (setq suffix "nd"))
     ((eq suffix "3") (setq suffix "rd"))
     ( T (setq suffix "th"))
)

 

"13rd" ;)

 

Here's another possible way:

(defun ordinal ( n )
   (cond ((< 10 (rem n 100) 14) "th") ((nth (rem n 10) '(nil "st" "nd" "rd"))) ("th"))
)

_$ (ordinal 13)
"th"
_$ (ordinal 21)
"st"
_$ (ordinal 123)
"rd"

Link to comment
Share on other sites

How about something like this?

(   (lambda ( lst / age itm ord ret )
       (defun ord ( n ) (cond ((< 10 (rem n 100) 14) "th") ((nth (rem n 10) '(nil "st" "nd" "rd"))) ("th")))
       (cond
           (   (null (setq itm (assoc (strcase (getvar 'loginname)) lst)))
               (princ "\nSorry, user not listed!")
           )
           (   (zerop (rem (setq age (- (fix (getvar 'cdate)) (caddr itm))) 10000))
               (setq age (/ age 10000)
                     ret (- (cadddr itm) age)
               )
               (alert
                   (strcat 
                       "Hello " (cadr itm) "!"
                       "\n\nHerzlichen Glückwunsch zum " (itoa age) ". Geburtstag !!!"
                       "\n\nCongratulations on your " (itoa age) (ord age) " Birthday !!!"
                       "\n\n\n\nVon jetzt an, sind es nur noch " (itoa ret) " Jahre bis zur Rente \n... Also hau rein ... :-)"
                       "\n\nFrom now on, there are only " (itoa ret) " years left to retirement \n... so get in there ... :-)"
                       "\n\n\nKeyuser Michael"
                   )
               )
           )
       )
       (princ)
   )
  '(
       ("MH019" "Michael" 19991003 67)
       ("MH019" "Michael" 20180109 67)
       ("MH019" "Michael" 20180110 67)
   )
)

Copy the above into your acaddoc.lsp ;)

Link to comment
Share on other sites

:idea: This made me wonder, why not write some generic function that uses one of the arguments:

'(day week month year)

 

(defun RunOnceA ( sym func ) ...)

(RunOnceA 'week '(lambda ( / ) <bla-bla>) )

Link to comment
Share on other sites

Hellooooo

 

make sure speaker is on

 

(defun SpeakSapi ( s / sapi )
   (if (eq (type s) 'STR)
     (progn
       (setq sapi (vlax-create-object "Sapi.SpVoice"))
       (vlax-put sapi 'SynchronousSpeakTimeout 1)
       (vlax-invoke-method sapi 'WaitUntilDone 0)
       (vlax-invoke sapi "Speak" s 0)
       (vlax-release-object sapi)
     )
   )
)
(speaksapi "please remain seated during your Autocad session do not leave work area")
(setq x 24)
(setq ans (strcat "alan is " (rtos x 2 0)))
(speaksapi ans)

Link to comment
Share on other sites

Hi together,

 

Thanks to everyone, I appreciate that very much ! :)

 

@ Lee Mac

 

I didn't get your code to run. I put it on my acaddoc.lsp but nothing happens.

What I'm doing wrong?

... and I have problems to understand what's going on. Could you please add some comments/explanations for me?

 

How about something like this?
(   (lambda ( lst / age itm ord ret )
       (defun ord ( n ) (cond ((< 10 (rem n 100) 14) "th") ((nth (rem n 10) '(nil "st" "nd" "rd"))) ("th")))
       (cond
           (   (null (setq itm (assoc (strcase (getvar 'loginname)) lst)))
               (princ "\nSorry, user not listed!")
           )
           (   (zerop (rem (setq age (- (fix (getvar 'cdate)) (caddr itm))) 10000))
               (setq age (/ age 10000)
                     ret (- (cadddr itm) age)
               )
               (alert
                   (strcat 
                       "Hello " (cadr itm) "!"
                       "\n\nHerzlichen Glückwunsch zum " (itoa age) ". Geburtstag !!!"
                       "\n\nCongratulations on your " (itoa age) (ord age) " Birthday !!!"
                       "\n\n\n\nVon jetzt an, sind es nur noch " (itoa ret) " Jahre bis zur Rente \n... Also hau rein ... :-)"
                       "\n\nFrom now on, there are only " (itoa ret) " years left to retirement \n... so get in there ... :-)"
                       "\n\n\nKeyuser Michael"
                   )
               )
           )
       )
       (princ)
   )
  '(
       ("MH019" "Michael" 19991003 67)
       ("MH019" "Michael" 20180109 67)
       ("MH019" "Michael" 20180110 67)
   )
)

Copy the above into your acaddoc.lsp ;)

 

 

@BIGAL

 

This is a funny one.... but we have no speakers ... :cry:

 

Hellooooo

 

make sure speaker is on

 

(defun SpeakSapi ( s / sapi )
   (if (eq (type s) 'STR)
     (progn
       (setq sapi (vlax-create-object "Sapi.SpVoice"))
       (vlax-put sapi 'SynchronousSpeakTimeout 1)
       (vlax-invoke-method sapi 'WaitUntilDone 0)
       (vlax-invoke sapi "Speak" s 0)
       (vlax-release-object sapi)
     )
   )
)
(speaksapi "please remain seated during your Autocad session do not leave work area")
(setq x 24)
(setq ans (strcat "alan is " (rtos x 2 0)))
(speaksapi ans)

Link to comment
Share on other sites

@ Lee Mac

 

I didn't get your code to run. I put it on my acaddoc.lsp but nothing happens.

What I'm doing wrong?

... and I have problems to understand what's going on. Could you please add some comments/explanations for me?

 

It will only run when there is a birthday to be celebrated!

 

Try adding a new user to the list whose birthday is today ;)

Link to comment
Share on other sites

Thank you Lee Mac !!!

 

now I got it. ...but didn't understand the code :cry:

 

 

is there a way to not pank my draftsman the whole day?

... 3 or 4 times would be enough ...

Link to comment
Share on other sites

is there a way to not pank my draftsman the whole day?

... 3 or 4 times would be enough ...

 

Something like this perhaps:

(   (lambda ( lst / age itm ord ret tmp )
       (defun ord ( n ) (cond ((< 10 (rem n 100) 14) "th") ((nth (rem n 10) '(nil "st" "nd" "rd"))) ("th")))
       (cond
           (   (null (setq itm (assoc (strcase (getvar 'loginname)) lst)))
               (princ "\nSorry, user not listed!")
           )
           (   (and (zerop (rem (setq age (- (fix (getvar 'cdate)) (caddr itm))) 10000))
                    (or (null (setq tmp (getenv "CurrentAge")))
                        (/= age (atoi tmp))
                    )
               )
               (setenv "CurrentAge" (itoa age))
               (setq age (/ age 10000)
                     ret (- (cadddr itm) age)
               )
               (alert
                   (strcat 
                       "Hello " (cadr itm) "!"
                       "\n\nHerzlichen Glückwunsch zum " (itoa age) ". Geburtstag !!!"
                       "\n\nCongratulations on your " (itoa age) (ord age) " Birthday !!!"
                       "\n\n\n\nVon jetzt an, sind es nur noch " (itoa ret) " Jahre bis zur Rente \n... Also hau rein ... :-)"
                       "\n\nFrom now on, there are only " (itoa ret) " years left to retirement \n... so get in there ... :-)"
                       "\n\n\nKeyuser Michael"
                   )
               )
           )
       )
       (princ)
   )
  '(
       ("MH019" "Michael" 19991003 67)
       ("MH019" "Michael" 20180109 67)
       ("MH019" "Michael" 20180110 67)
   )
)

Link to comment
Share on other sites

Great !!! :)

 

... but I would like to prank a little bit... o:)

is it possible to add a counter which I could set to show up 3-4 times?

Link to comment
Share on other sites

:idea: This made me wonder, why not write some generic function that uses one of the arguments:

'(day week month year)

 

; (RunOnceA 'day (lambda nil (alert "Hello world!")))
(defun RunOnceA ( sym func / env dateL tmp new old aL )
 
 (defun SubstrByN ( n str ) (if (and (eq 'INT (type n)) (> n 0) (/= "" str)) (cons (substr str 1 n) (SubstrByN n (substr str (1+ n))))) )
 
 (setq env "RunOnceA")
 (setq dateL
   (lambda nil
     (mapcar 'cons '(year month day)
       (apply '(lambda (a b c d) (list (strcat a b) c d))
         (SubstrByN 2 (vl-prin1-to-string (fix (getvar 'cdate))))
       )
     )
   )
 )
 (and ; first time using 'RunOnceA' function
   (or (= (setq tmp (getenv env)) "") (not tmp) )
   (progn
     (setenv env (vl-prin1-to-string (dateL)))
     (func)
   ); progn
 ); and
 
 (if (member sym '(day month year)) ; check if valid symbol is provided, to avoid redundant prompts
   (if
     (not 
       (equal
         (setq new (assoc sym (dateL)))
         (setq old (assoc sym (setq aL (read (getenv env)))))
       )
     )
     (progn (setenv env (vl-prin1-to-string (subst new old aL))) (func) ) ; first store the current date, incase (func) crashes
     (prompt (strcat "\nRunOnceA: will evaluate the next " (strcase (vl-prin1-to-string sym) t) "."))
   ); if
   (prompt "\nRunOnceA: invalid symbol provided, use [day/month/year].")
 ); if
 
); defun RunOnceA

Link to comment
Share on other sites

; (RunOnceA 'day (lambda nil (alert "Hello world!")))
(defun RunOnceA ( sym func / env dateL tmp new old aL )
 
 (defun SubstrByN ( n str ) (if (and (eq 'INT (type n)) (> n 0) (/= "" str)) (cons (substr str 1 n) (SubstrByN n (substr str (1+ n))))) )
 
 (setq env "RunOnceA")
 (setq dateL
   (lambda nil
     (mapcar 'cons '(year month day)
       (apply '(lambda (a b c d) (list (strcat a b) c d))
         (SubstrByN 2 (vl-prin1-to-string (fix (getvar 'cdate))))
       )
     )
   )
 )
 (and ; first time using 'RunOnceA' function
   (or (= (setq tmp (getenv env)) "") (not tmp) )
   (progn
     (setenv env (vl-prin1-to-string (dateL)))
     (func)
   ); progn
 ); and
 
 (if (member sym '(day month year)) ; check if valid symbol is provided, to avoid redundant prompts
   (if
     (not 
       (equal
         (setq new (assoc sym (dateL)))
         (setq old (assoc sym (setq aL (read (getenv env)))))
       )
     )
     (progn (setenv env (vl-prin1-to-string (subst new old aL))) (func) ) ; first store the current date, incase (func) crashes
     (prompt (strcat "\nRunOnceA: will evaluate the next " (strcase (vl-prin1-to-string sym) t) "."))
   ); if
   (prompt "\nRunOnceA: invalid symbol provided, use [day/month/year].")
 ); if
 
); defun RunOnceA

 

Nicely coded :twisted:

 

Gr. Rlx

Link to comment
Share on other sites

Great !!! :)

 

... but I would like to prank a little bit... o:)

is it possible to add a counter which I could set to show up 3-4 times?

 

The following will 'prank' the user between 1 and 5 times if they 'roll a 3' when opening a drawing ;) :

[color=GREEN];; Rand  -  Lee Mac[/color]
[color=GREEN];; PRNG implementing a linear congruential generator with[/color]
[color=GREEN];; parameters derived from the book 'Numerical Recipes'[/color]

([color=BLUE]defun[/color] LM:rand ( [color=BLUE]/[/color] a c m )
   ([color=BLUE]setq[/color] m   4294967296.0
         a   1664525.0
         c   1013904223.0
         $xn ([color=BLUE]rem[/color] ([color=BLUE]+[/color] c ([color=BLUE]*[/color] a ([color=BLUE]cond[/color] ($xn) (([color=BLUE]getvar[/color] 'date))))) m)
   )
   ([color=BLUE]/[/color] $xn m)
)

[color=GREEN];; Random in Range  -  Lee Mac[/color]
[color=GREEN];; Returns a pseudo-random integral number in a given range (inclusive)[/color]

([color=BLUE]defun[/color] LM:randrange ( a b )
   ([color=BLUE]+[/color] ([color=BLUE]min[/color] a b) ([color=BLUE]fix[/color] ([color=BLUE]*[/color] ([color=BLUE]LM:rand[/color]) ([color=BLUE]1+[/color] ([color=BLUE]abs[/color] ([color=BLUE]-[/color] a b))))))
)

(   ([color=BLUE]lambda[/color] ( lst [color=BLUE]/[/color] age itm ord ret tmp )
       ([color=BLUE]defun[/color] ord ( n ) ([color=BLUE]cond[/color] (([color=BLUE]<[/color] 10 ([color=BLUE]rem[/color] n 100) 14) [color=MAROON]"th"[/color]) (([color=BLUE]nth[/color] ([color=BLUE]rem[/color] n 10) '([color=BLUE]nil[/color] [color=MAROON]"st"[/color] [color=MAROON]"nd"[/color] [color=MAROON]"rd"[/color]))) ([color=MAROON]"th"[/color])))
       ([color=BLUE]cond[/color]
           (   ([color=BLUE]null[/color] ([color=BLUE]setq[/color] itm ([color=BLUE]assoc[/color] ([color=BLUE]strcase[/color] ([color=BLUE]getvar[/color] 'loginname)) lst)))
               ([color=BLUE]princ[/color] [color=MAROON]"\nSorry, user not listed!"[/color])
           )
           (   ([color=BLUE]and[/color] ([color=BLUE]zerop[/color] ([color=BLUE]rem[/color] ([color=BLUE]setq[/color] age ([color=BLUE]-[/color] ([color=BLUE]fix[/color] ([color=BLUE]getvar[/color] 'cdate)) ([color=BLUE]caddr[/color] itm))) 10000))
                    ([color=BLUE]=[/color] 3 (LM:randrange 1 6)) [color=GREEN];; Adding some randomness to when the message is displayed[/color]
                    ([color=BLUE]cond[/color]
                        (   ([color=BLUE]or[/color] ([color=BLUE]null[/color] ([color=BLUE]setq[/color] tmp ([color=BLUE]getenv[/color] [color=MAROON]"CurrentAge"[/color]))) ([color=BLUE]<[/color] ([color=BLUE]atoi[/color] tmp) age))
                            ([color=BLUE]setenv[/color] [color=MAROON]"CurrentAge"[/color] ([color=BLUE]itoa[/color] ([color=BLUE]+[/color] age (LM:randrange 1 5))))
                        )
                        (   ([color=BLUE]<[/color] age ([color=BLUE]atoi[/color] tmp))
                            ([color=BLUE]setenv[/color] [color=MAROON]"CurrentAge"[/color] ([color=BLUE]itoa[/color] ([color=BLUE]1-[/color] ([color=BLUE]atoi[/color] tmp))))
                        )
                    )
               )
               ([color=BLUE]setq[/color] age ([color=BLUE]/[/color] age 10000)
                     ret ([color=BLUE]-[/color] ([color=BLUE]cadddr[/color] itm) age)
               )
               ([color=BLUE]alert[/color]
                   ([color=BLUE]strcat[/color] 
                       [color=MAROON]"Hello "[/color] ([color=BLUE]cadr[/color] itm) [color=MAROON]"!"[/color]
                       [color=MAROON]"\n\nHerzlichen Glückwunsch zum "[/color] ([color=BLUE]itoa[/color] age) [color=MAROON]". Geburtstag !!!"[/color]
                       [color=MAROON]"\n\nCongratulations on your "[/color] ([color=BLUE]itoa[/color] age) (ord age) [color=MAROON]" Birthday !!!"[/color]
                       [color=MAROON]"\n\n\n\nVon jetzt an, sind es nur noch "[/color] ([color=BLUE]itoa[/color] ret) [color=MAROON]" Jahre bis zur Rente \n... Also hau rein ... :-)"[/color]
                       [color=MAROON]"\n\nFrom now on, there are only "[/color] ([color=BLUE]itoa[/color] ret) [color=MAROON]" years left to retirement \n... so get in there ... :-)"[/color]
                       [color=MAROON]"\n\n\nKeyuser Michael"[/color]
                   )
               )
           )
       )
       ([color=BLUE]princ[/color])
   )
  '(
       ([color=MAROON]"MH019"[/color] [color=MAROON]"Michael"[/color] 19991003 67)
       ([color=MAROON]"MH019"[/color] [color=MAROON]"Michael"[/color] 20180109 67)
       ([color=MAROON]"MH019"[/color] [color=MAROON]"Michael"[/color] 20180110 67)
   )
)

([color=BLUE]princ[/color])

Edited by Lee Mac
Link to comment
Share on other sites

Just imagine Lee's code triggering some Sapi voices randomly! :lol:

 

 

Most people here have muted their pc but the colleague right in front of me hasn't ... he would make a good candidate. In fact , I have 'pranked' him in the past. He likes to kill rabbits in his spare time so one day I arranged for a slide to appear with each drawing he opened with a armed rabbit showing :D

Link to comment
Share on other sites

Most people here have muted their pc but the colleague right in front of me hasn't ... he would make a good candidate. In fact , I have 'pranked' him in the past. He likes to kill rabbits in his spare time so one day I arranged for a slide to appear with each drawing he opened with a armed rabbit showing :D

 

That sounds like a good practice,

I was imaginig more like a windows XP loading sound upon running autocad (annoying nostalgia). :lol:

Link to comment
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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

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