文档库 最新最全的文档下载
当前位置:文档库 › AUTOCAD二次开发齿轮代码LISP

AUTOCAD二次开发齿轮代码LISP

AUTOCAD二次开发齿轮代码LISP
AUTOCAD二次开发齿轮代码LISP

(defun c:jkxcl()

(setq os(getvar "osmode"))

(setvar "osmode" 0)

(setq m(getreal"输入模数:M=")

z(getint"输入齿数:Z=")

h(getreal"输入齿轮宽度:H=")

zj(getreal"输入齿轮轴径:ZJ=")

lf(getreal"输入轮辐厚度(无轮辐结构时输入齿轮宽度):LF=") )

(if (> h lf) (progn

(setq gr(getreal"输入轮毂端面半径:gr="))

(setq yr(getreal"输入轮缘端面半径:yr="))

(setq s(/ (- h lf) 2))

(setq l(- h s))

)

)

(setq rf(/ (* (- z 2.5) m) 2)

rj(/ (* m z 0.939693) 2)

r (/ (* z m) 2)

ra(/ (* (+ z 2) m) 2)

tt(* m pi)

pj(/ 36.0 z)

a (/ (* 1.25 m) (cos (* 20 (/ pi 180))))

pt0(list 200.0 30.0 0.0)

pt1(polar pt0 0 (/ tt 4))

pt2(polar pt0 pi (/ tt 4))

pt3(polar pt1 (* 110 (/ pi 180)) a)

pt5(polar pt1 (* -70 (/ pi 180)) a)

pt4(polar pt2 (* 70 (/ pi 180)) a)

pt6(polar pt2 (* 250 (/ pi 180)) a)

pt7(polar pt6 (* -90 (/ pi 180)) 2)

)

(command "layer" "m" "11" "c" 1 "" ""

"layer" "m" "12" "c" 2 "" ""

"layer" "m" "13" "c" 252 "" ""

"layer" "s" "13" ""

"pline" pt7 pt6 pt4 pt3 pt5

)

(setq i 1)

(while (<= i 7)

(setq pt6(polar pt6 0 tt)

pt4(polar pt4 0 tt)

pt3(polar pt3 0 tt)

pt5(polar pt5 0 tt)

)

(command pt6 pt4 pt3 pt5)

(setq i(+ i 1))

)

(setq pt8(polar pt5 (* -90 (/ pi 180)) 2))

(command pt8 "c")

(setq pt(polar pt0 (* 180 (/ pi 180)) (* 4 tt))) (command "move" "l" "" pt0 pt)

(setq e0(entlast))

(command "layer" "s" 11 "")

(setq p0(polar pt0 (* 90 (/ pi 180)) r))

(command "circle" p0 ra)

(command "region" "l" "")

(setq e10 (entlast))

(command "layer" "s" "12" "")

(setq j 1)

(while (<= j z)

(setq i 1)

(while (<= i 10)

(command "rotate" e10 "" p0 pj)

(setq yd(* r pj (/ pi 180) i))

(setq pt(polar pt0 0 yd))

(command "copy" e0 "" pt0 pt)

(command "region" "l" "")

(setq e1(entlast))

(command "subtract" e10 "" e1 "")

(setq i (+ i 1))

)

(setq j(+ j 1))

)

基于SolidWorks开发标准件库

下面通过介绍SldWorks标准件库这个软件的开发和应用过程,来具体说明利用VB作为开发工具,通过调用SolidWorks API函数,来二次开发SolidWorks的方法.

1.VB开发SolidWorks标准件库的过程

该标准件库软件能够在SolidWorks中实现标准件3D造型的的参数化自动绘制,涵盖的标准件类型齐全,具体包括:轴承类标准件,螺纹联结标准件,销键联结标准件,联轴器类标准件五大部分.

下面按上述原理方法简要介绍一下该系统的主要开发过程.

1.1 建立实体模型

查阅<<机械设计手册>>(软件版)R2.0,首先:分析要建立实体的结构,使所建立的特征尽可能的简单,参数尺寸尽可能少,再次:运行SolidWorks开始宏录制命令并创建一个深沟球轴承标准件,创建完毕后结束宏的录制,将宏保存起来.最后:在宏代码中找到定义实体模型的尺寸值,用对应的参数变量代替宏文件中的关键数据.

以深沟球轴承为例,通过简化,建立深沟球轴承模型需要如图3中草图1和草图2的14个关键点,共计12个坐标变量,而这12个变量都能由轴承的7个主要尺寸参数通过计算得出,这7个主要尺寸参数分别为:轴承的内径,外径,宽度,内圈外径和圆角大小.轴承的主要尺寸参数值可以根据轴承型号从数据库表中直接调用.

1.2 建立标准件数据库

利用VB调用SolidWorks API函数来创建标准件库需要标准件的一系列数据,本文利用VB 默认的数据库Microsoft Access为每一种标准件建立数据库,图4所示为深沟球轴承的尺寸数据库及其表单的创建.数据库建成后,在应用程序中把数据控件Data与指定的数据表链接起来,并把主要尺寸参数的TextBox和数据库中对应字段绑定.

1.3建立用户界面

本标准件库的程序界面是由主界面和各类标准件子界面构成,主界面简洁明了如图5,只由frame与命令按钮构成,按各类标准件按钮就能够进入相应的子界面进行标准件绘制.

各类子界面主要由SSTab,TextBox,命令按钮,图片框与Data控件组成,尺寸框架中可以显示

标准件的主要尺寸参数,并提供按型号查找功能,在图片框中显示用户选择标准件的示意图.

子界面具体设计形式及能完成功能. 1.4

主要代码及注释

由于程序代码较长,下面按用到的先后顺序简要介绍一下程序中的主要定义及命令:

'---------------------Solidworks宏程序变量描述------------------

Public swApp As Object '声明应用程序对象

Public Part As Object '声明零件对象

Public boolstatus As Boolean ' 声明布尔变量

Public longstatus As Long, longwarnings As Long '变量为长整型

Public Feature As Object '定义特征对象

'-----------------------主要命令代码注释-------------------------

Set swApp = CreateObject("SldWorks.Application")'创建一个应用程序

Set Part = swApp.Newpart '打开一个新实体文件

Set Part = swApp.ActiveDoc '激活当前实体文件

boolstatus = Part.Extension.SelectByID("前视", "PLANE", 0, 0, 0, False, 0, Nothing) '选择前视基准面为草图平面

Part.InsertSketch2 True '插入草图

Part.CreateLine2(xStart,yStart,zStart,xEnd,yEnd,zEnd ).Construct_ionGeometry =

True '画中心线

Part.ViewZoomtofit2 '整屏显示全图

Part.ClearSelection '清除选择

Part.CreateArcVB(p1x,py,p1z,p2x,p2y,p2z,p3x,p3y,p3z,dir) '以p1为圆心,从p2到p3

生成圆弧

Part.CreateLine2(xStart,yStart,zStart,xEnd,yEnd,zEnd) '两点画直线

boolstatus = Part.Extension.SelectByID2(Name, Type, X, Y, Z, Append, Mark, Callout,

SelectOption) '选择操作对象

Part.SketchMirror '镜像所选对象

Part.FeatureManager.FeatureRevolve(angle,reverseDir,angle2,revType,options, merge, useFeatScope, useAutoSel) '生成旋转特征

Part.ShowNamedView2 vName, viewId 'X视图显示

Part.CreatePlaneAtOffset3 val, flipDir, autoSize '插入基准面

Part.InsertAxis2 True '插入基准轴

Part.BlankRefGeom '隐藏所选参考几何体

swApp.ExitApp '退出sldworks应用程序

2.程序的应用方法

为使用户更方便的使用做好的标准件库软件,我们可以将VB中建立的工程文件” standard library for sw.vbp”编译生成” standard library for sw.exe”文件,这样在打开SolidWorks 后直接点击此exe文件,就可以根据需要来绘制标准件3D模型了.

上述直接运行exe文件来使用标准件库的方法,只能局限于安装了VB的计算机上,为了让没有安装VB的用户也能方便的使用该标准件库软件,我们可以用Visual Studio自带的打包工具Package and Deployment Wizard将标准件库制作成标准安装程序,打包过程中要注意包含文件步骤,一定要确认包含文件的完整性,程序使用的图标,图片,第三方控件所带的文件一定要带上,否则可能导致安装后的程序运行出错.

3.结束语

本文通过介绍标准件库的应用程序,说明了利用VB调用SolidWorks API函数对SolidWorks二次开发的一般方法,读者可以采用该方法建立适合自己需要的,专用的SolidWorks功能模块,继续对SolidWorks二次开发进行深入研究与探索.

(插图无法上传,见谅!) 本文摘选自我的一篇学术论文,原文见《山东机械》杂志 2006.5月3期。

2021年如何选择autocad二次开发的工具

如何选择autocad二次开发的工具AutoCAD提供了三种主要的开发工具,分别是:使用C/C++的ObjectARX,VB/VBA的ActiveX开发,以及AutoLISP/VisualLISP开发工具。每一个开发者都有自己的爱好,但是抛开所有的偏爱,人们经常想知道哪一种最好,我到底应该选择哪种工具?给这些人的答案是:“它取决于你要完成什么工作。”每一种开发工具都有不同的东西,在某谢情况下都有不可比拟的优点。当决定究竟使用什么开发工具时,你可以问自己四个问题:哪种语言让我感觉最顺手(舒服)?我有多少时间?谁是我的目标用户,他们有多少使用AutoCAD的经验?我到底需要对AutoCAD控制到什么程度,需要多少可能的窗口类型来尽快完成工作?当我介绍不同开发工具所具有的不同功能时,你可能会明白为什么这四个问题是重要的。在谈及这几种开发工具时,我仅仅将它们看作在AutoCAD中使用的功能,而不将它们看作独立的应用程序。 ObjectARX: 在三种开发工具中,这种工具拥有对AutoCAD最深入的控制能力,能够提供最多类型的窗体。使用ARX可以向AutoCAD注册自己的命令,用户运行你的程序时无需了解关于AutoCAD更多的知识。这种便利的代价就是编制ARX程序比VBA和LISP程序需要花费更多的时间,因此用来编制简单的绘图工具有点浪费了。要掌握ARX的前提是你对C和C++非常熟悉,从个人观点来说,我最喜欢这种工具,但那是因为我做的99%的程序都是用C和C++语言,选择ARX意味着我

不用学习一门新语言。对我来说,回答“哪种语言让我感觉最顺手?”就足够了。ARX能够访问很多的AutoCAD底层工具(这些东西可能VBA和LISP并不能访问),这是大多数开发者选择ARX的主要原因,他们需要作一些用其他两种开发工具不能完成的工作。此外,这也是唯一一种能够确保你的代码安全(不被别人阅读或非法复制)的开发工具。如果你需要开发自定义实体,使用空间过滤,扩展一个使用其他开发工具的应用程序的功能,正在开发用于销售的第三方工具,或者用到一大堆用VBA和LISP不能访问的东西(或者费很大力气去实现的东西),那么ObjectARX是你的最佳选择。 VBA: 如果你是第一次开发AutoCAD应用程序,那么这就是最适合你的工具!这种工具对初学者来说非常友好,Visual Basic的代码阅读起来非常容易,很多初学者仅读了函数的名称就能理解一个问题。无论如何创建或者执行LISP命令来扩充你的访问手段,这种开发工具没有ARX和LISP那么多对AutoCAD访问的方式(译者注:这也有情可原,毕竟VBA和另外两种开发工具比起来年轻得多!)如果你对VBA非常精通,可以通过再对AutoCAD命令行进行仔细研究和分类(这句话可能不太通顺,原文是:you can subclass the AutoCAD command line),这样你就能实现LISP所能完成的所有功能!对VBA来说,最大的遗憾就是不能向AutoCAD注册命令,必须先用各种加在应用程序的方法将其对应的dvb文件加载,然后通过“工具/宏/宏”菜单项执行,或者在菜单项和自定义的工具栏按钮中执行,如果你的用户的基础知

AutoLISP-程序创建过程

AutoCAD开发VisualLISP程序 本节通过一个简单的实例来讲述LISP程序的创建过程,介绍编制LISP程序的一些基本步骤,以及LISP程序在AutoCAD中的加载和运行的方法。 首先来创建一个最简单的LISP程序—-“Hello.lsp”,在AutoCAD2002中加载并运行该程序,将会在命令行出现-“Hello,VisualLISP!”。 VisualLISP与AutoCAD的通信 用户可以直接在AutoCAD命令行中键入AutoLISP表达式。AutoCAD通过括号来确认AutoLISP表达式。AutoCAD每当发现一个左括号,就确认为AutoLISP表达式,并由AutoLISP求表达式的值后返回AutoCAD,AutoCAD使用返回结果并继续进行其他工作。 注意在AutoLISP表达式中,左、右括号必须配对,否则AutoCAD将给出提示符n>,n表示右括号丢失数目。 此外,在AutoCAD中调用并执行AutoLISP程序。在AutoLISP程序中采用COMMAND函数来与AutoCAD命令程序处理器通信,COMMAND从AutoLISP获得命令并将其传给AutoCAD。 实例:最简单的LISP程序——“Hello.lsp” Step1创建新文件 (1)运行AutoCAD2002系统,以“acadiso.dwt”为样板创建图形文件,并调用“vlisp”命令进入VisualLISP环境。

(2)单击“Standard(标准)”工具栏中的按钮,新建一个LISP文件。Step2输入代码并保存文件 (1)在编辑窗口中输入源文件“Hello.lsp”的代码。程序清单如下:;;;* Hello.lsp – Visual LISP文件实例 (prompt "Pick point:") ;指定运行时的提示信息 (setq ipt (getpoint)) ;在屏幕上指定一点并将其坐标值赋予变量“ipt” (setq hgt 15) ;给变量“hgt”赋值 (Command "_.TEXT" "_S" "STANDARD" ipt hgt 0 "Hello, Visual LISP!"); 调用“Commnad”函数与AutoCAD进行通信 (2)单击“Standard(标准)”工具栏中的按钮,以“Hello.lsp”为名保存该文件。 Step3运行LISP程序 (1)确认编辑窗口处于前台状态,选择菜单【Tools(工具)】→【LoadTextinEditor(加载编辑器中的文字)】,则该程序被加载并运行。系统将返回AutoCAD窗口,并提示用户选择一点,并以指定点为基点来绘制文字。结果如图36-4所示。 (2)如果用户退出VisualLISP环境并返回AutoCAD系统窗口,则需要对该程序进行加载后,才能运行。选择菜单【Tools(工具)】→【LoadAppcation…(加载应用程序)】,弹出“Load/UnloadApplications(加载/卸载应用程序)”对话框,如图

AutoCAD二次开发实验一

实验一 ObjectARX .NET托管开发包的使用 一,主要内容 1、下载安装ObjectARX .NET托管开发包 2、创建AutoCAD命令 3、创建自定义用户菜单 4、创建自定义用户工具条 5、创建用户自定义窗体 二,主要步骤 1,下载安装ObjectARX 不同的ACAD版本用不同的开发包及开发环境 ACAD2000~ACAD2002 : VC++ 6.0 ACAD2004~ACAD2006 : https://www.wendangku.net/doc/9b16994774.html, 2002 ACAD2007~ACAD2009 : https://www.wendangku.net/doc/9b16994774.html, 2005 ACAD2010~ACAD2011 : https://www.wendangku.net/doc/9b16994774.html, 2008 ACAD2012~ : https://www.wendangku.net/doc/9b16994774.html, 2010 下载ObjectARX 在打开打开默认网页浏览器并浏览网站. 的网页上,点击License & Download(许可&下载). 填写必填字段并选择ObjectARX for AutoCAD 2012. 点击Submit(提交)按扭. 在下载页, 点击Download Now(现在下载)使用下载管理器或点击Standard Download Method(标准下载方法)使用你的网页浏览器的默认下载方法下载. 点击Save(保存)或用于保存文件到你的本地驱动器的选项。指定下载ObjectARX SDK安装包文件存放的位置。一旦安装包文件下载完成,就浏览你保存在本地的安装并双击它,安装向导将显示在ObjectARX <释放>对话框中, 指定一个新的安装位置或接受默认的安装位置。点击Install(安装)按扭. 如果没有遇到问题,安装向导完成后关闭它 安装ObjectARX向导和托管项目模板 一旦 ObjectARX SDK被安装,请使用默认目录c:\ObjectARX 浏览它的安装文件夹。 (1)AtuoCAD的类库都在此库。 2,Hello World程序创建 1)在https://www.wendangku.net/doc/9b16994774.html, 2012中建项目HelloWorld 采用.NET托管API →从“项目类型”列表中选择第二个“Visual C#”,从模板中选择“类库”,输入项目名称“HelloWorld” →.单击“确定”按钮 如果弹出如下对话框说明没安装正确,可以手动加载托管DLL →从ObjectARX安装目录下加载acmgd.dll和acdbmgd.dll →使用.NET对象浏览器查看 AcMgd.dll--AutoCAD .NET托管类

超经典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的图) 详细内容及附件下载请浏览北纬服务论坛 https://www.wendangku.net/doc/9b16994774.html,/thread-2724-1-1.html

