Sie sind auf Seite 1von 5

#CreateTrianglefromlines

importrhinoscriptsyntaxasrs
importmath
importUserInputasui
defTriangle(curves):
crv_1=curves[0]
crv_2=curves[1]
crv_3=curves[2]
crv_lengths=SideFind(crv_1,crv_2,crv_3)
crv_angles=AngleFind(crv_lengths)
curveinfo=[crv_angles,crv_lengths]
returncurveinfo
defSideFind(crv_1,crv_2,crv_3):
crv_1=rs.CurveLength(crv_1)
crv_2=rs.CurveLength(crv_2)
crv_3=rs.CurveLength(crv_3)

#use math function min, max, median but not


implementedinrhinoyet
#findlargecrv
#Usethisifnosidesarethesame
ifcrv_1!=crv_2andcrv_1!=crv_3andcrv_2!=crv_3:
ifcrv_1>crv_2andcrv_1>crv_3:crv_lg=crv_1
ifcrv_2>crv_1andcrv_2>crv_3:crv_lg=crv_2
ifcrv_3>crv_1andcrv_3>crv_2:crv_lg=crv_3
#findmidcrv
ifcrv_1crv_3:crv_md=crv_1
ifcrv_1>crv_2andcrv_1crv_1andcrv_2crv_3:
crv_md=crv_2
ifcrv_3>crv_1andcrv_3crv_2:crv_md=crv_3
#findsmallcrv
ifcrv_1crv_3:
crv_md=crv_1
crv_lg=crv_2
crv_sm=crv_3
ifcrv_2==crv_3andcrv_2>crv_1:
crv_md=crv_2

crv_lg=crv_3
crv_sm=crv_1
ifcrv_1==crv_3andcrv_1crv_2:
crv_sm=crv_2
crv_md=crv_1
crv_lg=crv_3
crv_lengths=[crv_sm,crv_md,crv_lg]
returncrv_lengths

defAngleFind(crv_sizes):
#Makeformulalooknicer
sm_pow=crv_sizes[0]**2
md_pow=crv_sizes[1]**2
lg_pow=crv_sizes[2]**2

lg_sm_angle=( (180/math.pi) *
(math.acos(

(sm_pow+lg_powmd_pow)

/
(2*(crv_sizes[0]*crv_sizes[2])))))

lg_md_angle=( (180/math.pi) *
(math.acos(

(lg_pow+md_powsm_pow)

/
(2*(crv_sizes[2]*crv_sizes[1])))))

sm_md_angle=( (180/math.pi) *
(math.acos(

(md_pow+sm_powlg_pow)

/
(2*(crv_sizes[1]*crv_sizes[0])))))

crv_angles=[lg_sm_angle,lg_md_angle,sm_md_angle]
returncrv_angles

defTriangleCreate(curves,crv_angles,crv_lengths):
crv_1=curves[0]
crv_2=curves[1]
crv_3=curves[2]

curves=SideFind(crv_1,crv_2,crv_3)
crv_S=curves[0]
crv_M=curves[1]
crv_L=curves[2]
#Matchcurvestosizesorotationisbasedonsmmd
andlgcurves

ifcrv_S!=crv_Mandcrv_S!=crv_L:
ifrs.CurveLength(crv_1)==crv_S:crv_sm=crv_1
ifrs.CurveLength(crv_2)==crv_S:crv_sm=crv_2
ifrs.CurveLength(crv_3)==crv_S:crv_sm=crv_3
ifcrv_S!=crv_Mandcrv_M!=crv_L:
ifrs.CurveLength(crv_1)==crv_M:crv_md=crv_1
ifrs.CurveLength(crv_2)==crv_M:crv_md=crv_2
ifrs.CurveLength(crv_3)==crv_M:crv_md=crv_3
ifcrv_S!=crv_Landcrv_M!=crv_L:
ifrs.CurveLength(crv_1)==crv_L:crv_lg=crv_1
ifrs.CurveLength(crv_2)==crv_L:crv_lg=crv_2
ifrs.CurveLength(crv_3)==crv_L:crv_lg=crv_3

ifcrv_S==crv_Mandcrv_Scrv_L:
crv_md=crv_1
crv_lg=crv_2
crv_sm=crv_3
ifcrv_M==crv_Landcrv_M>crv_S:
crv_md=crv_2
crv_lg=crv_3
crv_sm=crv_1
ifcrv_S==crv_Landcrv_Scrv_M:
crv_sm=crv_2
crv_md=crv_1
crv_lg=crv_3

#Maketherotationaxisthezaxis
rot_axi=rs.VectorCreate([0,0,0],[0,0,1])

#Movemediumcurvetothesmallone
end_pt=rs.CurveStartPoint(crv_sm)
start_pt=rs.CurveStartPoint(crv_md)
translate=end_ptstart_pt
crv_mv=crv_md
rs.MoveObject(crv_mv,translate)

crv_sel=crv_sm
start_dir=rs.VectorCreate(rs.CurveStartPoint(crv_sm

),rs.CurveEndPoint(crv_sm))
end_dir=rs.VectorCreate(rs.CurveStartPoint(crv_md),
rs.CurveEndPoint(crv_md))
center_rot=rs.CurveStartPoint(crv_sm)
xform = rs.XformRotation3(start_dir, end_dir,
center_rot)
rs.TransformObject(crv_sel,xform,False)

angle_rot=crv_angles[2]

xform=rs.XformRotation2(angle_rot, rot_axi,
center_rot)
rs.TransformObject(crv_sel,xform,False)

end_pt=rs.CurveEndPoint(crv_md)
start_pt=rs.CurveStartPoint(crv_lg)
translate=end_ptstart_pt
crv_mv=crv_lg
rs.MoveObject(crv_mv,translate)

crv_sel=crv_lg
start_dir=rs.VectorCreate(rs.CurveStartPoint(crv_lg
),rs.CurveEndPoint(crv_lg))
end_dir=rs.VectorCreate(rs.CurveEndPoint(crv_md),rs
.CurveStartPoint(crv_md))
center_rot=rs.CurveEndPoint(crv_md)
xform=rs.XformRotation3(start_dir,end_dir,center_ro
t)
rs.TransformObject(crv_sel,xform,False)

angle_rot=(crv_angles[1])

xform=rs.XformRotation2(angle_rot, rot_axi,
center_rot)
rs.TransformObject(crv_sel,xform,False)
curve_join=[crv_sm,crv_md,crv_lg]
rs.JoinCurves(curve_join,True)
returncurve_join

defTriMain():

#useversion2fordraggingboxovercurves,use
normalversionforselecting
#whichcurveisexterior
curves=ui.TriangleSelect2()
#curves=ui.TriangleSelect()
curveinfo=Triangle(curves)
triangle=TriangleCreate(curves,curveinfo[0],curvein
fo[1])
returntriangle

#TriMain()

Das könnte Ihnen auch gefallen