Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

à partir des coordonnées d'insertion d'un bloc (BlkRef.position.X,...) qui pour moi

sont définies en coordonnées SCG (à confirmer).

Le but est de calculer un point avec des distances DeltaX, et DeltaY

prédéfinies par rapport au bloc.

Mais les choses se compliquent quand les coordonnées ne sont pas SCG

le 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 SCU

Comment peut-on les transformées en coordonnées SCU courant ?

Merci

Phil.

Posté(e)

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 DELANNOY

Développement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAO

WIIP - http://wiip.fr

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é