709x
004789
23.10.2020

Question

Comment créer un système de coordonnées personnalisé à l'aide de l'interface COM, puis l'assigner à un appui nodal ?


Réponse:

Lors de la programmation de l'interface COM, un appui nodal a les propriétés « ReferenceSystem » et « UserDefinedReferenceSystem ». « ReferenceSystem » permet de définir le type du système de coordonnées personnalisé (« Tourné » ou « Système de coordonnées », par exemple). Selon la sélection, le type est ensuite défini via « UserDefinedReferenceSystem ».

Dans l'exemple ci-dessous, le type « Système de coordonnées » a été défini et un système de coordonnées personnalisé a été créé :

//  create user defined coordinate system
IGuideObjects iGuide = iModel.GetGuideObjects();

//  delete cosy No 2
UserCoordinateSystem[] csList = iGuide.GetCoordinateSystems();
if (csList.Length > 1)
{
    for (int i = 0; i < csList.Length; ++i)
    {
        if (csList[i].No == 2)
        {
            iGuide.PrepareModification();
            iGuide.DeleteObjects(GuideObjectType.CoordinateSystemObject, "2");
            iGuide.FinishModification();
        }
    }
}

//  define new cosy No 2
UserCoordinateSystem uCs = new UserCoordinateSystem();
uCs.Name = "test";
uCs.Comment = "test";
uCs.No = 2;
uCs.IsValid = true;

uCs.Origin.X = 1;
uCs.Origin.Y = 0;
uCs.Origin.Z = 1;

uCs.Point1.X = 2;
uCs.Point1.Y = 0;
uCs.Point1.Z = 1;

uCs.Point2.X = 1;
uCs.Point2.Y = 1;
uCs.Point2.Z = 2;

//  set cosy No 2
iGuide.PrepareModification();
iGuide.SetCoordinateSystem(uCs);
iGuide.FinishModification();

//  create nodal support with user defined cosy
NodalSupport ns = new NodalSupport();

ns.SupportConstantX = -1;
ns.SupportConstantY = -1;
ns.SupportConstantZ = -1;

ns.RestraintConstantX = -1;
ns.RestraintConstantY = 0;
ns.RestraintConstantZ = -1;

ns.Comment = "user defined cosy";
ns.NodeList = "1";
ns.ReferenceSystem = ReferenceSystemType.UserDefinedSystemType;

ns.UserDefinedReferenceSystem.ObjectNo = 2;
ns.UserDefinedReferenceSystem.Type = UserDefinedAxisSystemType.DefinedCoordinateSystemType;

iModData.PrepareModification();
iModData.SetNodalSupport(ns);
iModData.FinishModification();

Pour créer le système de coordonnées, vous devez utiliser l'interface pour les objets auxiliaires : « IGuideObjects ». Avec la fonction « DeleteObjects () », le système de coordonnées existant avec le numéro 2 est d'abord supprimé et un nouveau système de coordonnées est créé avec « SetCoordinateSystem () ». Vérifiez que le bloc « Prepare/Finish-Modification » est bien présent afin de transférer le nouvel élément.

L'appui nodal est transféré via l'interface « IModelData ». Le bloc « Prepare/Finish-Modification » est également requis ici.