| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | | |  | KISTERS 3DViewStation: Schnelligkeit und Präzision in dem neuen JT-Importer, eine Pressemitteilung
|
Autor
|
Thema: Kanten über Python Seeden (1550 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: 3585 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 |
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 >>)
 |