Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SIMULIA/ABAQUS
  CoverEdges mit 37.1.36 getFeatureEdges(...)

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:   CoverEdges mit 37.1.36 getFeatureEdges(...) (264 mal gelesen)
Fimbi
Mitglied
Student


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

Beiträge: 29
Registriert: 19.03.2015

Intel Core i7-3610QM 2.3GHz
Win 10

erstellt am: 07. Mai. 2019 20:27    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, ich erstell mir mit definierten Koordinaten Wires.
Diese Wires will ich gerne verwenden für den Befehl p.CoverEdges um eine Fläche daraus zu erzeugen.

Das ganze soll nicht über den befehl findAt oder getClosest gehen, da ich die Edges ja sowieso erzeuge und somit nicht nochmal danach suchen will, und somit Zeit sparen kann beim Code.

Für den Befehl CoverEdges brauch ich aber ein sogenanntes 'Edge Object' in der edgeList und das ist nicht so einfach.
In der Doku hab ich nun das Feature .getFeatureEdges(...) gefunden nur kann ich es nicht anwenden, da ich nicht weis wie man es "füttert" und die doku is ja eher bescheiden. 
Es liefert als return aber ein "Edge object" also genau das was ich brauche.

Hat jemand erfahrung wie man dieses füttert?

Hier der Doku ausschnitt:
        37.1.36 getFeatureEdges(...)

        This method returns a sequence of Edge objects that are created by the given feature.

        Required argument

        name
        A string specifying the feature name.

        Optional arguments

        None.
        Return value

        Sequence of Edge objects.

        Exceptions

        An exception occurs if a feature with the given name does not exist.

        Error : Incorrect feature name.


Hier mein Code:
    n0 = [0,0,0]
    n1 = [1,0,0]
    n2 = [1,1,0]
    n3 = [0,1,0]
    wirePoints = []
    wirePoints += [n0+n1]
    wirePoints += [n1+n2]
    wirePoints += [n2+n3]
    wirePoints += [n3+n0]
    for i in range(0,4):
        p.WireSpline(points=wirePoints[i], mergeType=IMPRINT, meshable=OFF)

    e = p.edges #das hier soll wegfallen und gleich der WireSplines gleichgestellt werden
    p.CoverEdges(edgeList = e[0:4], tryAnalytical=True)

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

Mustaine
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 3313
Registriert: 04.08.2005

Abaqus

erstellt am: 08. Mai. 2019 10:58    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 Fimbi 10 Unities + Antwort hilfreich

Ich bin mir nicht sicher, ob ich dein Ziel richtig verstanden habe. Vielleicht hilft der Tipp, dass man Features beim erzeugen gleich in einer Variable speichern kann. Danach ist es leichter die Features wiederzuverwenden.


Code:

from abaqus import *
from abaqusConstants import *
from caeModules import *

p = mdb.models['Model-1'].parts['Part-1']
d = p.datums
e = p.edges

n1 = (0,0,0)
n2 = (1,0,0)
n3 = (1,1,0)
n4 = (0,1,0)

dat1=p.DatumPointByCoordinate(coords=n1)
dat2=p.DatumPointByCoordinate(coords=n2)
dat3=p.DatumPointByCoordinate(coords=n3)
dat4=p.DatumPointByCoordinate(coords=n4)

p.WirePolyLine(points=((d[dat1.id], d[dat2.id]), (d[dat2.id], d[dat3.id]), (d[dat3.id], d[dat4.id]), (d[dat4.id],
    d[dat1.id])), mergeType=IMPRINT, meshable=ON)

p.CoverEdges(edgeList = e[0:4], tryAnalytical=True)


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

Fimbi
Mitglied
Student


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

Beiträge: 29
Registriert: 19.03.2015

Intel Core i7-3610QM 2.3GHz
Win 10

erstellt am: 08. Mai. 2019 20:14    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

Der Ansatz ist schon gut, aber nicht ganz das was ich gemeint habe, war schlecht ausgedrückt ^_^

Ich will mir die Edges als variable speichern und diese Variable dann für den befehl "CoverEdges"verwenden.

Also in etwa so:

Code:

edge1 = p.WireSpline(...)
edge2 = p.WireSpline(...)
edge3 = p.WireSpline(...)
edge4 = p.WireSpline(...)

p.CoverEdges(edgeList = edge1+edge2+edge3+edge4)


Derzeit suche ich mit mit p.edges.findAt(...) nach den 4 edges.
Genau dieses findAt will ich aber umgehen, weil ich glaube dass ich mir dadurch noch Zeit beim Abarbeiten des Codes sparen kann. Ich muss nämlich ca 2000 faces mit p.CoverEdges(...) erstellen und das dauert... 

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

adaptiveMesh
Mitglied



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

Beiträge: 64
Registriert: 25.05.2006

erstellt am: 09. Mai. 2019 11:26    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 Fimbi 10 Unities + Antwort hilfreich

Gespeicherte edges sind ungültig ab dem Zeitpunkt, ab dem nochmals ein Edge-Objekt erzeugender Konstruktor aufgerufen wird.
Persistent sind nur die Namen der Features.

Also:
wire1 = p.WireSpline(...)
...

p.CoverEdges(edgeList = p.getFeatureEdges(wire1.name)+p.getFeatureEdges(wire2.name)+...)

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

Fimbi
Mitglied
Student


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

Beiträge: 29
Registriert: 19.03.2015

Intel Core i7-3610QM 2.3GHz
Win 10

erstellt am: 14. Mai. 2019 01:35    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

Danke, hat funktioniert,

jedoch leider ohne erwünschten Erfolg 
1)beim Test von 336 faces die er erstellen soll braucht er mit der alten Methode (alles über findAt suchen) 39sec.

2)bei der neuen Methode (die wires mit p.getFeatureEdges(wire1.name) weiterverwenden) braucht er zwar gleich lange, jedoch läuft er viel instabiler und erzeugt mir von den 336 faces, 118 nicht.

Da er jetzt gleich lange braucht, für 118 weniger faces geb ich mich geschlagen und nimms einfach so hin, dass es nicht schneller gemacht werden kann.

(Ich muss im Endeffekt einige 100.000 faces erzeugen lassen, wirds halt über Nacht ein paar mal laufen  )

Danke vielmals! 

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

adaptiveMesh
Mitglied



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

Beiträge: 64
Registriert: 25.05.2006

erstellt am: 17. Mai. 2019 12:11    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 Fimbi 10 Unities + Antwort hilfreich

Hallo,

vielleicht könntest Du den Programmcode, der nicht richtig gearbeitet hat, mal posten. Würde ich mit ganz gerne mal ansehen.
Schönes WE

"2)bei der neuen Methode (die wires mit p.getFeatureEdges(wire1.name) weiterverwenden) braucht er zwar gleich lange, jedoch läuft er viel instabiler und erzeugt mir von den 336 faces, 118 nicht."


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)2019 CAD.de | Impressum | Datenschutz