Napisal/-a ManiaC » 3.2.2010 8:40
Sam imam sicer sw 2009, vendar mislim da bi moralo delovati tudi na 2007, saj je macro spisan v vba in bi moral delovati na starejših sw.
Pripenjam sliko, po kateri meni deluje:
[img]http://www.strojnistvo.com/images/forum/1265182029_SolidWorks_Student_Edition_-_Academic_Use_Only_-_[Part1_].jpg[/img]
Lahko pa probaš sam spisati macro, ter ga nato z debuggerjem pognat. Pa mi povej, če ti slučajno najde kakšno napako.
To narediš tako, da daš tools->macro->new in vpišeš ime macroja.
Nato pa kopiraj spodnji tekst in pritisni tipko play(skica mora biti še vedno označena):
Sub ProcessSketchPoint(SwApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, swSkPt As SldWorks.SketchPoint)
Dim vID As Variant
Dim swSketch As SldWorks.Sketch
Dim nPt(2) As Double
Dim vPt As Variant
Set swSketch = swSkPt.GetSketch
'pridobi sketch informacije
vID = swSkPt.GetID
'shranimo posamezno točko v matriko nPt
nPt(0) = swSkPt.x: nPt(1) = swSkPt.Y: nPt(2) = swSkPt.Z
'zapiše točke v datoteke
'množimo jih s 1000 da dobimo mm, osnovne enote so metri
Write #1, "x=" & nPt(0) * 1000 & " " & "y=" & nPt(1) * 1000 & " " & "z=" & nPt(2) * 1000
End Sub
Sub main()
Dim SwApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swFeat As SldWorks.Feature
Dim swSketch As SldWorks.Sketch
Dim vSkPtArr As Variant
Dim vSkPt As Variant
Dim swSkPt As SldWorks.SketchPoint
Set SwApp = Application.SldWorks
Set swModel = SwApp.ActiveDoc
Set swSelMgr = swModel.SelectionManager
Set swFeat = swSelMgr.GetSelectedObject6(1, 0)
Set swSketch = swFeat.GetSpecificFeature2
'preverjamo, če točke v sketchu sploh obstajajo
vSkPtArr = swSketch.GetSketchPoints2: If IsEmpty(vSkPtArr) Then Exit Sub
'pot do datoteke, kamor bodo shranjene točke
Open "c:\tocke.txt" For Output As #1
'For zanka, da dobimo vse točke v sketchu
For Each vSkPt In vSkPtArr
Set swSkPt = vSkPt
ProcessSketchPoint SwApp, swModel, swSkPt
Next vSkPt
'zapremo datoteko, ko končani operaciji
Close #1
End Sub