论坛首页    职业区    学术与写作    工程技术区    软件区    资料区    商务合作区    社区办公室
 您好! 欢迎 登录注册 最新帖子 邀请注册 活动聚焦 统计排行 社区服务 帮助
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
  • 1780阅读
  • 2回复

求助!flac3d是否可以阵列? [复制链接]

上一主题 下一主题
离线科费卡
 

发帖
18
土币
81
威望
4
原创币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2016-08-10
想要做一个建筑群的荷载请问flac3d有没有阵列的命令流?
离线龙biscuit

发帖
323
土币
2510
威望
55
原创币
0
只看该作者 1楼 发表于: 2016-08-11
没有,得自己写fish语言。我这儿有些代码可以参考一下,里面有旋转,偏移,复制
  1. new
  2. def _ini_size
  3.   theta=16;在xz平面内模型旋转的角度
  4.   length=fault_length   ;fault_length/cos(theta*pi/180)
  5.   r=0.1;!!!!!调整!!!!!模型中钻孔半径,本方案中仅仅适用于200mm孔径(r=0.1),100mm孔径暂时不适用
  6.   _length_ratio=38;int(fault_length)
  7.   half_high=0.5*cos(theta*pi/180)
  8. end
  9. set fault_length=120.0;!!!!!调整!!!!!中间面长120,则钻孔伪斜长度暂定120.0m
  10. _ini_size;用来设定建模时尺寸
  11. ;建立钻孔和孔周模型,等待调整
  12. gen zone radcylinder p0 0 0 0 p1 add 0.5 0 0 p2 add 0 length 0 p3 add 0 0 half_high  p8 add r 0 0 p9 add 0 0 r p10 add r length 0 p11 add 0 length r dimension 0.1 0.1 0.1 0.1 &
  13. size 1 _length_ratio 2 1 fill group 钻孔
  14. group 孔周 range group 钻孔 not;分组
  15. generate zone reflect normal (-1,0,0) origin = (0,0,0);镜像
  16. generate zone reflect normal (0,0,1) origin = (0,0,0)
  17. plot block gr
  18. plot add axes
  19. ;save 1-钻孔-200mm孔径60m深.sav
  20. ;绕z轴旋转-90度
  21. range name rt_group group 钻孔 any group 孔周 any ;定义要旋转的组为group1
  22. def rotation_z ;rotate about y-axis
  23.   p_gp=gp_head
  24.   delta=-90;在此调整角度
  25.   loop while p_gp # null
  26.    if inrange('rt_group',p_gp) = 1 then
  27.     px=gp_xpos(p_gp)
  28.     py=gp_ypos(p_gp)
  29.     pz=gp_zpos(p_gp)
  30.     delta_2=delta*pi/180;pi代表圆周率,为内置变量
  31.     sin_2=sin(delta_2)
  32.     ;a=sgn(x)
  33.     gp_xpos(p_gp)=px*cos(delta_2)-py*sin(delta_2)
  34.     gp_ypos(p_gp)=px*sin(delta_2)+py*cos(delta_2)
  35.     ;gp_ypos(p_gp)=pz
  36.      endif
  37.     p_gp=gp_next(p_gp)
  38.     endloop
  39. end
  40. rotation_z
  41. plot block gr
  42. plot add axes
  43. ;save 2-钻孔-200mm孔径60m深-绕z逆时针旋转90度.sav
  44. ;下面xz平面内偏移16度
  45. def rotation_xz
  46. p_gp=gp_head
  47.   delta=16;在此调整角度
  48.   loop while p_gp # null
  49.     if inrange('rt_group',p_gp) = 1 then
  50.     px=gp_xpos(p_gp)
  51.     py=gp_ypos(p_gp)
  52.     pz=gp_zpos(p_gp)
  53.     delta_2=delta*pi/180;pi代表圆周率,为内置变量
  54.     gp_xpos(p_gp)=px+pz*tan(delta_2)
  55.     endif
  56.     p_gp=gp_next(p_gp)
  57.     endloop
  58. end
  59. rotation_xz
  60. plot block gr
  61. plot add axes
  62. ;save 3-钻孔-200mm孔径60m深-绕z逆时针旋转90度xz16度.sav
  63. ;定义要旋转的组为group1
  64. range name rt_group group 钻孔 any group 孔周 any
  65. ;下面模型绕y轴旋转16度以与岩层倾角16度一致
  66. def rotation_y ;rotate about y-axis
  67.   p_gp=gp_head
  68.   delta=16
  69.   loop while p_gp # null
  70.    if inrange('rt_group',p_gp) = 1 then
  71.     px=gp_xpos(p_gp)
  72.     py=gp_ypos(p_gp)
  73.     pz=gp_zpos(p_gp)
  74.     dist=sqrt(px*px+py*py+pz*pz)
  75.     delta_2=delta*pi/180
  76.     sin_2=sin(delta_2)
  77.     gp_xpos(p_gp)=px*cos(delta_2)-pz*sin(delta_2)
  78.     gp_zpos(p_gp)=px*sin(delta_2)+pz*cos(delta_2)
  79.      endif
  80.     p_gp=gp_next(p_gp)
  81.     endloop
  82. end
  83. rotation_y
  84. plot block gr
  85. plot add axes
  86. ;save 4-钻孔-200mm孔径60m深-绕z逆时针旋转90度-xz16度-绕y轴旋转16度.sav
  87. ;下面移动模型角点到坐标轴原点
  88. ini z add 0.5 range rt_group
  89. ini y add 0.5 range rt_group
  90. save 5-移动模型角点到坐标轴原点.sav
  91. ;expgrid 6-单钻孔角点在坐标原点处钻孔模型2.FLAC3D
  92. ;下面复制钻孔
  93. def _copy_hole
  94.   loop n(1,7)
  95.   _y_step=2^(n-1)
  96.    command
  97.      gen zone copy 0 _y_step 0 range rt_group
  98.    endcommand
  99.   endloop
  100. end
  101. _copy_hole
  102. plot block gr
  103. del range rt_group y 100 300
  104. ;save 原点处复试钻孔100个200mm孔径1m孔间距.sav
  105. ini x add 86.51355263 range rt_group
  106. ini z add 43.64990723 range rt_group
  107. ini y add 30          range rt_group
  108. ;save 200mm孔径1m孔间距-移动-复试钻孔100-到中面上位置.sav
  109. ;expgrid  200mm孔径1m孔间距-移动-复试钻孔100-到中面上位置.FLAC3D
  110. ;移动钻孔和孔周模型到指定位置
  111. ini z add -7.80224577 range rt_group
  112. save 200mm孔径1m孔间距-移动-复试钻孔100-到中面下位置.sav
  113. expgrid  200mm孔径1m孔间距-移动-复试钻孔100-到中面下位置.FLAC3D
喜欢就给点掌声吧^-^


邮箱:blzhu@buaa.edu.cn ,欢迎交流!
离线科费卡

发帖
18
土币
81
威望
4
原创币
0
只看该作者 2楼 发表于: 2016-08-15
回 龙biscuit 的帖子
龙biscuit:没有,得自己写fish语言。我这儿有些代码可以参考一下,里面有旋转,偏移,复制
new
def _ini_size
  theta=16;在xz平面内模型旋转的角度
  length=fault_length   ;fault_length/cos(theta*pi/180)
....... (2016-08-11 20:14) 

自己用copy来做了,很笨,好好学习一下,非常感谢!
快速回复
限100 字节
温馨提示:欢迎交流讨论,请勿纯表情、纯引用!
 
上一个 下一个

      浙公网安备 33010602003799号 浙ICP备14021682号-1

      工业和信息化部备案管理系统网站