CAD插件面板快捷键LISP源码教程

合集下载

CAD lisp 实用小程序(源代码)

CAD lisp 实用小程序(源代码)

CAD lisp实用小程序(源代码)一、圆自动同心(defun c:TX(/qi aa ec center v_c)(vl-load-com)(princ"圆自动同心:")(setq aa(ssget));;获取圆的图元名(setq center(getpoint"选取点位置:"));(setq center(vlax-3D-point center));(setq qi0);初始序号(repeat(sslength aa);对象个数(setq ec(ssname aa qi));选择第一个图元(setq v_c(vlax-ename->vla-object ec));将圆的图元名转换为VLA对象(vla-put-center v_c center);更新圆中心点(setq qi(+qi1)));repeat(princ"修改成功:"));defun二、图层快速修改(princ"快速修改图层编程-TC")(defun C:TC(/)(vl-load-com)(setq SET_ZJTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择基准图层:"))))) (WHILE(NOT SET_ZJTC)(setq SET_ZJTC(vla-get-Layer(vlax-ename->vla-object(car(entsel "\n基准图层为空,重新选择!:"))))))(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择修改图层:"))))) (WHILE(NOT SET_XGTC)(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car (entsel"\n修改图层为空,重新选择!:"))))))(vlax-for VLA_MSP(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-Acad-Object))) (IF(=(vla-get-Layer VLA_MSP)SET_XGTC)(vla-put-Layer VLA_MSP SET_ZJTC))) (princ"\n快速修改图层编程-TC:")(princ));DEFUN三、字高自动修改(princ"快速修改字高编程-ZG")(defun C:ZG(/)(vl-load-com)(setq SET_ZTGD(vla-get-Height(vlax-ename->vla-object(car(entsel"\n选择基准字高:"))))) (WHILE(NOT SET_ZJTC)(setq SET_ZJTC(vla-get-Height(vlax-ename->vla-object(car (entsel"\n基准字高为空,重新选择!:"))))))(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car(entsel"\n选择修改图层:"))))) (WHILE(NOT SET_XGTC)(setq SET_XGTC(vla-get-Layer(vlax-ename->vla-object(car (entsel"\n修改图层为空,重新选择!:"))))))(vlax-for VLA_MSP(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-Acad-Object))) (IF(=(vla-get-Layer VLA_MSP)SET_XGTC)(vla-put-Height VLA_MSP SET_ZTGD))) (princ"\n快速修改图层编程-ZG")(princ));DEFUN。

一个在CAD中标注坐标的LISP

一个在CAD中标注坐标的LISP

一个在CADxx标注坐标的LISP使用方法:先把下面的代码复制,再打开CAD,工具-AutoLIST-VISUAL LISP编辑器-新建-粘贴-保存-退出再之就工具-AutoLIST-加载应用程序,找到你保存的那个东东,加载,关闭退出,输入ZBBZ就可以啦!!!!![复制到剪切板][ - ]代码:(defun C:zbbz( / zb gd cld osm )(setq osm (getvar"osmode"))(setvar "osmode" 33)(setq gd (getreal "指定标注文字高度:>"))(if (= gd nil) (setq gd0.5))(while (setq zb (getpoint "指定坐标点:"))(setq cld(getpoint zb "指定文字插入点:"))(entmake (list'(0 . "LINE")'(67 . 0)'(8 . "0")(list 10 (car zb) (cadr zb) 0)(list 11 (car cld) (cadr cld) 0)'(2100.00.01.0)))(entmake (list'(0 . "text")(list 10 (+ (car cld) gd) (car(cdr cld)) ) (cons 40 gd)(cons 1 ( strcat "X=" (rtos (cadr zb) 2 3))) '(50 . 0)))(entmake (list'(0 . "text")(list 10 (+ (car cld) gd)(- (car(cdr cld)) (+ gd (/ gd 3)) ))(cons 40 gd) (cons 1 (strcat "Y="(rtos (car zb) 2 3)))'(50 . 0))0G&B4v$L.r5o3_))(setvar "osmode" osm) (princ))。

CAD二次开发lisp教程《第四章》

CAD二次开发lisp教程《第四章》

(2)工具栏 Visual LISP提供了 提供了Standard,View,Debug,Tools和Search五 提供了 , , , 和 五 个工具栏 .
① Standard工具栏 工具栏
建立一个新文件 存盘 剪切 粘贴 恢复 打开一个已有的文件 打印输出 复制 取消 完词功能
Tools工具栏 ② Tools工具栏
删除被选中的文本并将其移到Windows剪贴板 剪贴板 删除被选中的文本并将其移到 将选中的文本复制到剪贴板中 将剪贴板内容粘贴到光标位置 清空控制台窗口 在控制台窗口中查找指定文本 打开"检验" 打开"检验"对话框 打开"监视" 打开"监视"窗口 打开"自动匹配选项" 打开"自动匹配选项"窗口 打开"符号服务" 打开"符号服务"对话框 放弃最近的操作 重新执行上次放弃的操作 将所有输入传送到 AutoCAD 命令行以供求值 切换是否将控制台窗口的输出复制到日志文件
Hale Waihona Puke 2. 使用控制台窗口的历史记录
提示下, 在_$提示下,每按一次 提示下 每按一次Tab键,回溯前一次输入的字符串,作为当前输入. 键 回溯前一次输入的字符串,作为当前输入. 到了第一次输入的字符串时,再按Tab键,返回最后一次输入的字符串,周 到了第一次输入的字符串时,再按 键 返回最后一次输入的字符串, 而复始.每按一次Shift+Tab键时,将进行反向回溯. 键时, 而复始.每按一次 键时 将进行反向回溯.
控制台快捷菜单
4. 记录控制台窗口的活动
日志文件的文件类型为" 日志文件的文件类型为 " .log", , 它记录了控制台窗口的所有活动, 它记录了控制台窗口的所有活动 , 通 过浏览该文件可以回顾控制台窗口中 执行的命令. 执行的命令. 在控制台窗口通过下拉菜单 File→Toggle Console Log或快捷菜单 → 或快捷菜单 Toggle Console Log可以建立日志文件. 可以建立日志文件. 可以建立日志文件

标注坐标的lisp程序

标注坐标的lisp程序

标注坐标的lisp程序1、新建一个TXT文本文件,并将下面代码复制进文本内,如下图:2、将该文本文件保存并修改文件名为bzzb.lsp,这里的扩展名一定要改成lsp哦!然后就如下图这样3、在任何版本的AUTOCAD软件内命令行内输入“appload”命令,然后选择该文件进行加载程序,如下图4、程序加载好后,就可以在命令行内输入“bz”命令进行对图中文字注记进行分层显示了。

(defun c:bz();标注坐标(setvar "cmdecho" 0)(command "osnap" "app,end,center")(setq zbd (getpoint "\n请点击要标注坐标的点:"))(command "osnap" "off")(setq zbd2 (getpoint "\n请点击伸出的第二个点:"))(command "line" zbd zbd2 "")(setq zbd2x (car zbd2))(setq zbd2y (cadr zbd2))(setq zbdx (car zbd))(setq zbdy (cadr zbd))(if (>= zbd2x zbdx)(progn(command "line" zbd2 (list (+ zbd2x 30) zbd2y) "")(command "text" "s" "Standard" "j" "bl" (list (+ zbd2x 1.2) (+ zbd2y 1)) "2" "0" (strcat "X = " (rtos zbdy 2 3)))(command "text" "s" "Standard" "j" "tl" (list (+ zbd2x 1.2) (- zbd2y 1)) "2" "0" (strcat "Y = " (rtos zbdx 2 3))))(progn(command "line" zbd2 (list (- zbd2x 30) zbd2y) "")(command "text" "s" "Standard" "j" "bl" (list (- zbd2x 28) (+ zbd2y 1)) "2" "0" (strcat "X = " (rtos zbdy 2 3)))(command "text" "s" "Standard" "j" "tl" (list (- zbd2x 28) (- zbd2y 1)) "2" "0" (strcat "Y = " (rtos zbdx 2 3))))))。

CADLISP实用技巧

CADLISP实用技巧
\nAREAM 面积求和 BTJ 块统计
\nDDT 打断插文字 TT 合并文字
\nC 多重复制 TTT 合并单行文本
(defun c:cp (/ en n)
(setvar "cmdecho" 0)
(setq en (entsel "请选择一个圆"))
(setq en_data (entget (car en)))
(setq cen (cdr (assoc 10 en_data)))
(setq r (cdr (assoc 40 en_data)))
(setq ss(ssget))
(while ss
(setq ll(sslength ss))
(setq ll0 -1)
(repeat ll
(setq ll0(+ ll0 1))
(setq si(ssname ss ll0))
(command "erase" na"")
(setq h1 (entsel))
(setq h2 (getpoint"\n选择插入点:"))
)
)
;****************************************************多重复制
(defun C:C (/ ss FL)
(setq n (getint "\n请输入正多边形的边数:"))
(initget "I C")
(setq a (getkword "\n输入选项 [内接于圆(I)/外切于圆(C)] <C>:"))

CAD LISP 程序教学内容

CAD LISP 程序教学内容

C AD L I S P程序1.计算所有线段总长度(加载后只需框选所有线段便可得出这些线段的总长度) (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))2.标注所有线段(加载后只需框选所有线段便可得标注这些线段)(defun c:LLL ()(COMMAND "UCS" "")(setvar "cmdecho" 1)(SETVAR "OSMODE" 0)(setq AcadObject (vlax-get-acad-object)AcadDocument (vla-get-ActiveDocument Acadobject)mSpace (vla-get-ModelSpace Acaddocument));;选取需要测量的样条曲线、圆弧、直线、椭圆(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE")))) (setq i 0);;获取系统参数textsize(setq shh (getvar "textsize"))(setq str_hh (strcat "\n文字高度<" (rtos shh 2) ">: "))(setq hh (getdist str_hh))(while hh(setvar "textsize" hh)(setq hh nil));;输入标注文字高度;;循环开始(repeat (sslength en)(setq ss (ssname en i))(setq endata (entget ss))(command "lengthen" ss "")(setq dd (getvar "perimeter"))(princ (strcat "\n长度=" (rtos dd 2)));;寻找代表图层的字符串(setq aa (assoc 0 endata));;获取图层名称(setq aa1 (cdr aa));;判断线条种类(cond((= aa1 "SPLINE");;如果是spline(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-ControlPoints arcObj))(setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq y1 (cadr p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1))(setq z2 (caddr p1)))(setq pp2 (list x2 y2 z2))))((= aa1 "LWPOLYLINE");;如果是LWPOLYLINE(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss)) (setq startPnt1 (vla-get-Coordinates arcObj))(setq p1(vlax-safearray->list (vlax-variant-value startPnt1)) )(setq x1 (car p1))(setq y1 (cadr p1))(setq z1 (caddr p1))(setq pp1 (list x1 y1 z1))(repeat (- (/ (length p1) 3) 1);;循环,寻找最后一个控制点(setq p1 (cdddr p1))(setq x2 (car p1))(setq y2 (cadr p1))(setq z2 (caddr p1)))(setq pp2 (list x2 y2 z2))))(t;;如果是其他种类线条(progn(setq arcObj (VLAX-ENAME->VLA-OBJECT ss))(setq startPnt1 (vla-get-StartPoint arcObj));;获取起点(setq endPnt1 (vla-get-EndPoint arcObj));;获取终点(setq pp1(vlax-safearray->list (vlax-variant-value startPnt1)))(setqpp2 (vlax-safearray->list (vlax-variant-value endPnt1)) ))))(setq x1 (car pp1))(setq y1 (cadr pp1))(setq z1 (caddr pp1))(setq x2 (car pp2))(setq y2 (cadr pp2))(setq z2 (caddr pp2))(setq x (/ (+ x1 x2) 2))(setq y (/ (+ y1 y2) 2))(setq z (/ (+ z1 z2) 2))(setq pt (list x y z));;取得线段两端的中点(setq ang (angle pp1 pp2));;获取角度(if (> (* (/ ang pi) 180) 180) (setq ang (+ ang pi)))(command "text""j""bc"pt""(* (/ ang pi) 180)(strcat "" (rtos dd 2))"")(setq i (1+ i)))(prin1))(prompt "\n <>在图中直接写出长度") (prin1)3.连续打断程序(defun c:br1 ()(command "break" pause "f" pause "@") )4.将CAD文字导入Excel表格(defun c:Q2()(setq ffn (getfiled "写出文件" "" "xls" 1))(princ "\n选取文字...")(setq ss (ssget))(setq ff (open ffn "w"))(setq i 0)(repeat (sslength ss)(setq ssn (ssname ss i))(setq ssdata (entget ssn))(setq sstyp (cdr (assoc 0 ssdata)))(if (or (= sstyp "TEXT") (= sstyp "MTEXT")) (progn(setq txt (cdr (assoc 1 ssdata)))(princ txt ff)(princ "\n" ff)))(setq i (1+ i)))(close ff)(princ (strcat "\n写出文件: " ffn))(prin1))5删除带颜色图元以下程序在别人的贴子里贴过.为了说明问题,今天再贴一次. 改颜色的LISP程序(defun c:c1()(ssget)(command "chprop" "p" "" "c" "1" "") (princ)) (defun c:c2()(ssget)(command "chprop" "p" "" "c" "2" "") (princ)) (defun c:c3()(ssget)(command "chprop" "p" "" "c" "3" "") (princ)) (defun c:c4()(ssget)(command "chprop" "p" "" "c" "4" "") (princ)) (defun c:c5()(ssget)(command "chprop" "p" "" "c" "5" "") (princ)) (defun c:c6()(ssget)(command "chprop" "p" "" "c" "6" "") (princ)) (defun c:c7()(ssget)(command "chprop" "p" "" "c" "7" "") (princ)) (defun c:c8()(ssget)(command "chprop" "p" "" "c" "8" "") (princ))你用C1 命令就可以将图元改为红色了.其余类似.删除红色图元(defun C:D1 (/ m A M)(setq m:err *error* *error* *merr*)(setvar "cmdecho" 0)(command "UNDO" "G")(prompt "选择图形")(setq A (ssget '((62 . 1)) ))(if (/= A nil)(progn(setq M (sslength A))(command "erase" A "")(princ "\n共删除红色图元<")(princ M)(princ ">个") ))(command "UNDO" "E")(princ) )这样,键入 D1 命令,就可以删除红色的图元了.。

超经典CAD_lisp程序集锦、CAD快捷键大全

超经典CAD_lisp程序集锦、CAD快捷键大全

超经典CAD lisp程序集锦如果您使用 AutoCAD,下面的内容对您一定有帮助。

在某些方面能大大提高您的工作效率。

下面的程序均以源程序方式给出,您可以使用、参考、修改它。

bg.lsp --- 表格自动生成asc.lsp --- 将文本文件内容写入图中,字符是单个的wf.lsp --- 将图中字符写入磁盘exstr.lsp --- 将字符串分解成单字pgtxt.lsp --- 将字符合成字符串pb.lsp --- 通过给出长度将字符串分成两个串cht.lsp --- 直接修改文字内容或块属性ct.lsp --- 对数字串进行加减chh.lsp --- 直接修改文字高度chhw.lsp --- 直接修改文字高宽比(针对PKPM软件将字符定位点改为左下角) chst.lsp --- 直接修改文字字体txt.shx --- 修改后的标准txt.shx文件。

(kuozhan.sld为增强的内容幻灯片)tiao.lsp --- 配合修改过的标准字体文件,将中文字符调大tiao1.lsp --- 配合修改过的标准字体文件,将英文字符调小untiao.lsp --- 上两个程序的复原sht.lsp --- 在图中查找字符串zhuang.lsp --- 桩点及钎探号绘制(勘测图)dim.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:1)dimm.lsp --- 配合JT.DWG将尺寸标注调成适合建筑结构设计(1:100)di1.lsp~di8.lsp --- 直接连续标注尺寸(用于1:1的图)di100.lsp~di800.lsp --- 直接连续标注尺寸(用于1:100的图)详细内容及附件下载请浏览北纬服务论坛/thread-2724-1-1.html该程序实现的功能如图中所示,只要选择矩形,便可将穿过矩形的直线剪切(以前是一条一条的选择),由于水平有限,程序的语句可能太繁琐,但功能对我面言很实用(以前我下载了一个,但效果不好,连矩形外也剪掉了),请各位高手优化!源程序如下:代码:p1 (car l1)) (command "erase" e0 "") (setq count 0) (repeat 3 (setq count (+ count 1)) (setq pt (nth count l1)) (command "trim" rect "" "f" p1 pt """") ) (setq p1 (cadr l1)) (command "erase" e0 "") (setq count 1) (repeat 2 (setq count (+ count 1)) (setq pt (nth count l1)) (command "trim" rect "" "f" p1 pt """") ) (setvar "osmode" 687))你的程序在实际使用中,有时将矩形的边或矩形外的线剪切掉了,我的程序参照你的程序重新编了一下,不好意思,借用了你的思路.(朋友多,互相学习)有些语句实际上重复了,昨天我又改了下,源程序如下:(defun c:mytrim(/ rect e0 e1 pt x ptx pty l1 i p1 p2 p1x p1y point count)(setvar "osmode" 0)(setq l1 nil)(setq i 0)(setq rect (car (entsel "\n请选择需剪切的矩形:")))(setq e0 (entget rect))(while (setq x (nth i e0))(if(= (car x) 10)(progn(setq ptx (nth 1 x))(setq pty (nth 2 x))(setq x (list ptx pty))(setq l1 (cons x l1))))(setq i (1+ i)))(reverse l1)(setq p1 (car l1))(setq p1x (nth 0 p1))(setq p1y (nth 1 p1))(setq count 0)(repeat 3(setq count (+ count 1))(setq pt (nth count l1))(setq ptx (nth 0 pt))(setq pty (nth 1 pt))(setq point (mapcar '+ p1 pt))(setq point (mapcar '/ point '(2.0 2.0 2.0))) (if(and (/= (nth 0 point) p1x)(/= (nth 0 point) ptx)(/= (nth 1 point) p1y)(/= (nth 1 point) pty))(setq p point)))(setq l1 nil)(command "offset" 5 rect p "")(setq e0 (entlast))(setq e1 (entget e0))(princ e1)(setq i 0)(while (setq x (nth i e1))(if(= (car x) 10)(progn(setq ptx (nth 1 x))(setq pty (nth 2 x))(setq x (list ptx pty))(setq l1 (cons x l1))))(setq i (1+ i)))(reverse l1)(setq p1 (car l1))(setq p2 p1)(command "erase" e0 "")(setq count 0)(repeat 3(setq count (+ count 1))(setq pt (nth count l1)) (command "trim" rect "" "f" p1 pt "" "") (setq p1 pt))(command "trim" rect "" "f" p1 p2 "" "")(setvar "osmode" 687))画箍筋的lisp程序画剪力墙暗柱很实用。

autocad-lisp教程

autocad-lisp教程

autocad-lisp教程Lisp教程一.Lisp基础知识二.对话框基础一.基本知识第1节--------------------------------------------------------------------------------基本知识AutoLISP是一种针对扩充及自订AutoCAD函数机能而产生,以LISP为基础的程序设计语言.LISP本身于50目的是令使用者充份利用AutoCAD进行开发,直接增加及修改AutoCAD指令.AutoLisp语言建基于普通的LISP语言上,并扩充了许多适用于CAD的特殊功能而形成.是一种能以直译方式(不须先行编译)亦可于AutoCAD内部执行的直译性程序语言.程序容易学习及撰写,程序即使出错亦不会对操作系统(如DOS,WINDOWS)有不良影响.数据及程序均统一以串行(List)结构表示.可直接调用几乎全部的AutoCAD命令.既具备一般高级语言的基本结构和功能,亦有一般高级语言没有的强大图形处理能力.内建于AutoCAD应用程序,不须另行购买;亦不须使用特定的编辑器或开发环境.可配合AutoCAD提供的PDB,建立DCL(Dialog Control Language)文件创建对话框.缺点: 执行速度较ObjectArx(旧称ARX,以C或C++程序开发,取代以前的ADS)程序慢;原程序不易保护;对低阶的硬件数据不易存取.第2节--------------------------------------------------------------------------------函数(Function)在AutoLISP程序语言中所有的成份都是以函数的形式出现,AutoLISP程序就是顺序执行连串的函数.函数的运行过程就是对函数的求值(结果)过程;函数的基本语法如下:(函数名称参数1 参数2....)e.g. (PRINC "AutoLISP Programming")每一个完整的函数必须包在一对小括号( )内,左边为开括号,右边为关括号;如有若干数量的开括号,则一定有同等数量的关括号对应.左边开括号后紧随函数名称.函数名称与参数之间,或参数与参数之间须最少留一个空格.函数可有一个或多个参数(也可能没有参数),视该函数而定.函数名称不分大小写,即大小写字母视为相同.第3节--------------------------------------------------------------------------------数据型态(Data Type)整数(INT)没有小数字的数值,32位有号数,范围从+2,147,483,647到-2,147,483,648实数(REAL)带小数字的数值,以倍精度浮点格式储存(最少14位小数) e.g. 12.5 当数值在1与-1之间时,必须加上前导零 e.g. 0.05可以科学记号表示: 在E或e后加上次方值 e.g. 4.1e-6字符串(STR)一般文字,其前后必须加上双引号" e.g. "AutoCAD"控制字符或脱逸码必须为小写,且须在字符前加上反斜线\ e.g. "\AutoCAD"像素名称(ENAME)是指定给图文件内对象的指针(Pointer,为16进位的数字卷标)e.g.像素名称在图文件内是唯一的,不会重复对象的像素名称只在目前作业中有效,再开启图档时,会指定新的像素名称予该对象档案(FILE)以OPEN函数所开启档案的指针,作为其它函数(读写该档案)的自变量选集(PICKSET)转化(V ARIANT)可将像素名称转换为可与ActiveX配搭使用的VLA-Object对象符号(SYM)用以储存静态数据的名称;例如内建或使用者定义的函数符号名称不分大小写,可由任意长度的可打印字符组成;但下列的字符除外:左括号( 右括号) 句点. 单引号' 双引号" 分号;表(LIST)亦称为串行,是放在一对小括号( ) 内,一个或多个元素的有序集合e.g. (1.0 "Lisp" ( ) (5.6 7))元素可以是字符串,符号,整数或实数;也可以是另一个表元素与元素之间要用空格隔开,但元素与小括号之间则可以不隔空格为便于存取表内各元素,每个元素均有其序号;从表的左边开始,第一个元素序号为0,依此类推表的大小即为其顶层元素的数量(内层嵌套式的表,视为单一元素) 点对(Dotted Pair)亦是表的一种;表内有2个元素,中间以一圆点分隔,且元素与圆点之间亦须以空格分开若表内没有任何元素,称为空串行或空表;以( ) 或(NIL) 表示第4节--------------------------------------------------------------------------------变数(Variable)为程序执行中动态储存数据的符号名称;主要分为2类:区域(Local)变量又称为局部变量;该变量只在该程序段落中有效,不能为其它程序使用全域(Global)变量又称为整体变量;变量在所有程序段落中均可使用变量名称与符号的限制相同,使用时宜采用有意义及易于辨别的名称变量在赋值或使用前无须先行设定相同的变量可以储存不同型态的数据(但同一时间内只可储存一种型态)在指定新的数据之前,变量储存的内容会保持不变赋值将数据给予指定的变量储存以内建函数SETQ进行(可用于绘图模式的指令行或AutoLISP程序),其语法如下:(SETQ 变量名称1 资料1 [变量名称2 资料2 ....] )e.g. (SETQ NAME "David" AGE 37 WEIGHT 72.5 POINT (LIST10 20))在函数名称之后,各参数以两个一组,每组左边为变量名称,右边为存入变量的数据亦可将变量名称赋以空值(NIL) :e.g. (SETQ OCCUPATION NIL)要显示变量所储存的数据,可以使用内建函数PRINC(可用于绘图模式的指令行或AutoLISP程序),其语法如下:(PRINC 变量名称)e.g. COMMAND : (PRINC NAME) Result : David"David"在绘图模式中,亦可于指令行中使用感叹号! 来显示变量内容,或作为指令选项的输入值;语法如下: !变量名称e.g. COMMAND : !NAME Result : "David"在Visual LISP的主控台窗口中,于提示符号_$ 后键入要显示的变量名称_$变量名称要检查变量所储存的数据型态,可使用内建函数TYPE;语法如下:(TYPE 变量名称)e.g. COMMAND : (TYPE NAME) Result : STR若检查的变量没有储存数据,则会传回NIL第5节--------------------------------------------------------------------------------练习(Exercises)将四个坐标分别存入四个变量中,并以LINE或PLINE指令,配合四个坐标变量,画出正四边形. COMMAND : (SETQ POINT1 (LIST 0 0) POINT2 (LIST 0 10) POINT3 (LIST 10 10) POINT4 (LIST 10 0)) COMMAND : LINE ;直线段指令COMMAND : !POINT1 ;第一点(左下角起点)COMMAND : !POINT2 ;第二点(左上角)COMMAND : !POINT3 ;第三点(右上角)COMMAND : !POINT4 ;第四点(右下角)COMMAND : C ;自动联机至起点以关闭四边形画圆: 将圆心坐标及半径长度分别存入两个变量中(变量名称及数据型态自订)COMMAND : (SETQ CEN (LIST 0 0) RAD 20) ;将圆心点设为坐标0,0;半径为20COMMAND : CIRCLE ;执行划圆指令Specify center.... : !CEN ;在提示后以变量CEN响应输入Specify radius.... : !RAD ;在提示后以变量RAD响应输入将不同型态的数据,分多次存入相同的变数内;每次均以PRINC及TYPE函数显示变量内容及其数据型态COMMAND : (SETQ TEMP 1.2) ;将实数1.2存入变数TEMPCOMMAND : !TEMP Result : 1.2COMMAND : (TYPE TEMP) Result : REALCOMMAND : (SETQ TEMP "AutoLISP") ;将字符串存入变量TEMPCOMMAND : !TEMP Result : "AutoLISP"COMMAND : (TYPE TEMP) Result : STR二数值资料第1节--------------------------------------------------------------------------------基本运算加函数(+ [数值参数1 数值参数2 ....] )e.g. (+ 2.5 4 6) Result : 12.5函数的结果为各参数之总和若仅提供一个参数,则以0加上此参数的结果为返回值若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数减函数(- [数值参数1 数值参数2 ....] )e.g. (- 10 2 3) Result : 5结果为第一个(最左边)参数减去其右边各参数的总和若只提供一个参数,返回值为0减去该参数的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数乘函数结果为所有参数的乘积若只提供一个参数,则返回值为该参数乘以1的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数除函数(/ [数值参数1 数值参数2 ....] )e.g. (/ 24 2 3) Result : 4结果为第一个(最左边)参数除以其右边各参数的乘积若仅提供一个参数,则返回值为该参数除以1的结果若没有提供任何参数则传回0;各参数须为整数或实数型态若所有参数均为整数,结果亦为整数;若其中一个参数为实数型态,结果会转换为实数注意: 在本篇教程中,各函数的数值参数,均可以变量(储存值只可以是整数或实数,且不可以是空值nil)取代第2节--------------------------------------------------------------------------------练习(Exercises)计算式(2+4)*3COMMAND : (* 3 (+ 2 4)) Result : 18计算式(50-8*5)/4COMMAND : (/ (- 50 (* 8 5)) 4) Result : 2注意: 上式的正确答案应是2.5,因为函数中的各参数均为整数,所以传回的结果亦为整数递增及递减递增(1+ 数值参数)e.g. (1+ 2) Result : 3递减(1- 数值参数)e.g. (1- 4) Result : 3三角函数(Trinagular Function)正弦值(SIN 弧度参数)e.g. (SIN 1) Result : 0.841471余弦值(COS 弧度参数)e.g. (COS 1) Result : 0.540302反正切值(A TAN 弧度参数)e.g. (ATAN 1) Result : 0.785398第3节--------------------------------------------------------------------------------其它数值处理次方值(EXPT 数值参数次方值)e.g. (EXPT 2 4) Result : 16若参数及次方值两个均为整数,返回值亦是整数;若其中一个为实数,结果为实数开方根(SQRT 数值参数)(ABS 数值参数)e.g. (ABS -123) Result : 123余数(REM [数值参数1 数值参数2 ....] )e.g. (REM 50 26 5) = (REM (REM 50 26) 5) Result : 4将参数1整除参数2的余数若参数多于2个时,则会将余数再整除下一个参数,再得出余数;依此类推若其中一个参数为实数时,则结果为实数;否则为整数最大公约数(GCD 数值参数1 数值参数2 )e.g. (GCD 81 57) Result : 3两个参数均必须为整数值型态自然对数(LOG 数值参数)e.g. (LOG 3.5) Result : 1.25276是EXP函数的反函数;传回值为实数型态自然反对数(EXP 数值参数)e.g. (EXP 1.25276) Result : 3.49999是LOG函数的反函数;传回值为实数型态第4节--------------------------------------------------------------------------------数值资料转型实数转整数(FIX 数值参数)e.g. (FIX 12.56) Result : 12只会截去小数部份(小数字不会4舍5入)整数转实数(FLOAT 数值参数)e.g. (FLOAT 12) Result : 12.0整数转字符串(ITOA 数值参数)e.g. (ITOA -17) Result : "-17"数值转字符串(RTOS 数值参数[模式[小数字] ] )e.g. (RTOS 17.23333 2 3) Result : 12.266若不设定模式,则依系统变量LUNITS 的设定值转换数值为字符串若不设定小数字,则依系统变量LUPREC 的设定值转换模式设定值可以是下列数值之一:1 = 科学记号2 = 十进制3 = 英呎及十进制英吋4 = 英呎及分数位英吋5 = 分数(ANGTOS 角度参数[模式[小数字] ] )e.g. (ANGTOS 0.785398 0) Result : "45"e.g. (ANGTOS 0.785398 4) Result : "N 45d E"若不设定模式,则依系统变量AUNITS的设定值转换数值为字符串若不设定小数字,则依系统变量AUPREC的设定值转换模式设定值可以是下列数值之一:0 = 度1 = 度/分/秒2 = 分度量3 = 弪度4 = 土地测量单位当选用的模式为4,则传回的字符串受系统变量UNITMODE影响反函数为ANGTOF;参阅第5篇教程第5节--------------------------------------------------------------------------------数值资料检查数值(NUMBERP 数值参数)e.g. (NUMBERP -3.45) Result : Te.g. (NUMBERP "AutoLISP") Result : nil注意: 在范例的传回值中,T表示函数的结果为真(成立),nil表示结果为假(不成立)负数值(MINUSP 数值参数)e.g. (MINUSP -3.45) Result : Te.g. (MINUSP 0) Result : nile.g. (MINUSP 3.45) Result : nil零值(ZEROP 数值参数)e.g. (ZEROP 0) Result : Te.g. (ZEROP 3.45) Result : nil其它应用最大值(MAX [数值参数1 数值参数2 ....] )e.g. (MAX -88 5 2) Result : 5若没有提供任何参数,则传回值为0最小值(MIN [数值参数1 数值参数2 ....] )e.g. (MIN -88 5 2) Result : -88若没有提供任何参数,则传回值为0第6节--------------------------------------------------------------------------------练习(Exercises)计算下列算式:(+ 1234567890 1234567890) Result : -1825831516上式中两个数值参数均为整数,而结果值大于整数型态所能容许之范围;固导致发生溢位问题,产生无效的结果.修正算式如下: 只要将其中一个参数改为实数型态即可.(+ 9876543210 1234567890) Result : 1.11111e+010上式中两个数值参数均为整数,但其中一个(第一个)参数巳大于整数型态所能容许之范围;系统会自动将此参数先行转为实数型态才计算.计算下列算式:(FIX (SQRT (+ 1 (MAX 20 10 40 30)))) Result : 6---- 最先执行的是最内层的算式(MAX 20 10 40 30) ,求出最大值为40---- 其次执行加函数,将MAX函数所得的最大值加1,结果为41 ---- 再利函数SQRT,将41开方根,结果为6.4031---- 最后使用FIX函数,截去其小数字,得到最后的结果为6三程序设计第1节--------------------------------------------------------------------------------使用者定义函数是将一群表示式组合成一个函数或指令可应用于绘图模式的指令行提示,Visual LISP主控台,或供其它自定义函数内的表示式呼叫使用AutoLISP原始程序代码均以纯文字格式存盘,扩展名为LSP(2000版可编译成扩展名为FAS的档案可以一般文字编辑器进行开发,如DOS 的EDIT,WINDOWS的WORD或WORDPAD等一个自定函数内最少要有一个表达式在原程序文件(LSP)里,自定义函数以DEFUN函数开始;其语法如下: (DEFUN [C:] 函数名称( [自变量串行...] [/ 局部变数串行...] ) 表达式...)在呼叫带有自变量的自定函数时,必须同时提供与定义函数时,同等数量的参数,使各参数传入自定函数的各自变量中自变量被视为一种特殊类型的局部变量,无法用于该自定函数以外的其它函数若自定函数中无须设定任何自变量,亦必须以空串行( )加在函数名称之后若有提供局部变量,必须以斜线/ 加在局部变量的开头(即使前面没有自变量串行)各自变量,斜线,局部变量之间要以空格分隔;但与左右小括号之间则不须以空格分开若自变量串行中有相同名称的自变量出现,则会忽略第一个以后的相同自变量;变数亦是一样若在函数名称前加上C:,表示该函数可以在绘图模式的指令行提示下,其执行方式与内建函数相同;亦可以在任何内建命令(执行中)的提示后,以通透方式执行(但须将函数名称包在一对小括号中) 若在函数名称前没有加上C:,在指令行提示下,必须将函数名称包在一对小括号中才可执行不可以在执行一自定函数时,以通透方式执行另一自定函数第2节--------------------------------------------------------------------------------加载程序自定函数在使用前,都要将其所在的程序文件(扩展名为LSP)加载才可执行ACAD.LSP程序文件(预设在SUPPORT子目录内)会在启动AutoCAD时自动加载(LOAD "程序文件名称" [加载失败] )e.g. (LOAD "TEST")若程序文件之文件名为LSP,则在程序文件名称之后,可以不加上扩展名若有需要,系统会顺序尝试其它的扩展名: VLX FAS LSP若程序文件不在系统的支持目录下,则需在文件名前加上目录路径注意: 必须以正斜线/ 或两个反斜线\\ 作为目录的分隔符可以在加载失败的参数中提供字符串,以供加载失败时显示;亦可提供有效的自定函数,该函数在加载程序文件失败时会被执行注意:在程序文件加载后,在提示行显示的返回值,一般是该程序文件中,最后被定义的函数名称或是在程序文件内没有包含在自定函数中,最后一个表达式的执行结果第3节--------------------------------------------------------------------------------练习(Exercises)启动文字编辑器,编写一AutoLISP程序作两个同心圆(第1个圆半径为50,第2个圆半径为80),程序代码如下所示:(DEFUN C: 2CIRCLE () (SETQ CEN (LIST 0 0) RAD 50)(COMMAND CIRCLE CEN RAD)(COMMAND CIRCLE CEN (+ RAD 30)))---- 输入后以纯文字格式存盘(C:\TEST.LSP)---- 在AutoCAD绘图模式的指令行提示后,用LOAD函数将程序文件加载COMMAND : (LOAD "C:/TEST")---- 在指令行提示后,输入程序(函数)名称执行COMMAND : 2CIRCLE程序说明1 使用DEFUN建立自定函数的名称,并用SETQ函数将中心点(LIST 0 0)存入变数CEN,半径(50)存入变数RAD中2 使用COMMAND函数执行AutoCAD内建指令CIRCLE,并以变量CEN(圆的中心点)及变数RAD(圆的半径)回应3 与第2行大致相同,但在指定其半径时,先将储存半径的变量加30,使划出半径为80的圆;注意最右边的关括号,与第1行DEFUN左边的开括号是一对的启动文字编辑器,开启TEST.LSP程序文件,复制2CIRCLE至新程序2C,并改为传入自变量方式执行;程序代码如下:(DEFUN 2C (CEN RAD) (COMMAND CIRCLE CEN RAD)(COMMAND CIRCLE CEN (+ RAD 30)))---- 输入后以纯文字格式存盘---- 在AutoCAD绘图模式的指令行提示后,用LOAD函数将程序文件重新加载---- 在指令行提示后,输入程序(函数)名称执行COMMAND : (2C (LIST 0 0) 50)第4节--------------------------------------------------------------------------------批注单行批注分号;表示在分号右边(同一行)的字符均为批注,程序执行时会将其忽略多行批注;| |;表示在两个批注符号中间所有字符皆为批注,即使字符跨越多行关系运算在各个关系运算中,都会传回一逻辑值;若关系成立,传回T,否则会传回nil各参数可以是字符串,整数或实数型态;若以字符串进行比较,则会以字符串的ASCII码为准若函数中只有一个参数,传回值恒为T等于函数(= 参数1 [参数2 ....] )不等于函数(/= 参数1 [参数2 ....] )若参数1不等于其后任何一个参数,即传回T e.g. (/= 1 2.0) Result : Te.g. (/= "a" CHR(65)) Result : Te.g. (/= 10 30 40 10 20) Result : T小于函数(< 参数1 [参数2 ....] )各参数顺序以2个为一组比较,若各组左边的参数均小于右边的参数,即传回Te.g. (< 1 2) Result : Te.g. (< "a" CHR(65)) Result : T大于函数(> 参数1 [参数2 ....] )各参数顺序以2个为一组比较,若各组左边的参数均大于右边的参数,即传回Te.g. (> 1 2) Result : nile.g. (> "a" CHR(65)) Result : nil小于或等于函数(<= 参数1 [参数2 ....] )各参数顺序以2个为一组比较,若各组左边的参数均小于或等于右边的参数,即传回Te.g. (<= 1 2) Result : Te.g. (<= 2 2) Result : Te.g. (<= "a" CHR(65)) Result : T大于或等于函数(>= 参数1 [参数2 ....] )各参数顺序以2个为一组比较,若各组左边的参数均大于或等于右边的参数,即传回Te.g. (>= 1 2) Result : nile.g. (>= 2 2) Result : Te.g. (>= "a" CHR(65)) Result : nil第5节--------------------------------------------------------------------------------逻辑运算且运算(AND [表达式....] )若各表达式的传回值均为T,函数即返回T 值;若其中一个传回值为nil,函数传回nile.g. (AND (< 1 2) (> 8 5)) Result : T或运算(OR [表达式....] )若各表达式的传回值均为nil,函数即返回nil 值;若其中一个传回值为T,函数传回Te.g. (OR (> 1 2) (> 8 5)) Result : T否定运算(NOT 表达式)若表达式的传回值为T,函数即返回nil 值;相反若表达式传回值为nil,函数传回T 可用于检查传回值是否为nil另有一NULL函数与NOT函数功能相似e.g. (NOT (< 1 2)) Result : nilCOMMAND : (= (- 50 25) (SQRT 625)) Result : T设计一简单程序(名称为AIR),在呼叫程序时,检查传入的数值自变量(为空气污染指数)是否大于200(即严重空气污染)---- 启动文字编辑器,开启TEST.LSP程序文件,输入下列程序代码: (DEFUN AIR (NUM) (> NUM 200))---- 输入后存盘(纯文字格式)---- 在AutoCAD绘图模式的指令行提示符号后,使用LOAD函数重新加载程序文件COMMAND : (LOAD "C:/TEST")---- 在AutoCAD绘图模式的指令行提示符号后,输入自定函数名称及参数执行COMMAND : (AIR 175) Result : nilCOMMAND : (AIR 215) Result : T四流程控制第1节--------------------------------------------------------------------------------条件判断是利用条件函数,配合关系及逻辑运算所设定的一些准则,令程序自行分析,因应情况作出适当行动.单一条件(IF 条件表达式是表达式[否表达式] )函数先检查条件表达式,若其传回值为T,便会执行其后的是表达式若有提供否表达式,且条件表达式的传回值为nil,函数将不会执行(跳过)是表达式而执行否表达式若没有提供否表达式,且条件表达式的传回值为nil时,函数将不作任何事情IF函数可以巢状方式嵌套,即在是或否的表达式中加入另一个IF函数练习(Exercises)判断空气污染指数: 大于100 = Very High, 51至100 = High, 26至50 = Medium, 25或以下= Low---- 启动编辑器,开启C:/TEST.LSP程序文件;新增AIR-1自定函数,程序代码如下:(DEFUN AIR-1 (NUM) (IF (> NUM 100) (PRINC "Very High")) (IF (AND (> NUM 50) (<= NUM 100)) (PRINC "High"))(IF (AND (> NUM 25) (<= NUM 50)) (PRINC "Medium"))(IF (<= NUM 25)) (PRINC "Low"))(PRINC))程序说明1 设定函数名称,并将数据存入自变量NUM内;用IF函数判断变量NUM是否大于100;若是则显示字符串Very High响应2 用IF函数判断变量NUM是否大于50且(AND)小于或等于100;若是则显示High响应3 用IF函数判断变量NUM是否大于25且(AND)小于或等于50;若是则显示Medium4 用IF函数判断变量NUM是否小于或等于25;若是则显示Low5 是一个没有提供任何自变量的PRINC函数;用以抑制显示答案时尾部符加的nil 或重复的传回值;而最右一个关括号,是用以对应第1行最左边的开括号IF函数的巢状练习: 修改上一课的程序练习,将多个IF函数合并成巢状嵌套---- 启动文字编辑器,开启C:/TEST.LSP程序文件---- 新增程序AIR-2,其程序代码如下:(DEFUN AIR-2 (NUM) (IF (> NUM 50) (PRINC (IF (> NUM 100) "Very high" "High"))(PRINC (IF (> NUM 25) "Medium" "Low")))(PRINC))程序说明1 设定函数名称,并将数据存入自变量NUM内;用IF函数判断变量NUM是否大于50;若条件成立(变量NUM大于50)时,再用另一个IF函数判断变量是否大于100;若条件成立(变量NUM大于100)时,使用PRINC函数显示字符串Very High,否则显示High2 若在第1个IF函数判断中,条件不成立(变量NUM不大于50)时;再用另一个IF函数判断变量是否大于25;若条件成立(NUM大于25)时,显示字符串Medium,否则显示字符串Low3 是一个没有提供任何自变量的PRINC函数;用以抑制显示答案时尾部符加的nil 或重复的传回值;而最右一个关括号,是用以对应第1行最左边的开括号注意:第1行最后一个关括号是对应前面的PRINC函数,尾2的关括号则是对应IF函数(判断NUM是否大于100)第2行最后一个关括号是对应第1行的IF函数(判断NUM是否大于50),尾2的关括号则是对应PRINC 函数,尾3的关括号则是对应IF 函数(判断NUM是否大于25)最右边的关括号是对应第1行最左边的开括号PROGN 函数在以上各范例中,执行的表达式均为单一的函数运算;若要在表达式中顺序执行一连串的函数,便要将各函数包含在一个PROGN函数内;函数的传回值会是该PROGN函数中,最后一个表达式的运算结果---- 修改TEST.LSP程序文件的AIR-1程序,第1个IF函数如下,其余的IF函数请自行修改e.g. (IF (> NUM 100) (PROGN (SETQ DISP "Very High") (PRINC DISP)))注意: 最后一个关括号是对应前面的IF函数(判断变量NUM是否大于100)尾2的关括号是对应PROGN函数(用以包含SETQ及PRINC函数)尾3的关括号是对应PRINC函数的第2节--------------------------------------------------------------------------------条件判断(COND [ (条件表达式是表达式) ....] )函数会顺序检查各条件表达式;直到其中一个条件成立(传回T),即执行该条件式所对应的是表达式每个条件表达式只对应一个是表达式,而没有否表达式若条件式成立且执行对应的是表达式后,则不会再对余下的其它条件表达式进行检查若只有条件表达式而没有对应之是表达式,则只会传回条件表达式的逻辑值若没有提供任何条件表达式及是表达式,函数传回值恒为nil练习(Exercises)新增程序AIR-3,以改善上一课AIR-1程序;用一个COND函数判断多个条件表达式DEFUN AIR-3 (NUM) (COND((> NUM 200) (PRINC "Severe"))((> NUM 100) (PRINC "Very High"))((> NUM 50) (PRINC "High"))((> NUM 25) (PRINC "Medium"))((> NUM 0) (PRINC "Low"))(T (PRINC "Cannot Check")))(PRINC))程序说明1 设定函数名称,并将数据存入自变量NUM内;用COND函数进行多重判断2 判断变量NUM是否大于200,若条件成立,则显示Severe 讯息;第3至6行依此类推7 注意条件式为一个T 字母,表示条件式恒为真(成立),显示讯息Cannot Check作用是当以上各条件式均不成立时(变量小于或等于0),即执行此一表达式第3节--------------------------------------------------------------------------------循环(Loop)配合条件判断,关系及逻辑运算,令程序不断重复一些动作,以提高效率及减少重复动作时的人为错误可以多个循环形成巢状(嵌套式)循环,即在一个循环内嵌套另一个(或多个)循环指定的重复次数必须为正整数,亦可以是储存正整数的变量名称(REPEAT 重复次数[表达式....] )e.g. (REPEAT 10 (PRINC "David")) ;重复显示David字符串10次重复(WHILE 条件表达式[是表达式....] )若条件表达式的传回值为T,即会顺序执行函数内各表达式各表达式顺序执行完后,程序会返回函数的开头,重新检查条件表达式的传回值若条件表达式的传回值为nil,函数内各表达式将不会被执行e.g. (SETQ COUNT 1) ;将1存入变数COUNT(WHILE (<= COUNT 10) ;WHILE函数并检查变量COUNT是否<=10(PRINC "David") ;若条件成立则以PRINC函数显示David字符串(SETQ COUNT (1+ COUNT))) ;变量COUNT递增1,并将新值重新存入变量COUNT中取代原值注意: 第4行最右边的关括号,是对应第2行WHILE函数的开括号无限循环又称为死循环,即循环的条件判断式传回值恒为T,令循环不断重复而无法结束;在上例中:---- 若WHILE函数的条件表达式设定为(T) ;即条件永远成立---- 不作SETQ函数,或不将变量COUNT递增;变量COUNT储存值恒久不变,导致条件式永远成立第4节--------------------------------------------------------------------------------练习(Exercises)编写一程序SUM并将自变量存在NUM变量内,计算1+2+3+4 ....至变数NUM的总和(DEFUN SUM (NUM) (SETQ COUNT 1 TOTAL 0)(WHILE (<= COUNT NUM)(SETQ TOTAL (+ TOTAL COUNT)COUNT (1+ COUNT)))(PRINC TOTAL) (PRINC))程序说明2 WHILE循环函数,并设定进入循环的条件式(变量COUNT小于或等于变量NUM)3 若条件成立即进入循环内部,先将变量TOTAL加上变量COUNT,再用SETQ函数存回变量TOTAL中,覆盖原值4 将变量COUNT递增1,存回变数COUNT并覆盖原值5 关括号与第2行的WHILE函数左边的开括号对应6 循环结束后,用PRINC函数显示变量TOTAL(总和)的内容程序流程假设执行程序时传入变量NUM的数值为10---- 变数初始值COUNT = 1 TOTAL = 0---- 判断变量COUNT是否<=变量NUM COUNT = 1 TOTAL = 0---- 变量COUNT(现值1)小于NUM,进入循环;将TOTAL(现值0)加上COUNT,存回变数TOTAL COUNT = 1 TOTAL = 1---- 变数COUNT(现值1)递增1变为2,存回变数COUNT COUNT = 2 TOTAL = 1。

CAD二次开发Visual_LISP指南

CAD二次开发Visual_LISP指南
第三章 使用 Visual LISP 调试工具 ............................................ 7 3.1 局部变量和全局变量的区别 ............................................. 7 3.1.1 在程序中使用局部变量 ........................................... 7 3.1.2 检查 gp:getPointInput 函数 ..................................... 8 3.2 使用关联表来捆绑数据 ................................................. 9 3.2.1 使用关联表 .................................................... 10 3.2.2 将 gp:getPointInput 的返回值保存到变量中 ...................... 10 3.3 检查程序变量 ........................................................ 11 3.4 修改程序代码 ........................................................ 12 3.5 给程序代码加注释 .................................................... 14 3.6 设置断点并进行更多监视 .............................................. 15 3.6.1 使用“调试”工具栏 ............................................ 15 3.6.2 单步执行代码 .................................................. 17 3.6.3 单步执行程序时监视变量 ........................................ 17 3.6.4 跳出函数 gp:getPointInput 并进入 C:Gpmain ..................... 18 3.7 第二课回顾 .......................................................... 19

CAD画渐开线lisp程序

CAD画渐开线lisp程序
(command "pline" ls (list x y) "") ;(command ls (list x y)) ;(grdraw ls (list x y) 10) (setq ls (list x y)) ;(setq ls (entlast))
) ;(princ (> p ja)) ;(princ (= p ja)) ;(princ (< p ja))
)
;(redraw) ;对象捕捉 (setvar "osmode" dx) ;控制undo (if (/= ud 0)
(command "undo" "e") )
)
第三步:将文档名称改为“渐开线.lsp”,注意,文件后缀同时由“.txt” 改为“.lsp”。 (如果,你的电脑不显示文件后缀,请先做如下设置,去掉对钩)
* 适用于Auto CAD各版本,适用于室内装潢、机械设计等
输入命令:jkx
鼠标选取或输入圆心 位置
输入基圆半径
输入基圆半径
输入角度
第一步:在桌面建立一个文本文档
第二步:打开文档,将以下lisp代码复制到文档内,并保存关闭
(defun c:jkx(/ jo jr ja p ls p2 x y ud dx) (graphscr) (setvar "cmdecho" 0) ;(setvar "comdecho" 0) (setq jo(getpoint"\n请输入圆心位置:")) (setq jr(getdist"\n请输入基圆半径:")) (setq ja(getreal"\n请输入渐开线(10进制)角度:")) (setq p 0) (setq ls (list (+ jr (car jo)) (cadr jo))) ;控制undo (if (/=(getvar "undoctl") 0) (command "undo" "be") (setq ud 0) ) ;对象捕捉 (setq dx (getvar "osmode")) (setvar "osmode" 0) ;(command "pline" ) (while (<= p (- ja 0.5)) (setq p (+ 0.5 p)) (setq p2 (* (/ p 180) pi)) (setq x (+ (car jo) (+ (* jr (cos p2)) (* pi jr (/ p 180) (cos (- p2 (/ pi 2))))))) (setq y (+ (cadr jo) (+ (* jr (sin p2)) (* pi jr (/ p 180) (sin (- p2 (/ pi 2))))))) ;(command "point" (list x y))

CAD插件面板快捷键LISP源码教程

CAD插件面板快捷键LISP源码教程

CAD插件⾯板快捷键LISP源码教程Cad插件⾯板快捷键LISP源码实例Cad插件⾯板如下:⾯板快捷键效果如下:下边是源码:(DEFUN G ETTOOLS P ATH (/ TMP)(SETQ TMP"C:\\W INDOWS\\K_COM.TXT"))(DEFUN K_KJJ(/ DCL_ID D CL_F ILE D IALOG_R ETURN KEYS KEY LST1 FFK TMP UI% XJ E1 B A FF ) (VL-LOAD-COM)(SETQ DCL_ID (LOAD_DIALOG (SETQ D CL_F ILE (W RITE_D CL_F ORM1))))(VL-FILE-DELETE D CL_F ILE)(SETQ D IALOG_R ETURN 2)(WHILE (>D IALOG_R ETURN 1)(NEW_DIALOG "F ORM1" DCL_ID)(SETQ KEYS '("T EXT1""T EXT2""T EXT3""T EXT4""T EXT5""T EXT6""T EXT7""T EXT8" "T EXT9""T EXT10" "T EXT11""T EXT12""T EXT13""T EXT14""T EXT15""T EXT16""T EXT17""T EXT18" "T EXT19""T EXT20" "T EXT21""T EXT22""T EXT23""T EXT24""T EXT25""T EXT26""T EXT27""T EXT28" "T EXT29""T EXT30" "T EXT31""T EXT32""T EXT33""T EXT34""T EXT35""T EXT36""T EXT37""T EXT38" "T EXT39""T EXT40" "T EXT41""T EXT42""T EXT43""T EXT44""T EXT45""T EXT46""T EXT47""T EXT48" "T EXT49""T EXT50" "T EXT51""T EXT52""T EXT53""T EXT54""T EXT55""T EXT56""T EXT57""T EXT58" "T EXT59""T EXT60" "T EXT61""T EXT62""T EXT63""T EXT64""T EXT65""T EXT66""T EXT67""T EXT68" "T EXT69""T EXT70" "T EXT71""T EXT72""T EXT73""T EXT74""T EXT75""T EXT76""T EXT77""T EXT78" "T EXT79""T EXT80" "T EXT81""T EXT82""T EXT83""T EXT84""T EXT85""T EXT86""T EXT87""T EXT88" "T EXT89""T EXT90" "T EXT91""T EXT92""T EXT93""T EXT94""T EXT95""T EXT96""T EXT97""T EXT98" "T EXT99""T EXT100" "ACCEPT""CANCEL"))(FOREACH KEY KEYS(IF (EVAL (READ KEY ))(SET_TILE KEY (EVAL (READ KEY ))))(ACTION_TILE KEY "(A CTION_F ORM1_K EYS $KEY )"))(SETQ LST1'())(IF(SETQ FFK(OPEN (G ETTOOLS P ATH)"R"))(PROGN(WHILE (SETQ TMP (READ-LINE FFK))(SETQ LST1(CONS TMP LST1)))(CLOSE FFK)(SETQ LST1(REVERSE LST1))(SETQ UI%0)(REPEAT (LENGTH LST1)(SETQ XJ (NTH UI% LST1))(SETQ E1(VL-STRING-POSITION (ASCII ",") XJ)) (SETQ B (SUBSTR XJ 1 E1))(SETQ A (SUBSTR XJ (+ E12)))(SET_TILE (STRCAT "T EXT"(ITOA (+ UI%1))) B) (SETQ UI%(+1 UI%))))(PROGN;;;图层显⽰(SET_TILE "T EXT1""LL")(SET_TILE "T EXT2""LK")(SET_TILE "T EXT3""LP")(SET_TILE "T EXT4""LY")(SET_TILE "T EXT5""LO")(SET_TILE "T EXT6""LU")(SET_TILE "T EXT7""ACC")(SET_TILE "T EXT8""L0")(SET_TILE "T EXT9""CV")(SET_TILE "T EXT10""CY")(SET_TILE "T EXT11""CD")(SET_TILE "T EXT12""VV")(SET_TILE "T EXT13""VH")(SET_TILE "T EXT14""VA")(SET_TILE "T EXT15""KM")(SET_TILE "T EXT16""FS")(SET_TILE "T EXT17""LC")(SET_TILE "T EXT18""SZC")(SET_TILE "T EXT19""SXC")(SET_TILE "T EXT20""SDC");;;⽂本属性(SET_TILE "T EXT21""W2A")(SET_TILE "T EXT22""A2W")(SET_TILE "T EXT23""CA")(SET_TILE "T EXT24""ZX")(SET_TILE "T EXT25""C1")(SET_TILE "T EXT26""WHH")(SET_TILE "T EXT27""WW")(SET_TILE "T EXT28""WEE")(SET_TILE "T EXT29""WQQ")(SET_TILE "T EXT30""WX")(SET_TILE "T EXT31""WA")(SET_TILE "T EXT32""FW")(SET_TILE "T EXT33""WWS")(SET_TILE "T EXT35""YQ") (SET_TILE "T EXT36""YW") (SET_TILE "T EXT37""WY") (SET_TILE "T EXT38""ZS") (SET_TILE "T EXT39""XS") (SET_TILE "T EXT40""DZ");;;标注制图(SET_TILE "T EXT41""SS") (SET_TILE "T EXT42""QK") (SET_TILE "T EXT43""ER") (SET_TILE "T EXT44""OO") (SET_TILE "T EXT45""XX") (SET_TILE "T EXT46""FF") (SET_TILE "T EXT47""CC") (SET_TILE "T EXT48""CII") (SET_TILE "T EXT49""FL") (SET_TILE "T EXT50""FC") (SET_TILE "T EXT51""EEE") (SET_TILE "T EXT52""R2")(SET_TILE "T EXT53""RC") (SET_TILE "T EXT54""KL") (SET_TILE "T EXT55""TT") (SET_TILE "T EXT56""DF")(SET_TILE "T EXT57""JJ") (SET_TILE "T EXT58""L J") (SET_TILE "T EXT59""ZZ") (SET_TILE "T EXT60""Z0") ;;;专业制图(SET_TILE "T EXT61""YU") (SET_TILE "T EXT62""DP") (SET_TILE "T EXT63""HH") (SET_TILE "T EXT64""K0")(SET_TILE "T EXT65""ZC") (SET_TILE "T EXT66""ZD") (SET_TILE "T EXT67""JM") (SET_TILE "T EXT68""HF")(SET_TILE "T EXT69""HFA") (SET_TILE "T EXT70""HO") (SET_TILE "T EXT71""YK") (SET_TILE "T EXT72""FHM") (SET_TILE "T EXT73""HFS") (SET_TILE "T EXT74""CB")(SET_TILE "T EXT76""DK")(SET_TILE "T EXT77""TYC")(SET_TILE "T EXT78""D4")(SET_TILE "T EXT79""JC")(SET_TILE "T EXT80""JT");;;计量统计(SET_TILE "T EXT81""KI")(SET_TILE "T EXT82""BW")(SET_TILE "T EXT83""RK")(SET_TILE "T EXT84""KJ")(SET_TILE "T EXT85""KS")(SET_TILE "T EXT86""JK")(SET_TILE "T EXT87""S2E")(SET_TILE "T EXT88""XM")(SET_TILE "T EXT89""JMM")(SET_TILE "T EXT90""T2E")(SET_TILE "T EXT91""TW")(SET_TILE "T EXT92""MJE")(SET_TILE "T EXT93""DDE")(SET_TILE "T EXT94""WJY")(SET_TILE "T EXT95""WJX")(SET_TILE "T EXT96""ORE")(SET_TILE "T EXT97""RQ")(SET_TILE "T EXT98""YM")(SET_TILE "T EXT99""WK")(SET_TILE "T EXT100""A3")));--<--<-对话框初始化完成-<--<-- (SETQ D IALOG_R ETURN (START_DIALOG))) (SETQ FF (OPEN (G ETTOOLS P ATH)"W")) ;;;图层显⽰(WRITE-LINE (STRCAT TX1",""K_LL") FF) (WRITE-LINE (STRCAT TX2",""K_LK") FF) (WRITE-LINE (STRCATTX3",""K_LP") FF) (WRITE-LINE (STRCAT TX4",""K_LY") FF) (WRITE-LINE (STRCAT TX5",""K_LO") FF) (WRITE-LINE (STRCAT TX6",""K_LU") FF) (WRITE-LINE (STRCAT TX7",""K_ACC") FF) (WRITE-LINE (STRCAT TX8",""K_L0") FF) (WRITE-LINE (STRCAT TX9",""K_CV") FF) (WRITE-LINE (STRCAT TX10",""K_CY") FF) (WRITE-LINE (STRCATTX11",""K_CD") FF)(WRITE-LINE (STRCAT TX13",""K_VH") FF) (WRITE-LINE (STRCAT TX14",""K_VA") FF) (WRITE-LINE (STRCATTX15",""K_KM") FF) (WRITE-LINE (STRCAT TX16",""K_FS") FF) (WRITE-LINE (STRCAT TX17",""K_LC") FF) (WRITE-LINE (STRCAT TX18",""K_SZC") FF) (WRITE-LINE (STRCAT TX19",""K_SXC") FF) (WRITE-LINE (STRCATTX20",""K_SDC") FF) ;;;⽂本属性(WRITE-LINE (STRCAT TX21",""K_W2A") FF) (WRITE-LINE (STRCAT TX22",""K_A2W") FF) (WRITE-LINE (STRCATTX23",""K_CA") FF) (WRITE-LINE (STRCAT TX24",""K_ZX") FF) (WRITE-LINE (STRCAT TX25",""K_C1") FF) (WRITE-LINE (STRCAT TX26",""K_WHH") FF) (WRITE-LINE (STRCAT TX27",""K_WW") FF) (WRITE-LINE (STRCATTX28",""K_WEE") FF) (WRITE-LINE (STRCAT TX29",""K_WQQ") FF) (WRITE-LINE (STRCAT TX30",""K_WX") FF) (WRITE-LINE (STRCAT TX31",""K_WA") FF) (WRITE-LINE (STRCAT TX32",""K_FW") FF) (WRITE-LINE (STRCATTX33",""K_WWS") FF) (WRITE-LINE (STRCAT TX34",""K_DQ") FF) (WRITE-LINE (STRCAT TX35",""K_YQ") FF) (WRITE-LINE (STRCAT TX36",""K_YW") FF) (WRITE-LINE (STRCAT TX37",""K_WY") FF) (WRITE-LINE (STRCAT TX38",""K_ZS") FF) (WRITE-LINE (STRCAT TX39",""K_XS") FF) (WRITE-LINE (STRCAT TX40",""K_DZ") FF) ;;;标注制图(WRITE-LINE (STRCAT TX41",""K_SS") FF) (WRITE-LINE (STRCAT TX42",""K_QK") FF) (WRITE-LINE (STRCATTX43",""K_ER") FF) (WRITE-LINE (STRCAT TX44",""K_OO") FF) (WRITE-LINE (STRCAT TX45",""K_XX") FF) (WRITE-LINE (STRCAT TX46",""K_FF") FF) (WRITE-LINE (STRCAT TX47",""K_CC") FF) (WRITE-LINE (STRCAT TX48",""K_CII") FF) (WRITE-LINE (STRCAT TX49",""K_FL") FF) (WRITE-LINE (STRCAT TX50",""K_FC") FF) (WRITE-LINE (STRCATTX51",""K_EEE") FF) (WRITE-LINE (STRCAT TX52",""K_R2") FF) (WRITE-LINE (STRCAT TX53",""K_RC") FF) (WRITE-LINE (STRCAT TX55",""K_TT") FF) (WRITE-LINE (STRCAT TX56",""K_DF") FF) (WRITE-LINE (STRCATTX57",""K_JJ") FF) (WRITE-LINE (STRCAT TX58",""K_L J") FF) (WRITE-LINE (STRCAT TX59",""K_ZZ") FF) (WRITE-LINE (STRCAT TX60",""K_Z0") FF) ;;;专业制图(WRITE-LINE (STRCAT TX61",""K_YU") FF) (WRITE-LINE (STRCAT TX62",""K_DP") FF) (WRITE-LINE (STRCATTX63",""K_HH") FF) (WRITE-LINE (STRCAT TX64",""K_K0") FF) (WRITE-LINE (STRCAT TX65",""K_ZC") FF) (WRITE-LINE (STRCAT TX66",""K_ZD") FF) (WRITE-LINE (STRCAT TX67",""K_JM") FF) (WRITE-LINE (STRCAT TX68",""K_HF") FF) (WRITE-LINE (STRCAT TX69",""K_HFA") FF) (WRITE-LINE (STRCAT TX70",""K_HO") FF) (WRITE-LINE (STRCAT TX71",""K_YK") FF) (WRITE-LINE (STRCAT TX72",""K_FHM") FF) (WRITE-LINE (STRCAT TX73",""K_HFS") FF) (WRITE-LINE (STRCAT TX74",""K_CB") FF) (WRITE-LINE (STRCAT TX75",""K_CL") FF) (WRITE-LINE (STRCAT TX76",""K_DK") FF) (WRITE-LINE (STRCAT TX77",""K_TYC") FF) (WRITE-LINE (STRCAT TX78",""K_D4") FF) (WRITE-LINE (STRCAT TX79",""K_JC") FF) (WRITE-LINE (STRCAT TX80",""K_JT") FF);;;统计发布(WRITE-LINE (STRCAT TX81",""K_KI") FF) (WRITE-LINE (STRCAT TX82",""K_BW") FF) (WRITE-LINE (STRCATTX83",""K_RK") FF) (WRITE-LINE (STRCAT TX84",""K_KJ") FF) (WRITE-LINE (STRCAT TX85",""K_KS") FF) (WRITE-LINE (STRCAT TX86",""K_JK") FF) (WRITE-LINE (STRCAT TX87",""K_S2E") FF) (WRITE-LINE (STRCAT TX88",""K_XM") FF) (WRITE-LINE (STRCAT TX89",""K_JMM") FF) (WRITE-LINE (STRCAT TX90",""K_T2E") FF) (WRITE-LINE (STRCAT TX91",""K_TW") FF) (WRITE-LINE (STRCAT TX92",""K_MJE") FF) (WRITE-LINE (STRCAT TX93",""K_DDE") FF) (WRITE-LINE (STRCAT TX94",""K_WJY") FF)(WRITE-LINE (STRCAT TX96",""K_ORE") FF)(WRITE-LINE (STRCAT TX97",""K_RQ") FF)(WRITE-LINE (STRCAT TX98",""K_YM") FF)(WRITE-LINE (STRCAT TX99",""K_WK") FF)(WRITE-LINE (STRCAT TX100",""K_A3") FF)(CLOSE FF)(KKKKJ)(UNLOAD_DIALOG DCL_ID)(PRINC))(DEFUN KKKKJ(/ LST FFF TMP UI% XJ E1)(SETQ LST '())(IF(SETQ FFF(OPEN (G ETTOOLS P ATH)"R"))(PROGN(WHILE (SETQ TMP (READ-LINE FFF))(SETQ LST (CONS TMP LST)))(CLOSE FFF)))(SETQ UI%0)(REPEAT (LENGTH LST)(SETQ XJ (NTH UI%LST))(SETQ E1(VL-STRING-POSITION (ASCII ",")XJ))(SETQ B (SUBSTR XJ 1 E1))(SETQ A (SUBSTR XJ (+ E12)))(GKKJ)(SETQ UI%(+1 UI%))))(DEFUN GKKJ ()(EVAL(READ(STRCAT "(DEFUN C:"B"()(VLA-SENDCOMMAND (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT))\"("A")\N\"))")))(PRINC))(KKKKJ)(DEFUN A CTION_F ORM1_K EYS (KEY / TXI%);全部控件的点击动作触发(COND((OR(= KEY "ACCEPT")(= KEY "CANCEL"))(G ET_F ORM1_D ATA)(SETQ TXI%1)(WHILE (< TXI%200)(SET (READ (STRCAT "TX"(ITOA TXI%)))(GET_TILE (STRCAT "T EXT"(ITOA TXI%))))(SETQ TXI%(+ TXI%1))) (DONE_DIALOG 1)))(PRINC))(DEFUN G ET_F ORM1_D ATA(/ KEY)(FOREACH KEY KEYS(SET (READ KEY )(GET_TILE KEY))));每个控件都赋给⼀个变量⽤于下次开启初始化(DEFUN W RITE_D CL_F ORM1(/D CL_F ILE FILE STR)(SETQ D CL_F ILE (VL-FILENAME-MKTEMP NIL NIL ".D CL"))(SETQ FILE (OPEN D CL_F ILE "W"))(FOREACH STR '("KK_BOX:EDIT_BOX { HEIGHT =0.1; HORIZONTAL_MARGIN = NONE ;VERTICAL_MARGIN = NONE ; WIDTH =0.1;}""F ORM1:DIALOG{LABEL =\"快捷键设置\";"":ROW{:BOXED_COLUMN { LABEL =\"图层显⽰\";"":KK_BOX{KEY =\"T EXT1\"; LABEL =\"框显图层\";}"":KK_BOX{KEY =\"T EXT2\"; LABEL =\"全显图层\";}"":KK_BOX{KEY =\"T EXT3\"; LABEL =\"凸显图层\";}"":KK_BOX{KEY =\"T EXT4\"; LABEL =\"框隐图层\";}"":KK_BOX{KEY =\"T EXT5\"; LABEL =\"锁定图层\";}"":KK_BOX{KEY =\"T EXT7\"; LABEL =\"按⾊归层\";}" ":KK_BOX{KEY =\"T EXT8\";LABEL =\"调当前层\";}" ":KK_BOX{KEY =\"T EXT9\";LABEL =\"按⾊显⽰\";}" ":KK_BOX{KEY =\"T EXT10\";LABEL =\"按⾊隐藏\";}" ":KK_BOX{KEY =\"TEXT11\";LABEL =\"按⾊选择\";}" ":KK_BOX{KEY =\"T EXT12\";LABEL =\"框显图元\";}" ":KK_BOX{KEY =\"T EXT13\";LABEL =\"框隐图元\";}" ":KK_BOX{KEY =\"T EXT14\";LABEL =\"全显图元\";}" ":KK_BOX{KEY =\"T EXT15\";LABEL =\"筛选块名\";}" ":KK_BOX{KEY =\"T EXT16\";LABEL =\"筛选属性\";}" ":KK_BOX{KEY =\"T EXT17\";LABEL =\"图层改⾊\";}" ":KK_BOX{KEY =\"T EXT18\"; LABEL =\"刷中线层\";}" ":KK_BOX{KEY =\"T EXT19\"; LABEL =\"刷虚线层\";}" ":KK_BOX{KEY =\"TEXT20\";LABEL =\"刷当前层\";}}" ":BOXED_COLUMN{ LABEL =\"⽂本属性\";"":KK_BOX{KEY =\"T EXT21\";LABEL =\"字转属性\";}" ":KK_BOX{KEY =\"T EXT22\";LABEL =\"属性转字\";}" ":KK_BOX{KEY =\"T EXT23\";LABEL =\"超强复制\";}" ":KK_BOX{KEY =\"T EXT24\";LABEL =\"增序替换\";}" ":KK_BOX{KEY =\"TEXT25\";LABEL =\"加⼀复制\";}" ":KK_BOX{KEY =\"T EXT26\";LABEL =\"⽂字⾼度\";}" ":KK_BOX{KEY =\"T EXT27\";LABEL =\"⽂字排版\";}" ":KK_BOX{KEY =\"T EXT28\";LABEL =\"⽂字左齐\";}" ":KK_BOX{KEY =\"T EXT29\";LABEL =\"⽂字右齐\";}" ":KK_BOX{KEY =\"T EXT30\";LABEL =\"⽂字底齐\";}" ":KK_BOX{KEY =\"T EXT31\";LABEL =\"⽂字线齐\";}" ":KK_BOX{KEY =\"T EXT32\";LABEL =\"⽂字查找\";}" ":KK_BOX{KEY =\"T EXT33\";LABEL =\"批改⽂字\";}" ":KK_BOX{KEY =\"TEXT34\";LABEL =\"标注对齐\";}" ":KK_BOX{KEY =\"T EXT35\";LABEL =\"引线对齐\";}" ":KK_BOX{KEY =\"T EXT36\";LABEL =\"引线字中\";}" ":KK_BOX{KEY =\"T EXT37\";LABEL =\"引线字上\";}" ":KK_BOX{KEY =\"T EXT38\";LABEL =\"中线⽐例\";}" ":KK_BOX{KEY =\"T EXT39\";LABEL =\"虚线⽐例\";}" ":KK_BOX{KEY =\"T EXT40\";LABEL =\"标注原值\";}}"":BOXED_COLUMN{ LABEL =\"标准制图\";"":KK_BOX{KEY =\"T EXT41\"; LABEL =\"默认设置\";}" ":KK_BOX{KEY =\"T EXT42\"; LABEL =\"清空零线\";}" ":KK_BOX{KEY =\"T EXT43\";LABEL =\"分类删除\";}" ":KK_BOX{KEY =\"T EXT44\";LABEL =\"双偏保中\";}" ":KK_BOX{KEY =\"TEXT45\";LABEL =\"双偏删中\";}" ":KK_BOX{KEY =\"T EXT46\";LABEL =\"多重圆⾓\";}" ":KK_BOX{KEY =\"T EXT47\";LABEL =\"定距复制\";}"":KK_BOX{KEY =\"T EXT49\";LABEL =\"分类选择\";}"":KK_BOX{KEY =\"T EXT50\";LABEL =\"分层选择\";}"":KK_BOX{KEY =\"T EXT51\";LABEL =\"删重叠线\";}"":KK_BOX{KEY =\"T EXT52\";LABEL =\"旋转对齐\";}"":KK_BOX{KEY =\"T EXT53\";LABEL =\"旋转复制\";}"":KK_BOX{KEY =\"T EXT54\";LABEL =\"偏块内线\";}"":KK_BOX{KEY =\"T EXT55\";LABEL =\"边界剪切\";}"":KK_BOX{KEY =\"T EXT56\";LABEL =\"线元等分\";}"":KK_BOX{KEY =\"T EXT57\";LABEL =\"框选合线\";}"":KK_BOX{KEY =\"T EXT58\";LABEL =\"框选连线\";}"":KK_BOX{KEY =\"T EXT59\";LABEL =\"图元归零\";}"":KK_BOX{KEY =\"T EXT60\";LABEL =\"归零慎⽤\";}}"":BOXED_COLUMN{ LABEL =\"专业制图\";"":KK_BOX{KEY =\"T EXT61\";LABEL =\"修改云线\";}"":KK_BOX{KEY =\"T EXT62\";LABEL =\"矩形介⼦\";}"":KK_BOX{KEY =\"T EXT63\";LABEL =\"两点填充\";}"":KK_BOX{KEY =\"T EXT64\";LABEL =\"块内零层\";}"":KK_BOX{KEY =\"T EXT65\";LABEL =\"圆折断线\";}"":KK_BOX{KEY =\"T EXT66\";LABEL =\"折断线__\";}"":KK_BOX{KEY =\"T EXT67\";LABEL =\"铝⾓码码\";}"":KK_BOX{KEY =\"T EXT68\";LABEL =\"直焊缝__\";}"":KK_BOX{KEY =\"T EXT69\";LABEL =\"圆焊缝__\";}"":KK_BOX{KEY =\"T EXT70\";LABEL =\"剖圆孔__\";}"":KK_BOX{KEY =\"T EXT71\";LABEL =\"长圆孔__\";}"":KK_BOX{KEY =\"T EXT72\";LABEL =\"保温棉__\";}"":KK_BOX{KEY =\"T EXT73\";LABEL =\"⾓焊缝__\";}"":KK_BOX{KEY =\"T EXT74\";LABEL =\"偏移⼦段\";}"":KK_BOX{KEY =\"T EXT75\";LABEL =\"槽铝断⾯\";}"":KK_BOX{KEY =\"T EXT76\";LABEL =\"硬质垫块\";}"":KK_BOX{KEY =\"T EXT77\";LABEL =\"椭圆圆弧\";}"":KK_BOX{KEY =\"T EXT78\";LABEL =\"四点尖⾓\";}"":KK_BOX{KEY =\"T EXT79\";LABEL =\"⾓钢槽钢\";}"":KK_BOX{KEY =\"T EXT80\";LABEL =\"⽅钢⼯钢\";}}"":BOXED_COLUMN{ LABEL =\"统计发布\";"":KK_BOX{KEY =\"T EXT81\";LABEL =\"快速建块\";}"":KK_BOX{KEY =\"T EXT82\";LABEL =\"炸块成字\";}"":KK_BOX{KEY =\"T EXT83\";LABEL =\"图块改名\";}"":KK_BOX{KEY =\"T EXT84\";LABEL =\"图块基点\";}"":KK_BOX{KEY =\"T EXT85\";LABEL =\"图块改⾊\";}"":KK_BOX{KEY =\"T EXT86\";LABEL =\"交点布块\";}"":KK_BOX{KEY =\"T EXT87\";LABEL =\"属块导表\";}"":KK_BOX{KEY =\"T EXT88\";LABEL =\"线密度__\";}"":KK_BOX{KEY =\"T EXT89\";LABEL =\"截⾯参数\";}"":KK_BOX{KEY =\"T EXT90\";LABEL =\"排字到表\";}"":KK_BOX{KEY =\"T EXT91\";LABEL =\"统字到表\";}"":KK_BOX{KEY =\"T EXT92\";LABEL =\"⾯积到表\";}"":KK_BOX{KEY =\"T EXT93\";LABEL =\"线长到表\";}"":KK_BOX{KEY =\"T EXT94\";LABEL =\"外接圆形\";}"":KK_BOX{KEY =\"T EXT95\";LABEL =\"外接矩形\";}"":KK_BOX{KEY =\"T EXT96\";LABEL =\"图元加框\";}"":KK_BOX{KEY =\"T EXT97\";LABEL =\"画图⽇期\";}"":KK_BOX{KEY =\"T EXT98\";LABEL =\"批改页码\";}"":KK_BOX{KEY =\"T EXT99\";LABEL =\"批量分图\";}"":KK_BOX{KEY =\"T EXT100\";LABEL =\"批量打印\";}}}"":ROW{:TEXT{LABEL=\"命令⽂件位置C:/W INDOWS/K_COM.TXT,删除后相当于初始设置\\";ALIGNMENT=LEFT;}SPACER_1;SPACER_1;SPACER_1; OK_BUTTON;CANCEL_BUTTON;}} ")(WRITE-LINE STR FILE))(CLOSE FILE)D CL_F ILE)(KKKKJ);恢复默认设置命令(DEFUN K_KMR(/ TMP)(IF (FINDFILE(G ETTOOLS P ATH))(VL-FILE-DELETE (G ETTOOLS P ATH)))(KKKKJ)(PRINC));清空命令(DEFUN K_KQK(/ FF)(IF (FINDFILE(G ETTOOLS P ATH))(PROGN (SETQ FF(OPEN (G ETTOOLS P ATH)"W"));;;图层显⽰(WRITE-LINE (STRCAT ",""K_LL") FF)(WRITE-LINE (STRCAT ",""K_LK") FF)(WRITE-LINE (STRCAT ",""K_LP") FF)(WRITE-LINE (STRCAT ",""K_LY") FF)(WRITE-LINE (STRCAT ",""K_LO") FF)(WRITE-LINE (STRCAT ",""K_LU") FF)(WRITE-LINE (STRCAT ",""K_ACC") FF)(WRITE-LINE (STRCAT ",""K_L0") FF)(WRITE-LINE (STRCAT ",""K_CV") FF)(WRITE-LINE (STRCAT ",""K_CY") FF)(WRITE-LINE (STRCAT ",""K_CD") FF)(WRITE-LINE (STRCAT ",""K_VH") FF) (WRITE-LINE (STRCAT ",""K_VA") FF) (WRITE-LINE (STRCAT ",""K_KM") FF) (WRITE-LINE (STRCAT ",""K_FS") FF) (WRITE-LINE (STRCAT ",""K_LC") FF) (WRITE-LINE (STRCAT ",""K_SZC") FF) (WRITE-LINE (STRCAT ",""K_SXC") FF) (WRITE-LINE (STRCAT ",""K_SDC") FF);;;⽂本属性(WRITE-LINE (STRCAT ",""K_W2A") FF) (WRITE-LINE (STRCAT ",""K_A2W") FF) (WRITE-LINE (STRCAT ",""K_CA") FF) (WRITE-LINE (STRCAT ",""K_ZX") FF) (WRITE-LINE (STRCAT ",""K_C1") FF) (WRITE-LINE (STRCAT ",""K_WHH") FF) (WRITE-LINE (STRCAT ",""K_WW") FF) (WRITE-LINE (STRCAT ",""K_WEE") FF) (WRITE-LINE (STRCAT ",""K_WQQ") FF) (WRITE-LINE (STRCAT ",""K_WX") FF) (WRITE-LINE (STRCAT ",""K_WA") FF) (WRITE-LINE (STRCAT ",""K_FW") FF) (WRITE-LINE (STRCAT ",""K_WWS") FF) (WRITE-LINE (STRCAT ",""K_DQ") FF) (WRITE-LINE (STRCAT ",""K_YQ") FF) (WRITE-LINE (STRCAT ",""K_YW") FF) (WRITE-LINE (STRCAT ",""K_WY") FF) (WRITE-LINE (STRCAT ",""K_ZS") FF) (WRITE-LINE (STRCAT ",""K_XS") FF) (WRITE-LINE (STRCAT ",""K_DZ") FF) ;;;标注制图(WRITE-LINE (STRCAT ",""K_SS") FF) (WRITE-LINE (STRCAT ",""K_QK") FF) (WRITE-LINE (STRCAT ",""K_ER") FF) (WRITE-LINE (STRCAT ",""K_OO") FF) (WRITE-LINE (STRCAT ",""K_XX") FF) (WRITE-LINE (STRCAT ",""K_FF") FF) (WRITE-LINE (STRCAT ",""K_CC") FF) (WRITE-LINE (STRCAT ",""K_CII") FF) (WRITE-LINE (STRCAT ",""K_FL") FF) (WRITE-LINE (STRCAT ",""K_FC") FF) (WRITE-LINE (STRCAT ",""K_EEE") FF) (WRITE-LINE (STRCAT ",""K_R2") FF) (WRITE-LINE (STRCAT ",""K_KL") FF) (WRITE-LINE (STRCAT ",""K_TT") FF) (WRITE-LINE (STRCAT ",""K_DF") FF) (WRITE-LINE (STRCAT ",""K_JJ") FF) (WRITE-LINE (STRCAT ",""K_L J") FF) (WRITE-LINE (STRCAT ",""K_ZZ") FF) (WRITE-LINE (STRCAT ",""K_Z0") FF) ;;;专业制图(WRITE-LINE (STRCAT ",""K_YU") FF) (WRITE-LINE (STRCAT ",""K_DP") FF) (WRITE-LINE (STRCAT ",""K_HH") FF) (WRITE-LINE (STRCAT ",""K_K0") FF) (WRITE-LINE (STRCAT ",""K_ZC") FF) (WRITE-LINE (STRCAT ",""K_ZD") FF) (WRITE-LINE (STRCAT ",""K_JM") FF) (WRITE-LINE (STRCAT ",""K_HF") FF) (WRITE-LINE (STRCAT ",""K_HFA") FF) (WRITE-LINE (STRCAT ",""K_HO") FF) (WRITE-LINE (STRCAT ",""K_YK") FF) (WRITE-LINE (STRCAT ",""K_FHM") FF) (WRITE-LINE (STRCAT ",""K_HFS") FF) (WRITE-LINE (STRCAT ",""K_CB") FF) (WRITE-LINE (STRCAT ",""K_CL") FF) (WRITE-LINE (STRCAT ",""K_DK") FF) (WRITE-LINE (STRCAT ",""K_TYC") FF) (WRITE-LINE (STRCAT ",""K_D4") FF) (WRITE-LINE (STRCAT ",""K_JC") FF) (WRITE-LINE (STRCAT ",""K_JT") FF) ;;;统计发布(WRITE-LINE (STRCAT ",""K_KI") FF) (WRITE-LINE (STRCAT ",""K_BW") FF) (WRITE-LINE (STRCAT ",""K_RK") FF) (WRITE-LINE (STRCAT ",""K_KJ") FF) (WRITE-LINE (STRCAT ",""K_KS") FF) (WRITE-LINE (STRCAT ",""K_JK") FF) (WRITE-LINE (STRCAT ",""K_S2E") FF) (WRITE-LINE (STRCAT ",""K_XM") FF) (WRITE-LINE (STRCAT ",""K_JMM") FF) (WRITE-LINE (STRCAT ",""K_T2E") FF) (WRITE-LINE (STRCAT ",""K_TW") FF) (WRITE-LINE (STRCAT ",""K_MJE") FF) (WRITE-LINE (STRCAT ",""K_DDE") FF) (WRITE-LINE (STRCAT ",""K_WJY") FF)(WRITE-LINE (STRCAT ",""K_ORE") FF)(WRITE-LINE (STRCAT ",""K_RQ") FF)。

实现CAD绘图与LISP编程的自动化技巧

实现CAD绘图与LISP编程的自动化技巧

实现CAD绘图与LISP编程的自动化技巧CAD(计算机辅助设计)是一种广泛应用于工程和建筑行业的软件工具,而LISP(LISt Processing)则是一种编程语言,经常用于CAD 软件中进行自动化任务和定制。

在CAD绘图中,使用LISP编程可以极大提高工作效率,加快绘图速度并减少出错概率。

下面,我们将介绍一些实现CAD绘图与LISP编程的自动化技巧。

1. 使用LISP编写简单命令LISP语言在CAD软件中被广泛应用,因其简洁、灵活和强大的功能而备受赞誉。

可以利用LISP编写一些简单的命令,以自动完成一些常见的绘图任务。

例如,我们可以编写一段LISP代码,用于创建一个特定大小和形状的矩形或圆形,并将其放置在指定位置。

2. 利用LISP实现参数化绘图参数化绘图是CAD绘图中常见的需求,它可以根据一组参数值自动生成特定形状和尺寸的图形。

利用LISP编程可以方便地实现参数化绘图。

通过定义参数,并使用LISP代码控制参数值,可以在绘图过程中灵活地调整形状和尺寸,提高工作效率。

3. 利用LISP编写循环和逻辑语句LISP编程强大之处在于其循环和逻辑语句的灵活性。

通过编写循环和逻辑语句,可以实现复杂的绘图任务,如图形的重复、数组的生成等。

例如,我们可以使用循环语句自动生成一系列具有相同属性但位置不同的图形。

4. 利用LISP批处理CAD命令CAD软件中的批处理命令可以用于自动执行一系列CAD操作,如创建图层、更改对象属性等。

利用LISP编程可以轻松地实现批处理CAD命令。

通过编写LISP代码,将多个CAD命令组合在一起,可以以一次性的方式自动执行这些命令,从而减少人为干预。

5. 利用LISP创建自定义CAD函数和命令除了使用CAD软件中已有的命令,我们还可以通过LISP编程自定义CAD函数和命令,以满足特定的需求。

通过编写LISP代码,可以根据自己的需要定义函数和命令,从而实现更高级和复杂的CAD绘图操作。

cad自动写标高lisp

cad自动写标高lisp

cad自动写标高lisp;;自动标高主程序(使用方法:新建文件,后缀名为.lsp,将全部内容粘贴过去,然后将lsp文件拖进cad窗口(即加载),输入命令xbg,按命令行提示操作即可)(defun c:xbg(/ xs_d os dim jd i_sc i_bg i_uni bg_jz pt_jz zb_jzpt_nt zb_nt bg_nt)(setvar "cmdecho" 0)(setvar "dimzin" 0)(setvar "blipmode" 0)(setq xs_d (getvar "dimzin"))(setq os (getvar "osmode"))(setq dim (getvar "dimzin"))(chk_style)(princ "\n适用于真实尺寸作图")(setq i_uni (getstring "\n图纸单位是mm/cm/m<cm>:")) (if (= "" i_uni) (setq i_uni "cm"))(cond ((= i_uni "mm") (setq i_bg 1000.0))((= i_uni "cm") (setq i_bg 100.0))((= i_uni "m") (setq i_bg 1.0))(t (setq i_bg 1.0)))(if (setq jd (getint "\n标高有效位数<3>:")) () (setq jd 3))(if (setq i_sc (getreal "\n比例系数<1>:")) () (setq i_sc 1))(if (setq bg_jz (getreal "\n输入基准点标高<100.0>:")) () (setq bg_jz 100.0))(setq pt_jz (getpoint "\n指定基准点:"))(setq zb_jz (cadr pt_jz))(d_fh pt_jz bg_jz) ;绘制基准点(while (setq pt_nt (getpoint "\n指定下一点:"))(progn(setq zb_nt (cadr pt_nt))(setq bg_nt (+ bg_jz (/ (- zb_nt zb_jz) i_bg)))(d_fh pt_nt bg_nt);绘制标准点))(setvar "dimzin" xs_d)(setvar "dimzin" dim));;测试子程序(defun c:css(/ pt bg)(setq pt (getpoint "\n````"))(setq bg 100.0)(setq jd 2)(setq i_sc 1)(d_fh));;标注标高(defun d_fh(pt bg / pt1)(setvar "osmode" 0)(command "line" (polar pt 0 (* 3.0 i_sc)) (polar pt 0 (* 7.0 i_sc)) "")(command "line" (polar pt 0 (* 5.0 i_sc)) (polar (polar pt 0 (* 5.0 i_sc)) (/ pi 3) (* 3.0 i_sc)) "")(command "line" (polar pt 0 (* 5.0 i_sc)) (polar (polar pt 0 (* 5.0 i_sc)) (* 2 (/ pi 3)) (* 3.0 i_sc)) "")(command "line" (polar (polar pt 0 (* 5.0 i_sc)) (* 2 (/ pi 3)) (* 3.0 i_sc)) (polar (polar (polar pt 0 (* 5.0 i_sc)) (* 2 (/ pi 3)) (* 3.0 i_sc)) 0 (* 12.0 i_sc)) "")(setq pt1 (polar (polar (polar pt 0 (* 5.0 i_sc)) (* 2 (/ pi 3)) (* 3.0 i_sc)) 0 (* 6.0 i_sc)))(command "_.text" "j" "m" (polar pt1 (/ pi 2) (* 1.8 i_sc)) (* 2.5i_sc) "0" (rtos bg 2 jd))(setvar "osmode" os))(defun chk_style();检查字型(setq chksty(tblsearch "style" "standa"))(if (null chksty)(progn(command "_style" "standa" "fsdb" "0" "0.7" "0" "n" "n" "n")))(setq chklay(tblsearch "layer" "文本"))(if (null chklay)(command "_layer" "m" "文本" "c" "3" "文本" ""))(setvar "clayer" "文本")(setvar "textstyle" "standa"))(princ "\n--自动写标高程序--hez87")(prin1)---------------------------------------------------------------范文最新推荐------------------------------------------------------ 财务管理工作总结[财务管理工作总结]2009年上半年,我们驻厂财会组在公司计财部的正确领导下,在厂各部门的大力配合下,全组人员尽“参与、监督、服务”职能,以实现企业生产经营目标为核心,以成本管理为重点,全面落实预算管理,加强会计基础工作,充分发挥财务管理在企业管理中的核心作用,较好地完成了各项工作任务,财务管理水平有了大幅度的提高,财务管理工作总结。

cad自动写标高lisp

cad自动写标高lisp

cad自动写标高lispcad自动写标高lisp;;自动标高主程序(使用方法:新建文件,后缀名为.lsp,将全部内容粘贴过去,然后将lsp文件拖进cad窗口(即加载),输入命令xbg,按命令行提示操作即可)(defun c:xbg(/ xs_d os dim jd i_sc i_bg i_uni bg_jz pt_jz zb_jz pt_nt zb_nt bg_nt)(setvar "cmdecho" 0)(setvar "dimzin" 0)(setvar "blipmode" 0)(setq xs_d (getvar "dimzin"))(setq os (getvar "osmode"))(setq dim (getvar "dimzin"))(chk_style)(princ "\n适用于真实尺寸作图")(setq i_uni (getstring "\n图纸单位是mm/cm/m:")) (if (= "" i_uni) (setq i_uni "cm"))(cond ((= i_uni "mm") (setq i_bg 1000.0))((= i_uni "cm") (setq i_bg 100.0))((= i_uni "m") (setq i_bg 1.0))(t (setq i_bg 1.0)))(if (setq jd (getint "\n标高有效位数<3>:")) () (setq jd 3))(if (setq i_sc (getreal "\n比例系数<1>:")) () (setq i_sc 1))(if (setq bg_jz (getreal "\n输入基准点标高<100.0>:")) () (setq bg_jz 100.0))(setq pt_jz (getpoint "\n指定基准点:"))(setq zb_jz (cadr pt_jz))(d_fh pt_jz bg_jz) ;绘制基准点(while (setq pt_nt (getpoint "\n指定下一点:"))(progn(setq zb_nt (cadr pt_nt))(setq bg_nt (+ bg_jz (/ (- zb_nt zb_jz) i_bg)))(d_fh pt_nt bg_nt);绘制标准点))(setvar "dimzin" xs_d)(setvar "dimzin" dim));;测试子程序(defun c:css(/ pt bg)(setq pt (getpoint "\n````"))(setq bg 100.0)(setq jd 2)(setq i_sc 1)(d_fh));;标注标高(defun d_fh(pt bg / pt1)(setvar "osmode" 0)(command "line" (polar pt 0 (* 3.0 i_sc)) (polar pt 0 (* 7.0 i_sc)) "")(command "line" (polar pt 0 (* 5.0 i_sc)) (polar (polar pt 0 (* 5.0 i_sc)) (/ pi 3) (* 3.0 i_sc)) "")(command "line" (polar pt 0 (* 5.0 i_sc)) (polar (polar pt 0 (* 5.0 i_sc)) (* 2 (/ pi 3)) (* 3.0 i_sc)) "")(command "line" (polar (polar pt 0 (* 5.0 i_sc)) (* 2 (/ pi 3)) (* 3.0 i_sc)) (polar (polar (polar pt 0 (* 5.0 i_sc)) (* 2 (/ pi 3)) (* 3.0i_sc)) 0 (* 12.0 i_sc)) "")(setq pt1 (polar (polar (polar pt 0 (* 5.0 i_sc)) (* 2 (/ pi 3)) (* 3.0 i_sc)) 0 (* 6.0 i_sc)))(command "_.text" "j" "m" (polar pt1 (/ pi 2) (* 1.8 i_sc)) (* 2.5 i_sc) "0" (rtos bg 2 jd))(setvar "osmode" os))(defun chk_style();检查字型(setq chksty(tblsearch "style" "standa"))(if (null chksty)(progn(command "_style" "standa" "fsdb" "0" "0.7" "0" "n" "n" "n") ))(setq chklay(tblsearch "layer" "文本"))(if (null chklay)(command "_layer" "m" "文本" "c" "3" "文本" ""))(setvar "clayer" "文本")(setvar "textstyle" "standa"))(princ "\n--自动写标高程序--hez87")(prin1)---------------------------------------------------------------范文最新推荐------------------------------------------------------ 财务管理工作总结[财务管理工作总结]2009年上半年,我们驻厂财会组在公司计财部的正确领导下,在厂各部门的大力配合下,全组人员尽“参与、监督、服务”职能,以实现企业生产经营目标为核心,以成本管理为重点,全面落实预算管理,加强会计基础工作,充分发挥财务管理在企业管理中的核心作用,较好地完成了各项工作任务,财务管理水平有了大幅度的提高,财务管理工作总结。

lisp教程

lisp教程
连续测量线长的程序.LSP
面积统计.LSP
不错的小程序,关键还是源代码,谢谢,很实用!不会用的朋友可以将文件打开后,直接将程序内容,拷到你的cad安装目录下support文件夹里的acad2004.lsp(cad2006是acad2006.lsp)里,这个文件用记事本打开,将程序的内容贴到后面就行了,注意简化命令是defun C:后的、(前面的那几个字符,谢谢楼主!
亩和平方米的互换.lsp
删除鼠标框内交点之间的线段.LSP
动态查询信息程序.LSP
单独提取图层程序.
把面积写在图上.lsp
文字对齐程序.lsp
直接在图上写出这个范围的面积.LSP
自动计算面积.lsp
计算总长度的程序.lsp
调整对象XY比例.LSP

LISP安装与应用CAD命令

LISP安装与应用CAD命令
LISP CAD二次开发
LISP CAD二次开发
编写:KK /130708
ห้องสมุดไป่ตู้
LISP CAD二次开发
1
作用
高幅度提升CAD绘图效率
LISP CAD二次开发
2
一 安装 二 应用
LISP CAD二次开发安装
3
1.1 启动AutoCAD 2008,输入命令“OP”调出选项窗口,点击“文 件”在支持文件搜索路径中点“添加”如下两个路径: Z:\研发中心\产品设计部\共享软件或插件\LIPS程序\lisp Z:\研发中心\产品设计部\机构设计科(ME)\IN
5
IN CC Z AS DDI O CZ
SS GG FA RO LA Ctrl+V Windos+D E CEN INT ARC RE 面域 插入块 复制 窗口缩放 移动 标注线性 偏移 转0层 转SENSOR层 显示所有层 全倒角 旋转 打开图层 粘贴 显示桌面 删除 圆心 交点 描线 刷新 MT SC HS J M DDA S CD NN F ET X Ctrl+N Ctrl+S REC END PER Ctrl+Shift+V H+Y 编辑多行文字 缩放 填充实体 闭合 镜像 标注直径 拉伸 转DIM层 显示指定层 倒角 全连接 炸开 新建 保存 画框 端点 垂足 粘贴成块 填充网格
LISP CAD二次开发安装

1.3 命令栏中输入“ap”,调出加载/卸载应用程序,加载文件夹Z:\研发中 心\产品设计部\共享软件或插件\LIPS程序\lisp 中ACAD5013.LSP该文档。点 击启动组中“内容”。把ACAD5013.LSP和sf.VLX文件添加进去。
LISP CAD二次开发应用命令

CAD快速切换图层LISP代码

CAD快速切换图层LISP代码

CAD快速切换图层LISP代码给楼主发一个图层更改的lisp程序,按对应数字键就可以切换到相应的图层。

很方便。

0————01————OBJ2————6t3————SCETR。

8————BORDER如果这些不是你想要的图层,将lisp用笔记本打开,把里边的OBJ,6t等图层名改为你想要的就可以了。

以后要切换图层时,按相应的数字键即可。

(defun YH_chlayer (YH_layer / YH_S)(if (null (tblsearch "LAYER" YH_layer))(entmake (list'(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")(cons 2 YH_layer) ;图层名称'(70 . 0) ;图层状态'(62 . 7) ;图层颜色'(6 . "bylayer") ;图层线型)))(setq YH_S (cadr (ssgetfirst)))(if YH_S(command "CHPROP" YH_S "" "la" YH_layer "c" "bylayer" "")(setvar "clayer" YH_layer))(princ))(defun c:0 ()(YH_chlayer "0"))(defun c:1 ()(YH_chlayer "OBJ"))(defun c:2 ()(YH_chlayer "6t"))(defun c:3 ()(YH_chlayer "SCETR") )(defun c:4 ()(YH_chlayer "HIDD"))(defun c:5 ()(YH_chlayer "DIM"))(defun c:6 ()(YH_chlayer "DASH"))(defun c:7 ()(YH_chlayer "TEXT"))(defun c:8 ()(YH_chlayer "BORDER") )。

建筑电气CAD快捷lisp分享

建筑电气CAD快捷lisp分享

;打开超大图纸,将此文件直接拖入cad即可。

ree底图处理-rrr改变颜色-r1数字加减乘除-rdd递增刷(框选)-rff修改块名-rgg复制文字;;; ______________________________________;;; 名称:底图处理;;; 功能:将建筑图变成电气图;;; 命令:ree;;; ______________________________________(DEFUN C:ree()(PROMPT "\n处理底图")(SETVAR "CMDECHO" 0)(VL-LOAD-COM)(COMMAND "LAYER" "U" "*" "")(command "undo" "be")(command "fillet" "r" "0")(setq chklay (tblsearch "layer" "电"))(if (= chklay nil) (command "layer" "n" "电" "c" "3" "电" ""))(COMMAND "LAYER" "S" "电" "F" "PUB_DIM,WINDOW_TEXT,*DOOR_FIRE_TEXT,*DOOR*FIRE*IDEN,*DOOR*IDEN,DIM*IDEN""C" "251" "DOTE,*HATCH,*HATC*PATT,*HATC*SOLD,DIM_ELEV""C" "8" "*EVTR,*STAIR,家具厨卫,石材造型,厨卫,SURFACE,LVTRY,LATRINE,RAIL,DIM_SYMB,*COLU*CONC""C" "9" "*WALL*,WINDOW,*DOOR,*DOOR_FIRE,COLUMN,0,PUB_TEXT" "")(PROMPT "\r处理完毕")(command "undo" "e")(COMMAND "REGEN")(SETVAR "CMDECHO" 1)(PRINC));;; ______________________________________;;; 名称:改变颜色;;; 功能:;;; 命令:rrr;;; ______________________________________(defun c:rrr(/ c)(setq cmd (getvar "cmdecho"))(setvar "cmdecho" 0)(setq Document (vla-get-ActiveDocument (vlax-get-acad-object)))(setq Blocks (vla-get-blocks Document))(vla-StartUndoMark Document)(setq c (acad_colordlg 8))(If (progn(princ "\n请选择要更改颜色的图元:")(setq ssa (ssget)))(vlax-for Obj (vla-get-ActiveSelectionSet Document)(vl-catch-all-apply 'vla-put-color (list Obj c))(if (= "AcDbBlockReference" (vla-get-objectname Obj))(progn(vlax-for BlkObj (vla-item Blocks (vla-get-name Obj))(vl-catch-all-apply 'vla-put-color (list BlkObj c)))(if (= :vlax-true (vla-get-hasattributes Obj))(foreach AttObj (vlax-safearray->list(vlax-variant-value (vla-getattributes Obj)))(vl-catch-all-apply 'vla-put-color (list AttObj c))))))))(vla-EndUndoMark Document)(vlax-release-object Blocks)(vlax-release-object Document)(setvar "cmdecho" cmd)(princ));;; ______________________________________;;; 名称:数字加减乘除;;; 功能:将CAD数字进行加法计算,在命令行输出结果;;; 命令:r1、r2、r3、r4;;; ______________________________________;结果自动复制到剪贴板,支持天正文字、天正标高(setq GL-precision 3) ;3为计算结果保留位数自己根据需要修改;不出现对话框,直接计算命令:r1=加法r2=减法r3=乘法r4=除法(defun c:r1() (GL:jiafa))(defun c:r2() (GL:jianfa))(defun c:r3() (GL:chengfa))(defun c:r4() (GL:chufa))(defun GL:jiafa ()(GL:Galculate (GL:GetNumber "+")))(defun GL:jianfa ()(GL:Galculate (GL:GetNumber "-")))(defun GL:chengfa ()(GL:Galculate (GL:GetNumber "*")))(defun GL:chufa ()(GL:Galculate (GL:GetNumber "/")))(vl-load-com)(command "cal")(command) ;先调用cal,否则后面cal函数无法使用(setq GL-result "") ;计算结果,全局变量(setq GL-lst (list ""))(defun c:tt5(/ file)(if (not (setq file (open GL-text "r")))(progn(setq file (open GL-text "w" ))(close file))(close file))(GL-xxjsq))(defun GL-xxjsq (/ fname fn x dclid lin re file txt value reason)(if (not GL-result)(setq GL-result ""))(setq fname (vl-filename-mktemp nil nil ".dcl" ))(setq fn (open fname "w" ))(foreach x '(" xxjsq : dialog{"" label=\"阿甘CAD计算器V1.1\";"" :boxed_column{"" label=\"自动计算\";"" :row {"" :button{key=\"1\";label=\"+\";width=4;}"" :button{key=\"2\";label=\"-\";width=4;}"" :button{key=\"3\";label=\"*\";width=4;}"" :button{key=\"4\";label=\"/\";width=4;}"" }"" spacer_1;"" }"" :boxed_column{"" label=\"手动计算\";"" :row {"" :edit_box{width=35;key =\"5\";allow_accept = true;}"" :button {"" is_default = true ;"" key = \"6\" ;"" label = \"计算\" ;"" width = 4 ;"" }"" }"" spacer_1;"" :row {"" :button{key=\"11\";label=\"C↑\";width=4;}"" :button{key=\"12\";label=\"C↓\";width=4;}"" :button{key=\"8\";label=\"拾取\";width=4;}"" :button{key=\"10\";label=\"插算式\";width=4;}"" :button{key=\"7\";label=\"插结果\";width=4;}"" }"" spacer_1;"" }"" :list_box {key=\"9\";label=\"历史记录\";width=40;height=10;}"" cancel_button;""}")(princ x fn)(write-line "" fn))(close fn)(setq fn (open fname "r" ))(setq dclid (load_dialog fname))(while (or (eq (substr (setq lin (vl-string-right-trim "\" fn)" (vl-string-left-trim "(write-line \"" (read-line fn)))) 1 2) "//" ) (eq (substr lin 1 (vl-string-search " " lin)) "" ) (not (eq (substr lin (+ (vl-string-search " " lin) 1) 9) " : dialog" ))))(new_dialog (substr lin 1 (vl-string-search " " lin)) dclid)(start_list "9")(if (equal GL-lst (list ""))(progn(setq file (open GL-text "r")txt (read-line file))(while (/= txt nil)(setq GL-lst (append GL-lst (list txt)))(setq txt (read-line file)))(close file)(setq GL-lst (cdr GL-lst))(setq GL-lst (reverse GL-lst))))(mapcar 'add_list GL-lst)(end_list)(set_tile "5" GL-result)(mode_tile "5" 2)(Vlax-Invoke-Method (Vlax-Get-Or-Create-Object "WScript.Shell" ) 'Sendkeys "{End}")(action_tile "5" "(setq GL-result $Value)")(action_tile "1" "(done_dialog 1)" )(action_tile "2" "(done_dialog 2)" )(action_tile "3" "(done_dialog 3)" )(action_tile "4" "(done_dialog 4)" )(action_tile "6" "(GL:key6)")(action_tile "7" "(done_dialog 7)" )(action_tile "8" "(done_dialog 8)" )(action_tile "9" "(GL:update-edit $value $reason)")(action_tile "10" "(done_dialog 10)" )(action_tile "11" "(GL:key11)" )(action_tile "12" "(GL:key12)" )(action_tile "cancel" "(done_dialog 0)" )(setq re (start_dialog))(cond((= re 1) (GL:jiafa)(GL:update)(GL-xxjsq))((= re 2) (GL:jianfa)(GL:update)(GL-xxjsq))((= re 3) (GL:chengfa)(GL:update)(GL-xxjsq))((= re 4) (GL:chufa)(GL:update)(GL-xxjsq))((= re 7) (GL:crjswz GL-result))((= re 8) (GL:key8))((= re 10) (GL:crjswz (strcat GL-Num "=" GL-result))))(unload_dialog dclid)(close fn)(vl-file-delete fname)(princ));拾取(defun GL:key8 (/ num)(if (setq num (GL:GetNumber "+"))(progn(if (/= GL-result "")(setq GL-result (strcat GL-result "+" num))(setq GL-result (strcat GL-result num)))))(GL-xxjsq));提取数字和运算符(defun GL:GetNumber (ope / en num i regex ss text tn)(setq regex (vlax-create-object "Vbscript.RegExp")) ;引用正则表达式控件(vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写(vlax-put-property regex "Global" 1) ;全文匹配,而不是只匹配第一处(setq ss (ssget '((0 . "*TEXT,TCH_ELEVATION,DIMENSION")))) ;只拾取文字、天正标高(if ss(progn(setq i 0 Num "")(repeat (sslength ss)(setq en (ssname ss i))(setq GL-ed (entget en))(if (= "DIMENSION" (cdr (assoc 0 GL-ed))) (setq text (atof (rtos (cdr (assoc 42 GL-ed)) 2 3))) (setq text (cdr (assoc 1 GL-ed)))); 补充标注文字提取(vlax-put-property regex "Pattern" "[^0-9\\+\\-\\*\\/\\.\\(\\)]") ;匹配数字和运算符(setq text (vlax-invoke-method regex "Replace" text ""))(if (/= text "")(progn(if (= Num "") ;表达式加括号(if (wcmatch text "*`+*,*`-*,*`**,*`/*")(setq Num (strcat"(" text ")") TN nil)(setq Num text TN nil))(setq TN T))(if TN ;表达式加括号(if (wcmatch text "*`+*,*`-*,*`**,*`/*")(setq Num (strcat Num ope "(" text ")"))(setq Num (strcat Num ope text))));(if (= Num "")(setq Num text TN nil)(setq TN T));表达式不加括号;(if TN (setq Num (strcat Num ope text)));表达式不加括号))(setq i (1+ i)))))Num);计算(defun GL:Galculate (Num)(if Num(progn(if (setq GL-result (cal (strcat Num "*" "1.0"))) ;*1.0将整数转换为小数,整数只能介于-32768和32767之间(progn(setq GL-result (rtos GL-result 2 GL-precision))(set-clip-string GL-result) ;向系统剪贴板写入文字(setq GL-Num Num)(princ (strcat "\n表达式:" Num "=" GL-result " >>>>计算结果:" GL-result))(princ))(alert (strcat Num " 表达式语法错误!"))))));向系统剪贴板写入文字(defun set-clip-string (STR / HTML RESULT)(and (= (type STR) 'STR)(setq HTML (vlax-create-object "htmlfile"))(setq RESULT (vlax-invoke(vlax-get (vlax-get HTML 'PARENTWINDOW)'CLIPBOARDDATA)'SETDATA"Text"STR))(vlax-release-object HTML)));;; ______________________________________;;; 名称:递增刷(框选) 方向下上左右;;; 功能:刷文本末尾或首部的数字递增指定值;;; 命令:rdd langjs 2012.2.27;;; ______________________________________(defun c:rdd (/ a b bb box c co col cv dbak dcl_re dclname e e1 e2 en ent ent1 errsub filen fun i key kk l l1 len lst lst1 lst2 lst3msg name newlist orerr pix pt pt1 pt2 s sbak si ss ss1 ssparm st2 st3 st4 stream tempname txt1 txt2 txt3 txtlong vvswbak x y zz)(defun llt:match (pt col ssparm fun / a b c co cv e e1 e2 ent i len lst msg pix pt1 pt2 si ss ss1 x y) ; 带有刷子的ssget功能子程序; ,caoyin老大明经“拜新年“帖子提供,langjs修改(defun d_brush (col x y len / a b c)(grvecs (list col (list (- x (setq a (* len 1.5))) (- y len)) (list (- x a) (setq b (- y (* len 7.5)))) col (list (- x(setq c(* len 0.5))) y) (list (- x c) b)col (list (+ x c) y) (list (+ x c) b) col (list (+ x a) (- y len)) (list (+ x a) b) col (list (- x (setq a(* len4.5))) b) (list (+ x a) b) col (list (- x a) b) (list (- x (setq c (* len 6.5))) (- y (* len 9))) col (list (+ x a) b) (list (+ x c)(setq a (- y(* len 9)))) col (list (- x c) a)(list (- x c) (setq b (- y (* len 17)))) col (list (+ x c) a) (list (+ x c) b) col (list (- x c) (setq a(- y(* len10)))) (list (+ x c) a) col(list (- x c) (setq a (- y (* len 11)))) (list (+ x c) a) col (list (- x c) (setq a (- y (* len 13))))(list (+ x c) a) col (list (- x c) (setq a (- y (* len 14)))) (list (+ x c) a) col (list (- x c) b)(list (+ x c) b) col (list (- x c) b) (list (- x (* len 11)) (setq a (- y (* len 21.5)))) col(* len 2)) b) (list (- x(* len6.5)) a) col(list (+ x (* len 2)) b) (list (- x (* len 2.5)) a) col (list (+ x c) b) (list (+ x (* len 2)) a) col(list (- x (* len 11)) a) (list (+ x (* len 3)) a)) (list (list 1 0 0 (* len 14)) (list 0 1 0 (* len -4)) '(0 0 1 0) '(0 0 0 1))))(defun pickbox (pt / si cv)(setq si (* (/ (getvar "pickbox") (cadr (getvar "screensize"))) (getvar "viewsize") 0.5)cv (list si si 0))(list (mapcar'+ptcv) (mapcar'-ptcv)))(defun p2u (pix)(* pix (/ (getvar "viewsize") (cadr (getvar "screensize")))))(or(setq co (cadr col))(setq co 7))(or(setq col (car col))(setq col 7))(or(setq msg (car ssparm))(setq msg "\n选择目标对象: ")(setq ssparm (cadr ssparm)len (p2u 1)x (car pt)y (cadr pt))(princ msg)(while (/= (car pt1) 11)(redraw)(d_brush col x y len)(while (not (member (car (setq pt1 (grread t 12 2))) '(3 11)))(setq pt1 (cadr pt1))(if (vl-consp pt1)(progn(if (> (distance pt1 pt) (p2u (* 0.0001 (car (getvar "screensize")))))(progn(redraw)(setq len (p2u 1)x (car pt)y (cadr pt))(d_brush col x y len)(setq pt pt1))))))(redraw)(if (and(= (car pt1) 3)(princ msg)(not (setq ss1 (apply'ssget(append'("_c")(pickbox (cadr pt1))(list ssparm))))))(progn(princ "指定对角点: ")(setq pt1 (list (caadr pt1) (cadadr pt1)))(while (not (member (car (setq pt2 (grread t 12 1))) '(3 11)))(setq pt2 (list (caadr pt2) (cadadr pt2)))(if (vl-consp pt1)(progn(if (> (distance pt2 pt) (p2u (* 0.0001 (car (getvar "screensize")))))(progn(redraw)(setq len (p2u 1)x (car pt)y (cadr pt)co (abs co))(if (> (car pt1) (car pt2))(setq co (- co)))(d_brush col x y len)(grvecs (list co pt1 (list (car pt1) (cadr pt2)) co pt2 (list (car pt1) (cadr pt2)) co pt2 (list (car pt2)(cadr pt1)) co pt1(list (car pt2) (cadr pt1))))(setq pt pt2ss1 (ssget (if (minusp co)"_c""_w") pt1 pt2 ssparm)))))))))(orss(setq ss (ssadd)))(if ss1(progn(setq lst '())(repeat (setq i (sslength ss1))(setq e (ssname ss1 (setq i (1- i))))(setq ent (entget e))(setq pt1 (cdr (assoc 10 ent)))(setq lst (cons (list pt1 e) lst)))(setq lst (vl-sort lst (function (lambda (e1 e2) ; 框选文本先由上到下排序(其它情况自己修改)(> (cadr (car e2)) (cadr (car e1)))))))(setq lst (vl-sort lst (function (lambda (e1 e2) ; 框选文本后由左到右排序(其它情况自己修改)(< (car (car e1)) (if (and(>= (car (car e2)) (- (car (car e1)) txtlong))(<= (car (car e2)) (+ (car (car e1)) txtlong)))(car (car e1))(car (car e2))))))))(setq lst (reverse lst))(repeat (setq i (length lst))(setq e (cadr (nth (setq i (1- i))lst)))(ssadd e ss)(redraw e 3)(applyfun(list e))))(setq ss1 nil))(redraw)ss)(defun llt:entsel (pt col / a b c col en ent len pix pt x y) ; 带有刷子的entsel功能子程序,caoyin老大提供(defun p2u (pix)(* pix (/ (getvar "viewsize") (cadr (getvar "screensize")))))(defun d_brush (col x y len / a b c)(grvecs (list col (list (- x (setq a (* len 1.5))) (- y len)) (list (- x a) (setq b (- y (* len 7.5)))) col (list (- x(setq c(* len 0.5))) y) (list (- x c) b)col (list (+ x c) y) (list (+ x c) b) col (list (+ x a) (- y len)) (list (+ x a) b) col (list (- x (setq a(* len4.5))) b) (list (+ x a) b) col (list (- x a) b) (list (- x (setq c (* len 6.5))) (- y (* len 9))) col (list (+ x a) b) (list (+ x c)(setq a (- y(* len 9)))) col (list (- x c) a)(list (- x c) (setq b (- y (* len 17)))) col (list (+ x c) a) (list (+ x c) b) col (list (- x c) (setq a(- y(* len10)))) (list (+ x c) a) col(list (- x c) (setq a (- y (* len 11)))) (list (+ x c) a) col (list (- x c) (setq a (- y (* len(list (+ x c) a) col (list (- x c) (setq a (- y (* len 14)))) (list (+ x c) a) col (list (- x c) b)(list (+ x c) b) col (list (- x c) b) (list (- x (* len 11)) (setq a (- y (* len 21.5)))) col (list (- x(* len 2)) b) (list (- x(* len6.5)) a) col(list (+ x (* len 2)) b) (list (- x (* len 2.5)) a) col (list (+ x c) b) (list (+ x (* len 2)) a) col(list (- x (* len 11)) a) (list (+ x (* len 3)) a)) (list (list 1 0 0 (* len 14)) (list 0 1 0 (* len -4)) '(0 0 1 0) '(0 0 0 1))))(redraw)(setq len (p2u 1)x (car pt)y (cadr pt))(d_brush col x y len)(while (not (member (car (setq pt1 (grread t 12 2))) '(3 11)))(setq pt1 (cadr pt1))(if (vl-consp pt1)(progn(orpt(setq pt pt1))(setq x (car pt)y (cadr pt))(if (> (distance pt1 pt) (p2u (* 0.0001 (car (getvar "screensize")))))(progn(redraw)(setq len (p2u 1)x (car pt)y (cadr pt))(d_brush col x y len)(setq pt pt1))))))(redraw)(and(= (car pt1) 3)(vl-consp (cadr pt1))(setq en (nentselp (cadr pt1))))(setq ent (car en))(setq pt1 (cadr pt1))(if (cadddr en)(setq name (cadddr en)))ent)(defun errsub (msg)(if (not (member msg '("console break" "Function cancelled""quit / exit abort" "")))(princ (strcat "\n" msg))) ; if(redraw)(setq *error* orerr)(prin1))(defun show_list (key newlist)(start_list key)(mapcar'add_listnewlist)(end_list))(defun jys002 (x / ent txt3) ; 尾部框(if (and(setq ent (entget x))(member (cdr (assoc 0 ent)) '("TEXT" "MTEXT")))(progn(setq kk (jys003 kk sbak))(if (= zz 0)(setq txt3 kk)(setq txt3 (strcat txt2 kk)))(entmod (subst(cons 1 txt3)(assoc 1 ent)ent)))))(defun jys003 (st2 sbak / l l1 s st3 st4) ; 处理尾部数字(setq st3 st2s "0"st4 ""l (strlen st2))(while (eq s "0")(setq s (substr st3 1 1)st3 (substr st3 2)st4 (if (eq s "0")(strcat st4 s)st4))) ; 将首位是0的数字分离出来(setq st2 (atoi st2)st2 (+ st2 sbak)st2 (itoa st2)st2 (strcat st4 st2)l1 (strlen st2)s (substr st2 1 1))(if (and(= s "0")(> l1 l))(setq st2 (substr st2 2))) ; 处理了形如A09变为A10的问题st2)(defun rdds001 (lst vvs / e)(setq e (nth (atoi vvs) lst))(cons e (vl-remove e lst)))(defun rdds002 ()(show_list "e01" lst1)(show_list "e02" lst2)(show_list "e03" lst3))(setvar "cmdecho" 0)(vl-load-com)(setq orerr *error*)(setq *error* errsub)(while (progn(if (setq wbak (vl-registry-read "HKEY_CURRENT_USER\\software\\TH++" "wbak")) (setq lst1 (cons wbak (vl-remove wbak '("尾部" ))))(setq lst1 '("尾部")))(if (setq sbak (vl-registry-read "HKEY_CURRENT_USER\\software\\TH++" "sbak"))(setq lst2 (cons sbak (vl-remove sbak '( "0" "1" "2""3" "4""5" "6""7" "8""9" "10""15" "20""30" "40""50"))))(setq lst2 '( "0" "1" "2""3" "4""5" "6""7" "8""9" "10""15" "20""30" "40""50")))(if (setq dbak (vl-registry-read "HKEY_CURRENT_USER\\software\\TH++" "dbak"))(setq lst3 (cons dbak (vl-remove dbak '("窗选"))))(setq lst3 '( "窗选")))(initget "S ")(if (= (setq ent (nentsel (strcat "\n选择起始文字[设置(S)]:<" (car lst1) "加" (setq sbak (car lst2))">")))"S")(progn(setq dclname (cond((setq tempname (vl-filename-mktemp "rdds.dcl")filen (open tempname "w"))(foreach stream '("\n" "rdds1:dialog {\n"" label = \"递增刷v3.0\" ;\n" " :boxed_column {\n"" label = \"设置\" ;\n" " :row {\n"" :text {label = \" 递增位置\" ; }\n"" :text {label = \"递增步长\" ; }\n"" :text {label = \"目标文字\" ; }\n" " }\n"" :row {\n" " :popup_list { key = \"e01\" ; edit_width = 7 ; }\n"" :popup_list { key = \"e02\" ; edit_width = 7 ; }\n"" :popup_list { key = \"e03\" ; edit_width = 7 ; }\n"" }\n" " }\n"" ok_cancel;\n" " }\n")(princ stream filen))(close filen)tempname)))(setq dcl_re (load_dialog dclname))(if (not (new_dialog "rdds1" dcl_re))(exit))(show_list "e01" lst1)(show_list "e02" lst2)(show_list "e03" lst3)(action_tile "e01" "(setq lst1 (rdds001 lst1 $value))(rdds002) ") ; 位置(action_tile "e02" "(setq lst2 (rdds001 lst2 $value))(rdds002)") ; 步长(action_tile "e03" "(setq lst3 (rdds001 lst3 $value))(rdds002)") ; 对象(action_tile "accept" "(setq dcl_pt (done_dialog 1)) ") ; 确定(setq bb (start_dialog))(if (= bb 1)(progn(vl-registry-write "HKEY_CURRENT_USER\\software\\TH++" "wbak" (car lst1))(vl-registry-write "HKEY_CURRENT_USER\\software\\TH++" "sbak" (car lst2))(vl-registry-write "HKEY_CURRENT_USER\\software\\TH++" "dbak" (car lst3)) ))(unload_dialog dcl_re)(vl-file-delete dclname)))(or(= ent "S")(null ent)(not (member (cdr (assoc 0 (entget (car ent)))) '("TEXT" "MTEXT""ATTRIB")))))(if (= 52 (getvar "errno"))(vl-exit-with-error "")))(setq pt1 (cadr ent))(setq txt1 (entget (car ent)))(setq box (textbox (list (assoc 1 txt1) (assoc 40 txt1) (assoc 7 txt1)))) ; 文本框坐标(setq txtlong (/ (- (car (cadr box)) (car (car box))) 2))(setq txt1 (cdr (assoc 1 txt1)))(setq sbak (car lst2))(setq sbak (atoi sbak))(if (= (car lst1) "尾部")(progn(setq zz (strlen txt1))(while (and(>= zz 1)(or(> (atoi (substr txt1 zz 1)) 0)(= (substr txt1 zz 1) "0")))(setq zz (- zz 1)))(setq kk (substr txt1 (+ zz 1)))(if (/= zz 0)(setq txt2 (substr txt1 1 zz)))(command ".UNDO" "BE")(if (= (car lst3) "窗选")(llt:match pt1 '(2 7) (list (strcat "\n选择目标文字:<尾部加" (itoa sbak) ">") '((0 . "*TEXT"))) '(lambda (x /)(jys002 x)))(while t(princ (strcat "\n选择目标文字:<尾部加" (itoa sbak) ">"))(setq name nil)(if (and(setq ent (llt:entsel pt1 2))(setq ent (entget ent))(member (cdr (assoc 0 ent)) '("TEXT" "MTEXT""ATTRIB")))(progn(setq kk (jys003 kk sbak))(if (= zz 0)(setq txt3 kk)(setq txt3 (strcat txt2 kk)))(if name(if (and(setq ent1 (entget (car name)))(= (cdr (assoc 0 ent1)) "DIMENSION"))(entmod (subst(cons 1 txt3)(assoc 1 ent1)ent1))(progn(entmod (subst(cons 1 txt3)(assoc 1 ent)ent))(entupd (car name))))(entmod (subst(cons 1 txt3)(assoc 1 ent)ent))))(vl-exit-with-error ""))))(command ".UNDO" "E")))(setq *error* orerr)(princ));;; ______________________________________;;; 名称:修改块名;;; 功能:修改块名;;; 命令:rff;;; ______________________________________(defun C:rff (/ *APP *DOC EntNam NewNam)(vl-load-com)(setq *APP (vlax-get-acad-object))(setq *DOC (vla-get-activeDocument *APP))(if (setq EntNam (car (entsel "\n请选择块: ")))(if (setq NewNam (getstring "\n请输入新块名<字符规范,不要重名>: ")) (change-block-name EntNam NewNam)(princ "\n你没有输入新块名!"))(princ "\n你没有选择物体!"))(princ));;;改块名程序(defun change-block-name (EntNam NewNam / obj blocks BlkNam block)(setq obj (vlax-ename->vla-object EntNam))(setq blocks (vla-get-blocks *DOC))(if (=(vla-get-objectname obj) "AcDbBlockReference")(if (tblsearch "block" NewNam)(princ "\n和已有块名重复!")(progn(setq BlkNam (vla-get-name obj))(setq block (vla-item blocks BlkNam))(vla-put-name block NewNam)(if (= (substr BlkNam 1 2) "*U")(progn(princ "\n这是一个匿名块.")(vla-auditinfo *Doc :vlax-true)(vla-put-name block NewNam)))(princ "\n块名已经更改成"")(princ NewNam)(princ """)))(princ "\n所选物体不是块!")));;; ______________________________________;;; 名称:复制文字;;; 功能:复制文字;;; 命令:rgg;;; ______________________________________(defun C:rgg (/ blkname);;;功能:向系统剪贴板写入文字;调用方法( SET-CLIP-STRING 要写入剪切板的内容) *(vl-load-com)(defun SETCLIPTEXT (STR / HTML RESULT)(and (= (type STR) 'STR)(setq HTML (vlax-create-object "htmlfile"))(setq RESULT (vlax-invoke(vlax-get (vlax-get HTML 'PARENTWINDOW)'CLIPBOARDDATA)'SETDATA"Text"STR))(vlax-release-object HTML)))(if (setq ent (car(entsel "\n请选择CAD文字,复制块名到系统剪切板")))(progn(setq blkname (cdr(assoc 1 (entget ent))))(SETCLIPTEXT blkname))(princ"\错误提示--请按要求选择")));;==============实体对齐=================(defun process (amode / apnt apnt_x apnt_y count objname vlaxobj MinPoint MaxPointminext maxext ext_l ext_r ext_m ext_vt ext_vd ext_vm tpnt)(setq oldcmdecho (getvar "cmdecho"))(setvar "cmdecho" 0)(setq selobjs (ssget))(if (or (not selobjs) (= (sslength selobjs) 1))(princ "\n你必须选定两个或两个以上的对象"))(initget 1)(setq apnt (getpoint "\n选择对齐点:"))(setq apnt_x (car apnt)apnt_y (cadr apnt))(vl-load-com)(setq count 0)(repeat (sslength selobjs)(setq objname (ssname selobjs count))(setq vlaxobj (vlax-ename->vla-object objname))(setq MinPoint (vlax-make-variant))(setq MaxPoint (vlax-make-variant))(vla-GetBoundingBox vlaxobj 'MinPoint 'MaxPoint)(setq minext (vlax-safearray->list MinPoint))(setq maxext (vlax-safearray->list MaxPoint))(setq ext_l (car minext))(setq ext_r (car maxext))(setq ext_m (+ (/ (abs (- ext_l ext_r)) 2) ext_l))(setq ext_vd (cadr minext))(setq ext_vt (cadr maxext))(setq ext_vm (+ (/ (abs (- ext_vt ext_vd)) 2) ext_vd))(cond((= amode "HL") (setq tpnt (list ext_l apnt_y)))((= amode "HM") (setq tpnt (list ext_m apnt_y)))((= amode "HR") (setq tpnt (list ext_r apnt_y)))((= amode "VT") (setq tpnt (list apnt_x ext_vt)))((= amode "VM") (setq tpnt (list apnt_x ext_vm)))((= amode "VD") (setq tpnt (list apnt_x ext_vd))))(if tpnt (command "_move" objname "" "non" tpnt "non" apnt))(setq count (1+ count)))(setvar "cmdecho" oldcmdecho))(defun c:rdq ()(if (> (setq dcl_id (load_dialog (setq Dcl_File (Write_Dcl_dq)))) 0) (progn(vl-file-delete Dcl_File);加载后删除DCL文件(if (new_dialog "dq" dcl_id "")(progn(action_tile "hl" "(done_dialog 1)")(action_tile "hm" "(done_dialog 2)")(action_tile "hr" "(done_dialog 3)")(action_tile "vt" "(done_dialog 4)")(action_tile "vm" "(done_dialog 5)")(action_tile "vd" "(done_dialog 6)")(action_tile "cancel" "(done_dialog 0)")(setq re (start_dialog)))。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Cad插件面板快捷键LISP源码实例Cad插件面板如下:面板快捷键效果如下:下边是源码:(DEFUN G ETTOOLS P ATH (/ TMP)(SETQ TMP"C:\\W INDOWS\\K_COM.TXT"))(DEFUN K_KJJ(/ DCL_ID D CL_F ILE D IALOG_R ETURN KEYS KEY LST1 FFK TMP UI% XJ E1 B A FF ) (VL-LOAD-COM)(SETQ DCL_ID (LOAD_DIALOG (SETQ D CL_F ILE (W RITE_D CL_F ORM1))))(VL-FILE-DELETE D CL_F ILE)(SETQ D IALOG_R ETURN 2)(WHILE (>D IALOG_R ETURN 1)(NEW_DIALOG "F ORM1" DCL_ID)(SETQ KEYS '("T EXT1""T EXT2""T EXT3""T EXT4""T EXT5""T EXT6""T EXT7""T EXT8" "T EXT9""T EXT10""T EXT11""T EXT12""T EXT13""T EXT14""T EXT15""T EXT16""T EXT17""T EXT18" "T EXT19""T EXT20""T EXT21""T EXT22""T EXT23""T EXT24""T EXT25""T EXT26""T EXT27""T EXT28" "T EXT29""T EXT30""T EXT31""T EXT32""T EXT33""T EXT34""T EXT35""T EXT36""T EXT37""T EXT38" "T EXT39""T EXT40""T EXT41""T EXT42""T EXT43""T EXT44""T EXT45""T EXT46""T EXT47""T EXT48" "T EXT49""T EXT50""T EXT51""T EXT52""T EXT53""T EXT54""T EXT55""T EXT56""T EXT57""T EXT58" "T EXT59""T EXT60""T EXT61""T EXT62""T EXT63""T EXT64""T EXT65""T EXT66""T EXT67""T EXT68" "T EXT69""T EXT70""T EXT71""T EXT72""T EXT73""T EXT74""T EXT75""T EXT76""T EXT77""T EXT78" "T EXT79""T EXT80""T EXT81""T EXT82""T EXT83""T EXT84""T EXT85""T EXT86""T EXT87""T EXT88" "T EXT89""T EXT90""T EXT91""T EXT92""T EXT93""T EXT94""T EXT95""T EXT96""T EXT97""T EXT98" "T EXT99""T EXT100""ACCEPT""CANCEL"))(FOREACH KEY KEYS(IF (EVAL (READ KEY ))(SET_TILE KEY (EVAL (READ KEY ))))(ACTION_TILE KEY "(A CTION_F ORM1_K EYS $KEY )"))(SETQ LST1'())(IF(SETQ FFK(OPEN (G ETTOOLS P ATH)"R"))(PROGN(WHILE (SETQ TMP (READ-LINE FFK))(SETQ LST1(CONS TMP LST1)))(CLOSE FFK)(SETQ LST1(REVERSE LST1))(SETQ UI%0)(REPEAT (LENGTH LST1)(SETQ XJ (NTH UI% LST1))(SETQ E1(VL-STRING-POSITION (ASCII ",") XJ)) (SETQ B (SUBSTR XJ 1 E1))(SETQ A (SUBSTR XJ (+ E12)))(SET_TILE (STRCAT "T EXT"(ITOA (+ UI%1))) B) (SETQ UI%(+1 UI%))))(PROGN;;;图层显示(SET_TILE "T EXT1""LL")(SET_TILE "T EXT2""LK")(SET_TILE "T EXT3""LP")(SET_TILE "T EXT4""LY")(SET_TILE "T EXT5""LO")(SET_TILE "T EXT6""LU")(SET_TILE "T EXT7""ACC")(SET_TILE "T EXT8""L0")(SET_TILE "T EXT9""CV")(SET_TILE "T EXT10""CY")(SET_TILE "T EXT11""CD")(SET_TILE "T EXT12""VV")(SET_TILE "T EXT13""VH")(SET_TILE "T EXT14""VA")(SET_TILE "T EXT15""KM")(SET_TILE "T EXT16""FS")(SET_TILE "T EXT17""LC")(SET_TILE "T EXT18""SZC")(SET_TILE "T EXT19""SXC")(SET_TILE "T EXT20""SDC");;;文本属性(SET_TILE "T EXT21""W2A")(SET_TILE "T EXT22""A2W")(SET_TILE "T EXT23""CA")(SET_TILE "T EXT24""ZX")(SET_TILE "T EXT25""C1")(SET_TILE "T EXT26""WHH")(SET_TILE "T EXT27""WW")(SET_TILE "T EXT28""WEE")(SET_TILE "T EXT29""WQQ")(SET_TILE "T EXT30""WX")(SET_TILE "T EXT31""WA")(SET_TILE "T EXT32""FW")(SET_TILE "T EXT33""WWS")(SET_TILE "T EXT35""YQ") (SET_TILE "T EXT36""YW") (SET_TILE "T EXT37""WY") (SET_TILE "T EXT38""ZS") (SET_TILE "T EXT39""XS") (SET_TILE "T EXT40""DZ");;;标注制图(SET_TILE "T EXT41""SS") (SET_TILE "T EXT42""QK") (SET_TILE "T EXT43""ER") (SET_TILE "T EXT44""OO") (SET_TILE "T EXT45""XX") (SET_TILE "T EXT46""FF") (SET_TILE "T EXT47""CC") (SET_TILE "T EXT48""CII") (SET_TILE "T EXT49""FL") (SET_TILE "T EXT50""FC") (SET_TILE "T EXT51""EEE") (SET_TILE "T EXT52""R2") (SET_TILE "T EXT53""RC") (SET_TILE "T EXT54""KL") (SET_TILE "T EXT55""TT") (SET_TILE "T EXT56""DF") (SET_TILE "T EXT57""JJ") (SET_TILE "T EXT58""L J") (SET_TILE "T EXT59""ZZ") (SET_TILE "T EXT60""Z0") ;;;专业制图(SET_TILE "T EXT61""YU") (SET_TILE "T EXT62""DP") (SET_TILE "T EXT63""HH") (SET_TILE "T EXT64""K0") (SET_TILE "T EXT65""ZC") (SET_TILE "T EXT66""ZD") (SET_TILE "T EXT67""JM") (SET_TILE "T EXT68""HF") (SET_TILE "T EXT69""HFA") (SET_TILE "T EXT70""HO") (SET_TILE "T EXT71""YK") (SET_TILE "T EXT72""FHM") (SET_TILE "T EXT73""HFS") (SET_TILE "T EXT74""CB")(SET_TILE "T EXT76""DK")(SET_TILE "T EXT77""TYC")(SET_TILE "T EXT78""D4")(SET_TILE "T EXT79""JC")(SET_TILE "T EXT80""JT");;;计量统计(SET_TILE "T EXT81""KI")(SET_TILE "T EXT82""BW")(SET_TILE "T EXT83""RK")(SET_TILE "T EXT84""KJ")(SET_TILE "T EXT85""KS")(SET_TILE "T EXT86""JK")(SET_TILE "T EXT87""S2E")(SET_TILE "T EXT88""XM")(SET_TILE "T EXT89""JMM")(SET_TILE "T EXT90""T2E")(SET_TILE "T EXT91""TW")(SET_TILE "T EXT92""MJE")(SET_TILE "T EXT93""DDE")(SET_TILE "T EXT94""WJY")(SET_TILE "T EXT95""WJX")(SET_TILE "T EXT96""ORE")(SET_TILE "T EXT97""RQ")(SET_TILE "T EXT98""YM")(SET_TILE "T EXT99""WK")(SET_TILE "T EXT100""A3")));--<--<-对话框初始化完成-<--<-- (SETQ D IALOG_R ETURN (START_DIALOG))) (SETQ FF (OPEN (G ETTOOLS P ATH)"W")) ;;;图层显示(WRITE-LINE (STRCAT TX1",""K_LL") FF) (WRITE-LINE (STRCAT TX2",""K_LK") FF) (WRITE-LINE (STRCAT TX3",""K_LP") FF) (WRITE-LINE (STRCAT TX4",""K_LY") FF) (WRITE-LINE (STRCAT TX5",""K_LO") FF) (WRITE-LINE (STRCAT TX6",""K_LU") FF) (WRITE-LINE (STRCAT TX7",""K_ACC") FF) (WRITE-LINE (STRCAT TX8",""K_L0") FF) (WRITE-LINE (STRCAT TX9",""K_CV") FF) (WRITE-LINE (STRCAT TX10",""K_CY") FF) (WRITE-LINE (STRCAT TX11",""K_CD") FF)(WRITE-LINE (STRCAT TX13",""K_VH") FF) (WRITE-LINE (STRCAT TX14",""K_VA") FF) (WRITE-LINE (STRCAT TX15",""K_KM") FF) (WRITE-LINE (STRCAT TX16",""K_FS") FF) (WRITE-LINE (STRCAT TX17",""K_LC") FF) (WRITE-LINE (STRCAT TX18",""K_SZC") FF) (WRITE-LINE (STRCAT TX19",""K_SXC") FF) (WRITE-LINE (STRCAT TX20",""K_SDC") FF) ;;;文本属性(WRITE-LINE (STRCAT TX21",""K_W2A") FF) (WRITE-LINE (STRCAT TX22",""K_A2W") FF) (WRITE-LINE (STRCAT TX23",""K_CA") FF) (WRITE-LINE (STRCAT TX24",""K_ZX") FF) (WRITE-LINE (STRCAT TX25",""K_C1") FF) (WRITE-LINE (STRCAT TX26",""K_WHH") FF) (WRITE-LINE (STRCAT TX27",""K_WW") FF) (WRITE-LINE (STRCAT TX28",""K_WEE") FF) (WRITE-LINE (STRCAT TX29",""K_WQQ") FF) (WRITE-LINE (STRCAT TX30",""K_WX") FF) (WRITE-LINE (STRCAT TX31",""K_WA") FF) (WRITE-LINE (STRCAT TX32",""K_FW") FF) (WRITE-LINE (STRCAT TX33",""K_WWS") FF) (WRITE-LINE (STRCAT TX34",""K_DQ") FF) (WRITE-LINE (STRCAT TX35",""K_YQ") FF) (WRITE-LINE (STRCAT TX36",""K_YW") FF) (WRITE-LINE (STRCAT TX37",""K_WY") FF) (WRITE-LINE (STRCAT TX38",""K_ZS") FF) (WRITE-LINE (STRCAT TX39",""K_XS") FF) (WRITE-LINE (STRCAT TX40",""K_DZ") FF) ;;;标注制图(WRITE-LINE (STRCAT TX41",""K_SS") FF) (WRITE-LINE (STRCAT TX42",""K_QK") FF) (WRITE-LINE (STRCAT TX43",""K_ER") FF) (WRITE-LINE (STRCAT TX44",""K_OO") FF) (WRITE-LINE (STRCAT TX45",""K_XX") FF) (WRITE-LINE (STRCAT TX46",""K_FF") FF) (WRITE-LINE (STRCAT TX47",""K_CC") FF) (WRITE-LINE (STRCAT TX48",""K_CII") FF) (WRITE-LINE (STRCAT TX49",""K_FL") FF) (WRITE-LINE (STRCAT TX50",""K_FC") FF) (WRITE-LINE (STRCAT TX51",""K_EEE") FF) (WRITE-LINE (STRCAT TX52",""K_R2") FF) (WRITE-LINE (STRCAT TX53",""K_RC") FF)(WRITE-LINE (STRCAT TX55",""K_TT") FF) (WRITE-LINE (STRCAT TX56",""K_DF") FF) (WRITE-LINE (STRCAT TX57",""K_JJ") FF) (WRITE-LINE (STRCAT TX58",""K_L J") FF) (WRITE-LINE (STRCAT TX59",""K_ZZ") FF) (WRITE-LINE (STRCAT TX60",""K_Z0") FF) ;;;专业制图(WRITE-LINE (STRCAT TX61",""K_YU") FF) (WRITE-LINE (STRCAT TX62",""K_DP") FF) (WRITE-LINE (STRCAT TX63",""K_HH") FF) (WRITE-LINE (STRCAT TX64",""K_K0") FF) (WRITE-LINE (STRCAT TX65",""K_ZC") FF) (WRITE-LINE (STRCAT TX66",""K_ZD") FF) (WRITE-LINE (STRCAT TX67",""K_JM") FF) (WRITE-LINE (STRCAT TX68",""K_HF") FF) (WRITE-LINE (STRCAT TX69",""K_HFA") FF) (WRITE-LINE (STRCAT TX70",""K_HO") FF) (WRITE-LINE (STRCAT TX71",""K_YK") FF) (WRITE-LINE (STRCAT TX72",""K_FHM") FF) (WRITE-LINE (STRCAT TX73",""K_HFS") FF) (WRITE-LINE (STRCAT TX74",""K_CB") FF) (WRITE-LINE (STRCAT TX75",""K_CL") FF) (WRITE-LINE (STRCAT TX76",""K_DK") FF) (WRITE-LINE (STRCAT TX77",""K_TYC") FF) (WRITE-LINE (STRCAT TX78",""K_D4") FF) (WRITE-LINE (STRCAT TX79",""K_JC") FF) (WRITE-LINE (STRCAT TX80",""K_JT") FF);;;统计发布(WRITE-LINE (STRCAT TX81",""K_KI") FF) (WRITE-LINE (STRCAT TX82",""K_BW") FF) (WRITE-LINE (STRCAT TX83",""K_RK") FF) (WRITE-LINE (STRCAT TX84",""K_KJ") FF) (WRITE-LINE (STRCAT TX85",""K_KS") FF) (WRITE-LINE (STRCAT TX86",""K_JK") FF) (WRITE-LINE (STRCAT TX87",""K_S2E") FF) (WRITE-LINE (STRCAT TX88",""K_XM") FF) (WRITE-LINE (STRCAT TX89",""K_JMM") FF) (WRITE-LINE (STRCAT TX90",""K_T2E") FF) (WRITE-LINE (STRCAT TX91",""K_TW") FF) (WRITE-LINE (STRCAT TX92",""K_MJE") FF) (WRITE-LINE (STRCAT TX93",""K_DDE") FF) (WRITE-LINE (STRCAT TX94",""K_WJY") FF)(WRITE-LINE (STRCAT TX96",""K_ORE") FF)(WRITE-LINE (STRCAT TX97",""K_RQ") FF)(WRITE-LINE (STRCAT TX98",""K_YM") FF)(WRITE-LINE (STRCAT TX99",""K_WK") FF)(WRITE-LINE (STRCAT TX100",""K_A3") FF)(CLOSE FF)(KKKKJ)(UNLOAD_DIALOG DCL_ID)(PRINC))(DEFUN KKKKJ(/ LST FFF TMP UI% XJ E1)(SETQ LST '())(IF(SETQ FFF(OPEN (G ETTOOLS P ATH)"R")) (PROGN(WHILE (SETQ TMP (READ-LINE FFF))(SETQ LST (CONS TMP LST)))(CLOSE FFF)))(SETQ UI%0)(REPEAT (LENGTH LST)(SETQ XJ (NTH UI%LST))(SETQ E1(VL-STRING-POSITION (ASCII ",")XJ))(SETQ B (SUBSTR XJ 1 E1))(SETQ A (SUBSTR XJ (+ E12)))(GKKJ)(SETQ UI%(+1 UI%))))(DEFUN GKKJ ()(EVAL(READ(STRCAT "(DEFUN C:"B"()(VLA-SENDCOMMAND (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT))\"("A")\N\"))")))(PRINC))(KKKKJ)(DEFUN A CTION_F ORM1_K EYS (KEY / TXI%);全部控件的点击动作触发(COND((OR(= KEY "ACCEPT")(= KEY "CANCEL"))(G ET_F ORM1_D ATA)(SETQ TXI%1)(WHILE (< TXI%200)(SET (READ (STRCAT "TX"(ITOA TXI%)))(GET_TILE (STRCAT "T EXT"(ITOA TXI%))))(SETQ TXI%(+ TXI%1)))(DONE_DIALOG 1)))(PRINC))(DEFUN G ET_F ORM1_D ATA(/ KEY)(FOREACH KEY KEYS(SET (READ KEY )(GET_TILE KEY))));每个控件都赋给一个变量用于下次开启初始化(DEFUN W RITE_D CL_F ORM1(/D CL_F ILE FILE STR)(SETQ D CL_F ILE (VL-FILENAME-MKTEMP NIL NIL ".D CL"))(SETQ FILE (OPEN D CL_F ILE "W"))(FOREACH STR '("KK_BOX:EDIT_BOX { HEIGHT =0.1; HORIZONTAL_MARGIN = NONE ;VERTICAL_MARGIN = NONE ; WIDTH =0.1;}""F ORM1:DIALOG{LABEL =\"快捷键设置\";"":ROW{:BOXED_COLUMN { LABEL =\"图层显示\";"":KK_BOX{KEY =\"T EXT1\"; LABEL =\"框显图层\";}"":KK_BOX{KEY =\"T EXT2\"; LABEL =\"全显图层\";}"":KK_BOX{KEY =\"T EXT3\"; LABEL =\"凸显图层\";}"":KK_BOX{KEY =\"T EXT4\"; LABEL =\"框隐图层\";}"":KK_BOX{KEY =\"T EXT5\"; LABEL =\"锁定图层\";}"":KK_BOX{KEY =\"T EXT7\"; LABEL =\"按色归层\";}" ":KK_BOX{KEY =\"T EXT8\";LABEL =\"调当前层\";}" ":KK_BOX{KEY =\"T EXT9\";LABEL =\"按色显示\";}" ":KK_BOX{KEY =\"T EXT10\";LABEL =\"按色隐藏\";}" ":KK_BOX{KEY =\"T EXT11\";LABEL =\"按色选择\";}" ":KK_BOX{KEY =\"T EXT12\";LABEL =\"框显图元\";}" ":KK_BOX{KEY =\"T EXT13\";LABEL =\"框隐图元\";}" ":KK_BOX{KEY =\"T EXT14\";LABEL =\"全显图元\";}" ":KK_BOX{KEY =\"T EXT15\";LABEL =\"筛选块名\";}" ":KK_BOX{KEY =\"T EXT16\";LABEL =\"筛选属性\";}" ":KK_BOX{KEY =\"T EXT17\";LABEL =\"图层改色\";}" ":KK_BOX{KEY =\"T EXT18\"; LABEL =\"刷中线层\";}" ":KK_BOX{KEY =\"T EXT19\"; LABEL =\"刷虚线层\";}" ":KK_BOX{KEY =\"T EXT20\";LABEL =\"刷当前层\";}}" ":BOXED_COLUMN{ LABEL =\"文本属性\";"":KK_BOX{KEY =\"T EXT21\";LABEL =\"字转属性\";}" ":KK_BOX{KEY =\"T EXT22\";LABEL =\"属性转字\";}" ":KK_BOX{KEY =\"T EXT23\";LABEL =\"超强复制\";}" ":KK_BOX{KEY =\"T EXT24\";LABEL =\"增序替换\";}" ":KK_BOX{KEY =\"T EXT25\";LABEL =\"加一复制\";}" ":KK_BOX{KEY =\"T EXT26\";LABEL =\"文字高度\";}" ":KK_BOX{KEY =\"T EXT27\";LABEL =\"文字排版\";}" ":KK_BOX{KEY =\"T EXT28\";LABEL =\"文字左齐\";}" ":KK_BOX{KEY =\"T EXT29\";LABEL =\"文字右齐\";}" ":KK_BOX{KEY =\"T EXT30\";LABEL =\"文字底齐\";}" ":KK_BOX{KEY =\"T EXT31\";LABEL =\"文字线齐\";}" ":KK_BOX{KEY =\"T EXT32\";LABEL =\"文字查找\";}" ":KK_BOX{KEY =\"T EXT33\";LABEL =\"批改文字\";}" ":KK_BOX{KEY =\"T EXT34\";LABEL =\"标注对齐\";}" ":KK_BOX{KEY =\"T EXT35\";LABEL =\"引线对齐\";}" ":KK_BOX{KEY =\"T EXT36\";LABEL =\"引线字中\";}" ":KK_BOX{KEY =\"T EXT37\";LABEL =\"引线字上\";}" ":KK_BOX{KEY =\"T EXT38\";LABEL =\"中线比例\";}" ":KK_BOX{KEY =\"T EXT39\";LABEL =\"虚线比例\";}" ":KK_BOX{KEY =\"T EXT40\";LABEL =\"标注原值\";}}" ":BOXED_COLUMN{ LABEL =\"标准制图\";"":KK_BOX{KEY =\"T EXT41\"; LABEL =\"默认设置\";}" ":KK_BOX{KEY =\"T EXT42\"; LABEL =\"清空零线\";}" ":KK_BOX{KEY =\"T EXT43\";LABEL =\"分类删除\";}" ":KK_BOX{KEY =\"T EXT44\";LABEL =\"双偏保中\";}" ":KK_BOX{KEY =\"T EXT45\";LABEL =\"双偏删中\";}" ":KK_BOX{KEY =\"T EXT46\";LABEL =\"多重圆角\";}" ":KK_BOX{KEY =\"T EXT47\";LABEL =\"定距复制\";}"":KK_BOX{KEY =\"T EXT49\";LABEL =\"分类选择\";}"":KK_BOX{KEY =\"T EXT50\";LABEL =\"分层选择\";}"":KK_BOX{KEY =\"T EXT51\";LABEL =\"删重叠线\";}"":KK_BOX{KEY =\"T EXT52\";LABEL =\"旋转对齐\";}"":KK_BOX{KEY =\"T EXT53\";LABEL =\"旋转复制\";}"":KK_BOX{KEY =\"T EXT54\";LABEL =\"偏块内线\";}"":KK_BOX{KEY =\"T EXT55\";LABEL =\"边界剪切\";}"":KK_BOX{KEY =\"T EXT56\";LABEL =\"线元等分\";}"":KK_BOX{KEY =\"T EXT57\";LABEL =\"框选合线\";}"":KK_BOX{KEY =\"T EXT58\";LABEL =\"框选连线\";}"":KK_BOX{KEY =\"T EXT59\";LABEL =\"图元归零\";}"":KK_BOX{KEY =\"T EXT60\";LABEL =\"归零慎用\";}}"":BOXED_COLUMN{ LABEL =\"专业制图\";"":KK_BOX{KEY =\"T EXT61\";LABEL =\"修改云线\";}"":KK_BOX{KEY =\"T EXT62\";LABEL =\"矩形介子\";}"":KK_BOX{KEY =\"T EXT63\";LABEL =\"两点填充\";}"":KK_BOX{KEY =\"T EXT64\";LABEL =\"块内零层\";}"":KK_BOX{KEY =\"T EXT65\";LABEL =\"圆折断线\";}"":KK_BOX{KEY =\"T EXT66\";LABEL =\"折断线__\";}"":KK_BOX{KEY =\"T EXT67\";LABEL =\"铝角码码\";}"":KK_BOX{KEY =\"T EXT68\";LABEL =\"直焊缝__\";}"":KK_BOX{KEY =\"T EXT69\";LABEL =\"圆焊缝__\";}"":KK_BOX{KEY =\"T EXT70\";LABEL =\"剖圆孔__\";}"":KK_BOX{KEY =\"T EXT71\";LABEL =\"长圆孔__\";}"":KK_BOX{KEY =\"T EXT72\";LABEL =\"保温棉__\";}"":KK_BOX{KEY =\"T EXT73\";LABEL =\"角焊缝__\";}"":KK_BOX{KEY =\"T EXT74\";LABEL =\"偏移子段\";}"":KK_BOX{KEY =\"T EXT75\";LABEL =\"槽铝断面\";}"":KK_BOX{KEY =\"T EXT76\";LABEL =\"硬质垫块\";}"":KK_BOX{KEY =\"T EXT77\";LABEL =\"椭圆圆弧\";}"":KK_BOX{KEY =\"T EXT78\";LABEL =\"四点尖角\";}"":KK_BOX{KEY =\"T EXT79\";LABEL =\"角钢槽钢\";}"":KK_BOX{KEY =\"T EXT80\";LABEL =\"方钢工钢\";}}"":BOXED_COLUMN{ LABEL =\"统计发布\";"":KK_BOX{KEY =\"T EXT81\";LABEL =\"快速建块\";}"":KK_BOX{KEY =\"T EXT82\";LABEL =\"炸块成字\";}"":KK_BOX{KEY =\"T EXT83\";LABEL =\"图块改名\";}"":KK_BOX{KEY =\"T EXT84\";LABEL =\"图块基点\";}"":KK_BOX{KEY =\"T EXT85\";LABEL =\"图块改色\";}"":KK_BOX{KEY =\"T EXT86\";LABEL =\"交点布块\";}"":KK_BOX{KEY =\"T EXT87\";LABEL =\"属块导表\";}"":KK_BOX{KEY =\"T EXT88\";LABEL =\"线密度__\";}"":KK_BOX{KEY =\"T EXT89\";LABEL =\"截面参数\";}"":KK_BOX{KEY =\"T EXT90\";LABEL =\"排字到表\";}"":KK_BOX{KEY =\"T EXT91\";LABEL =\"统字到表\";}"":KK_BOX{KEY =\"T EXT92\";LABEL =\"面积到表\";}"":KK_BOX{KEY =\"T EXT93\";LABEL =\"线长到表\";}"":KK_BOX{KEY =\"T EXT94\";LABEL =\"外接圆形\";}"":KK_BOX{KEY =\"T EXT95\";LABEL =\"外接矩形\";}"":KK_BOX{KEY =\"T EXT96\";LABEL =\"图元加框\";}"":KK_BOX{KEY =\"T EXT97\";LABEL =\"画图日期\";}"":KK_BOX{KEY =\"T EXT98\";LABEL =\"批改页码\";}"":KK_BOX{KEY =\"T EXT99\";LABEL =\"批量分图\";}"":KK_BOX{KEY =\"T EXT100\";LABEL =\"批量打印\";}}}"":ROW{:TEXT{LABEL=\"命令文件位置C:/W INDOWS/K_COM.TXT,删除后相当于初始设置\\";ALIGNMENT=LEFT;}SPACER_1;SPACER_1;SPACER_1; OK_BUTTON;CANCEL_BUTTON;}}")(WRITE-LINE STR FILE))(CLOSE FILE)D CL_F ILE)(KKKKJ);恢复默认设置命令(DEFUN K_KMR(/ TMP)(IF (FINDFILE(G ETTOOLS P ATH))(VL-FILE-DELETE (G ETTOOLS P ATH)))(KKKKJ)(PRINC));清空命令(DEFUN K_KQK(/ FF)(IF (FINDFILE(G ETTOOLS P ATH))(PROGN (SETQ FF(OPEN (G ETTOOLS P ATH)"W"));;;图层显示(WRITE-LINE (STRCAT ",""K_LL") FF)(WRITE-LINE (STRCAT ",""K_LK") FF)(WRITE-LINE (STRCAT ",""K_LP") FF)(WRITE-LINE (STRCAT ",""K_LY") FF)(WRITE-LINE (STRCAT ",""K_LO") FF)(WRITE-LINE (STRCAT ",""K_LU") FF)(WRITE-LINE (STRCAT ",""K_ACC") FF)(WRITE-LINE (STRCAT ",""K_L0") FF)(WRITE-LINE (STRCAT ",""K_CV") FF)(WRITE-LINE (STRCAT ",""K_CY") FF)(WRITE-LINE (STRCAT ",""K_CD") FF)(WRITE-LINE (STRCAT ",""K_VH") FF) (WRITE-LINE (STRCAT ",""K_VA") FF) (WRITE-LINE (STRCAT ",""K_KM") FF) (WRITE-LINE (STRCAT ",""K_FS") FF) (WRITE-LINE (STRCAT ",""K_LC") FF) (WRITE-LINE (STRCAT ",""K_SZC") FF) (WRITE-LINE (STRCAT ",""K_SXC") FF) (WRITE-LINE (STRCAT ",""K_SDC") FF);;;文本属性(WRITE-LINE (STRCAT ",""K_W2A") FF) (WRITE-LINE (STRCAT ",""K_A2W") FF) (WRITE-LINE (STRCAT ",""K_CA") FF) (WRITE-LINE (STRCAT ",""K_ZX") FF) (WRITE-LINE (STRCAT ",""K_C1") FF) (WRITE-LINE (STRCAT ",""K_WHH") FF) (WRITE-LINE (STRCAT ",""K_WW") FF) (WRITE-LINE (STRCAT ",""K_WEE") FF) (WRITE-LINE (STRCAT ",""K_WQQ") FF) (WRITE-LINE (STRCAT ",""K_WX") FF) (WRITE-LINE (STRCAT ",""K_WA") FF) (WRITE-LINE (STRCAT ",""K_FW") FF) (WRITE-LINE (STRCAT ",""K_WWS") FF) (WRITE-LINE (STRCAT ",""K_DQ") FF) (WRITE-LINE (STRCAT ",""K_YQ") FF) (WRITE-LINE (STRCAT ",""K_YW") FF) (WRITE-LINE (STRCAT ",""K_WY") FF) (WRITE-LINE (STRCAT ",""K_ZS") FF) (WRITE-LINE (STRCAT ",""K_XS") FF) (WRITE-LINE (STRCAT ",""K_DZ") FF) ;;;标注制图(WRITE-LINE (STRCAT ",""K_SS") FF) (WRITE-LINE (STRCAT ",""K_QK") FF) (WRITE-LINE (STRCAT ",""K_ER") FF) (WRITE-LINE (STRCAT ",""K_OO") FF) (WRITE-LINE (STRCAT ",""K_XX") FF) (WRITE-LINE (STRCAT ",""K_FF") FF) (WRITE-LINE (STRCAT ",""K_CC") FF) (WRITE-LINE (STRCAT ",""K_CII") FF) (WRITE-LINE (STRCAT ",""K_FL") FF) (WRITE-LINE (STRCAT ",""K_FC") FF) (WRITE-LINE (STRCAT ",""K_EEE") FF) (WRITE-LINE (STRCAT ",""K_R2") FF)(WRITE-LINE (STRCAT ",""K_KL") FF) (WRITE-LINE (STRCAT ",""K_TT") FF) (WRITE-LINE (STRCAT ",""K_DF") FF) (WRITE-LINE (STRCAT ",""K_JJ") FF) (WRITE-LINE (STRCAT ",""K_L J") FF) (WRITE-LINE (STRCAT ",""K_ZZ") FF) (WRITE-LINE (STRCAT ",""K_Z0") FF) ;;;专业制图(WRITE-LINE (STRCAT ",""K_YU") FF) (WRITE-LINE (STRCAT ",""K_DP") FF) (WRITE-LINE (STRCAT ",""K_HH") FF) (WRITE-LINE (STRCAT ",""K_K0") FF) (WRITE-LINE (STRCAT ",""K_ZC") FF) (WRITE-LINE (STRCAT ",""K_ZD") FF) (WRITE-LINE (STRCAT ",""K_JM") FF) (WRITE-LINE (STRCAT ",""K_HF") FF) (WRITE-LINE (STRCAT ",""K_HFA") FF) (WRITE-LINE (STRCAT ",""K_HO") FF) (WRITE-LINE (STRCAT ",""K_YK") FF) (WRITE-LINE (STRCAT ",""K_FHM") FF) (WRITE-LINE (STRCAT ",""K_HFS") FF) (WRITE-LINE (STRCAT ",""K_CB") FF) (WRITE-LINE (STRCAT ",""K_CL") FF) (WRITE-LINE (STRCAT ",""K_DK") FF) (WRITE-LINE (STRCAT ",""K_TYC") FF) (WRITE-LINE (STRCAT ",""K_D4") FF) (WRITE-LINE (STRCAT ",""K_JC") FF) (WRITE-LINE (STRCAT ",""K_JT") FF) ;;;统计发布(WRITE-LINE (STRCAT ",""K_KI") FF) (WRITE-LINE (STRCAT ",""K_BW") FF) (WRITE-LINE (STRCAT ",""K_RK") FF) (WRITE-LINE (STRCAT ",""K_KJ") FF) (WRITE-LINE (STRCAT ",""K_KS") FF) (WRITE-LINE (STRCAT ",""K_JK") FF) (WRITE-LINE (STRCAT ",""K_S2E") FF) (WRITE-LINE (STRCAT ",""K_XM") FF) (WRITE-LINE (STRCAT ",""K_JMM") FF) (WRITE-LINE (STRCAT ",""K_T2E") FF) (WRITE-LINE (STRCAT ",""K_TW") FF) (WRITE-LINE (STRCAT ",""K_MJE") FF) (WRITE-LINE (STRCAT ",""K_DDE") FF) (WRITE-LINE (STRCAT ",""K_WJY") FF)。

相关文档
最新文档