hi folks,
ich muss leider nochmal nachfragen...
Stefan hat mich ja schon auf die richtige Fährte für die Umrechnung der Koordinaten gebracht, so dass ich nun für die gesamte Skizze der Bohrpunkte eine Koordinatentransformation auf Modellkoordinaten hinbekomme.
Nun zeigt sich aber, dass die Punkte auf einer Skizze nicht nur die Bohrpositionen zeigen, sonderen auch noch andere Skizzenpunkte auflisten.
Nun habe ich mir so in meinem jugendlichen Leichtsinn gedacht, dass man dann anstelle der Skizzen vPtArr doch einfach das "HoleFeatureData.GetSketchPoints" umrechnen lässt. Aber dabei kriege ich die Objekte bzw Rückgaben nicht richtig zugeordnet, da das Ergebnis nach der Funktion nicht mehr stimmig ist.
Kann mir da bitte einer mal über die Klippe helfen?
Vielen Dank schon mal an dieser Stelle...
Public Sub BohrfeatureAuswerten(ByVal FeatureName As String, ByVal SkizzeName As String)
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swMathUtil As SldWorks.MathUtility
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeature As SldWorks.Feature
Dim swFeatureSkizze As SldWorks.Feature
Dim swSkizze As SldWorks.Sketch
Dim swSkizzeXform As SldWorks.MathTransform
Dim pt As SldWorks.SketchPoint
Dim swPt As SldWorks.MathPoint
Dim vSketchPt As Object
Dim nSketchPtData(2) As Double
Dim vSketchPtData As Object
Dim swSketchPt As SldWorks.SketchPoint
Dim swEnt As SldWorks.Entity
Dim nEntType As Long
Dim vNormal As Object
Dim HoleFeatureData As SldWorks.IWizardHoleFeatureData2
Dim AnzBohrungen As Long
Dim xValue As Double
Dim yValue As Double
Dim zValue As Double
FeatureName = "Ø4.0 (4) Durchmesser Bohrung1"
SkizzeName = "Skizze7"
swApp = CreateObject("SldWorks.Application")
swMathUtil = swApp.GetMathUtility
swModel = swApp.ActiveDoc
'aktiviere das gewünschte Feature
swFeature = swModel.FeatureByName(FeatureName)
Call Ausgabe(frmHauptfenster, frmHauptfenster.txtAusgabe, "Bohrfeature auswerten")
'erste Skizze des Features wählen (Punkteebene)
swFeatureSkizze = swModel.FeatureByName(SkizzeName)
swModel.SelectByID(SkizzeName, "SKETCH", 0, 0, 0)
swModel.InsertSketch()
swSkizze = swModel.GetActiveSketch2
'Auswertung des Bohrfeatures
HoleFeatureData = swFeature.GetDefinition
AnzBohrungen = HoleFeatureData.GetSketchPointCount
BohrfeatureParameter(11) = swZahl(HoleFeatureData.CounterBoreDiameter, 4)
BohrfeatureParameter(12) = swZahl(HoleFeatureData.CounterBoreDepth, 4)
'usw.......
'Bohrpositionen auslesen
vPtArr = HoleFeatureData.GetSketchPoints
For Each pt In vPtArr
swSketchPoint = pt
xValue = swSketchPoint.X 'Koordinaten übernehmen
yValue = swSketchPoint.Y
zValue = swSketchPoint.Z
xValue = swZahl(xValue, 6)
yValue = swZahl(yValue, 6)
zValue = swZahl(zValue, 6)
Call Ausgabe(frmHauptfenster, frmHauptfenster.txtAusgabe, " X = " & Str(xValue) & " / Y = " & Str(yValue) & " / Z = " & Str(zValue))
Next
'hier sollen die Punkte umgerechnet werden...
vPtArr = GetModelCoordinates(swApp, swSkizze, vPtArr)
For Each pt In vPtArr
swSketchPoint = pt
xValue = swSketchPoint.X 'Koordinaten übernehmen
yValue = swSketchPoint.Y
zValue = swSketchPoint.Z
xValue = swZahl(xValue, 6)
yValue = swZahl(yValue, 6)
zValue = swZahl(zValue, 6)
Call Ausgabe(frmHauptfenster, frmHauptfenster.txtAusgabe, " X = " & Str(xValue) & " / Y = " & Str(yValue) & " / Z = " & Str(zValue))
Next
Call Ausgabe(frmHauptfenster, frmHauptfenster.txtAusgabe, " X = " & Str(xValue) & " / Y = " & Str(yValue) & " / Z = " & Str(zValue))
'Skizze wieder zumachen
swModel.InsertSketch()
End Sub
Public Function GetModelCoordinates(ByVal swApp As SldWorks.SldWorks, ByVal swSketch As SldWorks.Sketch, ByVal vPtArr As Object) As Object
On Error GoTo Fehler
Dim swMathPt As SldWorks.MathPoint
Dim swMathUtil As SldWorks.MathUtility
Dim swMathTrans As SldWorks.MathTransform
swMathUtil = swApp.GetMathUtility
swMathPt = swMathUtil.CreatePoint(vPtArr)
' Is a unit transform if 3D sketch; for example, selected sketch
' point is automatically in model space
swMathTrans = swSketch.ModelToSketchTransform
swMathTrans = swMathTrans.Inverse
swMathPt = swMathPt.MultiplyTransform(swMathTrans)
GetModelCoordinates = swMathPt.ArrayData
Exit Function
Fehler:
MsgBox("Fehler bei der Koordinatenumrechnung!", MsgBoxStyle.Critical)
End Function
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP