При программировании через интерфейс COM, доступны для узловой опоры функции «ReferenceSystem» и «UserDefinedReferenceSystem». Причем с помощью функции «ReferenceSystem» можно сначала определить тип пользовательской системы координат (например, «Повернутая» или «Система координат»), а затем, в зависимости от выбранного типа, задать данный тип системы посредством команды «UserDefinedReferenceSystem».
В следующем примере была в качестве типа системы установлена «Система координат», для которой была создана также пользовательская система координат:
// 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();
Для создания системы координат потребуется наличие интерфейса для вспомогательных объектов: 'IGuideObjects'. С помощью функции «DeleteObjects()» потом сначала удалится существующая система координат номер 2, а затем посредством функции «SetCoordinateSystem()» создастся новая. Не забудьте также обратить внимание на блок «Prepare/Finish-Modification», благодаря которому можно добавлять новые элементы.
Узловая опора затем передается через интерфейс «IModelData». Здесь тоже потребуется блок «Prepare/Finish-Modification».