Autor
|
Thema: Volumen Selektion (824 mal gelesen)
|
soundfriend at work Mitglied
Beiträge: 5 Registriert: 31.10.2007
|
erstellt am: 31. Okt. 2007 18:12 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich will mit einem Makro innerhalb eines Parts die Elemete Selektieren die sich zum einen innerhalb eines volumenkörpers befinden zum anderen von ihm geschnitten werden. Wie geht man vor? Kann mir jemand weiterhelfen? ------------------ Greetings Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 01. Nov. 2007 14:24 <-- editieren / zitieren --> Unities abgeben: Nur für soundfriend at work
hallo soundfriend, willkommen in Forum. Dur wirst auf Deine Frage keine Antwort kriegen, weil sie keiner versteht. Grundsätzlich kann man mit Selection.SelectElement2 (siehe Doku) beliebige Elemente selektieren, über den Filter einstellbar. Schreib genauer was Du willst! ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
soundfriend at work Mitglied
Beiträge: 5 Registriert: 31.10.2007
|
erstellt am: 02. Nov. 2007 11:18 <-- editieren / zitieren --> Unities abgeben:
Hallo, ok ich versuche mein problem genauer zu beschreiben - also ich will ein makro schreiben was zum teil folgendes tut: ich habe (alles in einem part) einzelne elemente im raum (kurven, flächen ohne history). dann habe ich ein geschlossenes volumen (z.B. Volume Extrude.1). jetzt möchte ich diejenigen elemente selektieren, die von diesem volumen komplett eingeschlossen sind. dann ich will in einer zweiten selektion die elemente selektieren die von diesem volumen nicht komplett sondern nur teilweise eingeschlossen sind - also von ihm geschnitten werden. es ist also eine art sortierung oder kollisionsprüfung zwischen den elementen die sich komplett, oder nur teilweise innerhalb des volumens befinden. wie kann man so selektieren? gibt es sowas wie "part of volume"? ------------------ Greetings Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 02. Nov. 2007 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für soundfriend at work
Hallo Soundfriend, es ist mir nicht bekannt, ob es beim Selektieren solche Filtermöglichkeiten gibt. Ich würde es so machen: Von dem gegebenen Volumen würde ich die äußere Hülle als Flächenverband mit "Ableiten" erzeugen (HybridShapeFactory.AddNewExtract). Dann kann man mit Measurable den Abstand zwischen den einzelnen Geometrieelementen und sowohl dem Volumen als auch dem zugehörigen Flächenverband berechnen. Innerhalb: Abstand zu Flächenverband >0 Abstand zu Volumen<=0 Schneidend:Abstand zu Flächenverband =0 Abstand zu Volumen<=0 Außerhalb:Abstand zu Flächenverband >0 Abstand zu Volumen>0 ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
soundfriend at work Mitglied
Beiträge: 5 Registriert: 31.10.2007
|
erstellt am: 02. Nov. 2007 13:39 <-- editieren / zitieren --> Unities abgeben:
hallo noir333, hey danke für die schnelle antwort! ja so müsste es schon gehen ich werde es mal versuchen. ich dachte es gibt vielleich was fertiges oder einfacheres, da ja wenn man zum beispiel split oder intersect auf alle elemente anwendet dann wird ja automatisch schon so eine prüfung angewendet ob die elemente innerhalb sind oder nicht. aber vielleicht passiert dort im hintergrund ja genau das gleiche. ------------------ Greetings Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
apollo11 Mitglied
Beiträge: 47 Registriert: 31.03.2007 MacBook Leopard 10.5.6 4GB Ram VMWARE 3 WinXP Pro SP2 V5R16 SP5
|
erstellt am: 03. Nov. 2007 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für soundfriend at work
Wenn du mit Selektionen arbeiten willst musst du die Objekte zwischenspeichern, da es nur EINE Selektion gibt! Aus wenn du sie mehrmals deklarierst so ist es schlussendlich immer die selbe (innerhalb des Dokuments). Du könnstest aber eine Schleife über alle selektierten Objekte laufen lassen. Code:
Dim Sel As Selection Set Sel = CATIA.ActiveDocument.Selection Dim Arr1() Dim Arr2() ReDim Arr1(Sel.Count) ReDim Arr2(Sel.Count) Dim Cnt1 As Integer Dim Cnt2 As Integer Dim CurrentObjFor i=1 To Sel.Count Set CurrentObj = Sel.Item(i).Value If(' hier deine Bedingung mit CurrentObj und deinem Volumenkörper ') Then Set Arr1(Cnt1) = CurrentObj Cnt1 = Cnt1 + 1 ElseIf('nächste Bedingung') Then Set Arr2(Cnt2) = CurrentObj Cnt2 = Cnt2 + 1 End If Next
Mit TypeName(CurrentObj) kannst du dir den Typ des selektierten Objektes ausgeben lassen, da sich Elemente wie Parameter oder Regeln wohl kaum mit einem Solid schneiden werden Die Elemente des Arrays bringst du mit Sel.Add(Arr1(i)) wieder in die Selektion zurück. lg ap Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
soundfriend at work Mitglied
Beiträge: 5 Registriert: 31.10.2007
|
erstellt am: 19. Dez. 2007 17:24 <-- editieren / zitieren --> Unities abgeben:
Hallo noir333, bin erst jetzt wieder zu meinem alten Problem vorgedrungen. Ich mußte aber feststellen, dass es keine negativen Entfernungen gibt und Folge dessen sich mit Measurable auch nicht feststellen läßt welche der Elemente, die nicht vom Volumen geschnitten werden (Abstand > 0) innerhalb oder außerhalb des Volumens liegen. Gibt es keine andere Möglichkeit die Schnittmenge von einem geschlossenem Volumen und anderen Elementen festzustellen, die innerhalb liegen? Weiß jemand dafür eine andere Methode? ------------------ Greetings Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 19. Dez. 2007 18:20 <-- editieren / zitieren --> Unities abgeben: Nur für soundfriend at work
Hallo soundfriend, also es geht fast genauso wie ich es gesagt habe, aber du hast natürlich Recht, es gibt keine neg. Abstände. Ansonsten geht es so: Innerhalb: Abstand zu Flächenverband >0 Abstand zu Volumen=0 Schneidend:Abstand zu Flächenverband =0 Abstand zu Volumen=0 Außerhalb:Abstand zu Flächenverband >0 Abstand zu Volumen>0 Ich habe es gerade nochmal probiert. Sag mir, wo Du nicht weiter kommst... ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
soundfriend at work Mitglied
Beiträge: 5 Registriert: 31.10.2007
|
erstellt am: 20. Dez. 2007 09:51 <-- editieren / zitieren --> Unities abgeben:
Hallo noir333, erst mal danke für deine Antwort! Aber mir ist nicht ganz klar welchen Flächenverband du meinst. Die Abstände von meinen Elementen die sich komplett innerhalb oder außerhalb des Volumens befinden haben zum Volumen immer positive Werte. Nur die Elemente die das Volumen schneiden haben den Abstand Null. Die Elemente die prüfen möchte sind einzelne (tote) Elemente ohne history und auch nicht in einem Flächenverband (Join). Selbst wenn es gelänge aus den Einzelelementen (Flächen + Kurven) einen Flächen- und einen Kurvenverband zu erzeugen - (was nicht immer der Fall ist) - so ragen diese Verbände aus dem Volumen heraus. Somit würde der Abstand des Einzelelements zum Flächenverband immer Null sein (egal ob innerhalb oder außerhalb des Volumens), da es ja ein Teil des Verbandes ist. Oder meinst du aus dem Volumen einen Flächenverband zu machen? Aber das ändert auch nichts an dem Ergebnis der Abstandsmessung. Oder meinst du etwas ganz anderes? Habe ich dich falsch verstanden? ------------------ Greetings Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 20. Dez. 2007 21:53 <-- editieren / zitieren --> Unities abgeben: Nur für soundfriend at work
Hallo Soundfriend, vielleicht habe ich mich etwas zu knapp ausgedrückt. Etwas ausführlicher: Mach mal folgenden Test: Erzeuge ein Volumen (z.B. mit einer Skizze und einem Block), das wie ein Würfel aussieht, eine Ecke im Ursprung 0,0,0 , diagonal gegenüberliegende Ecke bei 100,100,100. Dann benutze die Funktion Ableiten, wähle Punktstetigkeit und klicke auf eine Fläche des Volumens. Es entsteht ein Flächenverband, der die Hülle des Volumens abbildet. Jetzt erzeuge drei Punkte: 1. 20,20,20 2. 100,20,20 3. -20,-20,-20 Miss mal den Abstand von jedem Punkt zum Volumen und zu dem Flächenverband (Ableiten.1). Du wirst feststellen, dass meine obige Fallunterscheidung Dir genau anzeigt welcher Punkt innerhalb oder außerhalb oder genau auf dem Rand des Volumens liegt. OK? ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |