博文

Autocad VBA初级教程 (第五课 画函数曲线)(2006-01-03 07:10:00)

摘要:  先画一组下图抛物线。 下面是源码:Sub myl()Dim p(0 To 49) As Double '定义点坐标Dim myl As Object '定义引用曲线对象变量co = 15 '定义颜色For a = 0.01 To 1 Step 0.02 '开始循环画抛物线  For i = -24 To 24 Step 2 '开始画多段线    j = i + 24  '确定数组元素    p(j) = i '横坐标    p(j + 1) = a * p(j) * p(j) / 10 '纵坐标  Next i '至此p(0)-p(40)所有元素已定义,结束循环  Set myl = ThisDrawing.ModelSpace.AddLightWeightPolyline(p) '画多段线  myl.Color = co '设置颜色属性  co = co + 1 '改变颜色,供下次定义曲线颜色Next aEnd sub 为了鼓励大家积极思考,从本课开始,我不再解释每一条语句的作用,只对以前没有提过的语句进行一些解释,也许你一时很难明白,建议用上一课提到的跟踪变量、添加断点的办法领悟每一条语句的作用,如果有问题不懂请跟贴提问。在跟踪变量p时请在跟踪窗口中单击变量p前的+号,这样可以看清数组p中每一个元素的变化。 ACAD没有现成的画抛物线命令,我们只能用程序编写多段线画近似抛物线。理论上,抛物线的X值可以是无限小、无限大,这里取值范围在正负24之间。 程序第二行:Dim myl As Object '定义引用曲线对象变量Object也是一种变量类型,它可以把变量定义为对象,本例中myl变量将引用多段线,所以要定义为Objet类型。 看画多段线命令:Set myl = ThisDrawing.ModelSpace.AddLightWeightPolyline(p) '画多段线其中括号中的p是一个数组,这个数组的元素数必须是偶数,每两个元数作为一个点坐标。等号前面部分“Set myl”的作用就将myl变量去引用画好的多段线。myl.Color = co '设置颜色属性。在ACAD中,颜色可以用......

阅读全文(4986) | 评论:0

Autocad VBA初级教程 (第六课 数据类型的转换)(2006-01-03 07:04:00)

摘要:  上一节课我们用一个简单的公式把角度转化为弧度,这样做便于大家理解。不过VBA中有现成的方法可以转换数据类型。 我们举例说明:jd = ThisDrawing.Utility.AngleToReal(30, 0)这个表达式把角度30度转化为弧度,结果是.523598775598299。AngleToReal需要两个参数,前面是表示要转换角度的数字,而后面一个参数可以取值为0-4之间的整数,有如下意义:0:十进制角度;1:度分秒格式;2:梯度;3:弧度;4:测地单位例:id= ThisDrawing.Utility.AngleToReal("62d30' 10""", 1)这个表达式计算62度30分10秒的弧度 再看将字符串转换为实数的方法:DistanceToReal需要两个参数,前一个参数是表示数值的字符串,后面可以取值1-5,表示数据格式,有如下意义:1:科学计数;2:十进制;3:工程计数——英尺加英寸;4:建筑计数——英尺加分数英寸;5:分数格式。例:以下表达式得到一个12.5的实数temp1 = ThisDrawing.Utility.DistanceToReal("1.25E+01", 1)temp2 = ThisDrawing.Utility.DistanceToReal("12.5", 2)temp3 = ThisDrawing.Utility.DistanceToReal("12 1/2", 5)而realtostring方法正好相反,它把一个实数转换为字符串。它需要3个参数第一个参数是一个实数,第二个参数表示数据格式,含义同上,最后一个参数表示精确到几位小数。temp1= ThisDrawing.Utility.RealToString(12.5, 1, 3)得到这个字符串:“1.250E+01”, 下面介绍一些数型转换函数:Cint,获得一个整数,例:Cint(3.14159) ,得到3Cvar,获得一个Variant类型的数值,例:Cvar("123" & "00"),得到”12300”Cdate,转换为date数据类型,例:MyShortTime = CDate("11:13:14 AM") 下面的代码可以写出一串数字,从000-099。 Sub test() Dim add0 As StringDim te......

阅读全文(3956) | 评论:0

