本文目录一览:
- 1、编写一LISP程序,是autoCAD
- 2、如何生成一个cad可加载的lisp可用的文件
- 3、CAD怎么自己编lisp程序
- 4、如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序
- 5、在cad中如何创建lisp程序
- 6、编写一lisp程序
编写一LISP程序,是autoCAD
写了一个程序,参考一下。
(defun c:tes ( / ang1 ang2 ang3 dis1 n1 p1 p2 p3 p4 p5 p6 ss1 pt1 pt2 pt3)
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(if (null (setq n1 (getint (strcat "\n请输入行默认:" "1" "")))) (setq n1 1) )
(if (and
( n1 0)
(setq p1 (getpoint "\n请指定基点"))
(setq dis1 (getdist p1 "\n请输入半径"))
( dis1 0)
)
(progn
(setq ang1 (/ pi 3) ang2 (/ (* pi 5) 6) ss1 '())
(setq p2 (polar p1 ang2 dis1) ss1 (cons p2 ss1) ang2 (/ (* pi 2) 3))
(setq p2 (polar p1 (* 1.5 pi) dis1) ss1 (cons p2 ss1))
(repeat n1
(entmake (list '(0 . "CIRCLE") (cons 10 p1) (cons 40 dis1)))
(setq p2 p1)
(repeat (- n1 1)
(setq p2 (polar p2 ang1 (* dis1 2)))
(entmake (list '(0 . "CIRCLE") (cons 10 p2) (cons 40 dis1)))
)
(setq p2 p1 p1 (polar p1 0 (* dis1 2)) n1 (- n1 1))
);repeat
(setq ang3 (/ pi 6))
(setq p1 (polar p2 ang3 dis1) p2 (polar p1 ang2 dis1) p3 (car ss1))
(setq p4 (polar p3 0 dis1) pt1 (inters p1 p2 p3 p4 nil) p5 (cadr ss1));求交点绘制三角形
(setq p6 (polar p5 ang1 dis1) pt2 (inters p1 p2 p5 p6 nil) pt3 (inters p3 p4 p5 p6 nil))
(entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2)))
(entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt3)))
(entmake (list '(0 . "LINE") (cons 10 pt3) (cons 11 pt2)))
);progn
)
(princ)
)
如何生成一个cad可加载的lisp可用的文件
生成lisp文档:打开记事本,将你手上的代码复制到记事本中,另存为后缀名为LSP的文件,请确保不要存成
“*.lsp.txt”
,这个文件事实上还是记事本文档,CAD不认的。
加载并读取:直接把后缀名是lsp的文件,拖动到CAD黑色的图形区域内,就能实现加载。
执行:此时需要注意执行的命令名.需要打开lsp文件查看,通常查找(defun
c:xx()),其中XX位置的为代码的执行命令。
如果你想让这个lisp程序,每次打开CAD的时候自动加载的话,可以将这个lsp文件拷贝到CAD的support目录下,然后执行appload,打开对话框中启动栏,选择support目录下的程序即可。
祝你好运!
CAD怎么自己编lisp程序
做了隐藏和显示两个命令.
我编写的简单,功能不太全.你看着用吧
复制下列代码,创建acad.lsp.放在在CAD安装目录第一层文件夹下,可自动加载啊:
;在命令行输入该命令hidsel,然后选择图元,结果没选的被改到隐藏层
(defun C:hidsel(/ all;所有图元
xs;非隐藏图元
yc;隐藏图元
n nam dat)
(setvar "CMDECHO" 0);关闭命令回显
(command "_layer" "n" "临时隐藏图层" "")(command "_layer" "off" "临时隐藏图层" "")
(setvar "CMDECHO" 1)
(setq all (ssget "x"));选择所有
(setq xs (ssget));选择非隐藏图元
(setq n -1 yc all);运算隐藏图元
(repeat (sslength xs)
(setq n (+ n 1))
(setq nam (ssname xs n));返回第N个图元的名称
(setq yc (ssdel nam yc))
)
(setq N -1);隐藏
(repeat (sslength yc)
(setq N (+ n 1))
(setq nam (ssname yc n));返回第N个图元的名称
(setq dat (entget nam));DAT储存第N个图元数据
(entmod (subst (cons 8 "临时隐藏图层") (Assoc 8 dat) dat));将yc集合隐藏
)
(setq all nil xs nil yc nil n nil nam nil dat nil);清除数据占用内存
(princ)
)
;显示所有图元
(defun c:shoal(/ all n nam dat)
(setq all (ssget "x"));选择所有
(setq N -1);隐藏
(repeat (sslength all)
(setq N (+ n 1))
(setq nam (ssname all n));返回第N个图元的名称
(setq dat (entget nam));DAT储存第N个图元数据
(entmod (subst (cons 8 "0") (Assoc 8 dat) dat));将yc集合隐藏
)
(setvar "CMDECHO" 0)
(COMMAND "PURGE" "LA" "临时隐藏图层" "Y" "Y" "")
(setvar "CMDECHO" 1)
(setq all nil n nil nam nil dat nil);清除数据占用内存
(princ)
)
如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序
打开Visual Lisp编辑器有两种方式:
1.AutoCAD2008及之前的版本,在菜单栏“工具(Tools)"下面,选择”AutoLisp"----"Visual
Lisp编辑器"。(”AutoLisp"----"导入应用"这个命令是用来加载AutoLisp脚本的)
2.AutoCAD2009及之后的版本,在功能区的”管理“选项卡里可以直接打开Visual Lisp编辑器。
如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序
打开Visual Lisp编辑器之后新建一个文件,并另存为Lisp源文件。然后就可以在编辑窗口里输你的代码了。
代码编辑并调试确认无错误后,就可以在AutoCAD中使用了。
如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序
左边的按钮表示立即运行当前代码,如果有错误就会提示出来,右边按钮是切换到CAD窗口。
如果不需要再修改代码了还可以将代码进行编译以加速运行。
如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序
根据向导一步步进行编译很简单的。
如果在其他CAD图形文件中需使用当前代码文件或编译后的文件,就按上面第一点的,或者在命令行输入”ap",打开导入应用的对话框。
如何在AutoCAD Visual Lisp编辑器中创建与编译lisp程序
1是用来临时导入的,2是将程序加入CAD的启动组。
lisp解决重复性劳动问题
在设计和绘图中,你觉得都是简单粗暴的重复性工作,就可以考虑用AutoLisp来代替你做。
首先,AutoLisp也是一个程序设计语言,属于Common
Lisp的子集,同时加入了很多自定义的函数。即然是一个程序语言,就是其他编程语言能做的,它也能做,只是他的lisp语法跟一般的语言有些差另就是了,但是如果是一个没有VB、C#、C++(对应于AutoCAD的开发方式分别是VBA,.net,ObjectArx)的基础的人来说,AutoLisp是很简单而且特别容易上手的一个语言。
作为一个编程语言,AutoLisp能做的很多:
1、扩充AutoCAD的原有命令。任何带有C:前缀的AutoLisp函数,在AutoCAD中都可以像"line" "circle"
"dim"等命令一样使用。
2、编写代码直接根据国标图库要求来绘出一些常用图库标准件什么的,或是代替人查找各种设计手册中的相关数据并继续使用。
3、进行参数化绘图,对于一些不特别复杂的系统,提供窄范围、大深度的专业设计自动化或者辅助系统,如发动机装配工具设计、纵使机主轴箱设计等。
4、DWG文件本质上是AutoCAD在图形生成和编辑中使用的数据库,可以将一些非图形信息的数据(粗糙度,高度,厚度。。)等存于DWG文件中作
为非图形数据库文件,然后利用Lisp程序进行读取等。
各种AutoCAD二次开发方式的比较:
由于 .net语言和c++的学习曲线比较陡峭,所以简单易学的AutoLisp经常与VBA进行对比。(当然如果有VB的基础还是直接学VBA好了。)
AutoLISP擅长建立新命令和产生已有命令的连接。VBA擅长执行包括在其他应用程序中的组件,如Microsoft的Excel和Access。AutoLISP是基于表处理的编程体系,它允许程序员随意地存储和操作传送信息,然而VBA部件包括数据和对复杂情况的各种有效操作,这就是问题变得复杂的地方。
不过,在AutoCAD2000开始,Autodesk公司就在AutoCAD中加入了Visual
Lisp编辑器,引入了许多新函数扩充AutoLisp的功能,并支持ActiveX对象的访问方式,所以使用AutoLisp来与Word\Excel等程序进行交互也是变简单了。
另外,在创建带GUI图形界面的应用程序上,VBA当然是所见即所得的了,而AutoLisp是通过DCL文件来实现GUI的(语法很简单,但做不到所见即所得).这点是AutoLisp略逊一筹了。原文出自[
CAD自学网 ] 转载请保留原文链接:
在cad中如何创建lisp程序
写LISP程序很简单,用记事本就可以,保存成*.lsp文件就行,关键是需要懂LISP编程啊
编写一lisp程序
方法/步骤
创建一个cad,新建一个工程,如下图所示。
在lisp编辑器中编写一下程序,程序的作用为计算线段总长度,并选择另存为位置,保存文件lsp文件。
使用cad加载lsp文件,选择lsp文件位置。
在命令栏点击l,用cad绘制几条线段,如下图所示。
在命令栏输入ll,选择所有线段,则在图下计算并显示出了所有线段的总长度,如下图所示。
用lisp的代码为(defun c:LL ()
(setvar "cmdecho" 1)
(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))
(setq i 0)
(setq ll 0)
(repeat (sslength en)
(setq ss (ssname en i))
(setq endata (entget ss))
(command "lengthen" ss "")
(setq dd (getvar "perimeter"))
(setq ll (+ dd ll))
(setq i (1+ i))
)
(princ "所选线条总长为:")(princ ll)(princ)
)