Hallo guckmalda,
ich habe mich auch mit KF und UG Assembly befasst. Es geht darum, Komponenten relativ zu bestehenden zu platzieren. Alle Komponenten sind mit KF verbaut, haben also einen KF Hostpointer um diese zu identifizieren.
Das Verschieben der Ursprungskomponente (Referenz) mit dem gekoppeltem (automatischen) verschieben der abhängigen Komponenten hat eigentlich funktioniert, habe aber auch schon "strange", teilweise nicht reproduzierbare Verhalten gehabt.
Anbei ein Ausschnitt aus meinem Coding, hoffe du verstehst es ohne grosse Kommentare, sonst frag einfach.
Der Anwender kann auswählen, ob die Positionierung des neuen Symbols über Offsetwerte (in einem ASCII File hinterlegt) zu dem bestehenden geschehen soll oder über einen neuen Punkt, den er selektiert, deshalb jeweils die Abfragen...
#Informationen von Referenzsymbol eruieren
###########################################
#Position des Referenzsymbols bestimmen
(Frame)ri_frame_ref_symb: ug_askOccFrame(last(RI_REF_SYMB_FUNC );
#RI_REF_SYMB_FUNC: ==>> Ist der Pointer auf die Komponente aus einem #Selection Dialog durch den Anwender
#den X Vector auslesen
(Vector) ri_ref_symb_X_vector: Vector_(1,0,0,ri_frame_ref_symb ;
#den Y Vector auslesen
(Vector) ri_ref_symb_Y_vector: Vector_(0,1,0,ri_frame_ref_symb ;
#den Origin Punkt auslesen
(Point) ri_ref_symb_origin: Point_(0,0,0,ri_frame_ref_symb ;
#Position des neuen Symbols in Bezug zu einem Referenzymbol
###########################################################
#den Vector des Refrenzsymbols bestimmen
(Vector Modifiable Parameter) ri_vec_ref: vector(localX(ri_ref_symb_origin , localY(ri_ref_symb_origin , localZ(ri_ref_symb_origin );
#den Vector des neuen Symbols bestimmen
(Vector Modifiable Parameter) ri_vec_symb: vector_(RI_FD_X_OFF:, RI_FD_Y_OFF:, RI_FD_Z_OFF:, ri_frame_ref_symb ;
#die neue Position des Symbols berechnen
(Vector Modifiable Parameter) ri_pos_new_symb_from_ref_as_vec: ri_vec_ref: + ri_vec_symb:;
(Point Modifiable Parameter) ri_pos_new_symb_from_ref: point(localX(ri_pos_new_symb_from_ref_as_vec ,
localY(ri_pos_new_symb_from_ref_as_vec ,
localZ(ri_pos_new_symb_from_ref_as_vec );
#Position des neuen Symbols
###########################
(Point Modifiable Parameter) ri_pos_new_symb:
#Position mit Offsetwerten zu Referenz
if (!ri_pick_point_mode?: & ri_ref_symb_mode?
then ri_pos_new_symb_from_ref:
#Absolute Position mit den Pick Point Werten
else
RI_FD_POINT_SEL:;
#Orientierung des neuen Symbols
###############################
#den Rotationswinkel bestimmen
(Number Modifiable) ri_rot_angle: if (ri_align_mode?
then RI_ALIGN_VAR_VALUE:
else if (ri_orient_new_symb_from_ref: = 1)
then 0
else if (ri_orient_new_symb_from_ref: = 2)
then 90
else if (ri_orient_new_symb_from_ref: = 3)
then 180
else 270;
#Den X Basisvector bestimmen (absolut oder den des Referenz Symbols)
(Vector Modifiable) ri_X_base_vec_for_rot:
if (!ri_pick_point_mode?: & ri_ref_symb_mode?
then ri_ref_symb_X_vector:
else vector(1,0,0);
#Den Y Basisvector bestimmen (absolut oder den des Referenz Symbols)
(Vector Modifiable) ri_Y_base_vec_for_rot:
if (!ri_pick_point_mode?: & ri_ref_symb_mode?
then ri_ref_symb_Y_vector:
else vector(0,1,0);
#den X Vector des neuen Symbols berechnen
(Vector Modifiable) ri_X_vec_new_symb: RotateVector(ri_X_base_vec_for_rot:,ri_rot_angle:,vector(0,0,1));
#den Y Vector des neuen Symbols berechnen
(Vector Modifiable) ri_Y_vec_new_symb: RotateVector(ri_Y_base_vec_for_rot:,ri_rot_angle:,vector(0,0,1));
#**********************************************************
# Symbole hinzufuegen
#
#
#**********************************************************
#UG Part Name zusammenstellen fuer ug_component()
(String Modifiable Parameter) ri_new_symb_ug_file_name: "O:\appl_user\site\chwi\ugs\ugnx3\VSP\SYMB_LIB\" + RI_NEW_SYMBOL: + ".prt";
#Komponente einbinden
(Child) ri_inst_X: {
Class, ug_component;
File_Name, ri_new_symb_ug_file_name:;
Reference_Set_Name, "WORK";
Layer, -1;
Color, 0;
Origin, ri_pos_new_symb:;
X_Axis, ri_X_vec_new_symb:;
Y_Axis, ri_Y_vec_new_symb:;
};
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP