PhilBat Posté(e) le 22 mai 2012 Posté(e) le 22 mai 2012 Bonjour,à partir des coordonnées d'insertion d'un bloc (BlkRef.position.X,...) qui pour moisont définies en coordonnées SCG (à confirmer).Le but est de calculer un point avec des distances DeltaX, et DeltaYprédéfinies par rapport au bloc.Mais les choses se compliquent quand les coordonnées ne sont pas SCGle code suivant ne marche pas : Using br As New BlockReference(Point3d.Origin, bt(blockName)) br.TransformBy(Matrix3d.Displacement(Ins - Point3d.Origin).PreMultiplyBy(ed.CurrentUserCoordinateSystem)) btr.AppendEntity(br) Tr.AddNewlyCreatedDBObject(br, True) ...... Ins correspond àblkRef = CType(Tr.GetObject(blkId, OpenMode.ForRead), BlockReference) InsertPnt = New Point3d(blkRef.Position.X, blkRef.Position.Y, 0.0#) Ins = New Point3d(InsertPnt.X + CDbl(txtDeltaX.Text), InsertPnt.Y + CDbl(txtDeltaY.Text), InsertPnt.Z) Cela me calculs des coordonnées qui ne sont pas en phase avec le SCUComment peut-on les transformées en coordonnées SCU courant ?MerciPhil.
Maxence DELANNOY Posté(e) le 22 mai 2012 Posté(e) le 22 mai 2012 De mémoire en .NET tous les points sont en SCG, sauf les points retournés via l'entrée de l'utilisateur (ed.GetPoint) qui sont exprimés dans le SCU (bon il y aussi SCA (affichage) et SCO (objet) dans certains cas). Dim pInWcs As Point3D Dim pInUcs As Point3D Dim ed As Editor pInUcs = pInWcs.TransformBy(ed.CurrentUserCoordinateSystem.Inverse()) Petit test en C# pour la transformation inverse : [CommandMethod("TEST")] public void Test() { Document doc = Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; PromptPointResult ppr = ed.GetPoint("Point:"); Debug.WriteLine(ppr.Value, "SCU"); Debug.WriteLine(ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem), "SCG"); } Maxence DELANNOYDéveloppement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAOWIIP - http://wiip.fr
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant