西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 1162|回复: 1

[原创] Python调用Flux第六讲:操纵几何点

[复制链接]

该用户从未签到

发表于 2015-3-20 14:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 dnawujun 于 2015-3-20 23:40 编辑

上次讲到如何操纵几何变换http://bbs.simol.cn/thread-137795-1-1.html
今天与大家分享下如何用Python操纵FluxServer去操纵点

Flux几何建模中总共有3种点,分别是
Point
PointCoordinates
PointPropagated
其中Point不能用来建立点,但是可以用
Point[1]来得到相应的点

一.        新建点

  1. PointCoordinates(uvw=['1','0'],coordSys=CoordSys['XY1'])
  2. PointCoordinates(uvw=['2','0'],coordSys=CoordSys['XY1'])
复制代码

以上是最简单的方法,这样建立的点,region属性为None
mesh属性默认为AIDED_MESHPOINT(如果aided mesh处于激活状态)或者None,
color默认为白色,nature默认为STANDARD

复杂一点的可以同时给定region、mesh、nature等属性,比如:
  1. PointCoordinates(uvw=['1','0'],coordSys=CoordSys['XY1'],nature=Nature['STANDARD'],region=RegionPoint['REGIONPOINT_1'],        mesh=MeshPoint['MEDIUM'])
复制代码


二.        修改点
  1. PointCoordinates[1].uvw=['1','1']
  2. PointCoordinates[1].color=Color['red']
复制代码

三.        删除点

删除单个
  1. PointCoordinates[1].delete()
复制代码

删除所有PointCoordinates
  1. PointCoordinates[ALL].delete()
复制代码

删除所有的点
  1. Point[ALL].delete()
复制代码


四. 拉伸点
  1. t2 = TransfTranslationVector(name='T3',coordSys=CoordSys['XY1'],vector=['0','10'])
  2. result = Point[1].extrude(transformation=t2,repetitionNumber=2,extrusionType='standard')
复制代码

注意result是个python字典类型
  1. {'lines': [Line[2], Line[3]], 'stateOfPoints': array('i',[0, 0]) , 'points': [Point[5], Point[6]], 'stateOfLines': array('i',[0, 0])}
复制代码

其中stateOfPoints的值指示points的值是新建的还是已经存在的,比如这里
'stateOfPoints': array('i',[0, 0])指示'points': [Point[5], Point[6]]中的Point[5], Point[6]是新建的点
stateOfLines也是相同的意义

五. propagate
  1. t1 = TransfSymmetryPoint(name='Transf2',coordSys=CoordSys['XY1'],centerCoord=['0','0'])
  2. result = Point[1].propagate(transformation=t1,repetitionNumber=5)
复制代码

result是
  1. {'stateOfPoints': array('i',[1, 0]) , 'points': [Point[1], Point[3]]}
复制代码

这里可以注意到虽然repetitionNumber设置为5,但是由于采用的是点对称变换
所以实际上只生成了一个点,Point[3],这从stateOfPoints可以看出

六. 计算点到点的距离
  1. p1 = PointCoordinates(uvw=['1','0'],coordSys=CoordSys['XY1'])
  2. p2 = PointCoordinates(uvw=['2','0'],coordSys=CoordSys['XY1'])
  3. p3 = PointCoordinates(uvw=['2','5'],coordSys=CoordSys['XY1'])
复制代码

计算p1到p2的距离
  1. result = p1.computePointDistance(point=[p2],coordSys=CoordSys['XY1'])
复制代码

result是
  1. {'dz': array('d',[0.0]) , 'dy': array('d',[0.0]) , 'dx': array('d',[0.001]) , 'distance': array('d',[0.001])}
复制代码

注意结果都是以米计算的

同时计算p1到p2、p1到p3的距离
  1. result = p1.computePointDistance(point=[p2,p3],coordSys=CoordSys['XY1'])
复制代码

result是
  1. {'dz': array('d',[0.0, 0.0]) , 'dy': array('d',[0.0, 0.005]) , 'dx': array('d',[0.001, 0.001]) , 'distance': array('d',[0.001, 0.005099019513592785])}
复制代码


附注:
拉伸点会生成一条直线,下一讲介绍关于直线的操作
Point的region属性会比较复杂,这个放到以后讲

Lecture6.rar (48.96 KB, 下载次数: 27)

评分

参与人数 2西莫币 +15 贡献 +1 收起 理由
y1949b + 1 精品文章
e=mc^2 + 15 感谢分享

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

发表于 2015-3-20 16:17 | 显示全部楼层
thank you for share and make a better world,
I don't need for the moment call to the flux server from python,
there're some good example in GotIt for link external applications to Flux,
like GOT, SPEED or MATLAB (free GOT at h t t p : / / forge-mage.g2elab.grenoble-inp.fr/project/got/download/Got3 ),
I use pyflux (macros and scripts), but who knows....
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|西莫电机圈 ( 浙ICP备10025899号-3 浙公网安备:33028202000436号

GMT+8, 2024-11-22 08:25 , Processed in 0.286227 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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