基于VBA的AutoCAD二次开发及应用实例

基于VBA的AutoCAD二次开发及应用实例 时间:2011-10-03 18:25:09 来源:作者: 1引言 AutOCAD2005是AutOdesk公司的系列产品,该软件从其使用和设计思路上都秉承了工程制图人员的绘图习惯,能够非常轻松地绘制出带有平面视图和三维渲染效果的工程图纸,是绘图人员的一个理想工具。随着CAD基础理论和应用技术的不断发展,对CAD系统的功能要求也越来越高。因而AutoCAD 不可能完全满足每个用户的具体而特定的要求。设计人员希望它能从本质上减轻大量简单烦琐的工作量,使他们能集中精力于那些富有创造性的高层次思维活动中。 AutoCAD提供的开放式体系结构允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求,更方便、更规范、更专业的实现设计和绘图中的应用。VBA最早是建立在0ffice97中的标准宏语言,由于它在开发方面的易用性及具有的强大功能,许多软件开发商都将其嵌入自己的应用程序中,作为一种开发工具提供给用户使用。AutOdeSk公司自从Aut0CADRl4.0l版开始,内置了VBA开发工具。 新一代程序开发工具ViSual BaSic,不仅继承了面向对象方法的特性,同时具备可视化程序语言及程序产生器的概念。 VBA(visual Basic For Apphcation)是AutoCAD R12以后推出的一种新的编程环境,提供了以Visual Basic为基础的面向对象的开发特征及程序接口,能真正快速地访问AutOCAD图形数据库,能明显提高软件开发和维护的效率。 2 VBA的技术特性 2.1 VBA开发AUTOCAD的技术特点 VBA是微软开发出来的应用程序共享一种通用的自动化语言,它可以使常用的程序自动化,并可以创建自定义的解决方案。 VBA被集成到AutoCAD中,VBA和AutoCAD中强大的Activex自动化对象模型的结合,代表了一种新型的定制AutoCAD的模式构架。通过VBA,我们可以操作AutoCAD2004,控制ActiveX和其它一些应用程序,使之相互之间发生互易活动下面就是VBA的主要功能: (1)VBA提供强大的窗体创建功能,为应用程序建立对话框及其他屏幕界面。 (2)可以创建自己的工具条。 (3)可以创建功能强大的模块级宏指令,宏名实质上就是模块的过程名。 (4)提供建立类模块的功能,这对开发大型工程非常有用,因此类可以提供重用组。 (5)具备完善的数据访问和管理能力,通过ADO(ActivexData Objects),可以对Access数据库或其他外部数据库(像dBase,FoxPro等)实现访问和管理。此功能比直接使用AutoCAD的数据库管理系统要方便,且功能强大。 2.2 VBA AutoCAD ActiveX Automation对象模型 VBA是通过AutoCAD ActiveX Automation接口来建立和AutoCAD对象问的联系。ActiveX是建立在COM对象模型之上的一个标准通信协议,它允许对象之间通过一定的接口相互通信。

CADLISP程序

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)

AutoCAD二次开发教程复习总结

CAD复习题及答案1、AutoLISP 2、VisualLISP 3、VBA 4、ADS 5、ObjectARX

6、.NET 托管API 7、ActiveX Automation

8、Visual Java 1、 AutoCAD二次开发方式有哪些?各自优缺点? 2、 AutoCAD 中实现ObjectARX .NET API 的有哪些优点? 3、 AutoCAD .NET API 的三个主要的DLL文件是? 4、简述ObjectARX .NET API所对应的https://www.wendangku.net/doc/9b16994774.html,版本。 5、简述AutoCAD数据库的组成。 AutoCAD数据库是用来管理当前图形中的图元实体和其他非几何信息的容器对象,一个AutoCAD数据库包含一套固定的符号表和命名的对象词典,每一个符号表包含一个特定符号

表记录类的实例,例如层表(AcDbLayerTable)中包含层表的记录,块表(AcDbBlockTable)中包含块表记录,所有的AutoCAD实体均包含于块表记录中。词典提供了一种通用容器来存储对象,它可以保存AcDbObject对象以及其它对象,也可以创建新的对象词典,将新的数据库元素加入其中。 AutoCAD数据库的组成如图所示,从图中我们可以看出数据库主要由一下内容组成:1)层表AcDbLayerTable和层表记录AcDbLayerTableRecord,。 2)块表AcDbBlockTable和块表记录AcDbBlockTableRecord。AutoCAD中所有可见实体均存储在块表记录。块表中包含有两条特殊的记录*MODEL_SPACE(模型空间)和*PAPER_SPACE (图纸空间)。 3)其他符号表和符号表记录。 4)命名对象词典。缺省情况下当AutoCAD数据库被建立以后,词典中就包括了组词典以及MILINE样式词典。 5)符号表和命名对象词典都是存储数据库对象的容器,用于组织和管理数据库对象。AutoCAD数据库通常有9个固定类型的符号表,开发者不能向数据库中新增或者删除任何一种类型符号表,能实现的是向符号表中添加对应的符号表记录。 6、 Application 对象是AutoCAD .NET API 对象模型的根对象,它包括哪些部分? Application 对象是层次结构的根,而且它提供对AutoCAD 的主窗口的访问。

AutoCAD的二次开发

浅谈AutoCAD的二次开发 林学与园林学院 06园林傅欣蕾 摘要:通过对AutoCAD软件发展史的概述,从中归纳出CAD的总体发展趋势。从当今各行业所需的CAD专业化功能,提出对其进行二次开发的意义及具体实施步骤。 关键词:AutoCAD 发展史二次开发专业化功能 1.AutoCAD的发展简史: 1.1、第一次CAD技术革命—曲面造型系统 60年代出现的三维CAD系统只是极为简单的线框式系统。这种初期的线框造型系统不能有效表达几体数据间的拓扑关系。进入70年代,随着贝赛尔算法促使人们用计算机处理由线及曲面问题变得可行。 1.2、第二次CAD技术革命—实体造型技术 1979年世界上第一个完全基于实体造型技术的大型CAD软件发布。由于实体造型技术能够精确表达零件的全部属性,在理论上有助于统一CAD、CAE、CAM的模型表达,给设计带来了惊人的方便性。 1.3、第三次CAD技术革命—参数化技术 1.4、第四次CAD技术革命—变量化技术 成功运用参数化技术之后,开发人员发现了参数化技术尚有许多不足之外。首先,“全尺寸约束”这一硬性规定就干忧和制约着设计者创造力及想象力的发挥。再者,如在设计中关键形体的拓扑关系发生改变,失去了某些约束特征也会造成系统数据混乱。 1993年全新体系结构的I-DEAS Master Series软件问世,它第一次将变量化付诸实践。变量化技术既保持了参数化技术的原有优点,同时又克服了它的不足之处。无疑,变量化技术成就了SDRC,也驱动了CAD发展的第四次技术革命。 1.5、CAD的发展方向 任何一种软件都是有缺陷而非完美无瑕的。AutoCAD这一软件也是一样,只有在不断的发展中,找到自己的不足力求弥补,才能趋向臻化,达到一种完美。 纵观CAD的发展史,我们可以大略地看出该软件是朝着“人工智能化”、“专业应用化”等方向发展的。 而实现这样的发展方向的最佳手段就是通过对CAD的二次开发。将各类专业设计技术研制成CAD系统的各类设计工具和知识,从而使使用者能按照专业设计的方向进行,可以大大提高CAD的设计效率。

AutoCAD的二次开发

AutoCAD的二次开发主要涉及以下内容: (1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。 (2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。 (3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。 (4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。为此笔者用VC++开发了一套自动安装程序,使原本需要五、六分钟的人工操作在十几秒内即可自动完成。 一、基本思路 整个安装程序遵循以下思路: 1)首先获得所在机器AutoCAD2000系统的安装路径; 2)寻找菜单文件AutoCAD2000\\support\\acad.mnu,打开文件并将要添加的内容加至末尾; 3)寻找LISP文件AutoCAD2000\\support\\acad2000doc.lsp,打开文件并将要添加的内容加至末尾; 4)创建一个预先命名的子目录,将所有二次开发形成的各类文件拷入;

5)给出信息框,告知安装成功,如有问题则告知安装失败。 需要指出的是,在添入acad2000doc.lsp的内容中须有如下语句:(command“_menu”(strcat (getvar "menuname") ".mnu")),目的是为了强制执行菜单文件装入命令,将改动后的acad.mnu文件编译后装入。另外,在添入acad2000doc.lsp的内容中还有一赋值语句,将准备创建的包含所有二次开发生成文件的子目录全路径名赋予一全局变量,以供二次开发程序在需要时调用,从而避免了在AutoCAD环境下交互设定路径的麻烦。 二、实现方式及关键函数 为获得AutoCAD2000的安装路径,需要利用WINDOWS系统注册表的有关功能。 首先通过RegOpenKey函数打开注册表: HKEY hKey; LONGret=RegOpenKey( HKEY_LOCAL_MACHINE, "Software\\Autodesk\\AutoCAD\\R14.0\\ACAD-1:804", &hKey); 其中第一参数HKEY_LOCAL-MACHINE为注册表中预定义的主键句柄,第二参数为注册表中HKEY_LOCAL_MACHINE下的子键内容,第三参数hKey将返回一子键句柄,用于接下来的键值查询。若该函数运行成功,将返回一长整型数ERROR_SUCCESS。 接下来利用RegQueryValueEx函数进行键值查询: DWORD dwType=REG_SZ; BYTE szData[100];

Autocad-VBA二次开发简易教程

第一课:入门 1.为什么要写这个教程 市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。 2.什么是Autocad VBA? VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。 3、VBA有多难? 相信大家都知道Basic是的含义。应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。 4、怎样学习VBA? 介绍大家一个学习公式:信心+恒心=开心。仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。本教程将陆续发布在CAD世界论坛上,您不需要付费就可以学习。本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。 5、现在我们开始编写第一个程序:画一百个同心圆 第一步:复制下面的红色代码 第二步:在模型空间按快捷键Alt+F8,出现宏窗口 第三步:在宏名称中填写C100,点“创建”、“确定” 第四步:在Sub c100()和End Sub之间粘贴代码 第五步:回到模型空间,再次按Alt+F8,点击“运行” Sub c100() Dim cc(0 To 2) As Double '声明坐标变量 cc(0) = 1000 '定义圆心座标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 '开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆 Next i End Sub 也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。 第二课编程基础 本课主要任务是对上一课的例程进行详细分析 下面是源码: Sub c100() Dim cc(0 To 2) As Double '声明坐标变量 cc(0) = 1000 '定义圆心座标 cc(1) = 1000 cc(2) = 0 For i = 1 To 1000 Step 10 '开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆

用AutoLISP程序提高绘图效率的几个实例

2007.12 科技广场 254

工程中经常要绘制各种弹簧和螺纹连接件,在AutoCAD中没有专门绘制弹簧和螺纹的命令,弹簧和螺纹在AutoCAD中都可用平面图形通过相应螺旋线拉伸而成,所以绘制螺旋线就是解决问题的关键。如果用常规的3dpoly命令绘制三维螺旋线,需要输入大量精确数据,才能一点一点地画出螺旋线,做法非常麻烦。现在提供AutoLISP程序,即可解决绘制螺旋线的问题。然后通过相应平面图形的拉伸,就可以完成弹簧、螺纹等零件的绘制。 根据圆台螺旋线的形成原理(一动点M绕圆台的母线AB作等速直线运动,而该母线AB又绕圆台的轴线O1O2作等角速旋转时,点M的运动轨迹即为圆台的螺旋线,如图二所示。圆柱螺旋线是圆台螺旋线的特例,故可通过圆台螺旋线程序做相应的变动,即可得到),动点M(x,y,z)的参数方程如下: 图二园台螺旋线 X=[r0+hg *α/(2π)]*cosα Y=[r0+hg *α/(2π)] *sinα Z=±vg *α/(2π) 其中,r0为圆台下面的半径,α为螺旋线角,vg为导程(单线螺旋线螺距(弹簧的节距)等于导程),hg为点M沿水平半径方向上增加的距离(hg=|(r1-r0)m|求得,m为螺旋线的圈数)。 下面提供圆台螺旋线的AutoLISP程序清单: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r1 (getreal "指定初始半径:")) (setq disp (getreal "指定节距:")) (setq angtg (getreal "输入锥形角:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq tg (*(/ angtg 180) pi)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r1 0 0)) (repeat (* m n) (setq k(+ k 1)) (setq ang(+ delta ang)) (setq r (- r1 (* (+ 0(* j k))(/ (sin tg )(costg))))) (setq pt2 (list (* r(cos ang))(* r(sin ang))(+ 0(* j k)))) (command pt2) ) (command "") ) 根据圆台螺旋线的形成原理,如果圆锥角为0度时,即可形成圆柱螺旋线。圆柱螺旋线程序清单如下: (defun c:luoxc(/) (setq b1 (getpoint" 指定基点:")) (setq r (getreal "指定初始半径:")) (setq vg (getreal "指定节距:")) (setq m (getint"输入圈数:")) (setq n (getint"输入每圈细化段数<36>:")) (cond ((null n )(setq n 36))) (setq delta (/ (* 2.0 pi ) n)) (setq j (/ disp n)) (setq bb (caddr b1)) (setq ang 0) (setq k 0) (command "ucs" "o" b1) (command "3dpoly" (list r 0 0)) 255

AutoCAD二次开发教程

第 1章 Hello World: 工程的创建 在这一章中,我们将不使用ObjectARX向导来创建一个新的工程。我们将使用Visual Studio .NET来创建一个新的类库工程。通过这个工程,你可以创建一个能被AutoCAD装载的.NET dll文件。这个dll文件会向AutoCAD加入一个名为“HelloWorld”的新命令。当用户运行这个命令后,在AutoCAD 命令行上将显示“Hello World”文本。 1) 启动Visual https://www.wendangku.net/doc/9b16994774.html,,选择”文件>新建>工程”(File> New> Project)。在新建工程对话框中选择工程类型为”Visual Basic 工程”,然后选择”类库”模板,在工程名字框中输入”Lab1”,然后选择工程存放的位置。点击确定按钮来创建工程。 2) 在工程的Class1.vb文件中,一个公有类“Class1”已经被系统自动创建了。接下来向这个类加入命令。要加入命令,你必须使用AutoCAD .NET托管封装类。这些托管封装类包含在两个托管模块中。要加入对这两个托管模块的引用,请用鼠标右键单击”引用”然后选择”添加引用”。在弹出的”添加引用”对话框中选择”浏览”。在”选择组件”对话框中,选择AutoCAD 2006的安装目录(这里假定为C:\Program Files\AutoCAD 2006\),在这个目录下找到“acdbmgd.dll”然后选择并打开它。再一次选择”浏览”,在AutoCAD 2006 的安装目录下找到“acmgd.dll”并打开它。当这两个组件被加入后,请单击”添加引用” 对话框中的”确定”按钮。正如它们的名字所表示的,acdbmgd.dll包含ObjectDBX托管类,而acmgd.dll包含AutoCAD托管类。 3) 使用对象浏览器(Visual https://www.wendangku.net/doc/9b16994774.html,的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。请展开“AutoCAD .NET Managed Wrapper”对象(在对象浏览器中显示为acmgd),在整个教程中我们将使用这个对象中的类。在本章中,我们将使用“Autodesk.AutoCAD.EditorInput.Editor”类的一个实例来在AutoCAD命令行中显示文本。请再展开“ObjectDBX .NET Managed Wrapper” 对象(在对象浏览器中显示为acdbmgd),这个对象中的类将被用来访问和编辑AutoCAD图形中的实体(这部分内容将在以后的章节中介绍)。 4) 引用了ObjectARX .NET 封装类后,我们就可以导入它们。在Class1类的声明语句(位于Class1.vb文件的顶部的)之前,导入ApplicationServices, EditorInput 和 Runtime 命名空间。 Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.Runtime 5) 接下来在类Class1中加入命令。要加入能在AutoCAD 中调用的命令,你必须使用“CommandMethod”属性。这个属性由Runtime命名空间提供。在类Class1中加入下列属性和子程序。注意续行符” _”的使用。 Public Class Class1 _ Public Sub HelloWorld() End Sub End Class 6) 当“HelloWorld”命令在AutoCAD中运行的时候,上面定义的HelloWorld子程序就会被调用。在这个子程序中,一个Editor类的实例将被创建。Editor类拥有访问AutoCAD命令行的相关方法,它还包括选择对象和其它一些重要的功能。AutoCAD当前活动文档的Editor 对象可以使用Application类来访问。当Editor对象被创建后,你可以使用它的

AutoCAD二次开发

第一课:入门 1.为什么要写这个教程市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。 2.什么是Autocad VBA? VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。 3、VBA有多难?相信大家都知道Basic是的含义。应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。 4、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。本教程将陆续发布在CAD世界论坛上,您不需要付费就可以学习。本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。 5、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键Alt+F8,出现宏窗口第三步:在宏名称中填写C100,点“创建”、“确定” 第四步:在Sub c100(和End Sub之间粘贴代码第五步:回到模型空间,再次按Alt+F8,点击“运行” Sub c100( Dim cc(0 To 2 As Double '声明坐标变量 cc(0 = 1000 '定义圆心座标 cc(1 = 1000 cc(2 = 0 For i = 1 To 1000 Step 10 '开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10 '画圆 Next i End Sub 也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。第二课编程基础本课主要任务是对上一课的例程进行详细分析下面是源码: Sub c100( Dim cc(0 To 2 As Double '声明坐标变量 cc(0 = 1000 '定义圆心座标 cc(1 = 1000 cc(2 = 0 For i = 1 To 1000 Step 10 '开始循环 Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10 '画圆 Next i End Sub 先看第一行和最 后一行:Sub C100( …… End Sub C100是宏的名称,也叫过程名称,当用户执行 C100时程序将运行sub和end sub之间的所有指令。第二行: Dim cc(0 To 2 As Double '声明坐标变量后半段“'声明坐标变量”自动变为绿色字体,它是代码语句的注释,它不会影响程序运行,它的作用是告诉阅读者程序员的想法。对于简单的程

AutoCAD二次开发工具的比较

AutoCAD二次开发工具的比较 AutoCAD是美国Autodesk公司的产品,是当今世界最为流行的计算机辅助设计软件之一,广泛应用于机械、建筑、电子、工程等许多领域。它如此风靡的原因除了具有各种强大的绘图及编辑功能、友好的用户界面、易于操作等特性之外,还在于它所具有的开放式结构(Open Architecture,即允许用户开发自己的命令、标准库文件和各种应用程序)使得通过对AutoCAD进行二次开发来完成各类设计工作变得更加容易。 现在对AutoCAD二次开发工具的几种方法作一个介绍,对比各自的优势及不足,给出各自的适用条件。 1.AutoLISP AutoLISP是AutoCAD最早的一种二次开发语言。它是一种嵌入在AutoCAD内部的CommonLisp程序设计语言子集,并扩充了极强的图形处理功能。此外还可为AutoCAD添加某些特殊的函数功能,如制作幻灯片、菜单等。 AutoLISP应用程序既可完成通常的科学计算和数学分析,又能直接调用几乎全部AutoCAD命令。这两者的有机结合,使它成为专业CAD开发者强有力的理想工具。而Lisp是目前研究和开发人工智能与专家系统CAD的主要编程语言。 AutoLISP有如下优点:(1)语言规则十分简单,易学易用。对计算机了解不太深入的工程专业人员,仅需经短期的学习,就可以熟练掌握这门语言。该语言的简洁性是其它许多计算机语言所无法相比

的。(2)直接针对AutoCAD,解释执行,易于交互。AutoLISP提供的大多数函数都是直接针对AutoCAD操作的,用AutoLISP可编写访问AutoCAD图形数据库(DWG)的操作。(3)解释执行立竿见影。程序员既可以一次运行一段AutoLISP代码,也可以在AutoCAD 的”Command:”下逐条键入AutoLISP指令,立即得到结果。 随着计算机技术的发展,CAD编程逐渐复杂,代码越来越庞大,AutoLISP的缺点也越来越明显。如,综合处理能力差、程序运行速度慢、软件质量不易保证、开发环境集成度低和与人的思维方式不太一致等。由于AutoLISP的这些特点,它仅适合于有能力的终端用户作些自己的开发任务,如今AutoLISP的使用已经逐渐被其它几种开发工具所取代。 2.ADS 它是AutoCAD开发系统(AutoCAD Development)的简称。ADS 的编程界面可使用户用C语言来实现AutoCAD的用户化,既可运行第三方开发的ADS应用程序,也可以编写自己的ADS应用程序。 与AutoLISP相比,ADS程序的优越性如下:(1)具备错综复杂的综合大规模处理能力;(2)由于是编译开发环境,可以检查程序设计语言的逻辑错误,且执行速度快;(3)程序源代码的可读性好于LISP;(4)引入C++高级语言后,ADS也同样具有面向对象的功能,程序层次分明,清晰可读,从而使软件的可维护性得到提高;(5)经过良好封装,ADS C++的程序代码比ADS C程序简洁得多,许多时候比AutoLISP更简洁;(6)ADS C++的程序能够减少程序出错的概率。

利用C#进行AutoCAD的二次开发

利用C#进行AutoCAD的二次开发(一)转自明经通道 众所周知,对AutoCAD进行二次开发用到的主要工具有:ObjectArx,VBA,VLisp。但它们的优缺点是显而易见的:ObjectArx功能强大,编程效率高,但它的缺点是编程者必须掌握VC++,而这门语言非常的难学;VBA和VLisp虽然简单易上手,但它们对于开发大型的程序好象无能为力。那究竟有没有一种语言能结合它们的优点而尽量避免它们的缺点呢? 回答是肯定的,那就是微软新推出的21世纪编程语言C#。关于C#的详细介绍,大家可以参考有关的文章。 C#是通过AutoCAD ActiveX 这座桥梁来和AutoCAD之间进行通讯的。AutoCAD ActiveX 使用户能够从AutoCAD 的内部或外部以编程方式来操作AutoCAD。它是通过将AutoCAD 对象显示到“外部世界”来做到这一点的。一旦这些对象被显示,许多不同的编程语言和环境就可以访问它们。关于AutoCAD ActiveX 的情况,大家可以参考AutoCAD自带的帮助。 呵呵,说了这么多无聊的,还是让我们通过一个具体的例子来说明怎样利用C#进行AutoCAD的二次开发吧。在介绍例子之前先讲一下有关的配置: (1)Visual Studio .net (2003和2002都可以,我用的是2002)(2)AutoCAD2000以上版本(我用的是2004)这个例子非常简单,就是通过C#建立的窗体来启动AutoCAD并画一条直线。下面是编程的具体步骤: (1)通过Visual Studio .net 建立一C#的windows应用程序。 (2)在“解决方案资源管理器”中右击“引用”标签,在弹出的菜单中选择“添加引用”,在“添加引用”对话框中选择“com"选项卡下的下拉列表框中的“AutoCAD 2004 Type Library"项(注意:不同版本的CAD的数字不同),单击右边的“选择”按钮,最后单击下面的“确定”按钮。(3)在C#窗体中加入两个文本框和一个按钮,分别用于输入直线起点、终点的坐标和在CAD中画直线。下面主要解释一下添加的代码。(a)在程序的开头加入:using AutoCAD;//导入AutoCAD引用空间 (b)在窗体的变量声明部分加入: private AcadApplication a;//声明AutoCAD对象 (c)在窗体的构造函数部分加入:a=new AcadApplicationClass();//创建AutoCAD对象 a.Visible=true;//使AutoCAD可见 (d)在按钮的消息处理函数中加入: double[] startPoint=new double[3]; //声明直线起点坐标 double[] endPoint=new double[3];//声明直线终点坐标 string[] str=textBox1.Text.Split(',');//取出直线起点坐标输入文本框的值,文本框的输入模式为"x,y,z" for(int i=0;i<3;i++) startPoint=Convert.ToDouble(str);//将str数组转为double型 str=textBox2.Text.Split(',');//取出直线终点坐标输入文本框的值 for(int i=0;i<3;i++) endPoint=Convert.ToDouble(str); a.ActiveDocument.ModelSpace.AddLine(startPoint,endPoint);//在AutoCAD中画直线 a.Application.Update();//更新显示 好了,简单吧,你可以试着编译一下。关于上面一些语句的用法,我会在下一讲中作详细介绍。

相关文档
相关文档 最新文档