| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Ansys | | | |  | Entwicklungsingenieurin trifft KI-Experten, eine Pressemitteilung
|
|
Autor
|
Thema: mit Ansys Classics aus Matrix einen 2D Körper generieren (2558 mal gelesen)
|
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 06. Mrz. 2009 11:58 <-- editieren / zitieren --> Unities abgeben:         
Hi Leute, Hab mal wieder eine Frage. Ich hab eine 100x100 Matrix in Matlab. Sie besteht aus lauter 1'en und 0'en (1=Material, 0=Luft). Nun möchte ich mit Ansys diesen Körper rekonstruieren. Meine Idee ist, für jeden Punkt ein Quadrat zu generieren. Wo ich mir nicht sicher bin ist, wie ich diese Quadrat zu dimensionieren habe. Ist der Abstand zwischen den Punkten immer automatisch eins? Dann müsste ich also lauter 0.5*0.5 Quadrate generieren? Bin dankbar für jede Hilfe. Gruss Hanor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tortsen222 Mitglied
 
 Beiträge: 499 Registriert: 01.12.2004
|
erstellt am: 06. Mrz. 2009 13:02 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Du könntest den Spalten/Reihenindex nutzen um Dir Punkte zu erstellen. Ungefähr so: IF Wert in (N=1,m=1) = 1 THEN punkt erzeugen Damit hättest Du dann die Mittelpunkte in ANSYS und könntest die Quadrate generieren. Es müsste sogar gehen anstatt der Erzeugung der Mittelpunkte, die WP an die gewünschte Position zu Verschieben und das Quadrat in Bezug zur WP zu erstellen.
------------------ Grüsse, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 09. Mrz. 2009 16:40 <-- editieren / zitieren --> Unities abgeben:         
Hi Torsten, Erstmals danke für deine Antwort. Hab mal gegooglet und hier im Forum bisschen nachgeschaut und bin auch ein bisschen schlauer als vorher, hab jedoch immer noch Probleme mit der Programmiersprache. Da ich völliger Anfänger in Sachen Ansys bin hab ich da noch ein paar Fragen. Zuerst einmal möchte ich eine 100x100 Matrix einlesen. Hab die einfach in einem Textfile abgespeichert. Hier schon das erste Problem. Wie lese ich die Daten ein? Bin mit dem Hilfemenu nicht zurecht gekommen. So wie ich das sehe kann ich das mit *VREAD machen. Hab mir das so vogestellt. Ich möchte das ganze aus einem Textfile in ANSYS einlesen. Bin folgendermassen vorgegangen: -Neues Textfile erstellt -Kommandos zum einlesen: *DIM,A,,100,100 *VREAD,A(1,1),matrix,,,IJK,100,100 !matrix.txt beinhaltet die Matrix. Im gleichen Ordner wie die Einlesedatei abgespeichert. Muss ich hier den ganzen Pfad angeben, weil kommt ne Fehlermeldung: *VREAD cannot open file matrix.
Falls ich nun diese Matrix einlesen KÖNNTE , möchte ich jeden Eintrag der Matrix abfragen, und falls er einen bestimmten Wert hat, sollte mir dort ein Punkt generiert werden. Ich verstehe aber nicht genau wie ich das hinkriegen kann. Also Eintrag überprüfen sollte doch so möglich sein: IF, "VAL1", EQ, 1, THEN .... Hier hab ich 2 Probleme: -"VAL1" sind ja die Einträge die er zu überprüfen hat. Hier einfach meine oben definierte Matrix "A" reinschreiben? Begreift dann ANSYS dass es jeden Eintrag dieser Matrix überprüfen muss? -was kommt nach THEN? Soll mir ja nun einen Punkt für Einträge =1 generieren. Hab ja hier 2 Laufvariablen in der Schlaufe (einmal für x und einmal für y). Also dann müsste der Befehl irgendwie so aussehen (für z nehme ich einfach 0): k,,i,j,0 Wie oder wo muss ich die Laufvariablen definieren? Falls ich nun auch diese Punkte generiert hätte. Könnte ich dann mit dem Befehl: BLC5, XCENTER, YCENTER, WIDTH, HEIGHT, DEPTH die Blöcke generieren. Für das XCENTER und YCENTER möchte ich ja dann die jeweiligen Koordinaten der Punkte die ich habe. Wie müsste ich denn das schreiben? Freu mich über jede Hilfe. Gruss Hanor
[Diese Nachricht wurde von hanor am 09. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wosch Ehrenmitglied V.I.P. h.c. Elektrotechniker im Ruhestand
     
 Beiträge: 2607 Registriert: 16.12.2004 Rechne zuerst ein Problem nach, für das Du eine analytische Lösung kennst.
|
erstellt am: 09. Mrz. 2009 19:48 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Wenn man mit MATLAB besser als mit ANSYS umgehen kann, wäre es doch sinnvoller, die Datei ansys-gerecht in MATLAB aufzubereiten. Dabei ergeben sich die Fragen: - eine 100*100-Matrix ergibt doch keinen Körper, sondern eine Fläche? - was soll das für eine Fläche werden, wenn die Werte nur 0 oder 1 sind? - was soll dann in ANSYS damit gemacht werden? Ein Punkt (sowohl Keypoint als auch Knoten) wird durch drei Koordinaten beschrieben. Woher kommen die? ------------------ Viel Erfolg wünscht Wolfgang Schätzing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 09. Mrz. 2009 23:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo Wolfgang. Ich muss schlussendlich einen Gasfluss durch ein poröses Medium simulieren. Bei dem porösen Medium handelt es sich um die Anode einer Brennstoffzelle. Mittels Tomografie wurden 100 Querschnittbilder dieses Mediums erstellt und mit Hilfe von Matlab weiterverarbeitet. Dabei wurde jeder Querschnitt in 100x100 Pixel aufgeteilt und jedem Pixel der das Material (schwarz) repräsentiert den Wert 1 und für Luft (weiss) den Wert 0 zugeschrieben. Zuletzt möchte ich das 3D Modell (ganzer Würfel) und das 2D Modell (nur eine Querschnittsfläche) simulieren. Nun suche ich eine Möglichkeit mein oben genanntes Problem lösen oder besser gesagt meine oben genannte Idee, welche ich denke das sie machbar ist, verwirklichen kann. Gruss Hanor
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tortsen222 Mitglied
 
 Beiträge: 499 Registriert: 01.12.2004
|
erstellt am: 10. Mrz. 2009 10:40 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Hallo: 1. Einlesen der Matrix --> siehe Anhang (Matrix ist 3x3) 2. Die Abfrage IF, "VAL1", EQ, 1, THEN Das musst Du in einer geschachtelten Schleife machen. Ungefähr so: *do,i,1,100 *do,j,1,100 param=array(i,j) !* param ist eine Hilfsvariable if, param,eq,1,then k,0,i,j,0 !* Keypoints, Koordinaten: i,j,0 else *enddo *enddo 3. Die Laufvariablen muss man nicht definieren, dass wird automatisch am Schleifenbeginn gemacht. 4. Ich würde Dir empfehlen anstatt deer Keypoint Erzeugung die Arbeitsfläche an die gewünschten Positionen zu verschieben (wenn eine 1 in Deiner Matrix vorliegt). Das machst Di mit dem Befehl: WPLANE Danach kannst Du dann einfach eine Fläche im Ursprung der Arbeitsfläche erstellen mit BLC5 Ungefähr so: *do,i,1,100 *do,j,1,100 param=array(i,j) !* param ist eine Hilfsvariable if, param,eq,1,then WPLANE,,i,j,0,1,0,0,0,1,0 !* Verschiebt WP an die Koordinaten i,j,Z=0, die Vektoren 1,0,0 und 0,1,0 definieren die Ebene BLC5,0,0,1,1 !* Erzuegt fläche (1x1) else *enddo *enddo ------------------ Grüsse, Torsten
[Diese Nachricht wurde von Tortsen222 am 10. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 10. Mrz. 2009 11:29 <-- editieren / zitieren --> Unities abgeben:         
Hi Torsten, Danke für deine ausführliche Erklärung. Ich kann anhand deinem Beispiel nachvollziehen, wie die Programmiersprache aufgebaut ist, hab aber immer noch ein Problem. Wenn ich meine Matrix einlesen will mit: ! Array bilden, 100x100 Werte *DIM,tt,ARRAY,100,100 ! Datei "matrix_test.txt" auslesen und in Array schreiben *VREAD,tt,matrix_test,txt,,JIK,100,100,, (E15.8,E15.8,E15.8) Kommt die Fehlermeldung: *VREAD cannot open file matrix_test.txt Keine Ahnung an was das liegt. Ich muss ja den Pfad nicht angeben, wenn ich matrix_test.txt im gleichen Ordner habe wie mein Einlesetextfile, oder? Was sollen eigentlich die Zahlen (E15.8,E15.8,E15.8)? Muss dann nicht noch irgendwo in der *DO schleife vor der Knotenbildung oder in deinem 2.Bsp vor der Flächenbildung ein /prep7 stehen? Danke nochmals für deine tatkräftige Unterstützung. Gruss Hanor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
arnd13 Mitglied Dipl. Ing.
  
 Beiträge: 735 Registriert: 05.11.2008
|
erstellt am: 10. Mrz. 2009 13:04 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Dein Einlesetextfile muss entweder in Deinem Arbeitsverzeichnis liegen, oder Du mußt einen Pfad mitangeben. Mit /inqu,ist_,exist,matrix_test,txt !Fragt, ob es das file matrix_test.txt gibt *if,ist_,eq,1,then *msg,ui !Gibt eine Nachricht auf dem Bildschirma aus File matrix_test.txt vorhanden *else *msg,ui Achtung: File matrix_test.txt nicht vorhanden! *endif kannst Du feststellen, ob Dein Einlesefile überhaupt gefunden wird. (E15.8,E15.8,E15.8) gibt die Formate der Spalten in dem Einlesefile an. In diesem Fall 3 Spalten (...,...,...), in jeder Spalte eine Zahl im wissenschaftlichem Format (e, möglich wären z.B. auch i - integer, f - floating usw) mit insgesamt 15 Stellen, wovon 8 Stellen nach dem Komma sind.
Kleine Hilfe: !#####!Formatangaben der Spalten!######## !############################################## !Formate: (n_f_s_.k_) !n_:Anzahl gleicher Spalten wie dieser !f_:f für float, i für integer usw. !s_:Anzahl der Stellen insgesamt !k_:Zahl der Nachkommastellen !Beispiel: | 305.23 45.12345 76.12351 !Formatangabe: (f11.3,2f14.5) !#################################################################### An den Formatangaben verzweifelt (fast) jeder. Am besten ausprobieren, wenn Du sicher bist, dass Deine Datei gefunden wird. Gruß, A. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tortsen222 Mitglied
 
 Beiträge: 499 Registriert: 01.12.2004
|
erstellt am: 10. Mrz. 2009 13:45 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Zitat: Original erstellt von hanor: Hi Torsten,Danke für deine ausführliche Erklärung. Ich kann anhand deinem Beispiel nachvollziehen, wie die Programmiersprache aufgebaut ist, hab aber immer noch ein Problem. Wenn ich meine Matrix einlesen will mit: ! Array bilden, 100x100 Werte *DIM,tt,ARRAY,100,100 ! Datei "matrix_test.txt" auslesen und in Array schreiben *VREAD,tt,matrix_test,txt,,JIK,100,100,, (E15.8,E15.8,E15.8) Kommt die Fehlermeldung: *VREAD cannot open file matrix_test.txt Keine Ahnung an was das liegt. Ich muss ja den Pfad nicht angeben, wenn ich matrix_test.txt im gleichen Ordner habe wie mein Einlesetextfile, oder? Was sollen eigentlich die Zahlen (E15.8,E15.8,E15.8)? Muss dann nicht noch irgendwo in der *DO schleife vor der Knotenbildung oder in deinem 2.Bsp vor der Flächenbildung ein /prep7 stehen? Danke nochmals für deine tatkräftige Unterstützung. Gruss Hanor
Das einfachste ist, alle Dateien (Einlesefile, die Matrix usw.) im Arbeitsverzeichiss zu hinterlegen, dann brauchst Du keinen Verzeichnisspfad an zu geben. Natürlich muss irgendwo im Programmcode /prep7 stehen (vor der Schleife), dieses Grundwissen habe ich allerdings vorausgesetzt. Die ANSYS Hilfe ist eine der Besten mit der ich je zu tun hatte, werf mal einen Blick rein! (APDL Programmer's Guide)
------------------ Grüsse, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 10. Mrz. 2009 14:44 <-- editieren / zitieren --> Unities abgeben:         
Danke für eure Antworten. Hab nun noch ein Problem. Und zwar macht es mir auch für Einträge ungleich 1 ein Quadrat, was bedeutet ,dass wohl die else Schlaufe nicht funktionert oder dass dort noch ein Befehl fehlt. Zudem wird das WB verdreht und die Quadrate dementsprechend auch verdreht zueinander. Keine Ahnung warum. Mit dem Abspeichern gings. Hab nun folgenden Code: ! Array bilden, 4x4 Werte *DIM,tt,ARRAY,4,4 ! Datei "Datei.txt" auslesen und in Array schreiben. Wobei meine Matrix in Datei.txt nur aus 1'en und 0'en besteht. *VREAD,tt,Datei,txt,,JIK,4,4,, (E15.8,E15.8,E15.8,E15.8) /prep7 *do,i,1,4 *do,j,1,4 param=tt(i,j) !* param ist eine Hilfsvariable if, param,eq,1,then WPLANE,1,i,j,0,1,0,0,0,1,0 !* Verschiebt WP an die Koordinaten i,j,Z=0, die Vektoren 1,0,0 und 0,1,0 definieren die Ebene BLC5,0,0,1,1 !* Erzuegt fläche (1x1) else *enddo *enddo Wenn ichs übrigens mit meiner 100x100Matrix versuche kommt mir ne Fehlermeldung, dass mein Format too long ist. Liegt wahrscheinlich daran, dass ich unter *VREAD dann 100mal E15.8 geschrieben habe. Wie kann ich denn das umgehen? Gruss Hanor [Diese Nachricht wurde von hanor am 10. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tortsen222 Mitglied
 
 Beiträge: 499 Registriert: 01.12.2004
|
erstellt am: 10. Mrz. 2009 15:15 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Hanor, das wird meine letzte Antwort zu diesem Thema sein, Du solltest wirklich mal ein bisschen selbst überlegen. Den Programmcode, den ich Dir gegeben habe, sollte nur als Beispiel dienen, die Befehle habe ich nicht mehr genau im Kopf aber prinzipiell muss das so funktionieren. Das mit den Formaten ist so ne Sache in ANSYS, allerdings sollte es klar sein, dass eine "1" ohne Kommastellen als "Integer" formatiert werden muss, oder?
------------------ Grüsse, Torsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
arnd13 Mitglied Dipl. Ing.
  
 Beiträge: 735 Registriert: 05.11.2008
|
erstellt am: 10. Mrz. 2009 16:23 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Bitte unsere Antworten genau lesen. Aus meiner Antwort vorhin wird klar, dass Du nicht 100mal e15.8 eingeben musst, sondern dass es auch 100e15.8 heißen kann. In Deinem code fehlt for dem if ein *, ebenso vor dem else. Es muss also lauten *if,param,eq,1,then WPLANE,1,i,j,0,1,0,0,0,1,0 BLC5,0,0,1,1 *else Bitte keine Leerzeichen in Deinem code verwenden. ANSYS ist da empfindlich. Und: ALLE BEFEHLE IN DER HILFE NACHSCHLAGEN! DANN WÄRE DIR DAS MIT DEM * SOFORT AUFGEFALLEN!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChristophN Mitglied Berechnungsingenieur
  
 Beiträge: 773 Registriert: 13.12.2008
|
erstellt am: 10. Mrz. 2009 17:31 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Zitat: Original erstellt von hanor: Ich muss schlussendlich einen Gasfluss durch ein poröses Medium simulieren.
Also nochmal zum mitschreiben: du willst eine Strömung durch ein poröses Material simulieren, indem du die "Porösität" mithilfe von Quadraten abbildest? Die haben doch scharfe Kanten, ohne Radius... Meinst du, dass das dann noch etwas mit der Realität zu tun hat? Das ist ja immerhin eine Strömung und die Navier-Stokes-Gleichungen sind doch "sehr" nichtlinear. Da sollte man schon so genau wie möglich versuchen die Realität abzubilden, meinst du nicht? Ich dachte aus einem vorhergehendem Post etwas von einem 3D CAD-Modell gelesen zu haben, funktioniert das denn nicht? Und was soll das 2D-Modell aussagen? Die Strömung und die Geometrie sind doch nunmal sicher dreidimensional, in welcher Weise willst du denn da etwas vereinfachen? Zitat: Original erstellt von Tortsen222: Die ANSYS Hilfe ist eine der Besten mit der ich je zu tun hatte, werf mal einen Blick rein! (APDL Programmer's Guide)
Jawohl, ganz meine Meinung! Dieser Satz sollte vielleicht auch bei beinahe jedem Thema mit dabei stehen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 10. Mrz. 2009 17:34 <-- editieren / zitieren --> Unities abgeben:         
Danke für eure Hilfe, jedoch hab ich immer noch die 2 Probleme. - Verdrehung der Quadrate - kein Unterschied ob 0 oder 1, es gibt immer ein Quadrat. @arnd13: Glaube nicht dass das vom * abhängt. Wenn ich das nämlich schreib, geschieht gar nichts mehr. Gruss Hanor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
arnd13 Mitglied Dipl. Ing.
  
 Beiträge: 735 Registriert: 05.11.2008
|
erstellt am: 10. Mrz. 2009 17:55 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Der * gehört auf jeden Fall zum if. Wenn nichts mehr geschieht hast Du vielleicht keine Einsen in Deinem array. Einfach mal angucken mit *vedit,... Zur Verdrehung: Untersuche noch mal Dein WPLAN-command! Deine x-Achse zeigt immer auf den Punkt 1,0,0 im globalen KS. Wenn die WP weiterrückt, ist der Zeiger meiner Meinung nach doch nicht mehr parallel zur globalen x-Achse. -> Ausprobieren, Hilfe studieren! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tortsen222 Mitglied
 
 Beiträge: 499 Registriert: 01.12.2004
|
erstellt am: 10. Mrz. 2009 18:04 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
|
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 10. Mrz. 2009 18:33 <-- editieren / zitieren --> Unities abgeben:         
Danke an alle die mir hier weitergeholfen haben. Hätte nur noch eine Frage bzgl. dem Einlesen. Das klappt bei mir noch nicht ganz. Mein Code lautet nun: ! Datei "Datei.txt" auslesen und in Array schreiben *VREAD,tt,Datei,txt,,IJK,4,4,, (4D1.0) In meiner Datei.txt ist folgende Matrix: 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 Wenn ich aber über *Vedit,tt die Matrix betrachte kommt da: 1 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 An was könnte das liegen? Den Eintrag IJK beim *VREAD begreif ich nicht so ganz (auch nachdem ich die HELP Funktion genutzt habe ) Kann ich mit diesem Eintrag sagen, ob zuerst die Zeile oder zuerst die Spalte eingelesen werden soll? Ist dann I=Zeile und J=Spalte oder wie? Gruss Hanor
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
arnd13 Mitglied Dipl. Ing.
  
 Beiträge: 735 Registriert: 05.11.2008
|
erstellt am: 10. Mrz. 2009 18:36 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
|
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 10. Mrz. 2009 18:49 <-- editieren / zitieren --> Unities abgeben:         
Jop, hab die Leerzeichen nicht mitgezählt. Hab aber immer noch ein Problem. Sitze jetzt sicher schon 2Stunden dran (ja der Beitrag wurde zwar um 18.49 erstellt, aber ich hab ihn um 23.25 editiert ) und kriegs einfach nicht hin  Mit dem unten aufgeführten Code erscheint mir einfach nur ein einziges Quadrat, obwohl meine Matrix tt sicher mehr als nur eine 1 hat. Hab ich über *vedit,tt auch überprüft. Falls ich die * vor dem if und dem else wegnehme, werden alle 16 Quadrate aufgezeichnet und zwar verdreht. Das heisst, das * wird sicher richtig sein. Nun zur Verdrehung: WPLANE, WN, XORIG, YORIG, ZORIG, XXAX, YXAX, ZXAX, XPLAN, YPLAN, ZPLAN Also stimmt das schon was ich geschrieben habe: XYZorig setzte ich den neuen Nullpunkt meiner Arbeitsfläche, mit XYZxax definiere ich wo meine X-Achse verläuft (glaub die Richtung noch nicht) und mit XYZplan steht in HELP: Global Cartesian coordinates of the third point defining the working plane. This point will also define the location of the positive XY-sector of the working plane coordinate system. XYZplan begreif ich nicht ganz. Ein dritter Punkt der mir meine Arbeitsfläche definiert? Gleichzeitig auch noch die pos. XY-Fläche? ! Array bilden, 4x4 Werte *DIM,tt,ARRAY,4,4 ! Datei "Datei.txt" auslesen und in Array schreiben *VREAD,tt,Datei,txt,,IJK,4,4,, (4D2.0)
/prep7 *do,i,1,4 *do,j,1,4 param=tt(i,j) !* param ist eine Hilfsvariable *if, param,eq,1,then WPLANE,1,i,j,0,1,0,0,0,1,0 !* Verschiebt WP an die Koordinaten i,j,Z=0, die Vektoren 1,0,0 und 0,1,0 definieren die Ebene BLC5,0,0,1,1 !* Erzuegt fläche (1x1) *else *enddo *enddo Hast du hier ne Ahnung an was das liegt? Gruss Hanor [Diese Nachricht wurde von hanor am 10. Mrz. 2009 editiert.] [Diese Nachricht wurde von hanor am 10. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 10. Mrz. 2009 23:28 <-- editieren / zitieren --> Unities abgeben:         
|
wosch Ehrenmitglied V.I.P. h.c. Elektrotechniker im Ruhestand
     
 Beiträge: 2607 Registriert: 16.12.2004 Rechne zuerst ein Problem nach, für das Du eine analytische Lösung kennst.
|
erstellt am: 11. Mrz. 2009 07:18 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
Was gleich auffällt: - das Einlesen funktioniert erst im /prep7 - die *if-Anweisung wird mit *endif abgeschlossen - das Einlesen wird nicht im Direktmodus funktionieren ------------------ Viel Erfolg wünscht Wolfgang Schätzing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wosch Ehrenmitglied V.I.P. h.c. Elektrotechniker im Ruhestand
     
 Beiträge: 2607 Registriert: 16.12.2004 Rechne zuerst ein Problem nach, für das Du eine analytische Lösung kennst.
|
erstellt am: 11. Mrz. 2009 07:52 <-- editieren / zitieren --> Unities abgeben:          Nur für hanor
So funktioniert es: Code: !Datei von hanorfinish $/clear *abbr,hanor,/inp,Einlesen,txt !Generiert Startbutton ! Array bilden, 4x4 Werte *DIM,tt,ARRAY,4,4 /prep7 ! Datei "Datei.txt" auslesen und in Array schreiben *VREAD,tt,Datei,txt,,IJK,4,4,, (4D2.0) !/eof kante=0.02 !Kantenlänge des Quadrats *do,i,1,4 *do,j,1,4 param=tt(i,j) !* param ist eine Hilfsvariable *if,param,eq,1,then rectng,(i-1)*kante,i*kante,(j-1)*kante,j*kante *endif *enddo !j *enddo !i
allerdings nur, wenn in die Eingabezeile von ANSYS die Zeichenkette /inp,Einlesen,txt eingegeben und gestartet wird.------------------ Viel Erfolg wünscht Wolfgang Schätzing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 11. Mrz. 2009 10:39 <-- editieren / zitieren --> Unities abgeben:         
Hi Wolfgang, Danke dir vielmals für dein Hilfe. Denke habs soweit begriffen. Raffinierter Trick mit deinem rectng-Befehl  So kannst du die ganze WPverschiebung umgehen. Gruss Hanor
[Diese Nachricht wurde von hanor am 11. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 11. Mrz. 2009 10:58 <-- editieren / zitieren --> Unities abgeben:         
Noch kurz. Falls ich nun mehrere solche Matrizen habe. Sagen wir 100 100x100Matrizen (3D Körper) Bin mir nicht sicher wie ich das beim Einlesen machen soll: Wie lese ich das ein? Bin ja nun im 3dimenstionalen. Wie kann ich die Matrizen abspeichern? Hab jetzt 100 100x100 Matrizen in Textformat ! Datei "matrix.txt" auslesen und in Array schreiben *VREAD,tt,matrix,txt,,JKI,100,100,100, (100D2.0) ---> was muss ich hier schreiben? Danke schon mal für die Antworten. Gruss Hanor [Diese Nachricht wurde von hanor am 11. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hanor Mitglied Student

 Beiträge: 20 Registriert: 11.02.2009
|
erstellt am: 11. Mrz. 2009 17:22 <-- editieren / zitieren --> Unities abgeben:         
Hey Leute, konnte mein Problem selber lösen. Hab n bisschen gemogelt. Hab einfach alle Matrizen nebeneinander gereit. Dazu hab ich einfach in Matlab ein m.File geschrieben. Danach hab ich mit folgendem Code mein 3D Körper generiert: Nur ein Bsp.Code für 3x3x3 Matrix: finish $/clear *abbr,enzo,/inp,Einlesen,txt !Generiert Startbutton ! Array bilden, 100x100x100 Werte *DIM,tt,ARRAY,3,9, /prep7 ! Datei "matrix.txt" auslesen und in Array schreiben *VREAD,tt,matrix,txt,,IJK,3,9,, (9D2.0) !/eof *do,k,1,3 *do,i,1,3 *do,j,1,3 param=tt(i,j+(k-1)*3) !* param ist eine Hilfsvariable *if,param,eq,1,then WPLANE,,0,0,k-1,1,0,k-1,0,1,k-1 BLC5,i-0.5,j-0.5,1,1,1 *endif *enddo !j *enddo !i *enddo !k Gruss Hanor
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |