Simcenter 3D Solutions 关于SC Motion中解析接触力产生大量Non-timestamp Geometry导致界面操作变慢的问题

2021-11-15T01:33:40.000-0500
Simcenter 3D

摘要

在Motion使用解析接触力时,有时软件会在Part Navigator中产生Non-timestamp Geometry,并不参与多体求解,产出也不会造成模型问题;当接触力非常多时相应的冗余几何也会非常多,这会造成Simcenter 3D的所有界面操作变得特别慢,甚至无法正常使用。这种现场通常会在较早版本的Simcenter 3D软件中出现,本文描述了遇到此问题的解决方法。


详细信息

1. 问题描述

SC 3D Motion动力学模型中,一些情况下在part Navigator导航类内包含一个Non-timestamp Geometry单元类,通常包含大量的ArcLine或者sheet单元,有时多达数百万单元,会直接影响SC 3D的界面动态效果,操作延迟明显。同时发现,Non-timestamp Geometry单元不影响Motion 的仿真计算,删掉所有这些单元后界面显示效果可以明显改善,而且不知道这些单元是怎么产生的。

2. 问题分析

经过对Motion动力学模型进行研究发现,Non-timestamp Geometry单元可能是在Motion中创建解析接触力自动附带产生的,但并不参与或影响Motion的模型求解。在创建解析接触时,软件在引用拉伸面、旋转面时可能会产生不用的几何单元。同时发现,从另外一些不明的CAD建模原因也可能产生大量Non-timestamp Geometry ,可能会到数百万甚至更多。这些单元会带来以下问题:
  1. 打开模型、播放Motion仿真动画,或者在模型中生成曲线plot时要花费几分钟,响应异常的慢;
  2. 从导航栏展开单元、打开单元查看建模信息,或者切换模型界面非常慢;
  3. 在模型界面中查看仿真结果,生成XY Plot特别慢;
  4. 播放带柔性体的分析结果动画时非常慢;
可以确定的是,软件异常产生的大量Non-timestamp Geometry单元严重影响了Simcenter 3D Motion的界面交互体验,一般用户很难接受。
下面是以Motion自带的实例模型——装载机多体模型为例,在Simcenter 3D中打开软件后看到的Non-timestamp Geometry效果。
User-added image

此模型中的
CAD模型由NX11创建得到。
User-added image
由于
NX CAD建模产生的大量Non-timestamp Geometry单元情况实例如下。
User-added image
包含
Arc x 8328196Line x 1334667

3. 解决方法
对于
Motion中解析接触力自动产生Non-timestamp Geometry的问题在Simcenter 3D 1926版本之后已经修复。新的软件中在创建解析接触力时不会再产生多余这些异常几何信息。以下是在Simcenter 3D 2021.2V1980)中打开装载机模型后的效果。
User-added image
对于
Master几何中包含大量Non-timestamp Geometry情况,可以采用本文所提供的脚本文件产出无用的异常几何单元。

脚本使用方法:
  • 当文件存为.py格式
  • 更新MotionPart文件路径
  • 运行命令执行脚本文件“urun run_journal deleteArcLine.py
4. 总结
当用户遇到打开
Motion模型时间过长,界面常规操作很慢、甚至无响应,包括展开导航栏单元类、切换模型状态、菜单操作等等一切与界面有关的操作。请查看“Part Navigator”中是否有“Non-timestamp Geometry
”单元类,且下面是否包含了大量的几何特征。如果确实如此,请采用本文提供的脚本文件产出无用几何。

5. 脚本使用方法
  • 将附录中的内容复制到一个记事本文件,保存记事本文件为 deleteArcLine.py (Python script)
  • 将脚本内的目录更新到实际的Motion模型目录
  • 在Simcenter运行命令 “urun run_journal deleteArcLine.py”
5. 附录——脚本内容

# NX 1953.1700
# Journal created by lijia on Tue Jun  1 07:54:25 2021 China Standard Time
#
import math
import NXOpen
import NXOpen.Features
import NXOpen.GeometricUtilities

def main() :
    theSession  = NXOpen.Session.GetSession()
    #basePart1, partLoadStatus1 = theSession.Parts.OpenActiveDisplay("D:\\workdir\\PartData\\BigModel\\Flex\\8443402\\Seat_Epump\\assembly_seat_motion.sim", NXOpen.DisplayPartOption.AllowAdditional)
    basePart1, partLoadStatus1 = theSession.Parts.OpenActiveDisplay("D:\\workdir\\devunits\\lijia_1953nuke\\model1.prt", NXOpen.DisplayPartOption.AllowAdditional)
    workPart = theSession.Parts.Work
    displayPart = theSession.Parts.Display
    toDelete = []
    
    # features = workPart.Features
    # for aFeature in iter(features):
        # #if isinstance(aFeature, NXOpen.Arc):
        # if isinstance(aFeature, NXOpen.Features.AssociativeArc):
            # toDelete.append(aFeature)
    print('start collecting lines')
    for line in iter(workPart.Lines):
        print (type(line))
        if not isinstance(line, NXOpen.Features.Feature):
            toDelete.append(line)
    
    print('start collecting arcs')
    for arc in iter(workPart.Arcs):
        print(type(arc))
        if not isinstance(line, NXOpen.Features.Feature):
            toDelete.append(arc)
        
    if toDelete:
        print('start logging to delete')
        theSession.UpdateManager.AddObjectsToDeleteList(toDelete) 
        
        print('start updating')
        id1 = markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Delete")
        theSession.UpdateManager.DoUpdate(id1)

        print('start saving part')
        partSaveStatus1 = workPart.Save(NXOpen.BasePart.SaveComponents.TrueValue, NXOpen.BasePart.CloseAfterSave.FalseValue)
        
        partSaveStatus1.Dispose()
    
if __name__ == '__main__':
    main()



 

知识库文章 ID# KB000048029_ZH_CN

内容

摘要详细信息

关联组件

Acoustics Additive Manufacturing Assembly FEM Correlation and Updating Durability Flexible Pipe Laminate Composites Margin of Safety Motion Multiphysics NX Open Nonlinear Optimization Pre/Post Response Dynamics Samcef Environment Simulation Process Management Thermal / Flow