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

[二次开发] 如何查找RSG里面通过pick button选择的edges

[复制链接]
发表于 2020-7-6 21:29:28 | 显示全部楼层 |阅读模式 来自 陕西西安
悬赏10仿真币未解决
做一个插件,运行时候需要在模型里面选择一些edges,然后通过给定的半径和圆心搜索包含在球体的那部分edges。但是pick button返回值是一个标准元组,自带的getByBoundingCylinder函数只能操作EdgeArray数据,而且这个EdgeArray对象是abaqus特有的内置对象,好像不能自己定义
请问有什么办法能把pick button选择的edges(元组)转化成EdgeArray对象?或者将其生成一个set?
工作急需,谢谢各位。
  1. The EdgeArray is a sequence of Edge objects. If the part is modified, then EdgeArray must be updated for that part.

  2. Access
  3. import part
  4. mdb.models[name].parts[name].allInternalSets[name].edges
  5. mdb.models[name].parts[name].allInternalSurfaces[name].edges
  6. mdb.models[name].parts[name].allSets[name].edges
  7. mdb.models[name].parts[name].allSurfaces[name].edges
  8. mdb.models[name].parts[name].edges
  9. mdb.models[name].parts[name].sets[name].edges
  10. mdb.models[name].parts[name].surfaces[name].edges
  11. import assembly
  12. mdb.models[name].rootAssembly.allinstances.edges
  13. mdb.models[name].rootAssembly.allinstances.sets[name].edges
  14. mdb.models[name].rootAssembly.allinstances.surfaces[name].edges
  15. mdb.models[name].rootAssembly.allInternalSets[name].edges
  16. mdb.models[name].rootAssembly.allInternalSurfaces[name].edges
  17. mdb.models[name].rootAssembly.allSets[name].edges
  18. mdb.models[name].rootAssembly.allSurfaces[name].edges
  19. mdb.models[name].rootAssembly.edges
  20. mdb.models[name].rootAssembly.instances[name].edges
  21. mdb.models[name].rootAssembly.instances[name].sets[name].edges
  22. mdb.models[name].rootAssembly.instances[name].surfaces[name].edges
  23. mdb.models[name].rootAssembly.modelInstances[i].edges
  24. mdb.models[name].rootAssembly.modelInstances[i].sets[name].edges
  25. mdb.models[name].rootAssembly.modelInstances[i].surfaces[name].edges
  26. mdb.models[name].rootAssembly.sets[name].edges
  27. mdb.models[name].rootAssembly.surfaces[name].edges
复制代码




附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2020-7-7 12:37:21 | 显示全部楼层 来自 河南南阳
Simdroid开发平台
加q::2812468512
回复

使用道具 举报

 楼主| 发表于 2020-7-9 12:26:23 | 显示全部楼层 来自 陕西西安
我已经解决了,直接遍历单个对象,获取index参数,然后通过通过它对xxxarray进行切片,最后对序列相加即可
回复

使用道具 举报

 楼主| 发表于 2020-7-9 12:32:35 | 显示全部楼层 来自 陕西西安

我已经解决了,直接遍历单个对象,获取index参数,然后通过通过它对xxxarray进行切片,最后对序列相加即可
回复

使用道具 举报

发表于 2020-7-31 20:01:42 | 显示全部楼层 来自 广东深圳
mikevenus 发表于 2020-7-9 12:26
我已经解决了,直接遍历单个对象,获取index参数,然后通过通过它对xxxarray进行切片,最后对序列相加即可 ...

如果我是要pick一个node呢
回复

使用道具 举报

发表于 2020-7-31 20:20:29 | 显示全部楼层 来自 广东深圳
mikevenus 发表于 2020-7-9 12:32
我已经解决了,直接遍历单个对象,获取index参数,然后通过通过它对xxxarray进行切片,最后对序列相加即可 ...

能不能把代码贴一下,谢谢
回复

使用道具 举报

 楼主| 发表于 2020-8-1 18:37:48 | 显示全部楼层 来自 陕西西安
24hoursonline 发表于 2020-7-31 20:20
能不能把代码贴一下,谢谢

在单位电脑上,大概就是
  1. for each in pickedbojects:
  2.   index1=each.index
  3.   myedges=reduce(.......)
复制代码

使用下角标把所有的单个序列做加法就行了
回复

使用道具 举报

发表于 2020-8-4 13:12:48 | 显示全部楼层 来自 广东深圳
mikevenus 发表于 2020-8-1 18:37
在单位电脑上,大概就是

使用下角标把所有的单个序列做加法就行了

多谢啊,还有不明白的,第三行reduce是什么函数啊,括号里面写什么内容呢
回复

使用道具 举报

发表于 2020-8-4 17:37:21 | 显示全部楼层 来自 广东深圳
mikevenus 发表于 2020-8-1 18:37
在单位电脑上,大概就是

使用下角标把所有的单个序列做加法就行了

感觉自己还是没搞清这array 和tuple的关系,要不把你电脑上的代码拍个照呗有劳有劳
在帮助文档里说pickbutton返回值默认是array
原文the sequence style (AFXPickStep.ARRAY.the default,or AFXPick Step.TUPLE),可是如你之前所尝试,确实不能直接用啊,不明白啊,借你代码理解一下,多谢啦
回复

使用道具 举报

 楼主| 发表于 2020-8-7 11:36:17 | 显示全部楼层 来自 陕西西安
  1. edges=reduce(lambda x,x+y,[a.instances[each.instanceName].edges[each.index:each.index+1] for each in pickedBolts)
  2. a.Set(edges=edges,name=setName3)
复制代码


这个是对边的访问,就是用index就行单个切片,把每个单独的切片加起来就是我们需要的全部元素。其他的点、面是一样的道理
回复

使用道具 举报

 楼主| 发表于 2020-8-7 11:48:58 | 显示全部楼层 来自 陕西西安
mikevenus 发表于 2020-8-7 11:36
这个是对边的访问,就是用index就行单个切片,把每个单独的切片加起来就是我们需要的全部元素。其他的点 ...

代码里面少打了个中括号,应该pickedBolts])
回复

使用道具 举报

发表于 2020-8-10 15:40:57 | 显示全部楼层 来自 广东
mikevenus 发表于 2020-8-7 11:48
代码里面少打了个中括号,应该pickedBolts])

多谢你啦 套用你的代码还是不太明白,换用了一个append方法,还是多亏了你指点
回复

使用道具 举报

 楼主| 发表于 2020-8-12 12:44:47 | 显示全部楼层 来自 陕西西安
24hoursonline 发表于 2020-8-10 15:40
多谢你啦 套用你的代码还是不太明白,换用了一个append方法,还是多亏了你指点 ...

嗯,换append一样的,都是循环把边搞到一堆,只要问题解决了就行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-6 06:55 , Processed in 0.036184 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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