| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | KISTERS 3DViewStation: Schutz sensibler 3D CAD Daten, egal von wo Sie arbeiten, eine Pressemitteilung
|
Autor
|
Thema: Distanz zwischen CGR Produkt und Face (285 / mal gelesen)
|
user7 Mitglied

 Beiträge: 30 Registriert: 26.08.2022
|
erstellt am: 07. Mai. 2025 10:12 <-- editieren / zitieren --> Unities abgeben:         
Ich habe eine CGR Komponente in meinem Assembly und würde gerne programmatisch die minimale Distanz von dem CGR zu einer bestimmten Fläche (Face) aus einem anderen Teil (CATPart) berechnen. Händisch funktioniert das einwandfrei mit dem "Measure Between" Tool (s. Screenshot). Hat jemand eine Idee, wie das programmatisch funktionieren könnte? Wie es scheint, kann ich auch kein valides Measurable auf dem CGR Produkt erstellen. Es kommt zwar ein Measurable dabei heraus, aber alleine Werte wie die Fläche (measurable.Area) führen zu Exceptions. Code:
Product productOfCGR = <MeinCGRProduct> Reference targetProductReference = <ReferenzAufMeinCGRProduct> Product targetProduct = <ProductOwningFace> Face targetFace = <MeineFläche> Reference targetFaceReference = <ReferenzAufMeineFläche> SPAWorkbench wb = (SPAWorkbench)targetProduct.GetWorkbench("SPAWorkbench"); Measurable measurableOnFace = wb.GetMeasurable(targetFaceReference); var mindist = measurableOnFace.GetMinimumDistance(targetProductReference); /// Exception
Ich würde mich über jeden Hinweis freuen, wie die Funktion, die in der GUI einwandfrei funktioniert, auch in C# abgreifbar sein könnte.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12070 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Mai. 2025 11:40 <-- editieren / zitieren --> Unities abgeben:          Nur für user7
|
user7 Mitglied

 Beiträge: 30 Registriert: 26.08.2022
|
erstellt am: 07. Mai. 2025 12:36 <-- editieren / zitieren --> Unities abgeben:         
ja, Danke - das scheint ein ähnliches Problem zu sein. Allerdings kann ich nicht die Lösung davon nutzen, da ich nicht nach der Distanz zwischen den beiden Produkten suche, sondern dem minimalen Maß zwischen dem Face und dem Produkt. D.h. Distance kann ich nicht nutzen, da das mir sonst die minimale Distanz zwischen den beiden Produkten ausgibt (incl. aller Faces im ersten Produkt). Kurzum: Hat jemand ein Workaround gefunden, wie man measurable auf CGR Komponenten nutzen kann - oder bei programmatisch bei dem Measurable tool "Approximate" bei Genauigkeit einstellt, sodass trotz CGR Produkt eine Distanz berechnet werden kann? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12070 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Mai. 2025 13:08 <-- editieren / zitieren --> Unities abgeben:          Nur für user7
Servus Ein Workaround wäre wohl: - zur Messung ein Distance-Object verwenden (SPA-Lizenz notwendig?)
- beim Part nur die eine Fläche einblenden (oder temporär in ein leeres Part kopieren)
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
user7 Mitglied

 Beiträge: 30 Registriert: 26.08.2022
|
erstellt am: 12. Mai. 2025 18:29 <-- editieren / zitieren --> Unities abgeben:         
Servus Bernd, guter Hinweis! Werde ich mal versuchen - ich hatte noch nicht viel mit rumkopieren / ein- ausblenden einzelner topologischer Elemente gemacht. Mal sehen, ob das so einfach ist wie es sich anhört (: Als Quickfix Lösung hatte ich jetzt das "dumme" Teil (CGR) als wrl gespeichert und von dort die Vertices ausgelesen, die einzelnen Punkte wieder in einem neuen Produkt erzeugt und dann mit Measurable den Abstand zum face berechnet. Kommt halt mit einer größeren Ungenauigkeit, da die Punkte die Flächen natürlich nicht vollständig nachbilden. Werde deinen Ansatz in jedem Fall die Woche mal testen. Vielen Dank für Deinen Input!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
user7 Mitglied

 Beiträge: 30 Registriert: 26.08.2022
|
erstellt am: 14. Mai. 2025 11:20 <-- editieren / zitieren --> Unities abgeben:         
Das hat super funktioniert - Performancetests hab ich noch nicht gemacht.. Mal sehen wie stark der Rechner bei 1000+ faces in die Knie geht. Code: HybridShapeExtract extr = hybridShapeFactory.AddNewExtract(<MyNativeFace>); extr.Compute(); object datum = hybridShapeFactory.AddNewSurfaceDatum((Reference)extr); CatiaSelection.Clear(); CatiaSelection.Add((HybridShape)datum); CatiaSelection.Copy(); CatiaSelection.Clear(); CatiaSelection.Add(<TargetGeometricalSetInNewPart>); CatiaSelection.PasteSpecial("CATPrtResult");
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12070 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 14. Mai. 2025 12:10 <-- editieren / zitieren --> Unities abgeben:          Nur für user7
|
user7 Mitglied

 Beiträge: 30 Registriert: 26.08.2022
|
erstellt am: 15. Mai. 2025 17:50 <-- editieren / zitieren --> Unities abgeben:         
Ich will eine automatische Auswertung einer Bandanalyse machen. Hatte keine Möglichkeit gefunden wie ich direkt aus der Bandanalyse an alle Flächen eines Bauteiles kommen kann, die (teils) rot markiert sind. Darum exportiere ich das Ergebnis als dumme Geometrie und schau dann für jede Fläche nach, ob sie einen Abstand von 0 zum Bandanalysen-Ergebnis hat.. schon relativ umständlich... Leider brauche ich für ein Auswertungsprogramm tatsächlich alle einzelnen Flächen bei denen die Bandanalyse (clearance-check) anschlägt. Wenn jemand eine Idee hat wie man direkt zu den Flächen der Bandanalyse rankommt bin ich natürlich ganz Ohr Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |