VeLisp
VeLisp is AutoLISP interpreter with DCL support. The idea is to treat AutoLISP as a general purpose programming language. The goal is to run AutoLISP programs outside of AutoCAD. Why? To learn basic AutoLISP and DCL programming, to write shell scripts, to run DCL dialogs just like regular applications on Windows, MacOS and Linux.
Table of contents
- Windows
- MacOS
- Linux
- Implemented functions
- Known issues and limitations
- Versioning
- Contributing
- License
- See also
Windows
Install
You can find the latest release here.
Install via automatic setup
- Download https://github.com/ten0s/velisp/releases/download/0.7.10/velisp-0.7.10-win-x64-setup.zip
- Open Downloads folder
- Double-click on velisp-0.7.10-win-x64-setup.zip to open the archive
- Run velisp-0.7.10-win-x64-setup.exe
- Follow the installation wizard. Default options are ok for most users
Install via binary archive
Download and unarchive
- Download https://github.com/ten0s/velisp/releases/download/0.7.10/velisp-0.7.10-win-x64.zip
- Open Downloads folder
- Select velisp-0.7.10-win-x64.zip
- Press the right mouse button
- Click ‘Extract All…’
- Enter ’C:'
- Click ‘Extract’
Add the folder to PATH
- Press ‘Windows + Break’ to open the System Info
- Click ‘Advanced system settings’
- Click ‘Environment Variables…’
- Select ‘Path’ inside the User variables block
- Click ‘Edit…’
- Click ‘New…’
- Enter ‘C:\velisp-0.7.10-win-x64’
- Click ‘OK’
- Click ‘OK’
Usage
If you installed VeLisp via automatic setup go to ‘Start’ -> ‘VeLisp’ -> ‘VeLisp Command Prompt’.
If you installed Velisp via binary archive run the Command Prompt (cmd.exe) and move to the extraction directory:
> cd C:\velisp-0.7.10-win-x64
Run REPL (Read–Eval–Print Loop)
> velisp
VeLisp 0.7.10 on Windows
Type ".license" or ".help" for more information
_$ (+ 1 2)
3
_$ (defun add (a b) (+ a b))
ADD
_$ (mapcar '(lambda (x y) (itoa (add x y))) '(1 2 3) '(9 8 7))
("10" "10" "10")
_$ (quit)
Run code from file
Calculate 10th (by default) Fibonacci number
> velisp examples\fib.lsp
55
Calculate 11th Fibonacci number
> velisp examples\fib.lsp 11
89
Run the Calculator example
> velisp examples\calc.lsp
Run the Minesweeper example
> velisp examples\mines.lsp
Run the Fifteen Puzzle example
> velisp examples\fifteen.lsp
Run the Demo example
> velisp examples\demo.lsp
Run the Slides example
> velisp examples\slides.lsp
Run code from standard input
> type examples\fib.lsp | velisp
55
> type examples\fib.lsp | velisp -- 11
89
> echo (alert "Hello from VeLisp!") | velisp
> echo (alert (strcat "Hello from " (argv 2) "!")) | velisp -- Arg
Run without DCL support (faster loading, good for scripting)
> velisp --no-dcl examples\fib.lsp
55
Run the examples in AutoCAD
Add the examples folder to AutoCAD’s search path
- Click ‘Tools’ -> ‘Options…’
- Click ‘Files’ -> ‘Support File Search Path’
- Click ‘Add…’
- Click ‘Browse…’
- Select appropriately C:\Program Files\VeLisp\examples or C:\velisp-0.7.10-win-x64\examples
- Click ‘OK’
- Click ‘Apply’
- Click ‘OK’
Run the examples
- Click ‘Tools’ -> ‘AutoLISP’ -> ‘Visual LISP Editor’
- Run in Visual LISP Console
_$ (load "calc")
_$ (load "mines")
_$ (load "fifteen")
_$ (load "demo")
_$ (load "slides")
Self-extracting archive
How to create self-extracting archive https://ten0s.github.io/blog/2024/10/05/velisp-self-extracting-archive-en
MacOS
Install
You can find the latest release here.
Download and unarchive
Warning: Do not use Safari to download the archive, do not use Finder to extract the archive and, most importantly, do not use Finder to start VeLisp for the first time. Since VeLisp is not signed you will not be able to start it this way due to Apple’s Gatekeeper. Instead, start the Terminal application (Finder -> Go -> Utilities -> Terminal) and run:
% cd $HOME
% curl -LJO https://github.com/ten0s/velisp/releases/download/0.7.10/velisp-0.7.10-macos-x64.tar.xz
% tar xfJ velisp-0.7.10-macos-x64.tar.xz
Add to ~/.zshrc
export PATH=<PATH_TO>/velisp-0.7.10-macos-x64:$PATH
Usage
% cd velisp-0.7.10-macos-x64
Run REPL (Read–Eval–Print Loop)
% ./velisp
VeLisp 0.7.10 on MacOS
Type ".license" or ".help" for more information
_$ (+ 1 2)
3
_$ (defun add (a b) (+ a b))
ADD
_$ (mapcar '(lambda (x y) (itoa (add x y))) '(1 2 3) '(9 8 7))
("10" "10" "10")
_$ (quit)
Run code from file
Calculate 10th (by default) Fibonacci number
% ./velisp examples/fib.lsp
55
Calculate 11th Fibonacci number
% ./velisp examples/fib.lsp 11
89
Run the Calculator example
% ./velisp examples/calc.lsp
Run the Minesweeper example
% ./velisp examples/mines.lsp
Run the Fifteen Puzzle example
% ./velisp examples/fifteen.lsp
Run the Demo example
% ./velisp examples/demo.lsp
Run the Slides example
> ./velisp examples/slides.lsp
Run code from standard input
% cat examples/fib.lsp | ./velisp
55
% cat examples/fib.lsp | ./velisp -- 11
89
% echo '(alert "Hello from VeLisp!")' | ./velisp
% echo '(alert (strcat "Hello from " (argv 2) "!"))' | ./velisp -- Arg
Run without DCL support (faster loading, good for scripting)
% ./velisp --no-dcl examples/fib.lsp
55
Linux
Install
You can find the latest release here.
Download and unarchive
$ curl -LJO https://github.com/ten0s/velisp/releases/download/0.7.10/velisp-0.7.10-linux-x64.tar.xz
$ tar xfJ velisp-0.7.10-linux-x64.tar.xz
Add to ~/.bashrc
export PATH=<PATH_TO>/velisp-0.7.10-linux-x64:$PATH
Usage
$ cd velisp-0.7.10-linux-x64
Run REPL (Read–Eval–Print Loop)
$ ./velisp
VeLisp 0.7.10 on Linux
Type ".license" or ".help" for more information
_$ (+ 1 2)
3
_$ (defun add (a b) (+ a b))
ADD
_$ (mapcar '(lambda (x y) (itoa (add x y))) '(1 2 3) '(9 8 7))
("10" "10" "10")
_$ (quit)
Run code from file
Calculate 10th (by default) Fibonacci number
$ ./velisp examples/fib.lsp
55
Calculate 11th Fibonacci number
$ ./velisp examples/fib.lsp 11
89
Run the Calculator example
$ ./velisp examples/calc.lsp
Run the Minesweeper example
$ ./velisp examples/mines.lsp
Run the Fifteen Puzzle example
$ ./velisp examples/fifteen.lsp
Run the Demo example
$ ./velisp examples/demo.lsp
Run the Slides example
> ./velisp examples/slides.lsp
Run code from standard input
$ cat examples/fib.lsp | ./velisp
55
$ cat examples/fib.lsp | ./velisp -- 11
89
$ echo '(alert "Hello from VeLisp!")' | ./velisp
$ echo '(alert (strcat "Hello from " (argv 2) "!"))' | ./velisp -- Arg
Run without DCL support (faster loading, good for scripting)
$ ./velisp --no-dcl examples/fib.lsp
55
Implemented functions
Known issues and limitations
- Integers are signed numbers with values ranging from -9,007,199,254,740,991 (-253+1) to +9,007,199,254,740,991 (+253-1)
Versioning
The version reflects subjective percentage of completeness. For example, the version 0.7.3 should be read as VeLisp is 73% (0.73) ready.
Contributing
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as below, without any additional terms or conditions.
License
The project is licensed under the GNU General Public License v3.0 or later with the exception below. See LICENSE or https://spdx.org/licenses/GPL-3.0-or-later.html for full license information.
The files in the examples/ and lib/ directories are licensed under the BSD Zero Clause License. See LICENSE or LICENSE or https://spdx.org/licenses/0BSD.html for full license information.