找回密码
 注册
Simdroid-非首页
查看: 561|回复: 9

[实例赏评] Workbench JScript---快速插入结果集

[复制链接]
发表于 2007-12-15 00:29:54 | 显示全部楼层 |阅读模式 来自 加拿大
本帖最后由 姜虎东 于 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

查看全部评分

发表于 2007-12-15 02:28:19 | 显示全部楼层 来自 陕西西安
Simdroid开发平台
谢谢楼主分享!!
回复 不支持

使用道具 举报

发表于 2007-12-15 03:09:33 | 显示全部楼层 来自 瑞典
精品原创,大力支持
回复 不支持

使用道具 举报

发表于 2007-12-16 17:02:37 | 显示全部楼层 来自 广东广州
原创精品,推荐+鼓励。
回复 不支持

使用道具 举报

发表于 2007-12-17 21:55:39 | 显示全部楼层 来自 北京
路过,谢谢!
回复 不支持

使用道具 举报

发表于 2007-12-30 13:49:59 | 显示全部楼层 来自 浙江宁波
不错,正好要用,楼主在没有workbench对象参考资料的情况下能摸出来,佩服
回复 不支持

使用道具 举报

发表于 2007-12-30 13:54:21 | 显示全部楼层 来自 浙江宁波
希望楼主透露怎么摸到上面的几块石头的
回复 不支持

使用道具 举报

发表于 2009-8-4 22:17:12 | 显示全部楼层 来自 上海杨浦区
好好学习!
回复 不支持

使用道具 举报

发表于 2011-1-11 13:47:51 | 显示全部楼层 来自 北京
1# whatinrain 厲害!多謝樓主分享
回复 不支持

使用道具 举报

发表于 2011-5-8 22:03:27 | 显示全部楼层 来自 江苏南京
佩服 佩服 希望楼主能多多分享此类资料
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-6 04:38 , Processed in 0.059776 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表