Aller au contenu

Probleme avec le indicate2D


Invité Quieto

Messages recommandés

Posté(e)

Je reviens vers vous, avec un des module que j'integrerais plus tard à ma macro complete. L'idée est de faire choisir à l'utilisateur :

 

* Une face sur laquelle editer une nouvelle esquisse (dans un corps crée pour l'occasion)

* De choisir le centre et un point d'un cercle crée avec la macro (en cliquant sur la localisation)

 

 

 

Le probleme : j'ai pas de soucis pour determiner le rayon en fonction des coordonnées des points saisis par l'utilisateur. En revanche, les coordonnées du centre sont assez ... aléatoires. Je m'explique : des fois, en particulier sur certaine faces et en vue normales à ces faces, le code fonctionne correctement. En revanche, quand on est en perspective, voir meme en vue normale à certaines faces , les coordonnées devienne n'importe quoi. Une idée sur la question ?

 

Sub CATMain()

 

Dim myDoc As PartDocument

Set myDoc = CATIA.ActiveDocument

 

Dim myPart As Part

Set myPart = myDoc.Part

 

Dim myBodies As bodies

Set myBodies = myPart.bodies

 

Dim myMainBody As Body

Set myMainBody = myPart.MainBody

 

Dim myBody As Body

Set myBody = myBodies.Add()

 

Dim mySelection

Dim Status

 

Dim InputObjectType(0)

Set mySelection = myDoc.Selection

 

InputObjectType(0) = "Face"

Status = mySelection.SelectElement2(InputObjectType, "Select a face", True)

If (Status = "cancel" ) Then Exit Sub

Set myFace = mySelection.Item(1).Reference

 

mySelection.Clear

 

Dim mySketches As Sketches

Set mySketches = myBody.Sketches

 

Dim mySketch As Sketch

Set mySketch = mySketches.Add(myFace)

 

Dim myFactory2D As Factory2D

Set myFactory2D = mySketch.OpenEdition()

 

 

Dim myTempDoc

Set myTempDoc = CATIA.ActiveDocument

Dim Selection

Set Selection = myTempDoc.Selection

Dim Location(1)

Dim RLocation(1)

 

myPart.InWorkObject = mySketch

 

Status = myTempDoc.Indicate2D("Select a location", Location)

If (Status = "Cancel" ) Then Exit Sub

 

XCenter = Location(0)

YCenter = Location(1)

 

Status = myTempDoc.Indicate2D("Select a radius location", RLocation)

If (Status = "Cancel" ) Then Exit Sub

 

XRadius = RLocation(0)

YRadius = RLocation(1)

 

Carre1 = Abs((XRadius - XCenter) * (XRadius - XCenter))

Carre2 = Abs((YRadius - YCenter) * (YRadius - YCenter))

Somme = Carre1 + Carre2

Radius = Sqr(Somme)

 

 

Dim Circle2D As Circle2D

Set Circle2D = myFactory2D.CreateClosedCircle(XCenter, YCenter, Radius)

 

myPart.Update

 

 

End Sub

Posté(e)

Bonjour Quieto,

 

Je crois que j'ai eu le même problème il y a peu de temps :

http://www.catiav5forum.de/wbb3/wbb/index.php?page=Thread&postID=27956&highlight=indicate2D#post27956

 

Que je n'ai pas résolu ...

J'utilise indicate2D en drafting et je n'ai pas de souci. Par contre, dans un sketch c'est 0 ! Les coordonnées retournées doivent dépendre du facteur de zoom, du positionnement du sketch en 3D, ou de la température extérieure ...

 

Posté(e)

Bon des nouvelles de ma part :

 

Il semble que Indicate2D mesure les coordonnées du clic par rapport au repère de la PART , les transforme , et place le point par rapport au repère de l'esquisse.

 

La transformation :

La coordonnée en X affiché par Indicate2D est la même que celle mesurée par rapport à l'origine de la Part

La coordonnée en Y est le resultat de la division de la coordonnée mesurée par rapport à l'origine de la Part, par une des composantes d'un des vecteurs directeur du plan d'esquisse (obtenue grace à GetAbsoluteAxisData), avec en plus une opération sur le signe que je n'ai pas encore réussie à isoler ...

 

Pour plus d'infos, je renvoie sur le thread que j'ai ouvert sur COE :

http://www.coe.org/Collaboration/DiscussionForum/ActiveDiscussions/tabid/210/aff/10/aft/132314/afv/topic/afpgj/1/Default.aspx#136118

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é