av久久久-av九九九-av九九-av激情网-欧美三级在线-欧美三级一区二区三区

AutoCAD計算截面對任意軸的靜距和慣性矩的程序設計

2013-08-09  by:廣州cad教學中心  來源:仿真在線

AutoCAD計算截面對任意軸的靜距和慣性矩的程序設計

 

一、引言

Autodesk公司開發的AutoCAD工程繪圖軟件是當前應用廣泛的二維CAD軟件,功能強大,在機械設計領域廣泛應用。開放式體系結構也允許第三方開發者為它編寫應用程序,顯著增加了繪圖工作效率。

VBA是VisualBasicforApplications的英文縮寫,是由Microsoft公司創建的,它是一個功能強大的定制程序開發工具,用來自動執行任務的一個編程環境。VBA為AutoCAD的二次開發提供類似VisualBasic(VB)語言所擁有的功能,引入了對象的程序設計環境,為開發者提供了用來創建圖形用戶界面(GUI)的可拖拉工具和用來與AutoCAD對象交互的編程語言。

AutoCAD具有強大的繪圖功能,可以直接求得截面對當前坐標系x軸和y軸的慣性距,但不能求得對任意軸的靜距和慣性矩。需要用戶通過創建面域、變換坐標系等一系列操作進行求解。靜距和慣性矩分別是計算回轉體質量、校核受力零部件強度的重要的截面幾何性質。筆者使用VBA在AutoCAD平臺上進行二次開發,根據靜距和慣性距的平行移軸公式和轉軸公式定制應用程序,幫助工程設計人員自動高效率地完成截面對任意軸的靜距和慣性矩求解。

二、數學模型求解

根據平面圖形的平行移軸公式、轉軸公式,可推導出平面圖形對于任意軸的靜距和慣性矩。已知截面在XOY坐標系下的面積A、質心(xc,yc)、慣性距Ix、慣性距Iy和慣性距Ixy,求解截面對X3軸的靜距Sx3、慣性距Ix3。

步驟1:截面對x、y軸的靜距:Sx=ycA,Sy=xcA;

步驟2:通過平行移軸到形心(xc,yc)后,截面中任意一點在X1O1Y1坐標系下的坐標為:

x1=x-xc

y1=y-yc

求解對x1、y1軸的靜距、慣性距和慣性積。

因為形心在X1O1Y1坐標系的原點,所以Sx1=0,Sy1=0。

AutoCAD計算截面對任意軸的靜距和慣性矩的程序設計autocad應用技術圖片圖片1

步驟3:圍繞形心(xc,yc)逆時針旋轉θ,圖形中任意一點在X2O2Y2坐標系下的坐標為:

x2=x1cosθ+y1sinθ

y2=-x1sinθ+y1cosθ

求解對x2、y2軸的靜距、慣性距和慣性積。因為形心在X202Y2坐標系的原點,所以Sx2=0,Sy2=0。

步驟4:通過沿y3方向平行移軸到x3軸后,圖形中任意一點在X3O3Y3坐標系下的坐標為:

x3=x2

y3=y2-D

求解對x3軸的靜距、慣性距:

AutoCAD計算截面對任意軸的靜距和慣性矩的程序設計autocad培訓教程圖片2

通過平行移軸和轉軸很容易求解平面圖形對于任意軸的幾何性質,推導過程中所需要的已知數據,可以采用VBA程序在AutoCAD的模型空間獲得。

三、VBA設計思路

本文通過為指定區域創建面域Region對象,可以獲得Region對象的Area、Centroid、MomentOfInertia和ProductOfInertia屬性。在VBA中通過程序代碼實現數學模型求解過程,從而實現截面對任意軸的靜距和慣性矩求解。

四、VBA程序編寫

1.生成面域

首先介紹生成面域并處理的方法,在AutoCAD模型空間中所求區域指定一點,為所選區域生成面域,并使此面域處于繪圖順序的最頂層。此面域為模型空間中最新的實體對象,因此可以根據模型空間的實體數量,將此面域賦值給AcadRegion類型變量RegionTemp,再將Region和RegionTemp指定的兩個面域合并,其次變更Region的顏色以便突出顯示對象。此過程采用循環語句讓用戶可以選取多個區域并生成一個Region。為了便于調用代碼,創建自定義函數如下:

FunctionAddRegion(ByRefRegionAsAcadRegion,ColorAsACAD_COLOR)

DimP0AsVariant

DimRegionTempAsAcadRegion

DimOSIntAsInteger

on ErrorResumeNext

OSInt=ThisDrawing.GetVariable(“OSMODE”)

‘獲取對象捕捉數值

ThisDrawing.SendCommand“OSMODE31743“

‘取消對象捕捉loopstart:DoWhile1

P0=ThisDrawing.Utility.GetPoint(,vbCrLf&“請在輪廓線內點取一點:”)

IfErr<>0Then

Err.Clear

GoToErrorHandler

EndIf

PStr=P0(0)&“,”&P0(1)

lngnum=ThisDrawing.ModelSpace.Count

‘創建面域

ThisDrawing.SendCommand“-boundaryAORin

“&““&““&PStr&““&““

Iflngnum=ThisDrawing.ModelSpace.CountThen

GoToloopstart

EndIf

IfThisDrawing.ModelSpace.Item(lngnum).EntityName

=“AcDbRegion”Then

SetRegionTemp=ThisDrawing.ModelSpace.Item(lngnum)

EndIf

‘面域求和

Region.BooleanacUnion,RegionTemp

IfErr<>0Then

Err.Clear

SetRegion=RegionTemp

54www.idnovo.com.cn

欄目主持:黎艷

投稿信箱:liy@idnovo.com.cn

EndIf

Region.Color=ColorRegion.UpdateRegion.HighlightTrueLoop

ErrorHandler:

ThisDrawing.SendCommand“OSMODE“&OSInt&““‘回復對象捕捉EndFunction

2.獲得面域屬性

面域生成之后,我們可以獲得面域對象的屬性,從而得到面域對x、y軸的幾何性質。具體的自定義函數代碼如下:

FunctionGetRegionAtt(ByRefRegionobjAs

AcadRegion,_

ByRefA,ByRefCx,ByRefCy,_

ByRefSx,ByRefSy,ByRefIx,ByRefIy,ByRefIxy)on ErrorResumeNext

A=Regionobj.Area’面積

Cx=Regionobj.Centroid(0)’質心Cy=Regionobj.Centroid(1)

Sx=Cy*A’計算靜距Sy=Cx*A

Ix=Regionobj.MomentOfInertia(0)’慣性距Iy=Regionobj.MomentOfInertia(1)

Ixy=Regionobj.ProductOfInertia’慣性積EndFunction

3.程序求解

根據數學模型求解中的公式,我們可以采用VBA編寫代碼求解。公式推導時所用到的參數任意軸對x軸的角度θ、面域質心到任意軸的距離D,需要通過VBA程序求解。在AutoCAD中可以使用“ThisDrawing.Utility.AngleFromXAxis”方法獲得指定兩點所形成的直線對x軸的弧度值。在VBA中計算三角函數時采用的參數為弧度,所以編寫代碼時可以直接用Radian變量代替角度θ。具體按公式求解的自定義函數代碼如下:

FunctionCalculate(ByRefRegionobjAsAcadRegion,ByRefA,ByRefCx,ByRefCy,_

ByRefSx,ByRefSy,ByRefIx,ByRefIy,ByRefIxy,_ByRefSx1,ByRefSy1,ByRefIx1,ByRefIy1,ByRef

Ix1y1,_

ByRefSx2,ByRefSy2,ByRefIx2,ByRefIy2,ByRef

Ix2y2,_

ByRefSx3,ByRefSy3,ByRefIx3,ByRefIy3,ByRef

Ix3y3)

