750x
004789
2020-10-23

Pregunta

¿Cómo puedo crear un sistema de coordenadas definido por el usuario a través de la interfaz COM y luego asignarlo a un apoyo en nudo?


Respuesta:

Para la programación utilizando la interfaz COM, un apoyo en nudo tiene las propiedades "ReferenceSystem" y "UserDefinedReferenceSystem". "ReferenceSystem" le permite definir el tipo de sistema de coordenadas definido por el usuario (por ejemplo, "Rotated" o "Coordinate System") y, dependiendo del tipo que se haya seleccionado, este tipo se define a través de "UserDefinedReferenceSystem".

En el siguiente ejemplo, se estableció el "Sistema de coordenadas" como el tipo y también se creó un sistema de coordenadas definido por el usuario para él:

//crear un sistema de coordenadas definido por el usuario
IGuideObjects iGuide = iModel.GetGuideObjects ();

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

//definir nuevo acogedor No 2
UserCoordinateSystem uCs = nuevo UserCoordinateSystem ();
uCs.Name = "prueba";
uCs.Comment = "prueba";
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;

//establecer acogedor No 2
iGuide.PrepareModification ();
iGuide.SetCoordinateSystem (uCs);
iGuide.FinishModification ();

//crear apoyo en nudo con acogedor definido por el usuario
NodalSupport ns = new NodalSupport ();

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

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

ns.Comment = "acogedor definido por el usuario";
ns.NodeList = "1";
ns.ReferenceSystem = ReferenceSystemType.UserDefinedSystemType;

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

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

Para poder crear el sistema de coordenadas, se requiere la interfaz para los objetos guía: ' IGuideObjects '. Con la función "DeleteObjects ()", primero se elimina un sistema de coordenadas existente de Número 2 y se crea uno nuevo con "SetCoordinateSystem ()". Tenga en cuenta el bloque "Preparar/Finalizar-Modificación" para poder transferir el nuevo elemento.

El apoyo en nudo se transfiere a través de la interfaz "IModelData". De nuevo, se requiere el bloque "Preparar/Finalizar-Modificación".