Workbench利用Jscript建模

WorkbenchDesignModel中建模的腳本語言是Jscript,筆者印象當中所有軟件的腳本語言都能夠自己生成,ANSYSLog文件,Abaqusrpy文件,包括OfficeVBA文件等。同樣的DesignModel中的建模操作也可以寫成腳本文件,其后綴是js,Jscript其實就是Java Script,只是略有區別。

DM中建模后,寫Js文件的方式如圖1,寫當前活動坐標內的建模腳本文件,當寫完之后生成一個后綴.js的文件,通過Run Script即可以再次運行此文件。

clip_image002.jpg

1

此次大致對Js腳本文件建模命令大致說一下,在DM中建立的模型如圖2,形狀較為復雜,幾乎所有常用的操作都能在這個模型上體現。

clip_image004.jpg

2

Jscript每建立一次草圖,都是通過一個function完成的,具體內容包括坐標系的定義,草圖名稱定義,草圖的點和線的建立,尺寸約束施加,最后返回函數值。

function plane1SketchesOnly (p)

{

p.Plane  = agb.GetActivePlane();

p.Origin = p.Plane.GetOrigin();

p.XAxis  = p.Plane.GetXAxis();

p.YAxis  = p.Plane.GetYAxis();

p.Sk1 = p.Plane.newSketch();

p.Sk1.Name = "Sketch1";

with (p.Sk1)

{

  p.Pt31 = ConstructionPoint(0, 0);

}

with (p.Plane)

{

  CoincidentCon(p.Pt31, 0, 0, p.Origin, 0, 0);

}

p.Plane.EvalDimCons();

return p;

第一行定義建立草圖1的函數,后面的所有內容都在花括號里面,屬于函數定義的內容。

2~6行是坐標系等的定義,后面兩行則是新建一個草圖命名為sketch1.

第一個with()函數用來建立一個點,其中with函數的意義是限定作用區域,表示with函數里面的內容是作用于p.SK1的,這對程序的精簡化有很大好處。

第二個with()函數用于限制建立的點,在Workbench里面建立的模型,通過尺寸約束來設置模型的尺寸,CoincidentCon表示兩個元素相同,即建立的點坐標和原點坐標一致。

倒數第二行用于對建立的幾何元素全部evalute一遍

最后一行函數返回值。

 

同樣的,可以建立一個矩形草圖。

function plane2SketchesOnly (p)

{

 

//Plane

p.Plane  = agb.GetActivePlane();

p.Origin = p.Plane.GetOrigin();

p.XAxis  = p.Plane.GetXAxis();

p.YAxis  = p.Plane.GetYAxis();

 

p.Sk2 = p.Plane.newSketch();

p.Sk2.Name = "Sketch2";

 

with (p.Sk2)

{

  p.Ln13 = Line(-10, -10, 10, -10);

  p.Ln14 = Line(10, -10, 10, 10);

  p.Ln15 = Line(10, 10, -10, 10);

  p.Ln16 = Line(-10, 10, -10, -10);

}

 

with (p.Plane)

{

  //Constraints

  HorizontalCon(p.Ln13);

  HorizontalCon(p.Ln15);

  VerticalCon(p.Ln14);

  VerticalCon(p.Ln16);

  CoincidentCon(p.Ln13.End, 10, -10,

                p.Ln14.Base, 10, -10);

  CoincidentCon(p.Ln14.End, 10, 10,

                p.Ln15.Base, 10, 10);

  CoincidentCon(p.Ln15.End, -10, 10,

                p.Ln16.Base, -10, 10);

  CoincidentCon(p.Ln16.End, -10, -10,

                p.Ln13.Base, -10, -10);

}

p.Plane.EvalDimCons(); //Final evaluate of all dimensions and constraints in plane

return p;

此段的第一個with函數建立四條邊,后面的四個數是首位兩端點的坐標。

第二個with函數是用HorizontalConHorizontalCon函數限制線的垂直和水平,后面的命令是限制線的尺寸。草圖2形狀如圖3箭頭處。

3.png

3

同樣,以及建立個草圖,用于拉伸、旋轉等操作。

var XYPlane = agb.GetXYPlane();

agb.SetActivePlane (XYPlane);

var ps1 = plane1SketchesOnly (new Object());

 

var plane2 = agb.PlaneFromPlane(XYPlane);

plane2.AddTransform(agc.XformZOffset, 20);

agb.regen();

agb.SetActivePlane (plane2);

var ps2 = plane2SketchesOnly (new Object());

 

var plane3 = agb.PlaneFromPlane(plane2);

plane3.AddTransform(agc.XformZOffset, 20);

agb.regen();

agb.SetActivePlane (plane3);

var ps3 = plane3SketchesOnly (new Object());

 

var plane4 = agb.PlaneFromPlane(plane3);

plane4.AddTransform(agc.XformZOffset, 20);

agb.regen();

agb.SetActivePlane (plane4);

var ps4 = plane4SketchesOnly (new Object());

 

var YZPlane = agb.GetYZPlane();

agb.SetActivePlane (YZPlane );

var ps5 = planeYZSketchesOnly (new Object());

 

//Now, create Skin

var Skin1 = agb.Skin(agc.Add, agc.No, 0.0, 0.0);

Skin1.Name = "Point2OvalSkin"

Skin1.AddBaseObject(ps1.Sk1);

Skin1.AddBaseObject(ps2.Sk2);

Skin1.AddBaseObject(ps3.Sk3);

Skin1.AddBaseObject(ps4.Sk4);

agb.Regen(); //To insure model validity

 

//Next create a Sweep

var Sweep1 = agb.Sweep(agc.Add, ps4.Sk4, ps5.Sk6, agc.AlignTangent,

0.25, 0.0, agc.No, 0.0, 0.0);

agb.Regen(); //To insure model validity

 

//Next create a Revolve

var Rev1 = agb.Revolve(agc.Add, ps5.Sk7, ps5.YAxis, agc.DirNormal,

360.0, 0.0, agc.Yes, 1.0, 1.0);

agb.Regen(); //To insure model validity

 

//Finally cut a hole using Extrude

var Extrude1 = agb.Extrude(agc.Cut, ps5.Sk5, agc.DirSymmetric,

agc.ExtentThruAll, 0.0, agc.ExtentFixed, 0.0, agc.No, 0.0, 0.0);

agb.Regen(); //To insure model validity

這些函數的使用在幫助文檔寫的非常詳細,使用起來也很方便。

 


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP