37、AutoCAD应用与AutoLISP编程全解析

AutoCAD与AutoLISP编程详解

AutoCAD应用与AutoLISP编程全解析

1. AutoCAD的功能与局限

AutoCAD功能强大,能实现从冥王星轨道视角到查看5英寸×4英寸牌匾的惊人放大,相当于从观察地球到观察葡萄柚,甚至从葡萄柚到原子的视角转换。在AutoCAD中可以进行微芯片设计、连接平面图中的墙体等操作。

不过,AutoCAD也存在一些局限性:
- 3D功能局限 :AutoCAD本质上是可视化软件,而非专业的建模和分析软件。它在3D方面并非用于与CATIA、NX、Pro/Engineer和SolidWorks竞争,不擅长参数化设计、尺寸驱动设计、有限元分析(FEA)和计算流体动力学分析(CFD)等。其3D功能主要用于必要时展示设计的漂亮图片,以销售或呈现设计理念。
- 缺乏智能判断 :AutoCAD几乎没有错误检查、干涉检查或设计保真工具,输入垃圾数据必然输出垃圾结果。CAD经理需注意,该软件允许用户进行几乎任何操作,而“任何操作”可能带来积极或消极的结果。
- 学习曲线较陡 :新手用户需要几个月时间才能熟练使用AutoCAD。

2. 建立办公室CAD标准

对于有多个AutoCAD用户的办公室,建立标准十分必要。标准能确保公司输出的一致性和专业性,减少CAD错误,使新用户更容易上手。CAD标准手册应包含以下内容:
| 内容分类 | 具体详情 |
| ---- | ---- |
| 文件位置与结构 | 所有关键文件的准确位置和整体办公室计算机文件结构,包括所有作业的命名约定以及库、模板和标准符号文件夹的位置 |
| 图层约定 | 遵循建筑办公室的AIA标准或公司内部认可的标准 |
| 字体、样式和图案 | 可接受的字体、尺寸样式和填充图案列表 |
| 打印/绘图程序 | 包括*.ctb文件的打印/绘图程序列表 |
| X - Ref命名程序 | 正确的外部参照(X - Ref)命名程序列表 |
| 图纸空间实现 | 图纸空间的实现方式,包括标题栏、徽标和必要的标题栏信息 |
| 文件清理政策 | 文件清理、备份文件删除和自动保存的政策 |

手册应尽量简洁,避免涵盖所有可能的情况,因为手册越长,用户越不可能完整阅读。

3. 成为有效的教师和招聘经理

CAD经理有时需要向新员工解释AutoCAD的细节,更新偶尔使用该软件的用户的知识,并推广更好的技术和习惯。培训新员工时,可参考以下步骤:
1. 基础理论 :先讲解创建、编辑和查看对象的基本理论。
2. 精度操作 :接着介绍正交(ortho)和对象捕捉(osnap)等精度操作。
3. 基础主题 :按照图层、文本、填充、块、阵列、尺寸标注和打印/绘图的顺序讲解基础主题,与初级课程类似。
4. 高级培训 :若需要高级培训,按高级线框、外部参照(Xref)、属性和图纸空间的顺序进行讲解,其他高级内容可稍后学习。
5. 强调速度秘诀 :向用户强调提高速度的秘诀,如“pgp”文件、右键自定义和大量练习基础知识,记住初级课程中的90/10规则。
6. 评估技能水平 :准确评估用户的技能水平,除非图纸对特定项目不重要,否则不要给未准备好的用户分配高级任务。

招聘时,可通过AutoCAD测试来评估潜在员工。测试时间不宜过长,最多45分钟到1小时。例如,初级课程中的平面图是对建筑绘图招聘人员的良好测试,具体流程如下:

graph LR
    A[设置新绘图] --> B[绘制基本布局]
    B --> C[添加文本和尺寸]
    C --> D[添加家具]
    D --> E[填充和润色]
    E --> F[打印输出]

在查看绘图时,注意所选图层、展示的精度以及在规定时间内完成的工作量。对于新员工来说,不了解外部参照(Xrefs)或图纸空间并非关键问题,这些可以在工作中快速学习。但能够快速、高效且错误最少地进行绘图是必要的要求。

4. 保持技能更新和能力提升

作为CAD经理或高级课程毕业生,需要不断提升自己的技能。AutoCAD功能复杂,由数百名软件程序员和设计师不断开发和更新,个人几乎不可能掌握其所有知识。为了保持或提升技能,可以采取以下措施:
- 学习3D功能 :许多用户对3D功能掌握不佳,学习3D功能是脱颖而出的好方法,也是AutoCAD的重要方面。
- 学习基本AutoLISP :AutoLISP是一种相对简单的编程语言,可用于自定义AutoCAD和编写自动化程序。
- 探索高级功能 :探索AutoCAD有时被忽视的高级功能,如图纸集、动态块、eTransmit、安全、仪表盘、自定义用户界面(CUI)等,并记录关键功能和效果。
- 关注行业动态 :阅读AutoCAD的最新消息、技巧和行业讨论,可访问Cadalyst.com和Augi.com等网站,并订阅Cadalyst(免费)。
- 交流与学习 :与同行交流,了解他们的工作方式。升级到新版本时,参加AutoCAD更新课程。
- 了解其他软件 :对其他设计软件保持好奇心,包括AutoCAD的附加程序(如机械、电气、土木、机电等),并了解尽可能多的软件。在CAD领域,Revit和SolidWorks是未来值得关注的软件。
- 享受工作 :如果不喜欢使用AutoCAD,应寻求其他工作职责,因为讨厌它会让工作变得痛苦。

