Hallo Joe,
ich habe das Makro erst seit kurzem in Verwendung und habe die Werte gerundet mitgeschrieben (2-Stellig) ist jedoch eben sehr umständlich.
Den Namen bräuchte ich vom gemessenen Querschnitt. Die Erstellung der Querschnitte habe ich schon über ein anderes Makro bewältigt und die Querschnitte werden als Füllung (die ich mit diesem Makro ja vermesse) automatisiert ausgegeben und fortlaufend nummeriert (Querschnitt1, Querschnitt2, usw.). Also müsste ich doch den Namen der gerade vermessenen Fläche (z.B. Querschnitt12) verwenden können bzw. einen neuen Namen erstellen können, da die Nummerierung meines Erachtens nach parallel dazu ablaufen würde.
Ich glaube mit deinen Schleifen sind wir schon auf der Zielgeraden, ich bekomme es nur nicht hin, sie einzubauen (Catia mag das EndIf nicht)
=> End If habs lang nicht gecheckt^^
...Nach meiner Logik müsste ich doch den ersten Wert separat messen (als Basis) und die nachher gemessene Werte mit deinen Schleifen vergleichen, oder liege ich da falsch?
Bzw. wie würde das Makro mit eingebauten Schleifen ausschauen?
=> Ich musste es für den Min-Wert doch trennen, da ansonsten der Ausgangswert, also "nichts" der kleinste geblieben wäre.
Ansonsten funktionieren die Schleifen Super Danke
Nur das mit den Namen haut noch nicht hin.
Vielleicht weißt du hier doch noch einen Rat, da blicke ich noch nicht ganz durch...
Vielen Dank für deine Hilfe!
Lg Jan
Hier noch das derzeitige Makro:
Sub CATMain()
Dim Language as String
Language="VBScript"
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Set part1 = CATIA.ActiveDocument.Part
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set hybridShapeFill1 = hybridShapeFactory1.AddNewFill()
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Querschnittsanalyse")
Dim selection1 As Selection
Set selection1 = partDocument1.Selection
selection1.Search "Name=1_Querschnitt*,Bild"
Dim TheSPAWorkbench As Workbench
Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ( "SPAWorkbench" )
Dim TheMeasurable As Measurable
Dim dblA_Max1
Dim dblA_Min1
Dim dblA_Max2
Dim dblA_Min2
Dim strNameMax1
Dim strNameMin1
Dim strNameMax2
Dim strNameMin2
For i = 1 TO 2
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(selection1.Item(i).Reference)
If TheMeasurable.Area > dblA_Min1 then
dblA_Min1 = TheMeasurable.Area
strNameMin1 = Name
End If
Next
For i = 2 TO selection1.Count
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(selection1.Item(i).Reference)
If TheMeasurable.Area > dblA_Max1 then
dblA_Max1 = TheMeasurable.Area
strNameMax1 = Name
ElseIf TheMeasurable.Area < dblA_Min1 then
dblA_Min1 = TheMeasurable.Area
strNameMin1 = Name
End If
next
selection1.Search "Name=2_Querschnitt_nahe*,Bild"
For i = 1 TO selection1.Count
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(selection1.Item(i).Reference)
If TheMeasurable.Area > dblA_Max1 then
dblA_Max1 = TheMeasurable.Area
strNameMax1 = Name
ElseIf TheMeasurable.Area < dblA_Min1 then
dblA_Min1 = TheMeasurable.Area
strNameMin1 = Name
End If
Next
MsgBox "Max. Wert: " & dblA_max1 & vbTab & strNameMax1 & vbCrLf _
& "Min. Wert: " & dblA_min1 & vbTab & strNameMin1
End Sub
[Diese Nachricht wurde von Tube3 am 27. Nov. 2014 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP