(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                  '定义特征对象
'-----------------------主要命令代码注释-------------------------
vb软件开发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 ”文件,这样在打开SolidWorks后直接点击此exe文件,就可以根据需要来绘制标准件3D模型了.
上述直接运行exe文件来使用标准件库的方法,只能局限于安装了VB的计算机上,为了让没有安装VB的用户也能方便的使用该标准件库软件,我们可以用Visual Studio自带的打包工具Package and Deployment Wizard将标准件库制作成标准安装程序,打包过程中要注意包含文件步骤,一定要确认包含文件的完整性,程序使用的图标,图片,第三方控件所带的文件一定要带上,否则可能导致安装后的程序运行出错.
3.结束语
本文通过介绍标准件库的应用程序,说明了利用VB调用SolidWorks API函数对SolidWorks二次开发的一般方法,读者可以采用该方法建立适合自己需要的,专用的SolidWorks功能模块,继续对SolidWorks二次开发进行深入研究与探索.
(插图无法上传,见谅!) 本文摘选自我的一篇学术论文,原文见 《山东机械》杂志 2006.5月3期。