Lots of ways to do this here is some examples,
1 have a submenu from a main menu, simple to make
2 we have old fashioned slide menu's so pick an image, supports automatically multiple pages.
3 use a tool pallete
4 old way again is to have a pop side menu, unfortunately this has lost support by Autodesk so a bit difficult to get to work but was super simple to make.
5 use a library dcl and just populate a List dcl and pick.
6 have a dcl with images about 4x4 is max
Here is a library code for a LIST DCL returns ITEM as pick value
Code:
;; LIST SELECT DIALOG (TEMP DCL LIST BOX SELECTION, BASED ON PROVIDED LIST) ;; TITLE - LIST BOX TITLE
;; LABEL - LABEL FOR LIST BOX
;; HEIGHT - HEIGHT OF BOX
;; WIDTH - WIDTH OF BOX
;; MULTI - SELECTION METHOD ["TRUE": MULTIPLE, "FALSE": SINGLE]
;; LST - LIST OF STRINGS TO PLACE IN LIST BOX
;; ALAN J. THOMPSON, 09.23.08 / 05.17.10 (REWRITE)
(DEFUN AT:LISTSELECT (TITLE LABEL HEIGHT WIDTH MULTI LST / FN FO D ITEM F)
(SETQ FO (OPEN (SETQ FN (VL-FILENAME-MKTEMP "" "" ".DCL")) "W"))
(FOREACH X (LIST (STRCAT "LIST_SELECT : DIALOG { LABEL = \"" TITLE "\"; SPACER;")
(STRCAT ": LIST_BOX { LABEL = \"" LABEL "\";" "KEY = \"LST\";")
(STRCAT "ALLOW_ACCEPT = TRUE; HEIGHT = " (VL-PRINC-TO-STRING HEIGHT) ";")
(STRCAT "WIDTH = " (VL-PRINC-TO-STRING WIDTH) ";")
(STRCAT "MULTIPLE_SELECT = " MULTI "; } SPACER; OK_CANCEL; }")
)
(WRITE-LINE X FO)
)
(CLOSE FO)
(NEW_DIALOG "LIST_SELECT" (SETQ D (LOAD_DIALOG FN)))
(START_LIST "LST")
(MAPCAR (FUNCTION ADD_LIST) LST)
(END_LIST)
(SETQ ITEM (SET_TILE "LST" "0"))
(ACTION_TILE "LST" "(SETQ ITEM $VALUE)")
(SETQ F (START_DIALOG))
(UNLOAD_DIALOG D)
(VL-FILE-DELETE FN)
(IF (= F 1)
((LAMBDA (S / I S L)
(WHILE (SETQ I (VL-STRING-SEARCH " " S))
(SETQ L (CONS (NTH (ATOI (SUBSTR S 1 I)) LST) L))
(SETQ S (SUBSTR S (+ 2 I)))
)
(REVERSE (CONS (NTH (ATOI S) LST) L))
)
ITEM
)
)
)