找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

Flux电机有限元分析教程西莫团购入口 | 奖励入口当当网购物入口 | 奖励入口欢迎使用!西莫论坛App开放下载Motor-CAD电机多物理域设计教材购买入口 | 奖励入口
★新会员论坛须知★《西莫电机技术》第39期发售火热进行中Flux电机电磁阀有限元分析教程团购入口 | 奖励入口论坛微信公众平台欢迎入驻
西莫电机及相关产品供需交流群开放邀请★ 论坛VIP会员申请 ★Motor-CAD.MANATEE电磁热振动噪声教程 | 奖励入口西莫团队欢迎您的加盟!
宣传推广合作请联系QQ:25941174西莫电机论坛微信群正式开放Flux变压器与电抗器有限元分析团购入口 | 奖励入口西莫电机论坛技术版区QQ群汇总
查看: 1194|回复: 1

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

[复制链接]

该用户从未签到

发表于 2015-3-20 14:58 | 显示全部楼层 |阅读模式 来自: 中国四川德阳

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

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

×
本帖最后由 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 感谢分享

查看全部评分

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

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

发表于 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-12-27 03:58 , Processed in 0.050402 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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