Jump to content

Recommended Posts

Posted

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

  • Replies 24
  • Created
  • Last Reply

Top Posters In This Topic

  • Lee Mac

    12

  • lpseifert

    6

  • fuccaro

    2

  • flowerrobot

    2

Top Posters In This Topic

Posted

Hehe I wrote a similar script recently but with a group of light hearted (alert insults)

Posted

Lee: Run out of challenges or just feeling a little bored?

Posted

Mmmm makes me want to place not in that eq function, and load it on people's computers

Posted

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 :)

Posted
Lee: Run out of challenges or just feeling a little bored?

 

Bit of both really :P

Posted
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! :)

Posted
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!

Posted

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]

Posted

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.

Posted

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

Posted

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)

Posted

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

Posted

Ha! now it's truly pointless

Not really... reminded me how reactors work- Thx

Posted
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?
Posted

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?

Posted

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!

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