on ErrorResumeNext

‘指定慣性軸兩點

P1=ThisDrawing.Utility.GetPoint(,vbCrLf&“請選取慣性軸第一點:”)

P2=ThisDrawing.Utility.GetPoint(P1,vbCrLf&“請選取慣性第二點:”)

Radian1=ThisDrawing.Utility.AngleFromXAxis(P1,P2)

IfStr(P1(0))=Str(Cx)AndStr(P1(1))=Str(Cy)Then

Radian2=0

Else

Radian2=ThisDrawing.Utility.AngleFromXAxis(P1,CP)

EndIf

DimCP(0To2)AsDouble

CP(0)=Cx

CP(1)=Cy

DisPP=Sqr((Cx-P1(0))^2+(Cy-P1(1))^2)‘質心到P1點的距離

Radian=Radian2-Radian1慣性軸對于x軸弧度

DisPL=Abs(DisPP*Sin(Radian))‘質心到慣性軸的距離

‘移軸至質心

Sx1=Sx-Cy*ASy1=Sy-Cx*A

Ix1=Ix-2*Cy*Sx+Cy^2*AIy1=Iy-2*Cx*Sy+Cx^2*A

Ix1y1=Ixy-Cy*Sy-Cx*Sx+Cx*Cy*A‘轉軸

Sx2=Sx1*Cos(Radian1)-Sy1*Sin(Radian1)Sy2=Sy1*Cos(Radian1)+Sx1*Sin(Radian1)

Ix2=Ix1*Cos(Radian1)^2+Iy1*Sin(Radian1)^2-

2*Ix1y1*Sin(Radian1)*Cos(Radian1)

Iy2=Iy1*Cos(Radian1)^2+Ix1*Sin(Radian1)^2+

2*Ix1y1*Sin(Radian1)*Cos(Radian1)

Ix2y2=0.5*(Ix1-Iy1)*Sin(2*Radian1)+Ix1y1*Cos(2*Radian1)‘二次平行移軸

Sx3=Sx2+DisPL*A’所求靜距

Ix3=Ix2+DisPL^2*A’所求慣性矩EndFunction


開放分享:優質有限元技術文章,助你自學成才

相關標簽搜索:AutoCAD計算截面對任意軸的靜距和慣性矩的程序設計 AutoCAD計算截面對任意軸的靜距和慣性矩的程序設計 AutoCAD培訓 AutoCAD培訓課程 AutoCAD圖紙設計 AutoCAD在線視頻 AutoCAD技術學習教程 AutoCAD軟件教程 AutoCAD資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓 

編輯
在線報名:
  • 客服在線請直接聯系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com




主站蜘蛛池模板: 音乐会电视剧免费观看完整版 | 蹲着吐一地呕吐视频| 富二代| 林冲演员| 神宫寺勇太| 陈文娟| 首映式| 反恐特战队2之猎影| 九宫格数独100题及答案| 老外毛片| 数学二年级上册答案| 以家人之名小说原著| 第一财经现场直播| 我在碧桂园的1000天| 迟志强简历| 韩国电影《诗》| 电视剧暗夜与黎明剧情介绍| 开创盛世电视剧全集免费观看| 黄视频在线播放| 春节到,人欢笑,贴窗花,放鞭炮| 战无双| 脓毒血症护理查房ppt| 成人一级片视频| 女生宿舍2在线| 孤岛飞鹰演员表| 情侣签名一男一女简短| 雪暴 电影| 莫比乌斯电影讲的是什么意思| 电影美丽人生| 性色视频在线| ryan reynolds| cctv17农业农村频道在线直播| 奇妙的植物世界阅读短文答案| 小镇追凶电影免费观看| 欧美一级毛片免费看| 青山知可子冲绳草莽英雄1969| 同性gay| 黑势力| 散文诗二首批注| 大班生字表| 天云山传奇 电影|