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

[结构单元] 请大家帮我看看我的fish合并link子程序错在哪里

[复制链接]
发表于 2007-11-12 01:48:10 | 显示全部楼层 |阅读模式 来自 浙江杭州
这是一个基坑开挖算例,水平梁板支撑用shell单元,立柱和立柱桩用pile单元,下面 的子程序是自动建立相同位置处立柱与梁板间的link,假定为刚接。但在运行是出错不知何故,请大家帮忙看看。

本帖子中包含更多资源

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

×
 楼主| 发表于 2007-11-12 01:50:23 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
附子程序

本帖子中包含更多资源

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

×
回复 不支持

使用道具 举报

 楼主| 发表于 2007-11-12 01:53:04 | 显示全部楼层 来自 浙江杭州
;合并相同位置link子程序
def merge_link
        pnt1=nd_head
        id_pnt1=nd_id(pnt1)
        loop while pnt1 # null
                nodenext=nd_next(pnt1)
                xx1=nd_pos(pnt1,2,1)
                yy1=nd_pos(pnt1,2,2)
                zz1=nd_pos(pnt1,2,3)
                pnt2=nd_near(xx1,yy1,zz1)
                id_pnt2=nd_id(pnt2)
                xx2=nd_pos(pnt2,2,1)
                yy2=nd_pos(pnt2,2,2)
                zz2=nd_pos(pnt2,2,3)
                node_dist=sqrt((xx1-xx2)^2+(yy1-yy2)^2+(zz1-zz2)^2)
                dist_tol=1e-3
                if node_dist < dist_tol then
                        pnt_link1=nd_link(pnt1)
                        pnt_link2=nd_link(pnt2)
                                if pnt_link1 # null then
                                        ii=lk_delete(pnt_link1)
                                endif
                                if pnt_link2 # null then
                                        jj=lk_delete(pnt_link2)
                                endif
                                command
                                        sel link id_pnt1 target=node tgt_num=id_pnt2
                                        sel link attach xdir=rigid ydir=rigid zdir=rigid &
                                                                                                        xrdir=rigid yrdir=rigid zrdir=rigid
                                endcommand
                endif
                pnt1=nodenext
        endloop
end
merge_link
回复 不支持

使用道具 举报

发表于 2008-6-15 22:14:06 | 显示全部楼层 来自 江苏南京
请问楼主,上述问题有没有解决,错误出在哪?
回复 不支持

使用道具 举报

发表于 2008-6-25 15:51:50 | 显示全部楼层 来自 湖南长沙
楼主显身啊!
回复 不支持

使用道具 举报

发表于 2008-6-25 15:54:38 | 显示全部楼层 来自 湖南长沙
呼唤楼主啊.....
回复 不支持

使用道具 举报

 楼主| 发表于 2008-7-14 12:18:10 | 显示全部楼层 来自 浙江杭州
问题早已解决,问题还是出在循环上。
回复 不支持

使用道具 举报

发表于 2008-7-16 14:55:43 | 显示全部楼层 来自 江苏南京
楼主能不能把正确的贴上来,想学习一下,先谢谢了
回复 不支持

使用道具 举报

 楼主| 发表于 2008-7-16 15:17:58 | 显示全部楼层 来自 浙江杭州
正确的子程序,大家用的时候如果要改变约束条件(如刚接、铰接),适当改一下就可以了。

;----------------------------建立水平支撑与立柱桩交点处节点间的刚性link----------------------
def merge_link
node_num=0
node_pnt1 = nd_head
loop while node_pnt1 # null  ;寻找总节点数,注:不能自己任生成node,程序缺省的方式为连续生成无不连续
  node_num = node_num+1
  node_pnt1 = nd_next(node_pnt1)
endloop
node_num_minus1 = node_num-1
link_id=30000
loop ii (1,node_num_minus1)
  node_pnt1 = nd_find(ii)
  xx1 = nd_pos(node_pnt1,2,1)
  yy1 = nd_pos(node_pnt1,2,2)
  zz1 = nd_pos(node_pnt1,2,3)
  ii_plus1 = ii+1
  loop jj (ii_plus1,node_num)
   node_pnt2 = nd_find(jj)
   xx2 = nd_pos(node_pnt2,2,1)
   yy2 = nd_pos(node_pnt2,2,2)
   zz2 = nd_pos(node_pnt2,2,3)
   node_dist = sqrt((xx1-xx2)^2+(yy1-yy2)^2+(zz1-zz2)^2)
   dist_tol = 1e-3
   if node_dist < dist_tol then
    link_pnt1 = nd_link(node_pnt1)
    link_pnt2 = nd_link(node_pnt2)
    if link_pnt1 # null then
     temp1 = lk_delete(link_pnt1)
    endif
    if link_pnt2 # null then
     temp2 = lk_delete(link_pnt2)
    endif
    link_id = link_id+1
    command   ;生成新link(6自由度全固结) ,大的node的id作为target node,小的node的id作为source node,需注意不同情况下的灵活调整
     sel set link node_tol=dist_tol
     sel link id=link_id ii target = node tgt_num = jj  ;指定link的ID
     ;sel link  ii target = node tgt_num = jj     ;不指定link的id,自动生成
     sel link  attach xdir=rigid ydir=rigid zdir=rigid xrdir=rigid yrdir=rigid zrdir=rigid range id=link_id    ;要改变约束条件,修改此句
    endcommand
   endif
  endloop
endloop
end
merge_link
回复 不支持

使用道具 举报

发表于 2009-3-2 19:43:25 | 显示全部楼层 来自 湖北武汉
为什么运行到 sel link node_tol=dist_tol的时候 显式 Extraneous material呢?搞不明白,望楼主指教一下!
回复 不支持

使用道具 举报

发表于 2015-7-21 14:19:27 | 显示全部楼层 来自 四川
这个语句会把结构单元与实体单元之间的链接也删除吗
回复 不支持

使用道具 举报

发表于 2017-1-19 19:03:15 | 显示全部楼层 来自 湖北武汉
这个怎么显示指针错误啊?
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-1 06:11 , Processed in 0.046385 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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