Autor
|
Thema: Kanten über Python Seeden (1355 mal gelesen)
|
Harr Mitglied student
Beiträge: 36 Registriert: 11.08.2011
|
erstellt am: 07. Jan. 2013 15:08 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich habe ein recht großes komplexes Modell erstellt, welches aus sehr vielen Parts und somit noch mehr Kanten besteht! Im Anhang befindet sich ein Bildausschnitt aus diesem Modell. Diese Kanten sollen jetzt über Python mit Seeds versetzt werden. Folgenden Code habe ich mir dafür erstellt:
Code:
Liste1 = [] loop = loop + 1 yKriteriumMin = ts+1 yKriteriumMax = Quaderlaenge-1 xKriteriumMin = ls+aw*2/2**(0.5)-Quaderbreite/2+1 xKriteriumMax = ls+aw*2/2**(0.5)+Quaderbreite/2-1 for Kante in i.edges: v=Kante.getVertices() for vertex in v: coords=i.vertices[vertex].pointOn if coords[0][1]>yKriteriumMin and coords[0][1]<yKriteriumMax: if coords[0][0]>xKriteriumMin and coords[0][0]<xKriteriumMax: if Liste1.count(Kante.index)<1: Liste1.append(Kante.index) index = len(Liste1) for k in range(index): Coordinat = i.edges[Liste1[k]].pointOn[0] pickedEdges = e1.findAt(((Coordinat[0],Coordinat[1],Coordinat[2]), )) try: a2.seedEdgeBySize(edges=pickedEdges, size=2.0, deviationFactor=0.1, constraint=FINER) except: print 'Versuch3 gescheitert'
Dieser Code sucht mir also alle Kanten in einem bestimmten Bereich aus und setzt die Seeds mit der Größe 2.0. Dieser Code ist jedoch zu Ungenau! Die "Kriterium" Variablen erhalten Werte die die Eckpunkte der Kanten im Koordinatensystem darstellen. Es werden nicht immer die Kanten ausgewählt die durch die "Kriterium" Variablen eingegrenzt werden. Kann mir bitte jemand einen Verbesserungsvorschlag geben? Sollte ich die Kanten anders ansprechen? Vielen Dank im Voraus !! [Diese Nachricht wurde von Harr am 07. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
Beiträge: 3554 Registriert: 04.08.2005 Abaqus
|
erstellt am: 07. Jan. 2013 16:51 <-- editieren / zitieren --> Unities abgeben: Nur für Harr
Wenn du in der erste for-Schleife die Kritierien prüfst, warum schreibst du die Kante dann in eine Liste anstatt gleich den Seed darauf anzuwenden? Damit sparst du dir die ganze zweite for-Schleife (welche übrigens auch noch Fragen aufwerfen würde). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Entwicklungsingenieur (m/w/d) Automotive | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte OEMs und Zulieferer der Automobilindustrie und übernehmen Verantwortung für komplexe Entwicklungsprojekte.... | Anzeige ansehen | Entwicklung |
|
Harr Mitglied student
Beiträge: 36 Registriert: 11.08.2011
|
erstellt am: 14. Jan. 2013 13:55 <-- editieren / zitieren --> Unities abgeben:
Hi Mustaine, vielen Dank für Deine Antwort! Ich habe das ganze jetzt noch einmal etwas überarbeitet und viel im Code weggekürzt!! Der erste Test dieses Codes lief ganz gut. Hier einmal die gekürzte Version: Code: for Kante in i.edges: CoordX = i.edges[Kante.index].pointOn[0][0] CoordY = i.edges[Kante.index].pointOn[0][1] CoordZ = i.edges[Kante.index].pointOn[0][2] if CoordY > yKriteriumMin and CoordY < yKriteriumMax: if CoordX > xKriteriumMin and CoordX < xKriteriumMax: pickedEdges = e1.findAt(((CoordX,CoordY,CoordZ), )) a2.seedEdgeBySize(edges=pickedEdges, size=2.0, deviationFactor=0.1, constraint=FINER)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|