Jump to content

Another Pointless Program :P


Lee Mac

Recommended Posts

Maybe a bit of fun for a co-worker...

 

Will beep upon invoking the Explode command :)

 

(defun c:ExOn ()
 (vl-load-com)
 (if (not *exR)
   (setq *exR
     (vlr-command-reactor nil
       (list
         (cons :vlr-commandWillStart 'Beep!))))) 
 (princ))

(defun Beep! (Reac Args)
 (if (eq "EXPLODE" (strcase (car Args)))
   (vlr-beep-reaction nil))
 (princ))

(defun c:ExOff ()
 (if (and *exR (vlr-added-p *exR))
   (progn
     (vlr-remove *exR)
     (setq *exR nil)))
 (princ))

Link to comment
Share on other sites

  • Replies 24
  • Created
  • Last Reply

Top Posters In This Topic

  • Lee Mac

    12

  • lpseifert

    6

  • fuccaro

    2

  • flowerrobot

    2

Top Posters In This Topic

Once I redefined the Explode command on my colleague's computer. When he tried to explode dimensions or hatches, an allert box announced him that it is not a good drawing practice. The funny side: even today, he thinks that it is an AutoCAD built-in message :)

Link to comment
Share on other sites

Once I redefined the Explode command on my colleague's computer. When he tried to explode dimensions or hatches, an allert box announced him that it is not a good drawing practice. The funny side: even today, he thinks that it is an AutoCAD built-in message :)

 

Haha, nice one! :)

Link to comment
Share on other sites

Once I redefined the Explode command on my colleague's computer. When he tried to explode dimensions or hatches, an allert box announced him that it is not a good drawing practice. The funny side: even today, he thinks that it is an AutoCAD built-in message :)

 

I like this idear!

Link to comment
Share on other sites

Even Better!

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:ExOn [b][color=RED]([/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]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]not[/color][/b] *prank[b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *prank
     [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]prank[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]notAmused[b][color=RED])[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [color=Blue][b]:vlr-commandCancelled[/b][/color] [b][color=DARKRED]'[/color][/b]notAmused[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]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] prank [b][color=RED]([/color][/b]Reac 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]eq[/color][/b] [b][color=#ff00ff]"EXPLODE"[/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=BLUE]vlax-for[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]vla-get-block[/color][/b]
                   [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveLayout[/color][/b]
                     [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=RED]([/color][/b][b][color=BLUE]vla-put-visible[/color][/b] Obj [b][color=Blue]:vlax-false[/color][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] notAmused [b][color=RED]([/color][/b]Reac 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]eq[/color][/b] [b][color=#ff00ff]"EXPLODE"[/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=BLUE]vlax-for[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]vla-get-block[/color][/b]
                   [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveLayout[/color][/b]
                     [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=RED]([/color][/b][b][color=BLUE]vla-put-visible[/color][/b] Obj [b][color=Blue]:vlax-true[/color][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:ExOff [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]and[/color][/b] *prank [b][color=RED]([/color][/b][b][color=BLUE]vlr-added-p[/color][/b] *prank[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]vlr-remove[/color][/b] *prank[b][color=RED])[/color][/b]
     [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] *prank [b][color=BLUE]nil[/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]

Link to comment
Share on other sites

OK Lee. You need something to do in the form of a prank. Make a reactor to move objects away from the cursor so that they can be selected...So when they invoke explode they can get any objects.

Link to comment
Share on other sites

Haha, nice idea Tim -

 

But the reactor would need some form of GrRead loop to track the mouse movements - which, combined with a reactor, may cause trouble :o

Link to comment
Share on other sites

I defer to your genius Lee... can you incorporate this?

(setq SpV (vlax-create-object "Sapi.SpVoice"))
     (vlax-invoke SpV "Speak" "Kaboom" 0)
     (vlax-release-object SpV)

Link to comment
Share on other sites

I'm no genius Larry :P

 

(defun c:ExOn ()
 (vl-load-com)
 (if (not *prank)
   (setq *prank
     (vlr-command-reactor nil
       (list
         (cons :vlr-commandWillStart 'prank)))))
 (princ))

(defun prank (Reac Args)
 (if (eq "EXPLODE" (strcase (car Args)))
   (progn
     (setq SpV (vlax-create-object "Sapi.SpVoice"))
     (vlax-invoke SpV "Speak" "Kaboom" 0)
     (vlax-release-object SpV)))
 (princ))

(defun c:ExOff ()
 (if (and *prank (vlr-added-p *prank))
   (progn
     (vlr-remove *prank)
     (setq *prank nil)))
 (princ))

Link to comment
Share on other sites

OK Lee. You need something to do in the form of a prank. Make a reactor to move objects away from the cursor so that they can be selected...So when they invoke explode they can get any objects.
And what if the user selects the objects *before* it starts the Explode command?
Link to comment
Share on other sites

Lee

Since you once offered to explain your stuff...

how about this?

(defun c:ExOff ()
 (if (and *exR (vlr-added-p *exR))
   (progn
     (vlr-remove *exR)
(setq *exR nil)))

I've read Help about vlr-added-p, but how is *exR 'made' a VLR object representing the reactor?

Link to comment
Share on other sites

I use the variable *exR as a global variable (not localised in any function), and bound the reactor object to it, when the user invokes the top program (ExON).

EDIT!

 

OOPs! Forgot to change it from the last program!

 

**program updated above... nice spot Larry!

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