Autocad VBA初级教程 (第七课 写文字)(2006-01-03 07:03:00)

摘要:  客观地说,ACAD写字功能不够历害,而用VBA可以使写字效率更高。比较正规的做法是把定义文字样式,用样式来控制文字的特性。我们还是用实例来学习,先看下面一段代码,它的作用是先创建一个文字样式,然后用这个文字样式写一段多行文本。 Sub txt() Dim mytxt As AcadTextStyle '定义mytxt变量为文本样式Dim p(0 To 2) As Double '定义坐标变量p(0) = 100: p(1) = 100: p(2) = 0 '坐标赋值Set mytxt = ThisDrawing.TextStyles.Add("mytxt") '添加mytxt样式 mytxt.fontFile = "c:\windows\fonts\simfang.ttf" '设置字体文件为仿宋体mytxt.Height = 100 '字高mytxt.Width = 0.8 '宽高比mytxt.ObliqueAngle = ThisDrawing.Utility.AngleToReal(3, 0) '倾斜角度(需转为弧度) ThisDrawing.ActiveTextStyle = mytxt '将当前文字样式设置为mytxtSet txtobj = ThisDrawing.ModelSpace.AddMText(p, 1400, "{做到老,学到老}\P" & "此心自光明正大,过人远矣") txtobj.LineSpacingFactor = 2 '指定行间距txtobj.AttachmentPoint = 3 '右对齐(1为左对齐,2为居中) End Sub 我们看这条语句Set mytxt = ThisDrawing.TextStyles.Add("mytxt") 添加文本样式并赋值给mytxt变量,只需要一个参数:文本样式名 fontfile、height、width、ObliqueAngle是文本样式最常用的属性 Call ThisDrawing.ModelSpace.AddMText(p, 1400, "{做到老,学到老}\P" & "此心自光明正大,过人远矣")这条语句是写文本,需要三个参数。第一个参数p是坐标,1400是宽度,最后一个参数是文本内容,其中\p是一个回车符 扩大字符间距用\T数字,例......

阅读全文(3215) | 评论:0

Autocad VBA初级教程 (第八课:图层操作)(2006-01-03 07:00:00)

摘要:  先简单介绍两条命令: 1、这条语句可以建立图层:ThisDrawing.Layers.Add("新建图层")在括号中填写图层的名称。 2、设置为当前的图层ThisDrawing.ActiveLayer=图层对象注意,等号右边的变量不能用图层名称,必须使用一个有效的图层变量 以下一些属性在图层比较常用:LayerOn 打开关闭Freeze 冻结Lock锁定Color 颜色Linetype 线型 看一个例题:1、先在已有的图层中寻找一个名为“新建图层”的图层2、如果找到这个图层,显示该图层的信息,并提示用户是否需要设置为当前图层,如果用户确认,则设置为当前图层。3、如果图层没有找到,新建一个名为“新建图层”的图层,设置为黄色,HIDDEN线型,并把这个图层设置为当前图层 Sub mylay() Dim lay0 As AcadLayer '定义作为图层的变量Dim lay1 As AcadLayer findlay = 0 '寻找图层的结果的变量,0没有找到,1找到 For Each lay0 In ThisDrawing.Layers '在所有的图层中进行循环   If lay0.Name = "新建图层" Then '如果找到图层名    findlay = 1 '把变量改为1标志着图层已经找到    msgstr = lay0.Name + "已经存在" + vbCrLf    msgstr = msgstr + "图层状态:" + IIf(lay0.LayerOn = True, "打开", "关闭") + vbCrLf    msgstr = msgstr + "图层" + IIf(lay0.Freeze = True, "已经", "没有") + "冻结" + vbCrLf    msgstr = msgstr + "图层" + IIf(lay0.Lock = True, "已经", "没有") + "锁定" + vbCrLf    msgstr = msgstr + "图层颜色号:" + CStr(lay0.Color) + vbCrL......

阅读全文(5231) | 评论:0

Autocad VBA初级教程 (第九课:创建选择集)(2006-01-03 06:59:00)

摘要:  1.在创建对象的同时可以直接引用.以前的例程中已经做过多次了,现在复习一下,看例程:先随机画300个圆,在画圆时直接引用,然后再把这些圆根本大小修改颜色. Sub c300() Dim myselect(0 To 300) As AcadEntity '定义选择集数组Dim pp(0 To 2) As Double '圆心坐标 For i = 0 To 300 '循环300次pp(0) = 3000 * Rnd: pp(1) = 3000 * Rnd: pp(2) = 0 '设置圆心坐标Set myselect(i) = ThisDrawing.ModelSpace.AddCircle(pp, Rnd * 30 + 1) '画不同大小的圆Next i For i = 1 To 300If myselect(i).Radius > 10 Then '判断圆的直径是否大于10 myselect(i).color = Int(255 * Rnd + 1) '大圆颜色改为随机数Else myselect(i).color = 0 '小圆改为白色End IfNext i ZoomExtents '缩放到显示全部对象 End Sub pp(0) = 3000 * Rnd: pp(1) = 3000 * Rnd: pp(2) = 0这一行实际上应该是三条语句,用三行合并为一行,用冒号分开rnd是随机数函数,它的数值为0-1之间的小数,3000*rnd得到的数值就是在0-3000之间的随机数 Set myselect(i) = ThisDrawing.ModelSpace.AddCircle(pp, Rnd * 30 + 1)这条语句的作用是以pp点坐标为圆心,画一个圆,半径是1-30之间的随机数,赋值给myselect选择集. 2.提标用户在屏幕中选取选择语句这样写:Set sset = ThisDrawing.SelectionSets.Add("ss1"),其中”ss1”是一个选择集名称,这个参数可以随意写一个,注意不要重复就可以了.下面的例程是让用户选择对象,然后把选中的对象改为绿色,最后把选择集删除 Sub mysel() Dim sset As AcadSelectionSet '定义选择集对象Dim el......

阅读全文(5418) | 评论:0

ANSYS中在任意面施加任意方向任意变化的压力方法 (2006-01-03 06:49:00)

摘要:在任意面施加任意方向任意变化的压力 在某些特殊的应用场合,可能需要在结构件的某个面上施加某个坐标方向的随坐标位置变化的压力载荷,当然,这在一定程度上可以通过ANSYS表面效应单元实现。如果利用ANSYS的参数化设计语言,也可以非常完美地实现此功能,下面通过一个小例子描述此方法。 !!!在执行如下加载命令之前,请务必用选择命令asel将需要加载的几何面选择出来 !!! finish /prep7 et,500,shell63 press=100e6 amesh,all esla,s nsla,s,1 ! 如果载荷的反向是一个特殊坐标系的方向,可在此建立局部坐标系,并将 ! 所有节点坐标系旋转到局部坐标系下. *get,enmax,elem,,num,max dofsel,s,fx,fy,fz fcum,add !!!将力的施加方式设置为"累加",而不是缺省的"替代" *do,i,1,enmax *if,esel,eq,1,then *get,ae,elem,i,area !此命令用单元真实面积,如用投影面积,请用下几条命令 ! *get,ae,elem,i,aproj,x !此命令用单元X投影面积,如用真实面积,请用上一条命令 ! *get,ae,elem,i,aproj,y !此命令用单元Y投影面积 ! *get,ae,elem,i,aproj,z !此命令用单元Z投影面积 xe=centrx !单元中心X坐标(用于求解压力值) ye=centry !单元中心Y坐标(用于求解压力值) ze=centrz !单元中心Z坐标(用于求解压力值) ! 下面输入压力随坐标变化的公式,本例的压力随X和Y坐标线性变化. p_e=(xe-10)*press+(ye-5)*press f_tot=p_e*ae esel,s,elem,,i nsle,s,corner *get,nn,node,,count f_n=f_tot/nn *do,j,1,nn f,n......

阅读全文(2516) | 评论:0

电机电磁场CAE有限元分析探讨(2006-01-03 06:37:00)

