Thomas Carriot

Male

nantes

France

Comment Wall:

  • Msahli zouhir

    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

  • Msahli zouhir

    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

  • Msahli zouhir

    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/)