- 积分
- 35
- 注册时间
- 2004-10-14
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 姜虎东 于 2009-8-17 10:52 编辑
在Workbench中有时候一个模型有很多零件,对每个part插入求解的Total Deformation和Equivalent Stress很麻烦,现在可以用JScript来完成半自动化工作。以下代码保存为.js文件,在workbench中,菜单Tools->Run Macro并选择此文件即可。
这个代码的思路是,记录零件suppressed的状态并suppress所有零件,然后unsuppress其中一个零件,选择所有零件(只有当前unsuppress的一个零件被选中),插入Deformation和Stress的结果集并改名称和当前零件名称相关。最后恢复所有零件suppressed的原先状态。
此代码比较适合在求解前运行,如果是求解后运行,因为零件的suppressed状态被修改并恢复,模型可能需要重新求解。
再罗嗦几句,关于workbench对象,现在没有官方文档,大家都是摸着石头过河,以后有机会再讲讲如何找些石头;关于JScript语言可以参考Microsoft网站;关于编辑器,我用的是Microsoft Visual Web Developer 2005 Express Edition,正版免费软件,可以在Microsoft网站上下载。
//---------InsertAnswerSet.js------------------
var branchObj = DS.Tree.FirstActiveBranch;
var project = branchObj.Project;
var model = branchObj.Model;
var environment = branchObj.Environment;
var protoGroup = branchObj.PrototypeGroup;
var answer=environment.AnswerSet
var id_TotalDisplacement= 25;
var id_EquivalentStress=1;
var i = 1;
var protos = null;
var protosname = null;
var currentState = new Array();
// ---记录所有零件是否被suppressed的状态信息---
for (i=1; i<=protoGroup.Prototypes.Count; i++)
{
protos = protoGroup.Prototypes.Item(i);
currentState= protos.Suppressed;
protos.Suppressed=true;
}
//查询所有零件
for (i=1; i<=protoGroup.Prototypes.Count; i++)
{
//unsuppress其中一个零件
protos = protoGroup.Prototypes.Item(i);
protos.Suppressed=false;
//获得零件名称
protosname = protoGroup.Prototypes.Item(i).Name;
//选择这个零件
DS.Graphics.EntityFilter=1; // Filter by Bodies
var selPart=DS.Graphics.DrawSelectAll(); // Select body
//添加Deformation结果集并修改名称
var dItem=answer.AddResult(SM,id_TotalDisplacement);
dItem.Name="Total Deformation - "+protosname;
//添加Stress结果集并修改名称
var sItem=answer.AddResult(SM,id_EquivalentStress);
sItem.Name="Equivalent Stress - "+protosname;
// 把这个零件再suppress
protos.Suppressed=true;
}
// 恢复所有零件suppressed的状态
for (i=1; i<=protoGroup.Prototypes.Count; i++)
{
protoGroup.Prototypes.Item(i).Suppressed=currentState;
}
// 刷新树
DS.Script.fillTree();
//打完收工 |
评分
-
1
查看全部评分
-
|