750x
004789
2020-10-23

Pytanie

Jak mogę utworzyć układ współrzędnych zdefiniowany przez użytkownika za pomocą interfejsu COM, a następnie przypisać go do podpory węzłowej?


Odpowiedź:

Na potrzeby programowania przy użyciu interfejsu COM podpora węzłowa posiada właściwości „ReferenceSystem” oraz „UserDefinedReferenceSystem”. „ReferenceSystem“ umożliwia zdefiniowanie typu układu współrzędnych zdefiniowanego przez użytkownika (na przykład „Obrócony“ lub „Układ współrzędnych“), który w zależności od wybranego typu jest następnie definiowany poprzez „UserDefinedReferenceSystem“.

W poniższym przykładzie jako typ został ustawiony "Układ współrzędnych", a dla niego również został utworzony układ współrzędnych:

//utwórz układ współrzędnych zdefiniowany przez użytkownika
IGuideObjects iGuide = iModel.GetGuideObjects ();

//usuń przytulny nr 2
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 ();
}
}
}

//zdefiniuj nowy przytulny nr 2
uC systemu współrzędnych użytkownika = new UserCoordinateSystem ();
uCs.Name = "test";
uCs.Comment = "test";
uCs.No = 2;
uCs.IsValid = prawda;

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

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

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

//ustaw przytulny nr 2
iGuide.PrepareModification ();
iGuide.SetCoordinateSystem (uCs);
iGuide.FinishModification ();

//utworzenie podpory węzłowej ze zdefiniowaną przez użytkownika funkcją cosy
NodalSupport ns = nowy NodalSupport ();

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

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

ns.Comment = "przytulne zdefiniowane przez użytkownika";
ns.NodeList = "1";
ns.ReferenceSystem = ReferenceSystemType.UserDefinedSystemType;

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

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

Aby utworzyć układ współrzędnych, wymagany jest interfejs dla obiektów pomocniczych: 'IGuideObjects'. Dzięki funkcji „DeleteObjects ()” najpierw usuwany jest istniejący układ współrzędnych o numerze 2, a następnie tworzony za pomocą funkcji „SetCoordinateSystem (). Proszę zwrócić uwagę na blok "Przygotowanie/wykończenie-modyfikacja", aby móc przenieść nowy element.

Podpora węzłowa jest przenoszona przez interfejs "IModelData". Ponownie, wymagany jest blok "Przygotowanie/zakończenie-modyfikacji".