摘要:     本文定义了计算机辅助工程CAE,探讨了电机CAE的发展,说明了电机电磁场有限元分析。     一、计算机辅助工程(CAE)     计算机辅助工程是随着CAD/CAM技术的发展而出现的一种新技术,它的含义和功能范围还没有统一的提法,有些专家将CAE看成是包含工程分析在内的广义的CAD/CAM,同时由于CAE在机械工程中的应用最广泛(如铁路货车产品结构有限元分析系统),因而把广义的CAE称做MCAE。但是,很多数学者目前还是把CAE看成是以计算力学为基础,以计算机仿真(模拟)为手段的工程分析技术,并相应地把它归入广义的CAD功能中,作为实现产品优化设计的主要支持模块。按照后一看法,CAE技术包括有限元FEM和边界元BEM分析、运动机构分析、气动或流场分析、电路设计和磁场分析等。其中有限元分析在机械CAD中应用最广泛。这种方法,首先在几何上把分析对象划分成有限个单元,由互相交叉的网格节点形成有限个元素,然后通过计算每个单元或节点的特性,分析整体的特性。有限元分析法是近20年来发展起来的技术,随着应用规模和范围的不断扩大,其理论和技术日益完善,它最突出的优点是通用性强,可用于工程结构力学、热传导、液压、气动力学等的分析中,适用于包括电子、航空、航天在内的各种机械工程领域。同时,对于各类工程分析问题,有相当一部分相似的处理过程,因而非常适用于标准化。     二、电机CAE的发展     20世纪70年代以来,随着科学技术的迅猛发展与社会需求日趋多样化,市场变化频繁,竞争激烈。表现在电机产品方面,产品更新换代的周期越来越短,产品的性能、质量、价格以及交货期的竞争越来越激烈。对大数电机厂来说,一个明显的特点是多品种、小批量生产占主导地位。在进行多品种、小批量生产时,由于产品的品种和工艺过程的多样性,环境条件(如用户订货、外购、外协、交货期等)的不确定性,以及生产计划与生产调度的动态性等因素,致使物料过程复杂多变,信息流的数据和信息庞杂,信息的处理、贮存与传输频繁。因此,按常规的单件生产或按刚性自动化的方式都无法适应,必须解决物流既具高效自动化,又具生产“柔性”即柔性自动化的问题;同时,也必须相应......

阅读全文(3114) | 评论:0

AutoCAD中输入特殊字符(2006-01-03 06:35:00)

摘要:  ---- 在进行AutoCAD软件的实际绘图中,我们经常需要输入一些特殊字符,如表示直径的Ф、表示地平面的±等,这些特殊字符无法直接从键盘上输入。AutoCAD软件为这些字符的输入提供了一些简捷的控制码。 ----AutoCAD提供的控制码,均由两个百分号(%%)和一个字母组成,输入这些控制码后,屏幕上并不立即显示它们所代表的特殊符号,只在回车结束本次标注命令之后,控制码才会变成相应的特殊字符。 ----控制码及其相对应的特殊字符见下表所示: 控制码 相应特殊字符及功能%%O 打开或关闭文字上划线功能%%U 打开或关闭文字下划线功能%%D 标注度符号“°”%%P 标注正负号“±”%%C 标注直径“Ф” ----很明显,这些特殊字符的数量远远不能满足我们在进行绘图时的实际需要,有的用户不得不采用从WORD97中粘贴的办法,这样既麻烦又很不方便。实际上,AutoCAD软件从14.0版本起提供了通过“字符映射表”来增加特殊字符的方法,我们完全可以在“字符映射表”中找到所需要的特殊字符。具体操作如下 : ----1. 单击绘图工具栏上的“A”按钮或输入MTEXT(标注多行文本)命令,AutoCAD软件会提示要求用户在屏幕上选择指定文本边框的第一个角点,当指定了文本边框的第一个角点后,向左或向右拖动光标确定了段落文字的分布宽度,而向上或向下拖动光标就确定了文字分布的另一方向。一旦用户建立了文本边框, AutoCAD就会打开【Multiline Text Editor】对话框,我们就可以在此对话框中输入文本,当文本到达定义边框的右边界时,AutoCAD将自动换行。在这个对话框中,我们可以看到右侧四个按钮中有一个是“Symbol”,这就是我们输入特殊字符时所要使用的主要功能按钮。 ----2.单击这个按钮右下角的箭头,打开一个下拉列表,我们可以看到有“Degress %%d”、“Plus/Minus %%p”、“Diameter %%c”、“Non-breaking Space”、“Other”四个选项,选择前三个的某一选项可直接输入“°、±、Φ”符号。 ----3.单击选项“Other”时,可以有更多的选择,AutoCAD 会打开“字符映射表”对话框,该对话框包含更多的符号供用户选用,其当前内容取决于用户在“字体”下拉列表中选择的字体,......

阅读全文(3374) | 评论:0

AutoCad绘制三爪卡盘模型,借用四视图来建模型(2006-01-03 06:33:00)

摘要:  小弟写教程纯粹表达的是建模思路,供初学者参考.任何物体的建摸都需要思路,只有思路多,模型也就水到渠成.ok废话就不说了.建议使用1024X768分辨率 开始先看下最终效果 第一步,如图所示将窗口分为四个视图 第二步,依次选择每个窗口,在分别输入各自己的视图 第三步,建立ucs重新建立世界坐标体系,捕捉三点来确定各自的ucs如图 第四步,初步大致建立基本模型.可以在主视图建立两个不同的圆,在用ext拉升,在用差集运算.如图: 第五步:关键一步,在此的我思路是.先画出卡爪的基本投影,在把他进行面域,在进行拉升高度分别是10,20,30曾t形状.如图: 第六步:画出螺栓的初步形状.如图 第七步:利用ext拉升圆,在拉升内六边形.注意拉升六边行时方向与拉升圆的方向是相反的.之后在利用差集运算 第八步:将所得内螺栓模型分别复制到卡爪上,在利用三个视图调到与卡爪的中心对称.效果如图红色的是螺栓,最后是差集 第九步:阵列 第10步.模型就完成了 来一张利用矢量处理的图片  ......

阅读全文(5039) | 评论:0

如何将你的AutoCAD绘图加速(2006-01-03 06:31:00)

摘要:    随着CAD、CAM在工业生产上应用,对一个工程人员来说不会AutoCAD是不行的,但即使会了速度不快在实际应用中也是不行的。那如何提高速度呢?本人以自己的学习实践来简单谈谈提高速度的几种方法。 一、熟悉对CAD中基本操作命令/快捷图标的使用   这一点大多数人都知道,古人云:熟能生巧。基本命令与快捷图标便是CAD中大家最熟悉的,也应该能熟练掌握了,所以不详谈了。 二、 ACAD.PGP文件修改   大家都知道LINE命令在COMMAND输入时可简化为L,为何会如此呢?因为在AutoCAD中有一个加密文件ACAD.PGP中定义了LINE命令的简写,先找出这个文件打开它。找到"These examples include most frequently used commands."的提示语,在其下的几行文字就可对简写的定义,记住它的左列是简写命令的文字实现你可以根据你的需要进行修改(当然是你比较熟悉的英文缩写喽),它的右列是默认的命令请不要随意修改。相信这能为你提高一定的速度。 三、对图形夹点操作   夹点,你用过吗?当你用鼠标左键点击图形,图形上便会出现许多方框这些就是夹点。通过控制夹点便能进行一些基本的编辑操作。如:COPY,MOVE,改变图形所在的图层等基本操作。而且不同的图形,还有其特殊的操作。如:直线有延伸操作。 四、大量使用修改命令   对于CAD绘图工作人员来说,一幅图60%--70%是修改只有30%--40%是作图,这一点并不难理解。从图形构成来看图形只有直线与曲线这两种,而曲线又由大量的圆进行剪切而成的,所以一张图最终由直线和圆组成。既然如此作图只需先画圆或直线并确定位置,然后进行一系列操作如:OFFSET, TRIM, FILLET, ARRAY, CHAMFER等,来实现图形。   如一个轴承的绘图,只需两条互相垂直的直线,而后进行OFFSET,FILLET,CHAMFER等一系列操作便能精确的完成轴承的绘制。 五、构建图块来简化绘图工作   图块是CAD操作中比较核心的工作,许多程序员与绘图工作者都建立了各种各样的图块。由于他们的工作给我们的带来了简便,我们能像砖瓦一样使用这些图块。如工程制图中建立各个规格的齿轮与轴承;建筑制图中建立一些门、窗、楼梯、台阶等以便在绘制时方便调用。 ......

阅读全文(3462) | 评论:1