751x
004789
2020-10-23

问题

如何通过 COM 接口创建用户自定义坐标系,然后将其分配给支座支座?


回复:

对于使用 COM 接口的编程,节点支座具有“参考系统”和“用户定义的参考系统”属性。 “参照系”可以定义用户自定义坐标系的类型(例如“旋转”或“坐标系”),根据所选的类型,通过“用户自定义参照系”进行定义。

在下面的示例中,类型为“坐标系”,并为其创建用户自定义坐标系:

//创建用户自定义坐标系
IGuideObjects iGuide = iModel.GetGuideObjects();

//删除舒适的 2
UserCoordinateSystem[] csList = iGuide.GetCoordinateSystems();
如果(csList.Length > 1)
{
for (int i = 0; i < csList.Length; ++i)
{
如果(csList[i].No == 2)
{
iGuide.PrepareModification();
iGuide.DeleteObjects(GuideObjectType.CoordinateSystemObject, "2");
iGuide.FinishModification();
}
}
}

//定义新的舒适区 2
UserCoordinateSystem uCs = new UserCoordinateSystem();
uCs.Name = "测试";
uCs.Comment = "测试";
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;

//设置舒适编号 2
iGuide.PrepareModification();
iGuide.SetCoordinateSystem(uCs);
iGuide.FinishModification();

//创建用户定义的舒适节点支座
节点支座 ns = 新建节点支座();

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

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

ns.Comment = "用户自定义舒适";
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()”创建一个新的坐标系。 请注意“准备/完成-修改”块,以便能够传输新单元。

节点支座通过接口“IModelData”进行传递。 同样,“准备/完成-修改”块是需要的。