5. AutoCAD的编程工具概述

除了基本的操作和管理,AutoCAD还提供了多种编程工具用于定制和自动化,以下是对这些工具的简要介绍:
| 工具名称 | 简介 |
| ---- | ---- |
| AutoLISP | 是AutoCAD内置的编程语言,是LISP语言的一种变体。它允许用户与软件进行交互,主要用于自动化日常或复杂的流程。代码编写后可保存并按需调用,无需编译即可作为脚本执行。对于非程序员来说,只需熟悉语法即可使用 |
| Visual LISP | 是AutoLISP的增强版本,自2000版起成为AutoCAD的一部分。它具有图形界面和调试器,还具备Active X功能。初学者仍需从AutoLISP基础学起 |
| VBA(Visual Basic for Applications) | 基于微软的Visual BASIC,可在AutoCAD中编写运行的例程,但不能作为独立程序。相比Visual LISP,它具有更多的功能和能力 |
|.NET Framework | 是微软的软件技术,旨在取代VBA。它提供了常见编程问题的预编码解决方案和虚拟机来执行程序 |
| Active X | 由微软开发,用于创建执行特定功能的软件组件,常见于Windows应用程序中。不过,它也可能被用于恶意软件,如病毒和间谍软件 |
| ObjectARX | 是AutoCAD最高级别的定制和编程方式,是一个应用程序编程接口(API)。使用C++程序员可以创建与AutoCAD直接交互的Windows DLL(数据链接库)。这需要专业的编程技能,通常由第三方开发者使用 |

6. AutoLISP基础编程

尽管有新工具不断涌现,AutoLISP仍然广泛使用,其代码易于在线获取。以下是关于AutoLISP编程的基础内容:

6.1 代码实现方式

AutoLISP代码有两种实现方式:
- 命令行输入 :可以在AutoCAD的命令行直接输入并执行几行代码,适用于仅在当前绘图中有用的简单例程。
- 加载保存的代码 :对于更复杂且常用的例程,通常将代码保存后加载执行。

6.2 代码保存与加载

所有AutoLISP代码以*.lsp为扩展名保存。理论上可以存储在任何位置,例如AutoCAD 2008的Express文件夹中就包含大量内置例程。加载代码的步骤如下:
1. 选择“工具” -> “加载应用程序…” 或 “工具” -> “AutoLISP” -> “加载应用程序…”,也可以直接在命令行输入“appload”。
2. 在弹出的对话框中浏览找到所需的AutoLISP代码文件,然后点击“加载”。
3. 加载完成后,关闭对话框,通过命令输入即可执行代码。还可以将代码添加到启动套件(右下角的公文包图标),使AutoCAD启动时自动加载。

6.3 简单代码示例

以下是一个修改“缩放至范围”命令的示例,使其缩放至屏幕的90%:

(defun C:zz ()
  (command "zoom" "e" "zoom" ".90x")
  (princ))

代码解释:
- (defun C:zz () :定义一个名为“zz”的AutoCAD命令函数。
- (command "zoom" "e" "zoom" ".90x") :依次执行“缩放”命令,先缩放至范围(“e”),再缩放至屏幕的90%(“.90x”)。
- (princ) :避免例程不断返回“nil”值。

另外,还有两个用于旋转用户坐标系(UCS)十字准线的例程:

(defun C:perp ()
  (command "snap" "ro" "" "per" pause "snap" "off")
  (princ))

(defun C:flat ()
  (command "snap" "ro" "" "0" pause "snap" "off")
  (princ))
  • perp 例程:将十字准线旋转到与所选直线垂直的方向。其中 pause 函数允许用户选择直线,两个连续的引号表示按回车键。
  • flat 例程:将十字准线恢复到正常位置。
6.4 基本概念
  • 字符串 :用引号括起来的内容,通常是AutoCAD命令。
  • 表达式 :AutoLISP内置的命令,如“defun”。
  • 函数 :可以是用户定义的(如“perp”、“flat”)或内置的(如“pause”、“princ”、“command”),函数后面有时会跟括号内的参数。
7. AutoLISP的变量与注释

为了实现更复杂的功能,需要引入变量和注释的概念。

7.1 变量

变量可以是数字、字母或其他可变化的内容,用于实现用户交互。在AutoLISP中,变量可以是全局的(为整个例程定义一次)或局部的(按需定义一次使用),通常使用 setq 函数来创建变量。例如:

(setq RadCircle (getstring "\nCircle Radius: "))

此代码会提示用户输入圆的半径,并将输入的值存储在变量 RadCircle 中。除了 getstring ,还有其他“get”函数,如 getfiled (让用户使用对话框选择文件)、 getangle getdist 等。

7.2 注释

在AutoLISP中,注释以分号“;”开头,可以添加多个分号来表示不同的部分或标题。例如:

; 这是一个注释
;; 这也是一个注释
8. AutoLISP的高级特性与VLIDE命令

AutoLISP还有许多高级特性等待探索,例如:
- IF - THEN语句 :根据特定条件执行不同的操作,是编程中常见的功能。
- WHILE函数 :只要条件满足,就会持续执行某个操作。

vlide 命令可以打开Visual LISP编辑器,它具有许多有用的功能,如调试、错误跟踪、检查引号和括号是否闭合等。编辑器中的代码会进行颜色编码,方便识别。如果对AutoLISP编程感兴趣,可以考虑参加专业课程或阅读相关书籍来深入学习。

综上所述,AutoCAD不仅是一款强大的绘图软件,通过其丰富的编程工具,还能实现高度的定制和自动化。掌握AutoLISP等编程工具,将大大提升在AutoCAD环境中的工作效率和创造力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值