gibt es die Möglichkeit eine Strukturpunkt relativ zu einem anderen Strukturpunkt zu modellieren und diese Relation mit globalen Koordinaten anzugeben?
Bei dem unten gezeigtem Code wird der neue Punkt leider immer an dem gedrehten lokalen Koordinatensystem des Ursprungspunktes gebildet.
1.)
Wenn dir die Drehung des Ursprungspunktes auf den referenziert werden soll bekannt ist, kannst du für die Erstellung des neuen Punktes das lokale Koordinatensystem kurz wieder auf die globale Richtung drehen und anschließend wieder in die gewünschte Lage:
spt nr -#knot(2) nx 0 ny 0 nz 1 sx 1 sy 0 sz 0
spt #knot(2)*10 ref pt #knot(2) x 2
spt nr -#knot(2) nx ? ny ? nz ? sx ? sy ? sz ?
2.)
Wenn dir die Drehung des Ursprungspunktes nicht bekannt ist, kannst du dir im sofimshc mit dem Befehl COOR behelfen. Mit dem Befehl kannst du das globale Koordinatensystem an eine beliebige Koordinate+Ausrichtung oder in einen beliebigen Strukturpunkt legen. Letzteres sollte aber den gleichen Effekt haben, wie deine Lösung, da das globale Koordinatensystem die Richtung des lokalen annimmt.
Willst du das globale Koordinatensystem ohne Verdrehung in den Punkt legen, liest man am Besten die Koordinaten des Punktes aus der Datenbank aus und speichert diese in Variablen ab (Hinweis: funktioniert erst, wenn der Punkt in einem vorherigen Berechnungsdurchlauf schon erstellt wurde):
#define Kn_Ko_auslesen
$ BA_Alok zur Geometrieknoten-Definition auf Grundlage von Elementknoten
let#CDB_IER 0 $Fehlerwert CDB-Zugriff initialisiern / auf Null setzen @key NODE $ Datenbanksatz mit den knotenkoordinaten öffnen
let#xkor @(#Such_Kn,1); let#ykor @(#Such_Kn,2); let#zkor @(#Such_Kn,3) #enddef Kn_Ko_auslesen
let#Such_Kn #knot(2) #include Kn_Ko_auslesen
Anschließend positionierst du mit COOR das globale Koordinatensystem an den ausgelesenen Koordinaten. Die Ausrichtung entsprechend des gl. Koordinatensystems sollte die Standardeinstellung sein. Punkt erstellen. Einstellung anschließend wieder zurück auf das Weltkoordinatensystem:
coor x #xkor y #ykor z #zkor
spt #knot(2)*10 x 2
coor typ wrld
Ein Möglichkeit wäre auch die Verwendung eines Hilfsknotens:
$ Ausgangsknoten ist SPT 10
SPT 99 REF PT 10 SX 1 0 XFLG PLA $ Hilfsknoten: Lage wie SPT 10, lokale Richtung = globale Richtung, ohne Vernetzung
SPT 20 REF PT 99 X 2 $ neuer Knoten mit Abstand X = 2 (global)
coor SPT 10 $ Koordinatensystem (inkl. Richtung) in SPT 10
SPT -20 SX 1 0 0 $ neuen Knoten: Koordinatensystem am SPT 10 ausrichten
coor $ Koordinatensystem auf Welt zurücksetzen
SPT -99 X -1 -1 $ Hilfsknoten aus Modell verschieben