【AutoCAD】用LISP语言自定义AutoCAD命令

475 0

AutoLISP语言作为AutoCAD的二次开发工具,虽然在功能、运行速度和保密性等方面比起ARX等工具要逊色一些,但由于它易学易用,交互性好,灵活性强,对于那些经常使用AutoCAD进行绘图的普通用户来说,不失为一种理想的开发工具。下面就介绍用AutoLISP语言自定义的几个AutoCAD绘图命令,可以起到简化操作、提高作图效率的作用。


一、键槽尺寸视图的绘制命令“jct”
在绘制轴、齿轮或带轮等零件图时,经常需要画轴上键槽处的剖视图或轮毂键槽的端面视图,比较麻烦;由于键槽的尺寸随轴径的变化而变化,所以我们可以用LISP程序来实现自动绘图。加载下面的程序,在命令行中键入”jct”并回车,通过人机交互的形式输入有关参数,可自动完成轴上键槽的剖视图和轮毂键槽的端面视图的绘制。代码示例如下所示。


(defun C:jct ()
 (setq pt0 (getpoint "\n 请输入视图的中心位置点:"))
 (initget 7)
 (setq loop T)
 (while loop
 (setq d (getreal "\n 请输入键槽处的轴径(12<d<130)(mm):"))
 (if(or (< d 12) (> d 130))
   (alert "轴径数据输入错误!\n\n请重新输入!")
   (setq loop nil)
   );if
  );while
 (cond;根据轴径检索键槽尺寸
  ((and (> d 12) (<= d 17)) (setq b 5 t1 3.0 t2 2.3));b表示键槽的宽度
  ((and (> d 17) (<= d 22)) (setq b 6 t1 3.5 t2 2.8));t1表示轴上键槽的深度
  ((and (> d 22) (<= d 30)) (setq b 8 t1 4.0 t2 3.3));t2表示轮毂上键槽的高度
  ((and (> d 30) (<= d 38)) (setq b 10 t1 5.0 t2 3.3))
  ((and (> d 38) (<= d 44)) (setq b 12 t1 5.0 t2 3.3))
((and (> d 44) (<= d 50)) (setq b 14 t1 5.5 t2 3.8))
((and (> d 50) (<= d 58)) (setq b 16 t1 6.0 t2 4.3))
((and (> d 58) (<= d 65)) (setq b 18 t1 7.0 t2 4.4))
((and (> d 65) (<= d 75)) (setq b 20 t1 7.5 t2 4.9))
((and (> d 75) (<= d 85)) (setq b 22 t1 9.0 t2 5.4))
((and (> d 85) (<= d 95)) (setq b 25 t1 9.0 t2 5.4))
((and (> d 95) (<= d 110)) (setq b 28 t1 10.0 t2 6.4))
((and (> d 110) (<= d 130)) (setq b 32 t1 11.0 t2 7.4)))
(command "circle" pt0 "d" d)
(command "zoom" "a")
(setq s1 (ssget "l" ))
(setq di (-(* (/ d 2.0) (/ d 2.0)) (* (/ b 2.0) (/ b 2.0)))
    dx (sqrt di)
    dy (/ b 2.0)
    pt1 (list (+ (car pt0) dx) (+ (cadr pt0) dy)))
 (initget "Zc Lc");Zc表示画轴键槽的剖视图,Lc表示画轮毂键槽的端面视图
 (setq zrl (getkword "\n 画轴键槽的剖视图还是轮毂键槽的端面视图(Z/L)?"))
 (if (= zrl "Zc")
  (progn;计算轴键槽上点的坐标
   (setq pt2 (list (+ (car pt0) (-(/ d 2.0) t1)) (+ (cadr pt0) dy))
    pt3 (polar pt2 (- (/ pi 2.0)) b)
    pt4 (polar pt3 0 (- dx (- (/ d 2.0) t1))))
   );progn
  );if
 (if (= zrl "Lc")
  (progn;计算轮毂键槽上点的坐标
   (setq pt2 (list (+ (car pt0) (+(/ d 2.0) t2)) (+ (cadr pt0) dy))
    pt3 (polar pt2 (- (/ pi 2.0)) b)
    pt4 (polar pt3 (- pi) (- (+ (/ d 2.0) t2) dx)))
   );progn
  );if
 (command "pline" pt1 pt2 pt3 pt4 "");画键槽
 (setq s2 (ssget "l"))
 (command "layer" "m" 5 "l" "center" 5 "c" 1 5 "")
 (command "ltscale" 8)
 (command "line" (polar pt0 (- pi) (+ (/ d 2.0) 10));画中心线
    (polar pt0 0 (+ (/ d 2.0) 10)) "")
 (command "line" (polar pt0 (-(/ pi 2.0)) (+ (/ d 2.0) 10))
    (polar pt0 (/ pi 2.0) (+ (/ d 2.0) 10)) "")
 (command "layer" "s" 0 "") 
 (if (= zrl "Zc")
  (progn
   (setq s3 (entsel "\n 请选择修剪的目标:"))
   (command "trim" s2 "" s3 "");修剪形成键槽
   (command "hatch" "U" "45" "2" "n" s1 s2 ""));画轴上键槽处剖视图的剖面线
  );if
 (if (= zrl "Lc")
  (progn
  (setq s4 (entsel "\n 请选择修剪的目标:"))
  (command "trim" s2 "" s4 "");修剪形成键槽
  (command "rotate" s1 s2 "" pt0 90));将轮毂键槽的端面视图旋转90度
  );if
 );end defun


二、螺纹孔剖视图的绘制命令“lwk”
在绘制机械零件图时,经常要画螺纹孔的剖视图,同样由于螺纹孔的有关尺寸都随螺纹的公称直径而变化,我们可以用下面的程序自动完成其剖视图的绘制。加载后在命令行中键入“lwk”并回车,根据提示输入相应的参数即可。代码示例如下所示。


(defun C:lwk()
 (setq pc (osnap (getpoint "\n 输入螺纹孔端面的中心点:") "near" )) 
 (setq ang (getangle pc "\n 螺纹孔中心线与水平线的夹角:"))
 (initget 7)
 (setq d (getdist "\n 请输入螺纹孔的公称直径(mm):"))
 (cond;根据螺纹孔的公称直径检索有关数据(以螺纹零件的材料为钢或青铜为例)
  ((= d 6.0) (setq l1 10 l2 12 d2 4.917));l1表示螺纹深度
  ((= d 8.0) (setq l1 12 l2 16 d2 6.647));l2表示钻孔深度
  ((= d 10.0) (setq l1 16 l2 20 d2 8.376));d2表示螺纹小径
  ((= d 12.0) (setq l1 18 l2 22 d2 10.106))
  ((= d 14.0) (setq l1 22 l2 26 d2 11.835))
  ((= d 16.0) (setq l1 24 l2 28 d2 13.835))
  ((= d 18.0) (setq l1 28 l2 34 d2 15.294))
  ((= d 20.0) (setq l1 30 l2 35 d2 17.294))
  ((= d 22.0) (setq l1 32 l2 38 d2 19.294))
  ((= d 24.0) (setq l1 36 l2 42 d2 20.725))
  ((= d 27.0) (setq l1 40 l2 45 d2 23.725))
  ((= d 30.0) (setq l1 44 l2 52 d2 26.211))
  ((= d 36.0) (setq l1 52 l2 60 d2 31.670)))
 (setq r2 (/ d2 2.0);计算光孔各点坐标
  pt1 (polar pc (+ (/ pi 2.0) ang) r2)
  pt2 (polar pt1 ang l2)
  pt3 (polar pc ang (+ l2 (* 0.57735 r2)))
  pt4 (polar pt2 (- ang (/ pi 2.0)) d2)
  pt5 (polar pc (+ (* pi 1.5) ang) r2)) 
 (command "pline" pt1 pt2 pt3 pt4 pt5 "c");画光孔
 (setq s1 (ssget "l"))
 (command "line" (polar pc (+ pi ang) 3) (polar pt3 ang 3) "");画中心线
 (command "pline" pt2 pt4 "")
 (setq r1 (/ d 2.0);计算螺纹线的各点坐标
  pt11 (polar pc (+ (/ pi 2.0) ang) r1)
  pt12 (polar pt11 ang l1)
  pt13 (polar pt12 (- ang (/ pi 2.0)) d)
  pt14 (polar pc (+ (* pi 1.5) ang) r1))
 (command "pline" pt11 pt12 pt13 pt14 "");画螺纹线
 (command "pline" pt12 pt13 "")
 (setq pt21 (polar pc (+ (/ pi 2.0) ang) (+ r1 10.0));计算剖面线边界上的点坐标
  pt22 (polar pt21 ang (+ l2 15.0));可根据需要设置剖面线边界的大小
  pt23 (polar pt22 (- ang (/ pi 2.0)) (+ d 20.0))
  pt24 (polar pc (+ (* pi 1.5) ang) (+ r1 10.0)))
 (command "pline" pt21 pt22 pt23 pt24 "c");生成剖面线的边界
 (setq s2 (ssget "l"))
 (command "zoom" "a")
 (command "hatch" "U" "45" "2" "n" s2 s1 "");画剖面线,形成消隐螺纹孔
 );end

三、圆的中心线绘制命令“zxx”
在绘图中,若需要绘制已知圆的中心线,可调用下面的程序。加载后在命令行中键入“zxx”并回车,只要按提示选择圆并输入中心线的延伸长度,即可自动生成该圆的中心线,并可连续绘制。代码示例如下所示。


(defun C:zxx()
 (setvar "osmode" 512)
 (setq loop T)
 (while loop
  (setq pc (getpoint "\n 请用鼠标选择圆:"))
  (setq s(ssget pc))
  (if s
   (progn
  (setq s1(entget(ssname s 0))
     pt0(cdr(assoc 10 s1));获得圆心坐标
     r (cdr(assoc 40 s1));获得圆的半径
     )
  (setq l (getreal "\n 请输入中心线延伸长度(mm):"))
  (command "layer" "m" 5 "l" "center" 5 "c" 1 5 "")
 (command "ltscale" 8);设置线型比例
 (command "line" (polar pt0 (- pi) (+ r l));画中心线
   (polar pt0 0 (+ r l)) "")
 (command "line" (polar pt0 (-(/ pi 2.0)) (+ r l))
   (polar pt0 (/ pi 2.0) (+ r l)) "")
 (command "layer" "s" 0 "")
  );progn
   (setq loop nil)
   );if
  );while
 );end defun


在绘图过程中,用户可根据需要,用AutoLISP方便地定义出实用的绘图命令,从而提高绘图速度。当然,还可以将自定义的AutoCAD命令定制成用户菜单或工具栏,以方便使用。例如,将上面介绍的几个绘图命令定制到下拉菜单中的方法是:打开AutoCAD安装目录下SUPPORT子目录中的ACAD.MNU文件,在***POP7项的最后加入下面内容,再加载已修改的菜单文件即可。


[--]
ID_User [键槽图绘制(jct)]^C^C_(if(not jct)(load "d:/Acad R14/jct.lip"));jct;^p
ID_User [螺纹孔绘制(lwk)]^C^C_(if(not lwk)(load "d:/Acad R14/lwk.lip"));lwk;^p
ID_User [中心线(zxx)]^C^C_(if(not zxx)(load "d:/Acad R14/zxx.lip"));zxx;^p

0

上一篇: 在Auto CAD环境下实现制表功能 下一篇: 自动绘制出中心线

教程资料来源于网络,如有侵权,请及时联系平台进行删除

AutoCAD

课程目录
搜索
AutoCAD
AutoCAD图导入photoshop的方法
渲染出众--AutoCAD、3DS、photoshop的文件转换与联用
AutoCAD中计算二维图形的面积
AUTOCAD快速标注法
cad自动分层
从AutoCAD中精确输出图像文件
在AutoCAD尺寸线中自定义箭头块应用技巧
AutoCAD2000文字特效制作20例
AutoCAD与3DS的数据交换
AutoCAD中如何实现图形的比例尺
在AutoCAD R14下进行“外部引用”经验谈
AutoCAD三维制图的尺寸标注
AutoCAD R14批绘图问答
使用AutoCAD绘制电路图规则说明
用好AutoCAD的线型比例
求流体重心
如何充分利用AutoCAD的命令开关?
如何成为真正的AutoCAD专业工程师
AutoCAD 文件加载顺序
如何应用VBA设定AutoCAD参数
三强联手渲染出众--AutoCAD.3DS.Photoshop的转换与联用
AutoCAD应用中的误区及绘图习惯
巧妙使用AutoCAD设计中心管理图形
Microstation和Autocad
如何通过配置加强AUTOCAD的图线打印效果
WORD 2000中编辑AUTOCAD的图形
AutoCAD 技巧一则
AutoCAD多文档处理
AutoCAD 的文件类型
AutoCAD、MDT与其它软件集成应用的几点体会
AutoCAD 菜单文件使用五问
AutoCAD图像输出图像
建立在AutoCAD R14上的重头戏AutoCAD Map
AutoCAD SHP字体文件格式
给排水专业CAD软件开发方法探讨
浅谈Excel、AutoCAD在渠道设计中的应用
提高AutoCAD绘图速度的若干方法
AutoCAD R12两个新增命令在编程中的应用
天正市政道路及管线CAD软件(T-SZ v6.0)简介
AutoCAD中特殊符号的表示
AutoCAD至PHOTOSHOP的图形传输方法
让autocad自动响应Enter解决办法
在AUTOCAD中插入EXCEL表格的做法
autocad中mirror的一点小技巧
AutoCAD的三维拉伸
AutoCAD 绘制建筑电气图的技巧
AutoCAD的线型与填充图案开发技术
在Word中使用AutoCAD图形
AutoCAD 实用技巧
autoCAD2002的图纸怎样转化成CAD14的图纸
AutoCAD环境变量详解全集
在autocad中怎样编辑自己的填充图案
AUTOCAD使用心得连载之七--AUTOCAD与其他软件的交互
AUTOCAD使用心得连载之六--绘图与打印比例控制、套用图框、标注命令
AUTOCAD使用心得连载之五--图层控制命令、视图命令、图元选择方式
AUTOCAD使用心得连载之四--常用命令与快捷键设置原则
AUTOCAD使用心得连载之三--字体、标注的设置与CAD模版文件
AUTOCAD使用心得连载之二--图层的设置
AUTOCAD使用心得连载之一--AUTOCAD使用的三个基本方面
AutoCAD中快速大量修改线宽的方法
制造特效字体
鼠标的功能!
轻松删除顽固图层之妙招
“!”键的使用
找不到原文件的字体怎么办?
模型与图纸空间的联系和区别
AutoCAD 汉字处理技巧
几何计算器应用示例
如何在autocad里按正确的比例插入光栅文件
AutoCAD 2000快捷命令的命名规律
在AutoCAD同一张图上自动实现不同的标注比例
AutoCAD 2000中自定义填充图案
将autocad的spl线转换为pl线
在Word2000中插入AutoCAD图形文件
AutoCAD表格制作
AutoCAD 2000使用技巧四则
优化AutoCAD系�y的方法
“今日”对话框及AutoCAD 2002工作界面
AutoCAD 快捷键(包括:2000/2002/2004/2005)
AutoCAD使用的50个问答
AutoCAD经验与技巧
autocad使用点滴
AutoCAD中图形库的创建和管理
AutoCAD 2000快捷命令的使用
设计自己的AutoCAD R14模板
AutoCAD发展历程
转AutoCAD至PHOTOSHOP 的图形传输
AutoCAD中几个好用的Bonus命令
AUTOCAD中几个特殊的系统变量或命令
使用AutoCAD提高绘图效率的途径和技法
AutoCAD技术在隧道施工中的运用
AutoCAD2002绘制建筑施工图入门小技巧
AutoCAD中文件导出和批量绘图技巧
AutoCAD 2000设置技巧
对AutoCAD进行二次开发
AutoCAD软件作图的速度技巧
AutoCAD设计中心
AutoCAD应用技巧18例
AutoCAD的小小发现
“AutoCAD”技术在淮安工程中的应用
AutoCAD相关问答
AutoCAD发展历程回顾
AutoCAD画图技巧
CAD画图九不要
Shift键在AUTOCAD中的几招秒用
AutoCAD阵列操作全攻略
AutoCAD中的标注线性比例和标注全局比例
AutoCAD概述
键盘和鼠标
AutoCAD的启动与退出
AutoCAD的安装
使用文本窗口和对话框
使用菜单与工具栏
AutoCAD中的坐标系
AutoCAD的基本命令
草图设置(DraftingSettings)
基本图形设置
绘制简单几何图形
其他图形设置命令
绘制多线、参照线和射线
绘制点和样条曲线
autoCAD基本修改命令
拉伸和拉长、打断和分解命令的比较
等分点
边界和面域
使用夹点与编组
快速选择和对象选择过滤
比划圈更高效的审批图纸的方法--“对付”(DWF)一下
修改样条曲线
修改多段线
编辑多线
列表显示命令
时间查询
系统变量
线型与线宽
颜色
文字样式
尺寸标注简介
AutoCAD2002的文字新功能
文字编辑命令
编辑尺寸标注
属性的编辑
属性的提取
13.3.1启动外部参照管理器
在位编辑参照
利用剪贴板共享数据
对象链接与嵌入(OLE)
AutoCAD设计中心简介、启动和界面
15.5.1打开图形
使用AutoCAD设计中心编辑图形
局部打开与局部加载
图形属性
对象清理
对象重命名
命令的重复执行
几何计算器
访问操作系统
布局简介
页面设置
浮动视口
图形设置命令
AutoCAD2002中的新功能
图形打印简介
布局的创建与管理
图形打印命令
电子打印(ePlot)与批处理打印17.9.1电子打印(ePlot)
二维等轴测投影简介和使用等轴测投影模式
等轴测投影中的文字
等轴测投影中的标注
三维坐标系
设置三维视图
千禧堂的三维造型
设置UCS
创建千禧堂入口造型
计算机的三维造型和创建机箱造型
创建显示器造型
其它创建和修改三维实体的方法
在三维空间中创建光源
定义透视视图与场景
配景的使用与创建
创建千禧堂模型的渲染图
Web浏览器的概念与使用
了解AutoCADToday的界面和网络功能
超级链接的概念与使用
Internet上的文件操作
DWF文件简介、创建、设置和查看
了解AutoCAD的目录结构
PublishtoWeb的概念与使用
了解库搜索路径和命令搜索过程
MeetNow的概念与使用
ACAD.PGP文件的重新初始化
幻灯片文件的概念与创建
填充图案的定义和创建
自定义菜单文件
AutoCAD的自定义命令
AUTOCAD制作三维模型瓶
纬衡CAD的使用技巧
Autodesk AutoCAD Revit Series - Building系统要求
Autodesk Revit Building 产品概要
autocad 2007系统需求
AutoCAD 2007产品概要
从使用 AutoCAD 转为使用 AutoCAD Electrical
AutoCAD Electrical 演示
Autodesk AutoCAD Revit Series 系统需求
Autodesk AutoCAD Revit Series 优点
AutoCAD Revit Series产品概要
Autodesk AutoCAD Revit Series 2常见问题与解答
autocad 2007常见问题
AutoCAD 2004 一般信息
AutoCAD Electrical介绍
AutoCAD Electrical 2007新增功能
autocad产品概要
AutoCAD Mechanical
AutoCAD LT 2004
autocad常见问题与解答
一套简单的AUTOCAD 2004 模拟试题(笔试)
CAD空格键的小技巧
CAD造型练习(二)
CAD造型练习(一)
实现CAD2005与Electrical2005的快速切换
AutoCAD历程
在中望CAD中调整存图时间和路径
CAD常用技巧与问题
AOTOCAD 50问
中望CAD中极轴追踪的设置与应用
CAD倾斜的技巧
Autodesk,从二维走向五维
用AutoCAD图形计算刀具中心轨迹的方法
ACAD中让底色透明
模板文件设置一例
点的四种输入方法
CAD精确绘图
使用MVSETUP命令规划出图布局
浮动视口的应用
AUTOCAD中的选择方法
模型空间与图纸空间
AutoCAD使用技巧六则
设置AutoCAD的系统变量
网络环境下图形输出管理的完整解决方案
优化3D图形渲染通道负载
AutoCAD 2007 试用版发布
AutoCAD绘制复杂图纸注意事项
CAD实用小技巧:不用CAL命令做简单除法
给AutoCAD的DWG图纸文件瘦身
AutoCAD绘制装修设计图小技巧
AutoCAD标注样式的导入、导出和引用
在AutoCAD中快速删除大量的点和其它元素
AutoCAD中图形输出的技巧
在AutoCAD中实现“倾斜”功能
大幅面CAD图打印输出技巧
挽救你的AutoCAD文件
修复和保护AutoCAD文件的方法
AutoCAD工具栏丢失怎么办?
巧用CAD的“参照缩放”绘图
CAD中剪切或延伸多条线段
AutoCAD引发屏保文件关联问题
CAD中消隐线和面交线的显示
AutoCAD制表好帮手
AutoCAD清晰线条打印
解决CAD导致方正字库无法使用的问题
AutoCAD巧画角平分线
小巧玲珑的平面制图工具--CB-CAD
AutoCAD中输出位图
企业如何选择微机平台三维CAD软件
AUTOCAD中自动生成45°视图
CAD中自动画管线图的LISP程序
AutoCAD内常用术语的自动标注方法
给AutoCAD增加计算器功能
化工工艺流程图阀门程序设计
AutoCAD中自动批量修改图形文件的程序
使用Auto CAD2000打印输出图纸的几点经验与技巧
在Auto CAD环境下实现制表功能
用LISP语言自定义AutoCAD命令
自动绘制出中心线
AutoCAD R14的菜单定制技术
工程图中标注序号的LISP程序
AutoCAD下绘制直线对称中心线的方法
基于AutoCAD的螺纹加工三维仿真