Bei der Programmierung mit der COM-Schnittstelle besitzt ein Knotenlager die Eigenschaft 'ReferenceSystem' und 'UserDefinedReferenceSystem'. Mit 'ReferenceSystem' kann die Art (z. B. "Gedreht" oder "Koordinatensystem") des benutzerdefinierten Koordinatensystems festgelegt werden und je nachdem, welche Art gewählt wurde, wird dann über 'UserDefinedReferenceSystem' diese Art definiert.
Im folgenden Beispiel wurde als Art "Koordinatensystem" eingestellt und außerdem dafür ein benutzerdefiniertes Koordinatensystem angelegt:
// create user defined coordinate systemIGuideObjects iGuide = iModel.GetGuideObjects();
// delete cosy No 2UserCoordinateSystem[] 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 2UserCoordinateSystem 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 2iGuide.PrepareModification();iGuide.SetCoordinateSystem(uCs);iGuide.FinishModification();
// create nodal support with user defined cosyNodalSupport 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();
Um das Koordinatensystem anlegen zu können, wird das Interface für die Hilfsobjekte benötigt: 'IGuideObjects'. Mit der Funktion 'DeleteObjects()' wird zunächst ein vorhandenes Koordinatensystem mit der Nummer 2 gelöscht und mit 'SetCoordinateSystem()' ein neues angelegt. Zu beachten ist wieder der 'Prepare/Finish-Modification'-Block, um das neue Element übergeben zu können.
Das Knotenlager wird über das Interface 'IModelData' übergeben. Auch hier ist ein 'Prepare/Finish-Modification'-Block nötig.