! Dieses Macro erstellt eine Federverbindung zwischen zwei Ebenen um damit einen ! Antrieb oder eine Linearführung zu modellieren. ! Es müssen zwei Flächen FL1 und FL2 (als Komponente) definiert sein. ! Da die Fläche der Führungsschiene deutlich größer sein kann als die des ! Führungsschuhs ist der Programmcode derart aufgebaut, dass über die Größe der Fläche FL1 die entsprechenden Knoten auf der Fläche FL2 gesucht. ! Die Modellierten Federn entsprechen automatisch der axialen der Zug-Druck und der tangential Richtung ! Beispiel: Zur Modellierung einer Linearführung wird die Fläche der Schiene ! und die Fläche des Führungsschuhs ausgewählt und benannt. ! Die Schiene ist deutlich länger als der Führungsschuh. Daher wird zunächst die ! Fläche auf der Schiene bestimmt, die dem Führungsschuh gegenüber liegt (FL2_g_FL1). ! Danach werden genau in der Mitte der beiden Flächen zwei Knoten erzeugt auf die ! zwei Massenelemente gesetzt werden. Der eine der Knoten wird fest mit den Knoten ! auf der Fläche FL1 verbunden und der andere Knoten mit den Knoten der Fläche FL2_g_FL1 ( Befehl: cerig) ! Danach werden die beiden Knoten mit 6 Federn verbunden. Dadurch ist die Linearführung fertig ! modelliert. ! WICHTIG: Die Modellierung funktioniert nur wenn die beiden Flächen sich prallel gegenüber ! liegen und die normalen in eine Hauptrichtung des Koordinantensystems liegen. ! Ist dies nicht der Fall, also liegt die zzu modellierende Verbindung schräg im Raum ! Funktioniert dieser Algorithmus nicht. ! Weitere Vorraussetzung ist, das der Führungsschuh länger als breit ist. Dies ist eingelich immer ! Der Fall. Dies wird benötigt um herauszubekommen, welche Richtung der Axial und welceh der ! Tangentialrichtung der Führung entspricht um die entsprechenden Steifigkeiswerte automatisch ! einzusetzen. /PREP7 ! Bestimmen der letzten Knoten- und Elementnummer *get,enum,ELEM,0,num,max ! Enum wird auch für die Definition der Elemente verwendet, da immer mehr oder gleichviel Elemente wie Elementtypen vorhanden sind *get,nnum,Node,0,num,max ! Erhöhen der Nummern um 1 um neue Knoten und Elemente später erzeugen zu können. enum=enum+1 nnum=nnum+1 !Selektieren der Fläche 1 cmsel,s,arg1,node !Bestimmen der Abmaße dx dy dz der Fläche ( Es Müssen alle 3 Abmaße gebildet werden,da an dieser Stelle noch nciht klar in welcher !Ebene die Fläche sich befindet *get,_xmin_FL1,node,,mnloc,x *get,_ymin_FL1,node,,mnloc,y *get,_zmin_FL1,node,,mnloc,z *get,_xmax_FL1,node,,mxloc,x *get,_ymax_FL1,node,,mxloc,y *get,_zmax_FL1,node,,mxloc,z x_FL1=_xmin_FL1+(_xmax_FL1-_xmin_FL1)/2 y_FL1=_ymin_FL1+(_ymax_FL1-_ymin_FL1)/2 z_FL1=_zmin_FL1+(_zmax_FL1-_zmin_FL1)/2 !Ermitteln der Koordinaten des kleinsten Knotens (Dies wird später gebraucht. Das es aber die kleinste Knotennummer ist, ist unwichtig, !da einfach nur die Koordinaten eines Knotens auf der Fläche FL1 gebraucht werden) *get,n_FL1_min,node,,num,min *get,x_n_FL1_min,node,n_FL1_min,loc,x *get,y_n_FL1_min,node,n_FL1_min,loc,y *get,z_n_FL1_min,node,n_FL1_min,loc,z allsel !Selektieren der Fläche2 !Wieder bestimmen der Abmaße und der Koordianaten eines Knotens auf der Fläche FL2 cmsel,s,arg2,node *get,_xmin_FL2,node,,mnloc,x *get,_ymin_FL2,node,,mnloc,y *get,_zmin_FL2,node,,mnloc,z *get,_xmax_FL2,node,,mxloc,x *get,_ymax_FL2,node,,mxloc,y *get,_zmax_FL2,node,,mxloc,z *get,n_FL2_min,node,,num,min *get,x_n_FL2_min,node,n_FL2_min,loc,x *get,y_n_FL2_min,node,n_FL2_min,loc,y *get,z_n_FL2_min,node,n_FL2_min,loc,z ! Ermitteln des Abstands sowie welche Richtung die ! axiale, radiale und vertikale Richtung ist !BEMERKUNG: !Es wird heirbei untersucht, welche der Abmaße di_max - di_min gleich 0 ist und welche Richtung der Länge und !welche Richtung der Höhe entspricht. !Beispiel: Wenn die kleinte und größte X-Koordinaten voneinander abgezogen (dx_max-dx_min) der Fläche1 = 0 ist, !dann ist die normale und somit die Zug-Druck-Richtung die X-Richtung. Dann wird über die X-Koordinate eines Punkts auf Fläche2 minus die !X-Koordinate eines Punkts auf Fläche1 der Abstand der Flächen bestimmt. !Danach wird untersucht ob dy_max-dy_min der Fläche 1 größer als dz_max-dz_min der Fläche 1 ist. Dadurch wird ermittelt welches die Axiale Richtung und welches !die Tangential-Richtung der Führung ist. !In den folgenden Abfragen ist Lkx,Lky,Lkz die Koordinate des zu finden Koppelpunkts zwischen den beiden Flächen. ! ax=axial,rad=tangential,=zd=zugdruck,trans = translatorisch, rot = rotatorisch, k = steifikeit, dir = Richtung ! Beispiel: k_zd_trans=1 bei der ersten Abfrage bedeutet das für diesen Parameter 1 festgelegt wird, da später bei der Erzeugung des ! Elements combine14 (Federelement) die 1 der 'x' -Richtung entspricht. allsel *if,_xmax_FL1-_xmin_FL1,eq,0,then LKx=(x_n_FL1_min+x_n_FL2_min)/2 LKy=y_FL1 LKz=z_FL1 k_zd_dir='x' k_zd_trans=1 k_zd_rot=4 *if,_ymax_FL1-_ymin_FL1,ge,_zmax_FL1-_zmin_FL1,then k_ax_dir='y' k_rad_dir='z' k_ax_trans=2 k_rad_trans=3 k_ax_rot=5 k_rad_rot=6 k_ax_max=_ymax_FL1 k_ax_min=_ymin_FL1 k_rad_max=_zmax_FL1 k_rad_min=_zmin_FL1 *else, then k_ax_dir='z' k_rad_dir='y' k_ax_trans=3 k_rad_trans=2 k_ax_rot=6 k_rad_rot=5 k_ax_max=_zmax_FL1 k_ax_min=_zmin_FL1 k_rad_max=_ymax_FL1 k_rad_min=_ymin_FL1 *endif *elseif,_ymax_FL1-_ymin_FL1,eq,0,then LKx=x_FL1 LKy=(y_n_FL1_min+y_n_FL2_min)/2 LKz=z_FL1 k_zd_dir='y' k_zd_trans=2 k_zd_rot=5 *if,_xmax_FL1-_xmin_FL1,ge,_zmax_FL1-_zmin_FL1,then k_ax_dir='x' k_rad_dir='z' k_ax_trans=1 k_rad_trans=3 k_ax_rot=4 k_rad_rot=6 k_ax_max=_xmax_FL1 k_ax_min=_xmin_FL1 k_rad_max=_zmax_FL1 k_rad_min=_zmin_FL1 *else, then k_ax_dir='z' k_rad_dir='x' k_ax_trans=3 k_rad_trans=1 k_ax_rot=6 k_rad_rot=4 k_ax_max=_zmax_FL1 k_ax_min=_zmin_FL1 k_rad_max=_xmax_FL1 k_rad_min=_xmin_FL1 *endif *else,then LKx=x_FL1 LKy=y_FL1 LKz=(z_n_FL1_min+z_n_FL2_min)/2 k_zd_dir='z' k_zd_trans=3 k_zd_rot=6 *if,_xmax_FL1-_xmin_FL1,ge,_ymax_FL1-_ymin_FL1,then k_ax_dir='x' k_rad_dir='y' k_ax_trans=1 k_rad_trans=2 k_ax_rot=4 k_rad_rot=5 k_ax_max=_xmax_FL1 k_ax_min=_xmin_FL1 k_rad_max=_ymax_FL1 k_rad_min=_ymin_FL1 *else, then k_ax_dir='y' k_rad_dir='x' k_ax_trans=2 k_rad_trans=1 k_ax_rot=5 k_rad_rot=4 k_ax_max=_ymax_FL1 k_ax_min=_ymin_FL1 k_rad_max=_xmax_FL1 k_rad_min=_xmin_FL1 *endif *endif !Bestimmen der Knoten auf Fläche 2 welche gegenüber der Fläche 1 liegen und zur Modellierung der Führung bzw. Antrieb !verwendet werden soll cmsel,s,arg2,node nsel,r,loc,k_ax_dir,k_ax_max,k_ax_min nsel,r,loc,k_rad_dir,k_rad_max,k_rad_min cm,FL2_g_FL1,node !------START Bestimmung der Elemente------------------------------------------------- ! zur Elementwahl: ! ! mass21 - fuer die Masterknoten, besitzt alle 6 Freiheitgrade, die fuer den spaeter angewendeten CERIG-Befehl ! benoetigt werden ! combin14 - zur Kopplung zweier Knoten, Beaufschlagung mit einer Federsteifigkeit !----- Masterknoten ---------------------------------------- ET,enum,MASS21,,,0 !Definition Element-Typ 200: mass21 R,enum,.000001 !Elementmasse: 0.001kg -> Masse vernachlässigbar !----- Fuehrungslaengsruichtung (x-Richtung) --------------- ET,enum+1,combin14,,k_ax_trans !Definition Element-Typ 201: combin14, Ausrichtung an x-Achse R,enum+1,arg3 !Lagersteifigkeit: 1N/mm -> vernachlaessigbare Steifigkeit !----- Quer zur Fuehrungslaengsruichtung (y-Richtung) ------ ET,enum+2,combin14,,k_rad_trans !Definition Element-Typ 202: combin14, Ausrichtung an y-Achse R,enum+2,arg4 !Lagersteifigkeit: 583000N/mm !----- Zug-/Druck (z-Richtung) ----------------------------- ET,enum+3,combin14,,k_zd_trans !Definition Element-Typ 203: combin14, Ausrichtung an z-Achse R,enum+3,arg5 !Lagersteifigkeit: 670000N/mm !----- Rotation um Länsachse (Rot.x-Achse) ----------------- ET,enum+4,combin14,,k_ax_rot !Definition Element-Typ 204: combin14, Rotation um die x-Achse R,enum+4,arg6 !Verdrehsteifigkeit: 500000 Nm/rad !----- Rotation um Querachse (Rot.y-Achse) ------------- ET,enum+5,combin14,,k_rad_rot !Definition Element-Typ 205: combin14, Rotation um die x-Achse R,enum+5,arg7 !Verdrehsteifigkeit: 580000 Nm/rad !----- Rotation um vertikalachse (Rot.z-Achse) ------------- ET,enum+6,combin14,,k_zd_rot !Definition Element-Typ 206: combin14, Rotation um die z-Achse R,enum+6,arg8 !Verdrehsteifigkeit: 650000 Nm/rad !-----------FERTIG BESTIMMUNG DER ELEMENTE--------------------------------------------- !--------------Erstellen des Koppelknotens am Führungsschuh --------- n,nnum,LKx,LKY,LKz !Definition des Masselements zu Kopplung (Knotennummer=LocalesKoordinatensys + Zahl) TYPE,enum REAL,enum E,nnum CMSEL,s,arg1,node !Selektieren der Slaveknoten und des Masterknotens NSEL,a,node,,nnum CERIG,nnum,all,uxyz !Erstellung des Constraints (starre Verbindung zwischen Master- und Slaveknoten) alls !--------------Erstellen des Koppelknotens an Führungsschiene --------- nnum2=nnum+1 n,nnum2,LKx,LKY,LKz !Definition des Masselements zu Kopplung (Knotennummer=LocalesKoordinatensys + Zahl) TYPE,enum REAL,enum E,nnum2 CMSEL,s,FL2_g_FL1,node !Selektieren der Slaveknoten und des Masterknotens NSEL,a,node,,nnum2 CERIG,nnum2,all,uxyz !Erstellung des Constraints (starre Verbindung zwischen Master- und Slaveknoten) alls !---------------------------------------------------------------- ! Erstellen der Federn zwischen den Masterknoten, obere Fuehrung !---------------------------------------------------------------- !----- translatorische Steifigkeiten -------- TYPE,enum+1 REAL,enum+1 E,nnum,nnum2 TYPE,enum+2 REAL,enum+2 E,nnum,nnum2 TYPE,enum+3 REAL,enum+3 E,nnum,nnum2 !----- rotatorische Steifigkeiten ----------- TYPE,enum+4 REAL,enum+4 E,nnum,nnum2 TYPE,enum+5 REAL,enum+5 E,nnum,nnum2 TYPE,enum+6 REAL,enum+6 E,nnum,nnum2 alls /SOLUTION