AfraLISP - Learn AutoLISP for AutoCAD productivity

The AutoLISP Message Box

by Kenny Ramage

Message Box

This library of AutoLisp Functions closely emulates the Visual Basic Message Box Function. It will display 5 different types of message boxes and allows you to enter 3 text message lines and customise the Message Box title.

The message boxes available are :

  • OK Only
  • OK Cancel
  • Rentry Cancel
  • Yes No
  • Yes No Cancel

The syntax for usage is as follows :

	(function name "message1" "message2" "message3" "title")

For example:

	(lspokcancel "This is the first line" "This is the second line"
		     "This is the third line" "This is the title")

Here is a detailed explanation of each message box:

OK Only

Message Box

Syntax : (lspOkOnly "message1" "message2" "message3" "title")

This message box returns nothing as it is used to convey a message only.

OK Cancel

Message Box

Syntax : (lspOkCancel "message1" "message2" "message3" "title")

This message box returns True if OK selected and nil if Cancel selected.

Rentry Cancel

Message Box

Syntax : (lspRentryCancel "message1" "message2" "message3" "title")

This message box returns True if Rentry selected and nil if Cancel selected.

Yes No

Message Box

Syntax : (lspYesNo "message1" "message2" "message3" "title")

This message box returns True if Yes selected and "F" if No selected.

Yes No Cancel

Message Box

Syntax : (lspYesNoCancel "message1" "message2" "message3" "title")

This message box returns True if Yes selected, "F" if No selected and nil if Cancel selected.

Source Coding

Here is the DCL Source Coding:

lspOkCancel : dialog {
 
	key = "main";
 
	: column {
 
	: text {
	key = "message1";
	       }
 
	: text {
	key = "message2";
	       }
 
	: text {
	key = "message3";
	       }
	}
   	: row {
 
	: spacer { width = 1; }
 
	: button {
	label = "OK";
	key = "accept";
	width = 12;
	fixed_width = true;
	mnemonic = "O";
	is_default = true;
	}
 
	: button {
	label = "Cancel";
	key = "cancel";
	width = 12;
	fixed_width = true;
	mnemonic = "C";
	is_cancel = true;
  	}
 
	: spacer { width = 1;}
 
	}
 
  		 }
 
////////////////////////////////////////////////
 
lspYesNo : dialog {
 
	key = "main";
 
	: column {
 
	: text {
	key = "message1";
	       }
 
	: text {
	key = "message2";
	       }
 
	: text {
	key = "message3";
	       }
	}
   	: row {
 
	: spacer { width = 1; }
 
	: button {
	label = "Yes";
	key = "yes";
	width = 12;
	fixed_width = true;
	mnemonic = "Y";
	is_default = true;
	}
 
	: button {
	label = "No";
	key = "no";
	width = 12;
	fixed_width = true;
	mnemonic = "N";
	is_cancel = true;
  	}
 
	: spacer { width = 1;}
 
	}
 
  		 }
 
////////////////////////////////////////////
 
lspOkOnly : dialog {
 
	key = "main";
 
	: column {
 
	: text {
	key = "message1";
	       }
 
	: text {
	key = "message2";
	       }
 
	: text {
	key = "message3";
	       }
	}
   	: row {
 
	: spacer { width = 1; }
 
	: button {
	label = "OK";
	key = "accept";
	width = 12;
	fixed_width = true;
	mnemonic = "O";
	is_default = true;
	alignment = centered;
	}
 
	: spacer { width = 1;}
 
	}
 
  		 }
 
////////////////////////////////////////////////
 
lspYesNoCancel : dialog {
 
	key = "main";
 
	: column {
 
	: text {
	key = "message1";
	       }
 
	: text {
	key = "message2";
	       }
 
	: text {
	key = "message3";
	       }
	}
   	: row {
 
	: spacer { width = 1; }
 
	: button {
	label = "Yes";
	key = "yes";
	width = 12;
	fixed_width = true;
	mnemonic = "Y";
	is_default = true;
	}
 
	: button {
	label = "No";
	key = "no";
	width = 12;
	fixed_width = true;
	mnemonic = "N";
  	}
 
	: button {
	label = "Cancel";
	key = "cancel";
	width = 12;
	fixed_width = true;
	mnemonic = "C";
	is_cancel = true;
  	}
 
	: spacer { width = 1;}
 
	}
 
  		 }
 
////////////////////////////////////////////
 
lspRentryCancel : dialog {
 
	key = "main";
 
	: column {
 
	: text {
	key = "message1";
	       }
 
	: text {
	key = "message2";
	       }
 
	: text {
	key = "message3";
	       }
	}
   	: row {
 
	: spacer { width = 1; }
 
	: button {
	label = "Rentry";
	key = "rentry";
	width = 12;
	fixed_width = true;
	mnemonic = "R";
	is_default = true;
	}
 
	: button {
	label = "Cancel";
	key = "Cancel";
	width = 12;
	fixed_width = true;
	mnemonic = "C";
	is_cancel = true;
  	}
 
	: spacer { width = 1;}
 
	}
 
  		 }
 
////////////////////////////////////////////

And the Autolisp Code:

(defun lspOkCancel (message1 message2 message3 main)
 
  (setq dcl_id (load_dialog "msgbox.dcl"))
  (if (not (new_dialog "lspOkCancel" dcl_id))
    (exit)
  )
 
  (set_tile "message1" message1)
  (set_tile "message2" message2)
  (set_tile "message3" message3)
  (set_tile "main" main)
 
  (action_tile
    "cancel"
    "(done_dialog)
     (setq result nil)"
  )
  (action_tile
    "accept"
    "(done_dialog)
     (setq result T)"
  )
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
(defun lspYesNo (message1 message2 message3 main)
 
  (setq dcl_id (load_dialog "msgbox.dcl"))
  (if (not (new_dialog "lspYesNo" dcl_id))
    (exit)
  )
 
  (set_tile "message1" message1)
  (set_tile "message2" message2)
  (set_tile "message3" message3)
  (set_tile "main" main)
 
  (action_tile
    "no"
    "(done_dialog)
     (setq result \"F\")"
  )
  (action_tile
    "yes"
    "(done_dialog)
     (setq result T)"
  )
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
(defun lspOkOnly (message1 message2 message3 main)
 
  (setq dcl_id (load_dialog "msgbox.dcl"))
  (if (not (new_dialog "lspOkOnly" dcl_id))
    (exit)
  )
 
  (set_tile "message1" message1)
  (set_tile "message2" message2)
  (set_tile "message3" message3)
  (set_tile "main" main)
 
  
  (action_tile
    "yes"
    "(done_dialog)"
  )
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
(defun lspYesNoCancel (message1 message2 message3 main)
 
  (setq dcl_id (load_dialog "msgbox.dcl"))
  (if (not (new_dialog "lspYesNoCancel" dcl_id))
    (exit)
  )
 
  (set_tile "message1" message1)
  (set_tile "message2" message2)
  (set_tile "message3" message3)
  (set_tile "main" main)
 
  (action_tile
    "no"
    "(done_dialog)
     (setq result \"F\")"
  )
  (action_tile
    "yes"
    "(done_dialog)
     (setq result T)"
  )
  (action_tile
    "cancel"
    "(done_dialog)
     (setq result nil)"
  )
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
(defun lspRentryCancel (message1 message2 message3 main)
 
  (setq dcl_id (load_dialog "msgbox.dcl"))
  (if (not (new_dialog "lspRentryCancel" dcl_id))
    (exit)
  )
 
  (set_tile "message1" message1)
  (set_tile "message2" message2)
  (set_tile "message3" message3)
  (set_tile "main" main)
 
  (action_tile
    "cancel"
    "(done_dialog)
     (setq result nil)"
  )
  (action_tile
    "rentry"
    "(done_dialog)
     (setq result T)"
  )
  (start_dialog)
  (unload_dialog dcl_id)
  (princ)
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
(princ)

If you would like the source coding for the the Message Box routine, just place your mouse here and click… Enjoy.