Per la programmazione tramite l'interfaccia COM, un supporto nodale ha le proprietà "ReferenceSystem" e "UserDefinedReferenceSystem". "Sistema di riferimento" consente di definire il tipo di sistema di coordinate definito dall'utente (ad esempio, "Ruotato" o "Sistema di coordinate") e, a seconda del tipo selezionato, questo tipo viene definito tramite "Sistema di riferimento definito dall'utente".
Nell'esempio seguente, è stato impostato il tipo "Sistema di coordinate" ed è stato creato anche un sistema di coordinate definito dall'utente:
//crea un sistema di coordinate definito dall'utenteiGuideObjects iGuide = iModel.GetGuideObjects();
//elimina l'accogliente n. 2UserCoordinateSystem[]csList = iGuide.GetCoordinateSystems();if (csList.Lunghezza > 1){for (int i = 0; i < csList.Lunghezza; ++i){if (csList[i].No == 2){iGuide.PrepareModification();iGuide.DeleteObjects(GuideObjectType.CoordinateSystemObject, "2");iGuide.FinishModification();}}}
//definisce il nuovo accogliente nr. 2UserCoordinateSystem uCs = new UserCoordinateSystem();uCs.Name = "prova";uCs.Comment = "prova";uCs.No = 2;uCs.IsValid = true;
uCs.Origine.X = 1;uCs.Origine.Y = 0;uCs.Origine.Z = 1;
uCs.Punto1.X = 2;uCs.Punto1.Y = 0;uCs.Punto1.Z = 1;
uCs.Punto2.X = 1;uCs.Punto2.Y = 1;uCs.Punto2.Z = 2;
//imposta l'accogliente n. 2iGuide.PrepareModification();iGuide.SetCoordinateSystem(uCs);iGuide.FinishModification();
//crea un vincolo esterno nodale con cosy definito dall'utenteNodalSupport ns = new NodalSupport();
ns.SupportConstantX = -1;ns.SupportConstantY = -1;ns.SupportConstantZ = -1;
ns.RestraintCostantX = -1;ns.RestraintConstantY = 0;ns.RestraintConstantZ = -1;
ns.Comment = "definito dall'utente accogliente";ns.NodeList = "1";ns.ReferenceSystem = ReferenceSystemType.UserDefinedSystemType;
ns.UserDefinedReferenceSystem.ObjectNo = 2;ns.UserDefinedReferenceSystem.Type = UserDefinedAxisSystemType.DefinedCoordinateSystemType;
iModData.PrepareModification();iModData.SetNodalSupport(ns);iModData.FinishModification();
Per poter creare il sistema di coordinate, è necessaria l'interfaccia per gli oggetti guida: 'IGuidaOggetti'. Con la funzione "EliminaOggetto()", un sistema di coordinate esistente di Numero 2 viene prima eliminato e ne viene creato uno nuovo con "SetCoordinateSystem()". Si prega di notare il blocco "Prepara/Finire-Modifica" per essere in grado di trasferire il nuovo elemento.
Il vincolo esterno del nodo viene trasferito tramite l'interfaccia "IModelData". Anche in questo caso, è richiesto il blocco "Prepara/Finisci-Modifica".