new
gen zone brick p0 0 0 0 p1 10 0 0 p2 0 10 0 p3 0 0 10 p4 10 10 0 p5 0 10 10 p6 10 0 10 p7 10 10 10 size 5 5 10
gen zone brick p0 0 0 -10 size 10 10 10
plot block group
;遍历融合节点
def merge
ap_gp=gp_head
loop while ap_gp#null
az_pos=gp_zpos(ap_gp)
ax_pos=gp_xpos(ap_gp)
ay_pos=gp_ypos(ap_gp)
if az_pos=0 then
bp_gp=gp_head
loop while bp_gp#null
bz_pos=gp_zpos(bp_gp)
bx_pos=gp_xpos(bp_gp)
by_pos=gp_ypos(bp_gp)
if bz_pos=0 then
d=sqrt((ax_pos-bx_pos)^2+(ay_pos-by_pos)^2)
if d<=1 then
bx_pos=ax_pos
by_pos=ay_pos
bp_gp=gp_head
endif
endif
bp_gp=gp_next(bp_gp)
end_loop
endif
ap_gp=gp_next(ap_gp)
end_loop
end
merge
解释一下,上方brick单元。边长10,x、y向划分5个单元,单元边长2.下方brick单元,边长10,x、y向划分10个单元,单元边长1.接触面处z坐标为0。函数是遍历节点,在接触面处错开的节点连结在一起。这个函数效率太低,而且运行有问题。大家各提意见,最好再设计一种更合适的函数。