Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  ShellLoft mit Skript erzeugen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  ShellLoft mit Skript erzeugen (1839 mal gelesen)
Chrichri
Mitglied
Student


Sehen Sie sich das Profil von Chrichri an!   Senden Sie eine Private Message an Chrichri  Schreiben Sie einen Gästebucheintrag für Chrichri

Beiträge: 14
Registriert: 27.02.2009

Windows XP
Catia V5 R18
Abaqus 6.7

erstellt am: 26. Mrz. 2009 18:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo !

Bin grade dabei ein Skript zu schreiben welches mir Koordinaten von ca. 1000 Punkten aus einer CSV Datei einliesst, daraus DatumPoints erstellt, diese mit WirePolyLines verbindet und in einem dritten Schritt soll daraus ein ShellLoft generiert werden. Bis auf den letzten Schritt hat auch alles geklappt.

Mein konkretes Problem: Der Befehl lautet mdb.modellname.partname.ShellLoft(loftsections) und ich weiß nicht in welcher Form die loftsections übergeben werden müssen, die Sections sind in meinem Fall die WirePolyLines.

So hab ichs versucht und so hats nicht geklappt:

section1 = mdb.modellname.partname.WirePolyLine((die Punkte der Linie 1))
section2 = mdb.modellname.partname.WirePolyLine((die Punkte der Linie 2))
mdb.modellname.partname.ShellLoft((section1, section2))

Weiß jemand wo der Fehler liegt bzw. wie mans richtig macht ?

Merci !

Viele Grüsse
Christoph

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten1983
Mitglied
Doktorand


Sehen Sie sich das Profil von carsten1983 an!   Senden Sie eine Private Message an carsten1983  Schreiben Sie einen Gästebucheintrag für carsten1983

Beiträge: 125
Registriert: 11.10.2007

erstellt am: 27. Mrz. 2009 08:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chrichri 10 Unities + Antwort hilfreich

Was ist denn die Fehlermeldung? Geht es Methodisch nicht, oder wird nur der (formell richtige) Input moniert?

Laut Hilfe sollte hier eine 'Sequence of Sequences of Edges' rein und keine Punkte.

Code:
sec1=mdb.model['Model-1'].parts['Part-1'].edges[0:3]
sec2=mdb.model['Model-1'].parts['Part-1'].edges[3:5]
Seq_of_seq=(sec1,sec2)
mdb.model['Model-1'].parts['Part-1'].ShellLoft(loftsections=a)


Das wirft bei mir die Meldung aus, dass die Lofterzeugung failed (weil meine Edges nicht den Anforderungen entsprechen). Aber so geht es scheinbar.
In deiner Definition von sec1,sec2 steht da:
Code:
type(sec1)=feature
Dort sollte aber wie gesagt eine Sequence of Edges sein.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chrichri
Mitglied
Student


Sehen Sie sich das Profil von Chrichri an!   Senden Sie eine Private Message an Chrichri  Schreiben Sie einen Gästebucheintrag für Chrichri

Beiträge: 14
Registriert: 27.02.2009

Windows XP
Catia V5 R18
Abaqus 6.7

erstellt am: 30. Mrz. 2009 08:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Carsten !

In den nächsten Tagen kann ich die genaue Fehlermeldung noch posten.

Über die GUI kann ich mit den PolyWireLines die ShellLoft erzeugen, von daher wunderts mich dass es über das Skript nicht geht. Ich hab leider nirgendwo in der Hilfe gefunden was für Abaqus genau ein "edge" ist. Gibts vielleicht einen Befehl der meine PolyWireLines in eine Sequence of edges umwandelt ? ( Sowas wie bei Zahlen von Integer nach Float ? )

Gruss
Chris

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten1983
Mitglied
Doktorand


Sehen Sie sich das Profil von carsten1983 an!   Senden Sie eine Private Message an carsten1983  Schreiben Sie einen Gästebucheintrag für carsten1983

Beiträge: 125
Registriert: 11.10.2007

erstellt am: 30. Mrz. 2009 09:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chrichri 10 Unities + Antwort hilfreich

Du könntest dir mithilfe der Punkte doch die edges mit
Code:

edgePunkt=(Punkt2-Punkt1)/2.0
mdb.model['Model-1'].parts['Part-1'].edges.findAt(edgePunkt)

alle Edges raussuchen und dir damit selbst eine solche Liste der Edges zusammenbasteln.

Edit: Punkt1 und Punkt2 sind jeweils die Punkte einer Edge. Die kennst du ja, oder?

[Diese Nachricht wurde von carsten1983 am 30. Mrz. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Chrichri
Mitglied
Student


Sehen Sie sich das Profil von Chrichri an!   Senden Sie eine Private Message an Chrichri  Schreiben Sie einen Gästebucheintrag für Chrichri

Beiträge: 14
Registriert: 27.02.2009

Windows XP
Catia V5 R18
Abaqus 6.7

erstellt am: 31. Mrz. 2009 17:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

So, ich hab jetzt ne Lösung gefunden wie funktioniert:

Code:

# Skript initialisieren

from abaqus import *
import part

# Beispiel Punkte

a = (0,0,0)
b = (0,5,0)
c = (0,10,0)
d = (5,0,0)
e = (5,5,0)
f = (5,10,0)

print a,b,c,d,e,f


mdb.Model(name='Test')

# Parts erstellen

mdb.models['Test'].Part(name='Teil')
p1 = mdb.models['Test'].parts['Teil']

# Linien erzeugen

p1.WirePolyLine((a,b,c))
p1.WirePolyLine((d,e,f))

# WirePolyLines in Edges umwandeln, schaut nicht grade schön aus, hab aber keine andere Lösung gefunden

edge1 = p1.edges.findAt(((a[0]+b[0])/2.0,(a[1]+b[1])/2.0,(a[2]+b[2])/2.0))
edge2 = p1.edges.findAt(((b[0]+c[0])/2.0,(b[1]+c[1])/2.0,(b[2]+c[2])/2.0))
edge3 = p1.edges.findAt(((d[0]+e[0])/2.0,(d[1]+e[1])/2.0,(d[2]+e[2])/2.0))
edge4 = p1.edges.findAt(((e[0]+f[0])/2.0,(e[1]+f[1])/2.0,(e[2]+f[2])/2.0))

# Die Fläche erzeugen

p1.ShellLoft(((edge1,edge2),(edge3,edge4)))

# Es funktioniert leider nicht die Teile der Fläche einzeln zu erzeugen, also
# p1.ShellLoft(((edge1),(edge3)))
# p1.ShellLoft(((edge2),(edge4)))
# hat bei mir die Fehlermeldung "Loft feature section definition is invalid" hervorgerufen


Mein Fehler lag bei der Übergabe der Edges an die ShellLoft Funktion, die .edges.findAt(coordinates) schein die einzige Funktion mit einem edge object als Rückgabewert.

Edit: Es ist wichtig 2.0 zu schreiben, damit als Ausgabewert der Division ein Float und kein Integer ausgegeben wird.

Vielen Dank für die Hilfe !

Gruss Chrichri

[Diese Nachricht wurde von Chrichri am 31. Mrz. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dabauer82
Mitglied



Sehen Sie sich das Profil von dabauer82 an!   Senden Sie eine Private Message an dabauer82  Schreiben Sie einen Gästebucheintrag für dabauer82

Beiträge: 121
Registriert: 22.11.2007

Pro/E WiFi3 M050
Win 7
ABQ 6-14

erstellt am: 16. Jun. 2011 13:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Chrichri 10 Unities + Antwort hilfreich

Ich habe es ohne diese Umrechnung nur über p1.edges gemacht:

Code:

e1 = Punktewolke.edges
Punktewolke.ShellLoft(loftsections=((e1[1], ), (e1[2], ), (e1[0], ), (e1[3], )), startCondition=NONE,endCondition=NONE)

Punktewolke enthält dabei Splines die per WireSpline erzeugt wurden...

Grüße,
dabauer

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz