Aller au contenu

Centroid polyligne region...


Messages recommandés

Posté(e)

Bonsoir,

 

Je reviens sur un sujet déjà évoqué mais où la réponse ne correspond pas à mon cas.

 

En gros je crée une polyligne avec les points saisis par l'utilisateur. Ensuite je crée une région sur cette polyligne et je veux récupérer le centroid de la région. Et le pb est que une fois la région créé c'est un variant et la récup du centroid se fait sur un acadregion je sais plus quoi. Donc là il faut que je demande à l'utilisateur de choisir la région qu'il vient de faire.

 

Le but est de sauter l'étape où l'utilisateur rechoisi sa région.

 

 

Actuellement je fais cela :

 

' Dessin de la polyligne
   Set polyObj = ThisDrawing.ModelSpace.AddPolyline(vertices)
   polyObj.Closed = True ' cloture de la polyligne
   
   'création de la région
   Set region_element(0) = polyObj
   region = ThisDrawing.ModelSpace.AddRegion(region_element)
   
   ' Choix de la région pour en calculer le centre
   ThisDrawing.Utility.GetEntity boxObj, basePnt, "Sélectionnez la région SVP"
   
   ' Le point de base du texte est le centre de la region
   Centroid = boxObj.Centroid
   returnPnt(0) = Centroid(0): returnPnt(1) = Centroid(1): returnPnt(2) = 0 

 

Quelqu'un aurait-il une idée ?

 

Merci à vous.

 

PS : la seule idée qui me vient mais qui n'est pas la plus simple est de dessiner un Acad3DSolid à la place de la polyligne. Mais ça me parait compliqué comme truc.

Vous voulez parler de génie climatique et poser vos questions alors venez par ici : http://le-genie-climatique.positifforum.com

Les loisirs créatifs vous tentent : http://pausebroderie.fr

Posté(e)

Bonsoir,

 

je ne sais pas si cela répond à ton questionnement.

Voici quelque chose qui récupère la région, enfin me semble-t-il.

En utilisant la base de ton code

 

 Dim points(0 To 8) As Double
Dim polyobj As AcadPolyline
Dim region_element(0) As AcadEntity
Dim region As Variant
Dim reg As AcadRegion
Dim centroid As Variant
Dim returnPnt(0 To 2) As Double

Public Sub aa()

' Define the 2D polyline points
points(0) = 1: points(1) = 1: points(2) = 0
points(3) = 1: points(4) = 2: points(5) = 0
points(6) = 2: points(7) = 2: points(8) = 0
   
' Dessin de la polyligne
Set polyobj = ThisDrawing.ModelSpace.AddPolyline(points)
polyobj.Closed = True ' cloture de la polyligne

'création de la région
Set region_element(0) = polyobj
region = ThisDrawing.ModelSpace.AddRegion(region_element)
Set reg = region(0)

' Le point de base du texte est le centre de la region
centroid = reg.centroid
returnPnt(0) = centroid(0): returnPnt(1) = centroid(1): returnPnt(2) = 0
MsgBox returnPnt(0)
MsgBox returnPnt(1)
MsgBox returnPnt(2)
End Sub

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité