'Référence Abscisse Maitre Couple Dim _line As New LineCurve(New Point3d(0,Lar,Cre),New _ Point3d(lpp,lar,Cre))
1/ lpp,lar,cre = longeur du navire , largeur , creux ,sont les variables input du composant VB
-------------------------------------------------------------------------------------- Dim TG_Point, pnt0 As Point3d Dim indx= 0 'pour amorcer la variable Dim geometry = New System.Collections.Generic.List(Of GeometryBase)() geometry.Add(Hull)
Dim Bool as boolean =_line.ClosestPoints(geometry, Pnt1, TG_Point _ ,indx)
2/ Hull = la géométrie navire est aussi une variable input du composant VB ,à inclure dans la liste geometry
Pnt1 = le point le plus proche sur la courbe _line :output de la fonction ClosestPoints
TG_Point = le point le plus proche sur la géométrie navire :output de la fonction ClosestPoints
ce point correspond a la largeur maximale de l'objet Coque(Hull)
indx= index de la geometry :output de la fonction ClosestPoints
Remarque :il faut consulter le RhinoCommon SDK help
1/ Par définition: l'abscisse du maître couple correspond à la largeur maximale du navire
2/ l'air du maître couple est toujours calculée à différentes lignes d'eau fixées d'avance.
3/pour le calcul de l'air du maître couple à un tirant d'eau précis on procède à une interpolation linéaire entre les lignes d'eau correspondantes
Remarque/Correction :
la solution que j'ai donné est en RhinoCommon directement exploitable en grasshopper (composant VB) et non en RhinoScript :elle donne l'air du maître couple maximale
'Référence Abscisse Maitre Couple Dim _line As New LineCurve(New Point3d(0,Lar,Cre),New _ Point3d(lpp,lar,Cre))
Dim TG_Point, pnt0 As Point3d Dim indx= 2*D Dim geometry = New System.Collections.Generic.List(Of GeometryBase)() geometry.Add(Hull)
Dim Bool as boolean =BS_line.ClosestPoints(geometry, Pnt0, TG_Point _ ,indx,10) 'Pt1 is on Brep(Hull)
_line.ClosestPoints(geometry, pnt0,TG_Point,indx,10) 'Pt1 is on Brep(Hull)
'Le point Pt1 correspond a la largeur maximale de l'objet Coque(Hull)
'Section Maître Couple _______________________________________________________ Dim MSCntrCrv() = Brep.CreateContourCurves(Hull,(New Plane(New _ Point3d(0.5*lwl,0,0), New Vector3d(1,0,0)))) If MSCntrCrv(0).MakeClosed(0) then Ap = AreaMassProperties.Compute(MSCntrCrv(0)) :MtrCplArea=Ap.Area End If
'
Thomas Un Conseil ! balance sur RhinoScript c'est plus simple et énormément plus efficace
Comment Wall (3 comments)
You need to be a member of Grasshopper to add comments!
Bonjour Thomas
Faisant un peu d'ordre :
Alors
'Référence Abscisse Maitre Couple
Dim _line As New LineCurve(New Point3d(0,Lar,Cre),New _ Point3d(lpp,lar,Cre))
1/ lpp,lar,cre = longeur du navire , largeur , creux ,sont les variables input du composant VB
--------------------------------------------------------------------------------------
Dim TG_Point, pnt0 As Point3d
Dim indx= 0 'pour amorcer la variable
Dim geometry = New System.Collections.Generic.List(Of GeometryBase)()
geometry.Add(Hull)
Dim Bool as boolean =_line.ClosestPoints(geometry, Pnt1, TG_Point _ ,indx)
2/ Hull = la géométrie navire est aussi une variable input du composant VB ,à inclure dans la liste geometry
Pnt1 = le point le plus proche sur la courbe _line :output de la fonction ClosestPoints
TG_Point = le point le plus proche sur la géométrie navire :output de la fonction ClosestPoints
ce point correspond a la largeur maximale de l'objet Coque(Hull)
indx= index de la geometry :output de la fonction ClosestPoints
Remarque :il faut consulter le RhinoCommon SDK help
--------------------------------------------------------------------------------
'Section Maître Couple
Dim MSCntrCrv() = Brep.CreateContourCurves(Hull,(New Plane(TG_Point, New Vector3d(1,0,0))))
If MSCntrCrv(0).MakeClosed(0) then
Dim Ap = AreaMassProperties.Compute(MSCntrCrv(0))
DIm MtrCplArea=Ap.Area
End If
A=MtrCplArea
3/ A = variable output du composant VB
Bonne Chance et n'oublie pas de consulter le RhinoCommon SDK help (http://4.rhino3d.com/5/rhinocommon/)
Salut Thomas
je viens de lire votre message
Alors:
1/ Par définition: l'abscisse du maître couple correspond à la largeur maximale du navire
2/ l'air du maître couple est toujours calculée à différentes lignes d'eau fixées d'avance.
3/pour le calcul de l'air du maître couple à un tirant d'eau précis on procède à une interpolation linéaire entre les lignes d'eau correspondantes
Remarque/Correction :
la solution que j'ai donné est en RhinoCommon directement exploitable en grasshopper (composant VB) et non en RhinoScript :elle donne l'air du maître couple maximale
Bonjour Thomas
essaie ce qui suit (Rhino Script)
'Référence Abscisse Maitre Couple
Dim _line As New LineCurve(New Point3d(0,Lar,Cre),New _ Point3d(lpp,lar,Cre))
Dim TG_Point, pnt0 As Point3d
Dim indx= 2*D
Dim geometry = New System.Collections.Generic.List(Of GeometryBase)()
geometry.Add(Hull)
Dim Bool as boolean =BS_line.ClosestPoints(geometry, Pnt0, TG_Point _ ,indx,10) 'Pt1 is on Brep(Hull)
_line.ClosestPoints(geometry, pnt0,TG_Point,indx,10) 'Pt1 is on Brep(Hull)
'Le point Pt1 correspond a la largeur maximale de l'objet Coque(Hull)
'Section Maître Couple _______________________________________________________
Dim MSCntrCrv() = Brep.CreateContourCurves(Hull,(New Plane(New _ Point3d(0.5*lwl,0,0), New Vector3d(1,0,0))))
If MSCntrCrv(0).MakeClosed(0) then
Ap = AreaMassProperties.Compute(MSCntrCrv(0)) :MtrCplArea=Ap.Area
End If
'
Thomas Un Conseil ! balance sur RhinoScript c'est plus simple et énormément plus efficace