免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10728 | 回复: 14
打印 上一主题 下一主题

({'a':(x,y)})这个我用到的对象怎么提取出x和y坐标来? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-26 14:14 |只看该作者 |倒序浏览
5可用积分
做ABAQUS二次开发的过程中,原有的草图边界线由于是断续的,需要重新连接起来,进行网格的重新划分。
在新的草图s1中用到Spline函数,其中各个点的x和y坐标值输入即可,程序如下。
s1.Spline(points=((448.658905029297, 2524.6520996093,…(712.367553710938, 2315.0), (713.727478027344, 2344.82641601563), …, (449.2294921875, 2315.0)))
在提取过程中
>>>print s1.vertices[0]
({'coords': (448.658905029297, 2524.6520996093}) #输出值
我的目的就是s1.vertices对应的(x,y)值用到Spline函数中去。
我的想法如下
看上去好像是元组套着字典,字典对应着坐标值???
>>>type(s1.vertices[0])
<type 'ConstrainedSketchVertex'> #意思是ConstrainedSketchVertex对象
去手册查ConstrainedSketchVertex对象,得到它的路径两条
mdb.models[name].sketches[name].vertices[i]
mdb.models[name].sketches[name].vertices[i][i]  
接着尝试
>>> s1.vertices[0][0]                     #想得到坐标信息???
TypeError: unsubscriptable object        #和第二条路径矛盾问题
简单的说就是把顶点坐标弄到,顶点个数和顶点坐标值也已经可以实现,但是怎样从已有的对象中提取出来赋到新的函数里头。

最佳答案

查看完整内容

>>>print s1.vertices[0]({'coords': (448.658905029297, 2524.6520996093}) #输出值-------------------------------------------------------------------------------奇怪啊,看起来好像是个元组外层,可元组如果只有一个元素那应是后面跟一个”,“怎么楼主的这个数据类型是这样子的?看看能否通过tuple可否转换成真正的元组,可以的话,那就好办了。

论坛徽章:
0
2 [报告]
发表于 2010-04-26 14:14 |只看该作者
>>>print s1.vertices[0]
({'coords': (448.658905029297, 2524.6520996093}) #输出值
-------------------------------------------------------------------------------
奇怪啊,看起来好像是个元组外层,可元组如果只有一个元素那应是后面跟一个”,“
怎么楼主的这个数据类型是这样子的?
看看能否通过tuple可否转换成真正的元组,可以的话,那就好办了。
  1. b=({'a':(11,22)},)
  2. x,y=b[0].values()[0]
  3. 这样子就可以把坐标赋值给x和y了
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-04-26 16:27 |只看该作者
s1.vertices[0]['coords'][0]

论坛徽章:
0
4 [报告]
发表于 2010-04-26 17:09 |只看该作者
>>> print s1.vertices[0]['coords'][0]
TypeError: unsubscriptable object
还是不行!

论坛徽章:
0
5 [报告]
发表于 2010-04-28 02:17 |只看该作者
try this:

d={'a'2,3)}
xy=[d[k] for k in d.keys()]

print xy
print xy[0]
print xy[0][0]
print xy[0][1]

论坛徽章:
0
6 [报告]
发表于 2010-04-28 18:30 |只看该作者
>>>type(s1.vertices[0])
<type 'ConstrainedSketchVertex'> #意思是ConstrainedSketchVertex对象


是不是ConstrainedSketchVertex继承了tuple模块,
用dir(s1.vertices[0])试试有没有可用的方法

论坛徽章:
0
7 [报告]
发表于 2010-04-29 09:12 |只看该作者
回复 4# mjus

>>> d={'a'2,3)}
>>> xy=[d[k] for k in d.keys()]
>>> print xy
[(2, 3)]
>>> print xy[0]
(2, 3)
>>> print xy[0][0]
2
>>> print xy[0][1]
3
对于我下步的提取x和y坐标值有帮助,谢谢你!
不过事先怎么把外边那个括号去掉一直不明白。

论坛徽章:
0
8 [报告]
发表于 2010-04-29 09:17 |只看该作者
尝试调试如下
>>> dir(s1.vertices[0])
['__class__', '__cmp__', '__delattr__', '__doc__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'coords']
>>>dir(s1.vertices[0])[-1]
'coords'
这样是不是有新的办法,谢谢!

论坛徽章:
0
9 [报告]
发表于 2010-04-30 10:13 |只看该作者
print obj时只是调用obj的__str__方法进行输出。
如果s1.vertices[0]是一个自己定义的class,就可以重写__str__输出自己想要的格式,没什么奇怪的。
不过从输出来看,s1.vertices[0] 对象可能是tuple的子类。


>>>print s1.vertices[0]
({'coords': (448.658905029297, 2524.6520996093}) #输出值
----------------- ...
lunarwildgoose 发表于 2010-04-29 22:38

论坛徽章:
0
10 [报告]
发表于 2010-04-30 16:22 |只看该作者
s1.vertices[0]是ABAQUS自带的对象类型,手册上说的很清楚路径,但是却不像元组一样操作,问题就在这。lunarwildgoose 大侠说的对,有个逗号就是元组,很方便操作。谢谢你们。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP