大侠请进,我用monkey写了一个随机的树,其实都是线。现在需要将树的线条变成实体,在monkey中不知有什么命令。
老师提醒的是用command 调用pipe什么的,不知道怎么用啊。
Sub Main()
Dim arrptstart,arrptend,strtreem,lentreem,angtreem,arrptmid
arrptstart=rhino.getpoint("start point")
If Not isarray(arrptstart) Then Exit Sub
arrptend=rhino.GetPoint("end point",arrptstart)
If Not isarray(arrptend) Then Exit Sub
arrptmid=thirdpt(arrptstart,arrptend)
Call shucha(arrptstart,arrptmid,arrptend)
End Sub
Function shucha(arrptstart,arrptmid,arrptend)
Dim arrptree1,arrptree2,arrptree3,arrptree4,distance1,angle1,arrptmid1,arrptmid2
Dim arrplanexz,arrplaneyz,arrptmid3,arrptmid4,a,b
angle1=rhino.Angle(arrptstart,arrptend)
arrplanexz=rhino.WorldZXPlane
arrplaneyz=rhino.WorldYZPlane
Randomize
a=60*Rnd+30
'b=Rnd+0.1
Call rhino.EnableRedraw(False)
distance1=rhino.distance(arrptstart,arrptend)
arrptree1=rhino.Polar(arrptend,angle1(2)+a,0.6*distance1,arrplanexz)
arrptmid1=thirdpt(arrptend,arrptree1)
arrptree2=rhino.Polar(arrptend,angle1(2)-a,0.6*distance1,arrplanexz)
arrptmid2=thirdpt(arrptend,arrptree2)
arrptree3=rhino.Polar(arrptend,angle1(1)+a,0.6*distance1,arrplaneyz)
arrptmid3=thirdpt(arrptend,arrptree3)
arrptree4=rhino.Polar(arrptend,angle1(1)-a,0.6*distance1,arrplaneyz)
arrptmid4=thirdpt(arrptend,arrptree4)
arrptmid=thirdpt(arrptstart,arrptend)
If distance1<0.5 Then Exit Function
Call rhino.addcurve(array(arrptstart,arrptmid,arrptend))
Call rhino.Addcurve(array(arrptend,arrptmid1,arrptree1))
Call rhino.Addcurve(array(arrptend,arrptmid2,arrptree2))
Call rhino.Addcurve(array(arrptend,arrptmid3,arrptree3))
Call rhino.Addcurve(array(arrptend,arrptmid4,arrptree4))
Call shucha(arrptend,arrptmid,arrptree1)
Call shucha(arrptend,arrptmid,arrptree2)
Call shucha(arrptend,arrptmid,arrptree3)
Call shucha(arrptend,arrptmid,arrptree4)
Call rhino.EnableRedraw(True)
End Function
Function thirdpt(arrptstart,arrptend)
Dim angthird,lentree,arrptthird,rndnum
angthird=rhino.Angle(arrptstart,arrptend)
lentree=rhino.Distance(arrptstart,arrptend)
Randomize
rndnum=rnd()
If rndnum<0.5 Then
rndnum=-1
Else
rndnum=1
End If
Randomize
arrptthird=rhino.Polar(arrptstart,angthird(0)+(rndnum*int((rnd*30))),0.5*lentree)
thirdpt=arrptthird
End Function
|
-
|
举报