lisp源码100例(lisp代码库)
本文目录一览:
- 1、一段cad的lisp代码修改。
- 2、怎么能将Lisp代码编译成EXE文件??
- 3、求一个可以实现多段线(多义线)局部串接的lisp函数,顺便留一下源码。这个貌似比较麻烦,先谢谢了
- 4、帮忙编写个lisp语言程序(简单的数字加减)
一段cad的lisp代码修改。
(defun c:autodimlines ()
(setq ss (ssget '((0 . "line"))))
(setq number (sslength ss))
(setq i 0)
(repeat number
(setq entname (ssname ss i))
(setq ent (entget entname))
(setq point_a (cdr (assoc 10 ent)))
(setq point_b (cdr (assoc 11 ent)))
(setq d (* -0.2 (distance point_a point_b)))
(command "dimaligned" point_a point_b point_b)
(setq ent (entget(entlast)))
(setq x1 (car point_a) y1 (cadr point_a) x2 (car point_b) y2 (cadr point_b))
(setq point (calculate_dalposition x1 y1 x2 y2 d))
(entmod (subst (cons 10 point) (assoc 10 ent) ent) )
(setq i (+ i 1))
)
)
(defun calculate_dalposition (x1 y1 x2 y2 d)
(if (/= (- y2 y1) 0)
(progn
(setq k (/ (- x1 x2) (- y2 y1)) )
(setq thita (atan k))
(if ( thita 0)
(setq thita1 (+ 3.1415926 thita) thita2 (* -1 thita))
(setq thita1 thita thita2 thita)
)
(setq x (- x2 (* d (cos thita1))))
(setq y (- y2 (* d (sin thita2))))
(list x y)
)
(progn
(setq y (- y2 d) x x2)
(list x y)
)
)
)
不知道cad能运行不 浩辰 可以
怎么能将Lisp代码编译成EXE文件??
为什么要编译成exe文件呢?要让其在所有的windows上都能运行?
【首先】:lisp是脚本语言,所以它是跨平台的,也就是说它不需要被编译成exe文件,就能在所以机器上运行。
【方法】这方法有点笨,但是很好,也适用于想把java转exe苦苦挣扎的人们
方法就是:写一个bat文件
【bat文件的内容】文件名暂定为run.bat
.\clispfolder\clisp programname
PAUSE
【注】
(1)一定要用反斜杠
(2)clispfolder 为你的lisp的解释器的文件夹的名字
(3)clisp 为你的解释器的名字(就是clispfolder中那个exe文件)
(4)programname为你的lisp程序的名字,貌似带不带后缀都可以。
(5)用记事本写完上面两行东东后,将其存为.bat格式
【然后的操作】
随便建一个文件夹,这个文件夹中要放进去三个东东
(1)你的lisp的源代码
(2)你的lisp的完整的解释器,就是讲clispfolder完整的拷贝到这个文件夹即可
(3)刚才写的那个bat文件
【之后】
你就可以带着这个文件夹满世界跑啦,在“所有”的windows中,双击那个bat文件,即可运行你写的lisp啦..................................
【此方法的缺点】
(1)那个clispfolder太大,如果你只是写一个不到1M的lisp的话,那这种方法很臃肿
(2)这种方法貌似不适用于用lisp写windows的@病#毒!
----------------------------------------------------------------
不过这个方法可靠,简单!
求一个可以实现多段线(多义线)局部串接的lisp函数,顺便留一下源码。这个貌似比较麻烦,先谢谢了
详细说明:一个求多义线各段参数(如果是弧段则有半径弧长)的lisp程序 编号 1:凸度lisp源码100例,2:弦长或直段长lisp源码100例,3:半径lisp源码100例,4:弧长,5:圆心-- 加载程序,运行bulge,则显示上述参数-A request polyline paragraphs parameters (if there arc radius of the arc length) of the lisp program number 1: crown, 2: string length or long straight section, 3: radius, 4: arc length, 5: center of a circle-- load the program, run bulge, then display the above parameters
[Became Uploading member to download this file] [Became VIP member to download this file]
帮忙编写个lisp语言程序(简单的数字加减)
;;;已为你写好程序lisp源码100例,功能比你要求lisp源码100例的还要好
(print "图号修改(型如GCGS2010-165-19,若为多行文字请先炸开),命令:thxg")
(defun c:thxg(/ all endno aa bb cc wz tha thh thq th srz)
(if (null xzz) (setq xzz 0))
(setq srz(getint (strcat "输入修正值" (itoa xzz) ":")))
(if (not (null srz)) (setq xzz srz))
(setq ALL (ssget(list (cons 0 "text"))))
(if all (SETQ nn (SSLENGTH ALL)))
(print (strcat "设定的修改值为:" (itoa xzz)))
(setq endno 0)
(WHILE (and ( endno nn) all)
(setq aa (ssname all endno))
(setq bb (entget aa))
(setq cc(cdr(assoc 1 bb)))
(setq wz(rinstr cc "-"))
(setq tha(substr cc (+ wz 1) ( - (strlen cc) wz -1)))
(setq thh(itoa (+ (atoi tha) xzz)))
(setq thq (substr cc 1 wz))
(setq th(strcat thq thh))
(setq bb (subst (cons 1 th) (assoc 1 bb) bb))
(entmod bb)
(print (strcat cc "已修改为" th))
(setq endno (+ endno 1))
)
(print)
)
;;;
(defun rinstr(str cset / len i aa)
(if ( (strlen str) 0)
(progn
(setq i (strlen str))
(setq aa(substr str (strlen str) 1))
(while (and (/= aa cset) (= i 1))
(setq i(1- i))
(setq aa(substr str i 1))
)
)
)
(setq i i)
)