| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
| Composer Einstellungen & Dokumenteigenschaften, ein Seminar am 13.02.2025
|
Autor
|
Thema: PointOnSurface Koordinaten über Mausklick (1605 / mal gelesen)
|
Booyaka Mitglied
Beiträge: 122 Registriert: 22.06.2012 CATIA V5 R19, 24, 26, 28, 29
|
erstellt am: 01. Feb. 2019 12:59 <-- editieren / zitieren --> Unities abgeben:
Hallo, ist es möglich einen Punkt auf einer Fläche zu erzeugen direkt da wo ich hinklicke? Also um das zuschaffen müsste ich beim Klick auf die Fläche die Koordinaten für Richtung auslesen und halt hier einfügen Code:
Set oHSDirection = oHSFactory.AddNewDirectionByCoord(iX, iY, iZ)
und mit dem Abstand halt das selbe. Code:
Set oHSPointOnSurface = oHSFactory.AddNewPointOnSurface(oRef, oHSDirection, N) '<-- N = Abstand
Wenn ich die Macroaufnahme nutze funktioniert das wie genau sagt mir der recoder allerdings nicht :/
-----------------------------------------------------------------------------------------------------
Hier mein derzeitiger Code
Code:
Dim oActDoc As PartDocument Dim oPart As Part Dim oHSFactory As HybridShapeFactory Dim oHSDirection As HybridShapeDirection Dim oHBodies As HybridBodies Dim oHBody As HybridBody Dim oHShapes As HybridShapes Dim oSelType(0) Set oActDoc = CATIA.ActiveDocument Set oPart = oActDoc.Part Set oHSFactory = oPart.HybridShapeFactory Set oHBodies = oPart.HybridBodies Set oHBody = oHBodies.Item("Geometrical Set.1") Set oHShapes = oHBody.HybridShapes Set oSel = oActDoc.Selection oSel.Clear oSelType(0) = "HybridShape" oChoice2 = oSel.SelectElement2(oSelType, "", True) oSelName = oSel.Item(1).Value.Name MsgBox oSelName Set oHSDirection = oHSFactory.AddNewDirectionByCoord(-1, -1, -10) 'über Mausklick möglich? oHSDirection.RefAxisSystem = oPart.CreateReferenceFromObject(oPart.AxisSystems.Item("Absolute Axis System")) Set oRef = oPart.CreateReferenceFromObject(oSel.Item(1).Value) Dim oHSPointOnSurface As HybridShapePointOnSurface Set oHSPointOnSurface = oHSFactory.AddNewPointOnSurface(oRef, oHSDirection, 20) 'Abstand über Mausklick möglich? oHBody.AppendHybridShape oHSPointOnSurface oPart.InWorkObject = oHSPointOnSurface oPart.Update
------------------ „Nicht Erfolg ist der Schlüssel zum Glück, sondern Glück ist der Schlüssel zum Erfolg. Wenn du gerne tust, was du tust, wirst du auch erfolgreich sein.“ ― Albert Schweitzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12023 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 01. Feb. 2019 14:48 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
|
Booyaka Mitglied
Beiträge: 122 Registriert: 22.06.2012 CATIA V5 R19, 24, 26, 28, 29
|
erstellt am: 02. Feb. 2019 07:28 <-- editieren / zitieren --> Unities abgeben:
Danke für den super Tipp werd ich wohl später für irgendwas noch gebrauchen können. Allerdings erfüllt diese Funktion nicht ganz meinen Anfroderungen, da dies nur für planare Flächen geht ich hab aber Freiflächen. Hätteste dafür auch zufälligerweise ne Funktion parat? ^^' ------------------ „Nicht Erfolg ist der Schlüssel zum Glück, sondern Glück ist der Schlüssel zum Erfolg. Wenn du gerne tust, was du tust, wirst du auch erfolgreich sein.“ ― Albert Schweitzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12023 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Feb. 2019 09:54 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
Servus Die Koordinaten des Pick-Punktes könntest du über GetCoordinates bekommen (siehe zB hier, auch mit einer normalen Selektion möglich?). ggf reicht dir das schon, ober benötigst du unbedingt ein PointOnSurface? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Booyaka Mitglied
Beiträge: 122 Registriert: 22.06.2012 CATIA V5 R19, 24, 26, 28, 29
|
erstellt am: 02. Feb. 2019 10:52 <-- editieren / zitieren --> Unities abgeben:
Ja muss PointOnSurface sein da es in 99% der Fällen immer eine Freiläche ist. Hab mir mal das Heut noch angeschaut mit der Richtung... Irgendwie is das sehr kompliziert. Werd das wahrscheinlich so lösen das der Punkt auf der Fläche vorher erzeugt werden muss und ich von daus weiter arbeiten. ------------------ „Nicht Erfolg ist der Schlüssel zum Glück, sondern Glück ist der Schlüssel zum Erfolg. Wenn du gerne tust, was du tust, wirst du auch erfolgreich sein.“ ― Albert Schweitzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12023 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Feb. 2019 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
Servus Meine Idee dazu: aus GetCoordinates der Selektion einen Punkt erstellen, Flächenschwerpunkt (oder anderen Referenzpunkt den du nutzen willst) erstellen, aus den beiden Punkten Richtung und Abstand bestimmen. Daraus dann den PointOnSurface erstellen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Booyaka Mitglied
Beiträge: 122 Registriert: 22.06.2012 CATIA V5 R19, 24, 26, 28, 29
|
erstellt am: 02. Feb. 2019 20:42 <-- editieren / zitieren --> Unities abgeben:
Oh die Idee klingt super aber da bleibt nur ein Problem: Wie komm ich an die Koordinaten wenn ich an irgendeiner Stelle der Freifläche klicke. Da wie ja bereits erwähnt IndicateOrSelectElement3D nur für planare Flächen zählt. Vieleicht steck ich auch grad nur in der Richtung fest :/ und brauch mal nen Tag pause davon ^^.
Aber trotzdem vielen Dank für deine rege Teilnahme an meinem Problem ------------------ „Nicht Erfolg ist der Schlüssel zum Glück, sondern Glück ist der Schlüssel zum Erfolg. Wenn du gerne tust, was du tust, wirst du auch erfolgreich sein.“ ― Albert Schweitzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12023 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 02. Feb. 2019 20:59 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
Servus GetCooridnates geht auch bei SelectElement2. Beispiel: Code: Sub CATMain()Dim Ergebnis As String Dim Filter(0) Dim oSelection As Selection Dim coord(2) As Variant Dim oPart as Part dim oPartDocument as PartDocument Dim oHybridBody as HybridBody Dim oHybridShapeFactory as HybridShapeFactory Set oPartDocument = CATIA.ActiveDocument Set oPart = oPartDocument.Part Set oHybridBody = oPart.HybridBodies.Item(1) Set oHybridShapeFactory = oPart.HybridShapeFactory Filter(0) = "HybridShape" Set oSelection = CATIA.ActiveDocument.Selection oSelection.Clear Ergebnis = oSelection.SelectElement2(Filter, "Fläche auswählen", False) If oSelection.Count <> 0 Then oSelection.Item(1).GetCoordinates coord MsgBox ("Koordinaten: " & coord(0) & "; " & coord(1) & "; " & coord(2)) Set MyPoint = oHybridShapeFactory.AddNewPointCoord(coord(0),coord(1),coord(2)) oHybridBody.AppendHybridShape MyPoint oPart.Update End If End Sub
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Booyaka Mitglied
Beiträge: 122 Registriert: 22.06.2012 CATIA V5 R19, 24, 26, 28, 29
|
erstellt am: 03. Feb. 2019 08:31 <-- editieren / zitieren --> Unities abgeben:
******* die Wand an das Funktioniert ja :O. Ich dachte eigentlich das man für GetCoordinates immer schon nen Punkt braucht. Aber da sieht man mal wieder manchmal sollte man es einfach mal machen ^^. Übrigens warum wirft der ein Compieler-Error raus (VBA-Editor) wenn die Selection als Selection deklariert wird?
10Punkte sind dir überschrieben auch wenn du dafür mehr verdient hättest . Nochmals vielen Dank ------------------ „Nicht Erfolg ist der Schlüssel zum Glück, sondern Glück ist der Schlüssel zum Erfolg. Wenn du gerne tust, was du tust, wirst du auch erfolgreich sein.“ ― Albert Schweitzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12023 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 03. Feb. 2019 11:08 <-- editieren / zitieren --> Unities abgeben: Nur für Booyaka
|