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

[二次开发] 关于二次开发前处理装配点和面的选取以及相互关系的判定

[复制链接]
发表于 2009-12-23 15:59:53 | 显示全部楼层 |阅读模式 来自 山东济南
本帖最后由 zhanshenchuanyu 于 2009-12-23 16:16 编辑

各位大侠,我的前处理装配中,出现了三个part,上下轧辊和轧件,轧辊先实现装配再轧件写入,都设定为Mesh on part(dependent),修改了一下jnl文件,删除多余操作,产生了一个通过运行的.py文件,装配一部分源代码如下:
mdb.models['Rolling Model'].rootAssembly.DatumCsysByDefault(CARTESIAN)
mdb.models['Rolling Model'].rootAssembly.Instance(dependent=ON, name=
    'Rollerdown-1', part=mdb.models['Rolling Model'].parts['Rollerdown'])
mdb.models['Rolling Model'].rootAssembly.Instance(dependent=ON, name=
    'Rollerup-1', part=mdb.models['Rolling Model'].parts['Rollerup'])
mdb.models['Rolling Model'].rootAssembly.instances['Rollerup-1'].translate(
    vector=(1120.0, 0.0, 0.0))
mdb.models['Rolling Model'].rootAssembly.FaceToFace(clearance=0.0, fixedPlane=
    mdb.models['Rolling Model'].rootAssembly.instances['Rollerdown-1'].faces[98]
    , flip=OFF, movablePlane=
    mdb.models['Rolling Model'].rootAssembly.instances['Rollerup-1'].faces[0])
mdb.models['Rolling Model'].rootAssembly.Instance(dependent=ON, name=
    'workpiece-1', part=mdb.models['Rolling Model'].parts['workpiece'])
mdb.models['Rolling Model'].rootAssembly.DatumPlaneByOffset(flip=SIDE2, offset=
    260.0, plane=
    mdb.models['Rolling Model'].rootAssembly.instances['Rollerup-1'].faces[78])
mdb.models['Rolling Model'].rootAssembly.DatumPlaneByTwoPoint(point1=
    mdb.models['Rolling Model'].rootAssembly.instances['Rollerup-1'].vertices[79]
    , point2=
    mdb.models['Rolling Model'].rootAssembly.instances['Rollerdown-1'].vertices[0])
mdb.models['Rolling Model'].rootAssembly.FaceToFace(clearance=0.0, fixedPlane=
    mdb.models['Rolling Model'].rootAssembly.datums[10], flip=OFF,
    movablePlane=
    mdb.models['Rolling Model'].rootAssembly.instances['workpiece-1'].datums[8])
mdb.models['Rolling Model'].rootAssembly.FaceToFace(clearance=0.0, fixedPlane=
    mdb.models['Rolling Model'].rootAssembly.datums[9], flip=ON, movablePlane=
    mdb.models['Rolling Model'].rootAssembly.instances['workpiece-1'].datums[10])
   
mdb.models['Rolling Model'].rootAssembly.setValues(
    regenerateConstraintsTogether=OFF)
问题简述如下:
1、上下两个轧辊先实现装配,定位时,对应的侧面约束是Face to Face,那么这两个侧面怎么判断,即上面红色的faces[98]和faces[0],而且flip=OFF或者是ON怎么通过程序判断?比如任意一个圆柱的两个对应圆面,怎么选出来是其中一个圆面,而不是另一个呢?
2、在建立一个基准面datum plane的时候,用到了取两个点中间面的做法,即datum plane by two point,那么这两个点,如上面红色的vertices[79]和vertices[0]是两个对应面的两个圆心,那么79和0怎么通过程序来实现呢?
问?个人想法是不是可以先对轧辊两个零件,面通过tools-surfaces或者datum plane,而点通过参考点reference point或者datum point来强调出来。因为两个轧辊在进入前处理之前已经生成好了.cae文件,所以之前在CAE界面下进行手工操作是可以实现的。
3、轧件的面和上面建立的基准面faces[78]重合时,怎么判定flip=ON还是OFF?
4、轧件的头部怎么判定进给方向里轧辊不太远也不要进去咬合。查过一些资料,好像通过datum point,但是在cae下手工操作我觉得实现就行,也就是说可以经常用translate这种操作,慢慢调到自己想要的位置,但是程序怎么判定呢?毕竟前处理是个界面,对用户直接提交就是了。
做适合多种型号产品的开发程序,所以以一个型号为基础来做,实际上问题就是怎么把这些特殊的面和点挑出来。希望得到高手指点!谢谢!
发表于 2009-12-23 21:16:47 | 显示全部楼层 来自 陕西西安
Simdroid开发平台
1,可以在part里面把你要的面定义好,后面就直接调用这个surface,用手选不是个好选择。利用jnl文件生成的模型除参数而外其他的都几乎是一样的,一次定义好之后,修改参数后模型中的surface、set等并不会改变。
2,定义面有很多办法,要在两点中间选取一个面,可以用两点的坐标差的一半来定位,两点的坐标肯定可以从你的某些关键字运算而来。装配的时候大可完全用基于某一部件的某一点来定义其他部件,没必要非得采用约束。
3,见回复1。
4,轧制模拟,并不要求板料开始时就一定处于两轧辊的咬合处,实际的轧制过程也是这样。轧辊旋转起来后,板料再进给,至于何时发生接触,这些都交给aba判断去吧,我们只需要把轧制过程中可能遇到的面接触都定义好,然后给板料一个进给速度(可以单独给个step)确保它能进入轧辊并被咬合住就成。
此外,个人觉得你的jnl只是简单地把错误的地方去掉了,可以更精炼的,需要用到重复生成的地方应该专门定义函数,这样可以重复调用而不必在jnl中再次增加冗余代码。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-12-24 11:03:51 | 显示全部楼层 来自 山东济南
2# a88wangwei
感谢wangwei兄,现在重新调整仿真过程,手工装配过程没有问题,能够得到想要的.odb文件,我觉得你对这一块知识的串接上太精深了。
本想着把前处理手工整理好后,再转回来做这块参数设定这些问题,能等高手来帮着解决,十分感谢!
MERRY CHRISTMAS!!!
回复 不支持

使用道具 举报

 楼主| 发表于 2009-12-26 18:42:34 | 显示全部楼层 来自 山东济南
本帖最后由 zhanshenchuanyu 于 2009-12-26 18:51 编辑

2# a88wangwei
wangwei兄,按照你的意思我看了看,还有问题请教:
1、“可以在part里面把你要的面定义好,后面就直接调用这个surface,”我用Datum plane定义面都会有零件的编号,这个编号随着不同型号的轧辊会变化,我不知道怎么能够提取我这个面的编号呢?应该有一些技巧,但是从哪里下手呢,而且在装配里surface的编号和part中应该是不一样的,编号不是目的,想要个面。
2、“装配的时候大可完全用基于某一部件的某一点来定义其他部件,”今天试了一下,以自己建的坐标原点为准,可以实现,不过对约束有了疑问:为什么轧件的某点的坐标和一个输入坐标建立起来的Datum point已经约束了,最后还能实现仿真结果中轧件正常的出入呢?当然我想要这样的结果,但是约束怎么还能这样?
3、不用约束,手工实现经常translate和rotate就可以了,但是编程要想明确,靠translate和rotate我觉得不可靠;
4、提一句,我只用过6.6和6.5,不知道6.8和6.9是不是装配上功能有了大点的变化呢?
希望得到指点!
回复 不支持

使用道具 举报

 楼主| 发表于 2009-12-26 19:07:03 | 显示全部楼层 来自 山东济南
4# zhanshenchuanyu
上面的第二个问题,关于约束的问题,是不是可以这样解释:【引用】Datum object 没有直接的constructor。每个datum object (包括DatumAxis, DatumCsys, DatumPlane和DatumPoint ojbect)都是在相应的feature object被创造时同时创造的。但是这些创造的语句返回的仅仅是相应的feature object,而不包括Datum object,所以之后再吧这个创建命令的返回值当作datum object引用时就会出现你碰到的这个错误。如果想保留当前创建的datum ojbect的id,一个比较简单原始的办法就是在创建命令之后加.id。
回复 不支持

使用道具 举报

发表于 2010-1-4 14:10:45 | 显示全部楼层 来自 陕西西安
楼上,元旦过得还好?,这几天都没干活,算是过了个很好的假期。
我用的是aba6.9,之前做二次开发的时候是从6.7做起的,因为用户不停地要求升级(6.8的时候就提汉化的要求了),aba的二次开发维护比较头疼,因为之前我在6.7上做的工作放到6.8,6.9上并不能很好兼容,通常需要重写一些命令。
关于你的问题一:在part里面定义面的时候,你可以在jnl文件里面看到面得id,但是在装配及后来的接触定义的时候只需要引用该surf的名字就可以了,不需要再去追究id,打个比方,比如我在装配的时候要导入两个一摸一样的part,此时,该part上已经在part模块定义了面surf_1,在assem里面就相应地可以用partname-1.surf_1和partname-2.surf_1来引用了。但是如果我们在assem里面用手工选的话,自然地aba就会在jnl里面给出相应面得id,模型很多的情况下,id也很多,很是不方便的。
问题2,3:定义约束的时候我觉得这个跟个人习惯有很大关系,我不习惯在装配的时候利用平行等等aba提供的那些约束来建立装配体,我喜欢在一开始在纸上就将所有的装配体的位置精确地固定下来,然后在aba里面通过平移旋转把所有的部件移动到指定的位置(这样的好处是,对于我的模型,我用用户输入的参数就可以完全地将部件需要移动和旋转的路径算出来)。当然模型装配好还不算,后面的load里面还需要做进一步的约束。
aba6.9是我目前用的版本,个人觉得挺好,比之前的版本(我觉得6.8最烂)有不少进步。比如禁掉相应的分析步,人自动就将其他一些原来需要手工做的禁用也自动完成了,不过我们这边的博士也有人钟情6.5,说是模拟精度高。据说6.9中可以将explicit和standard放到一个模型中来算,不用再像以前那样算个回弹还要导来导去的了。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-1-4 14:47:56 | 显示全部楼层 来自 山东济南
本帖最后由 zhanshenchuanyu 于 2010-1-4 14:52 编辑

wangwei,你好,新年快乐,感谢你这么细致的讲解,其实上次是没有怎么考虑就问你了,其实这个问题我还是没完全描述清楚。
1、你说的第一点我觉得就应该这么做,但是有个问题,辊是分析刚体,在实际操作选取一个面的时候,用Tools-Surfaces无法选中,只能选取一个整体的外表面。还好有个问题我操作时弄明白了,surface的编号在part里和Assembly中是一样的,faces[98]在装配体中也是98,不过这个面我始终就是不知道该怎么捣鼓?
现在的想法是既然那两个数98和78是两个零件面中各自最大的数,我想找找例子,凑一个程序写个for循环什么的应该可以。
2、点坐标这个问题是很好的一个方法,许多例子也是这么干的,有的简单的干脆就装配里直接装,因为part里调好了。datum也是序号的问题,一直在想调整,不如从part里面再考虑。
最近我的前处理在6.5下做,又做了一下修改,上6.6上可以实现mesh前的操作,当然针对一个型号不是太难。

谢谢你的帮助,祝好运!
回复 不支持

使用道具 举报

 楼主| 发表于 2010-1-5 09:00:29 | 显示全部楼层 来自 山东济南
本帖最后由 zhanshenchuanyu 于 2010-1-5 09:47 编辑

6# a88wangwei \
wangwei太棒了!!我重新对CAD草图进行了导入,按你所说,把坐标在草图里就捣鼓得整齐一些,反复用rotate和translate几次就实现了,困惑好久的一个问题终于有了眉目。我的程序里就不会出现那些杂七杂八的面和基准点了,其实这样看,习惯很重要!!
回复 不支持

使用道具 举报

发表于 2010-1-5 22:31:53 | 显示全部楼层 来自 陕西西安
,呵呵,有进展就好。对了,刚体确实是选择面的时候就是一个整面的,这个不影响。
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 00:01 , Processed in 0.059621 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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