ramana.M Posted April 1 Posted April 1 (edited) i want to call multiple functional codes in a single/main lsp file and want to load that main lsp file to the autocad drawing. Now the requirement here is im trying to get the key words(using initget) to appear in the command bar or to get displayed as a drop down in autocad so that user is provided with all the names of functional codes, over which selecting any of them should actually run the respective code here im attaching a trial autolisp code that's helpful to understand how i wanna display the functional codes embedded in mail lsp file: (defun c:trial() (setq jeldwin 1.116 ;Jeldwin has a 3.116" Window Frame brown 0.1875 ;Brown has a 2 3/16" Window Frame newmar 1 ;Newmar has a 3" Window Frame. pollard 1.5 ;Pollard has a 3.5" Window Frame ) (if (null Global:WinMan) (setq Global:WinMan "B") ) (initget "Brown Jeldwin Newmar Pollard") (if (setq win (getkword (strcat "\nWhich window manufacturer [Brown/JeldWin/Newmar/Pollard]<" Global:WinMan "> : "))) (setq Global:WinMan win) ) ) any ideas for..how to build the logarithm upon this requirement to perform both loading the multiple functional codes and get their keywords to run it successfully feel free also to reply to my personal mail: venkatmedisetty6699@gmail.com Edited April 1 by SLW210 Code Tags! Quote
Steven P Posted April 1 Posted April 1 BigAl has a multivals code - see the downloads, when he is awake (different time zones) he might remind us the link - it up there in down loads if you want a popup / DCL box to select the functional code. This uses the command line. The basics of this one is a list with all the detail (MyFunctions).. here index name, page size and function.. which creates the initget and keyword options.. doing in one list makes updating easier in a few years time when you forget how it all works. Use (assoc....) function to choose the detail you want to use once the name is selected. I've just added c:test as the function to run when a name is selected - so this will loop and loop Now sure if this is something useful? (defun c:test ( / MyFunctions MyInitGet n ) ;;Sub Functions ;;list to string nth ite in nested lists (defun lst->str (MyList MyNth Del / ) (setq MyResult "") (foreach n MyFunctions (setq MyResult (strcat MyResult (nth MyNth n) Del)) ) ; end foreach ) ;;List of options, option options ;;cons list: index ('value' 'function-inc c:' ) ;;All strings. (setq MyFunctions (list (cons "Jeldwin" '("1.116" "c:test") ) (cons "Brown" '("0.1875" "c:test") ) (cons "Newmar" '("1" "c:test") ) (cons "Pollard" '("1.5" "c:test") ) )) ; end setq end list ;; get input (initget (lst->str MyFunctions 0 " ")) (setq win (getkword (strcat "\nWhich window manufacturer " (lst->str MyFunctions 0 "/") "<Jeldwin> : "))) (setq MyPageSize (nth 1 (assoc win MyFunctions))) (princ MyPageSize) ;;run a function from the chosen option. ;;Function from options list, 'nth 2' (eval (read (strcat "(" (nth 2 (assoc win MyFunctions)) ")"))) ) Quote
BIGAL Posted April 1 Posted April 1 (edited) As steven suggested I replaced Initget with a library DCl the one to use is Multi Radio Buttons.lsp, you just save it to a support directory so it can autoload. Yes there is Multi getvals, Multi toggles, plus a couple more. (if (not AH:Butts)(load "Multi Radio buttons.lsp")) (setq ans (ah:butts 1 "V" '("Please pick" jeldwin" Brown" "Newmar" "Pollard" ))) Multi radio buttons.lsp Edited April 1 by BIGAL 1 Quote
Recommended Posts
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.