Autor
|
Thema: Point Repetiition (1764 mal gelesen)
|
Basti1379 Mitglied
Beiträge: 18 Registriert: 24.01.2019 CATIA V5
|
erstellt am: 17. Feb. 2019 18:19 <-- editieren / zitieren --> Unities abgeben:
Code: '********************Points Repetiition*****************If Laenge > 0 Then Dim j As Integer Dim n As Integer For j = 0 to 1 step 0.02 For n = 1 to 50 step 1 Set oreference = ohybridShapeBoundary Set oreference2 = ohybridShapePointOnCurve Set ohybridShapePointOnCurve2 = ohybridShapeFactory.AddNewPointOnCurveWithReferenceFromPercent (oreference, oreference2, j, False) ohybridBody.AppendHybridShape ohybridShapePointOnCurve2 ohybridShapePointOnCurve2.name ="HelpingPoint." & n
Next Next End If
Hi ich hänge grade fest.Ich würde gerne 50 Punkte erstellen und diese durchnummerieren von 1 bis 50. Das Macro erstellt derzeit 2500 Mit freundlichen Grüßen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Feb. 2019 18:39 <-- editieren / zitieren --> Unities abgeben: Nur für Basti1379
Servus Ich würde nur eine Schleife verwenden: Code: Dim lngPercentageStep As long Dim n As Integer Dim iNumberOfPoints as IntegerSet oreference = ohybridShapeBoundary Set oreference2 = ohybridShapePointOnCurve iNumberOfPoints = 50 lngPercentageStep = 1 / iNumberOfPoints For n = 1 to iNumberOfPoints Set ohybridShapePointOnCurve2 = ohybridShapeFactory.AddNewPointOnCurveWithReferenceFromPercent (oreference, oreference2, n * lngPercentageStep , False) ohybridBody.AppendHybridShape ohybridShapePointOnCurve2 ohybridShapePointOnCurve2.name ="HelpingPoint." & CStr(n) Next
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Basti1379 Mitglied
Beiträge: 18 Registriert: 24.01.2019 CATIA V5
|
erstellt am: 17. Feb. 2019 18:49 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: ServusIch würde nur eine Schleife verwenden: Code: Dim lngPercentageStep As long Dim n As Integer Dim iNumberOfPoints as IntegerSet oreference = ohybridShapeBoundary Set oreference2 = ohybridShapePointOnCurve iNumberOfPoints = 50 lngPercentageStep = 1 / iNumberOfPoints For n = 1 to iNumberOfPoints Set ohybridShapePointOnCurve2 = ohybridShapeFactory.AddNewPointOnCurveWithReferenceFromPercent (oreference, oreference2, n * lngPercentageStep , False) ohybridBody.AppendHybridShape ohybridShapePointOnCurve2 ohybridShapePointOnCurve2.name ="HelpingPoint." & CStr(n) Next
Gruß Bernd
Hi vielen Dank für die super Hilfe es klappt wunderbar. Gruß Basti Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Basti1379 Mitglied
Beiträge: 18 Registriert: 24.01.2019 CATIA V5
|
erstellt am: 21. Feb. 2019 21:34 <-- editieren / zitieren --> Unities abgeben:
Hi zusammen ich würde gerne eine Measure loop mit einer For-Next Schleife kombinieren.Hat jemand eine Idee wie ich es realisieren könnte? Code: '**************************Measure Loop ******************** Dim oref1 As Reference Dim oref2 As Reference Dim MinimumDistance As Double Dim Summe As IntegerFor n = 1 to iNumberOfPoints Summe = n + 1 Set oref1 = oHybridBody.hybridShapes.Item("HelpingPoint." & CStr(n)) Set oref2 = oHybridBody.hybridShapes.Item("HelpingPoint." & CStr(Summe)) Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") Set TheMeasurable = TheSPAWorkbench.GetMeasurable(oref1) MinimumDistance = TheMeasurable.GetMinimumDistance(oref2) If MinimumDistance = Laenge / iNumberOfPoints then Next Else Dim Vector (2) Dim oHybridShapeLine as HybridShapeLinePtPt Set oreference = oSelection.Item(1).Value Set oref1 = oHybridBody.hybridShapes.Item("HelpingPoint." & CStr(n)) Set oref2 = oHybridBody.hybridShapes.Item("HelpingPoint." & CStr(Summe)) Set oHybridShapeLine = ohybridShapeFactory.AddNewLinePtPt ( oref1, oref2) ohybridBody3.AppendHybridShape oHybridShapeLine oHybridShapeLine.Name = Direction.1 oHybridShapeLine.GetDirection Vector Set oHybridShapeExtremum1 = ohybridShapeFactory.AddNewExtremum(oreference ,Vector (0),Vector(1), Vector(2) ) ohybridBody2.AppendHybridShape oHybridShapeExtremum1 oHybridShapeExtremum1.Name = Extrema.1
Next End If
[Diese Nachricht wurde von Basti1379 am 21. Feb. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Feb. 2019 22:51 <-- editieren / zitieren --> Unities abgeben: Nur für Basti1379
Servus Beschreibe mal was der Code bezwecken soll. Zwischen was soll gemessen werden? Klappt deine Messung? Wo ist dein Problem? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Basti1379 Mitglied
Beiträge: 18 Registriert: 24.01.2019 CATIA V5
|
erstellt am: 21. Feb. 2019 23:57 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: ServusBeschreibe mal was der Code bezwecken soll. Zwischen was soll gemessen werden? Klappt deine Messung? Wo ist dein Problem? Gruß Bernd
Das Makro erstellt eine Linie und in Abhängigkeit von der Länge Punkte. Ich möchte jetzt zwischen diesen Punkten messen zwischen 1 und 2 dann 2 und 3 usw. Wenn eine Länge von dem Kriterium "Gesamtlänge / Punkte =Abschnitt " abweicht soll er hier ein Extremum erstellt werden.Die Messung soll jedoch nicht Abgebrochen werden sondern bis zur Max. Anzahl der Punkte weiter laufen. Meine Idee wäre ein Loop Count einzubauen und dann dort wieder einsteigen. Bin mir aber nicht sicher was hier am sinnvollsten wäre. Gruß, Basti Edit: Die Messungen hab ich mit MsgBox überprüft und die erste Messung passt. Das Macro sagt "Next" Anweisung erwartet. Hängt wohl an der For-Next Schleife.(meins wäre ja ehr If-Next) [Diese Nachricht wurde von Basti1379 am 22. Feb. 2019 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Feb. 2019 19:12 <-- editieren / zitieren --> Unities abgeben: Nur für Basti1379
Servus Meine Idee dazu: Code: For n = 1 to iNumberOfPoints 'Punkt erstellen if n > 2 then 'Messung zwischen ohybridShapePointOnCurve2 und oPreviousPointOnCurve 'falls erforderlich die weiter Geometrie erstellen end if Set oPreviousPointOnCurve = ohybridShapePointOnCurve2 next
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Basti1379 Mitglied
Beiträge: 18 Registriert: 24.01.2019 CATIA V5
|
erstellt am: 25. Feb. 2019 18:33 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Feb. 2019 19:36 <-- editieren / zitieren --> Unities abgeben: Nur für Basti1379
Servus Basti In was programmierst du? AFAIK ist in CATScript und catvbs nicht alles von VBA implementiert (das To funktioniert in diesem Fall zumindest nicht). zB fehlen dort auch die nützlichen Collections als eigenes Objekt. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |