Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  K-Faktor über Makro bzw. API verändern (VBA)

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
SOLIDWORKS Blech Schulung, ein Seminar am 26.01.2026
Autor Thema:  K-Faktor über Makro bzw. API verändern (VBA) (2571 mal gelesen)
Konrad
Mitglied
 


Sehen Sie sich das Profil von Konrad an!   Senden Sie eine Private Message an Konrad  Schreiben Sie einen Gästebucheintrag für Konrad

Beiträge: 53
Registriert: 02.05.2001

erstellt am: 05. Jul. 2005 12:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo an alle Freaks in VBA bzw. des API von Solidworks:

Ich verzweifle gerade an einem Versuch, den k-Faktor einer "skizzierten Biegung" eines Sheet-metal Teiles über VBA zu verändern.
Der Code stammt größtenteils aus den Beispielen Solidworks 2005
Hier der Code:
_____________________________________________________________________
'--------------------------------------------
'
' Preconditions:
'      (1) Model document is open.
'      (2) Sketched bend is selected.
'
' Postconditions: Size of bend radius of the selected sketched bend
'      is increased by 1.5 times.
'---------------------------------------------

Option Explicit

Public Enum swFlangePositionTypes_e
    swFlangePositionTypeMaterialInside = 1
    swFlangePositionTypeMaterialOutside = 2
    swFlangePositionTypeBendOutside = 3
    swFlangePositionTypeBendCenterLine = 4
    swFlangePositionTypeBendSharp = 5
End Enum

Public Enum swBendAllowanceTypes_e
    swBendAllowanceBendTable = 1
    swBendAllowanceKFactor = 2
    swBendAllowanceDirect = 3
    swBendAllowanceDeduction = 4
End Enum

Sub DumpCustomBendAllowanceInfo( _
    sPadStr As String, _
    swCustBendAllow As SldWorks.CustomBendAllowance)

    Debug.Print sPadStr & "Type                    = " & swCustBendAllow.Type
    Print #1, sPadStr & "Type                    = " & swCustBendAllow.Type

    Debug.Print sPadStr & "BendAllowance            = " & swCustBendAllow.BendAllowance * 1000# & " mm"
    Print #1, sPadStr & "BendAllowance            = " & swCustBendAllow.BendAllowance * 1000# & " mm"

    Debug.Print sPadStr & "BendDeduction            = " & swCustBendAllow.BendDeduction * 1000# & " mm"
    Print #1, sPadStr & "BendDeduction            = " & swCustBendAllow.BendDeduction * 1000# & " mm"

    Debug.Print sPadStr & "BendTableFile            = " & swCustBendAllow.BendTableFile
    Print #1, sPadStr & "BendTableFile            = " & swCustBendAllow.BendTableFile

    Debug.Print sPadStr & "KFactor                  = " & swCustBendAllow.KFactor
    Print #1, sPadStr & "KFactor                  = " & swCustBendAllow.KFactor

End Sub

Sub main()

    Dim swApp                  As SldWorks.SldWorks
    Dim swModel                As SldWorks.ModelDoc2
    Dim swSelMgr                As SldWorks.SelectionMgr
    Dim swSelData              As SldWorks.SelectData
    Dim swFeat                  As SldWorks.feature
    Dim swSketchBend            As SldWorks.SketchedBendFeatureData
    Dim swBendFeat              As SldWorks.BendsFeatureData
    Dim swCustBendAllow        As SldWorks.CustomBendAllowance
    Dim swFace                  As SldWorks.face2
    Dim swEnt                  As SldWorks.Entity
    Dim nFace_X                As Double
    Dim nFace_Y                As Double
    Dim nFace_Z                As Double
    Dim i                      As Long
    Dim bRet                    As Boolean
    Dim Destpath                As String

   

    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swSelData = swSelMgr.CreateSelectData
    Set swFeat = swSelMgr.GetSelectedObject5(1)
    Set swSketchBend = swFeat.GetDefinition
    Set swCustBendAllow = swSketchBend.GetCustomBendAllowance

   

    Debug.Print "File = " & swModel.GetPathName
    Dim PSTR As Integer
    PSTR = Len(swModel.GetPathName)
    Destpath = Left(swModel.GetPathName, PSTR - 7) & ".txt"
    Open Destpath For Output As #1


    Debug.Print "  " & swFeat.Name
    Print #1, "    " & swFeat.Name
   
    Debug.Print "    BendAngle                  = " & swSketchBend.BendAngle * 57.2957795130823 & " deg"
    Print #1, "    BendAngle = " & swSketchBend.BendAngle * 57.2957795130823 & "; deg; "

    Debug.Print "    BendRadius                = " & swSketchBend.BendRadius * 1000# & " mm"
    Print #1, "    BendRadius                = " & swSketchBend.BendRadius * 1000# & " mm"

    Debug.Print "    PositionType              = " & swSketchBend.PositionType
    Print #1, "    PositionType              = " & swSketchBend.PositionType

    Debug.Print "    ReverseDirection          = " & swSketchBend.ReverseDirection
    Print #1, "    ReverseDirection          = " & swSketchBend.ReverseDirection

    Debug.Print "    UseDefaultBendAllowance    = " & swSketchBend.UseDefaultBendAllowance
    Print #1, "    UseDefaultBendAllowance    = " & swSketchBend.UseDefaultBendAllowance

    Debug.Print "    UseDefaultBendRadius      = " & swSketchBend.UseDefaultBendRadius
    Print #1, "    UseDefaultBendRadius      = " & swSketchBend.UseDefaultBendRadius

    ' Roll back to get to fixed face

    bRet = swSketchBend.AccessSelections(swModel, Nothing): Debug.Assert bRet

    Set swFace = swSketchBend.GetFixedFace(nFace_X, nFace_Y, nFace_Z)

    Set swEnt = swFace
   
    Debug.Print "    Fixed Face                = (" & nFace_X * 1000# & ", " & nFace_Y * 1000# & ", " & nFace_Z * 1000# & ") mm"

    Debug.Print "    Custom Bend Allowance:"
    Print #1, "    Custom Bend Allowance      = " & swCustBendAllow.Type & "  (Biegetabelle = 1; K-Faktor = 2; Direct = 3; Deduction = 4) " 

    DumpCustomBendAllowanceInfo "      ", swCustBendAllow


    bRet = swEnt.Select4(True, swSelData): Debug.Assert bRet
    bRet = swEnt.Select4(True, swSelData): Print #1, bRet
    ' Make some changes

    swSketchBend.UseDefaultBendRadius = False
    swSketchBend.BendRadius = swSketchBend.BendRadius * 1.5

    MsgBox swCustBendAllow.KFactor

    swCustBendAllow.KFactor = 0.52

    ' Apply changes
   
        swSketchBend.SetCustomBendAllowance (swCustBendAllow)


    bRet = swFeat.ModifyDefinition(swSketchBend, swModel, Nothing): Print #1, bRet
    Close #1

    End Sub
_______________________________________________


Kann mir irgend jemand weiterhelfen, wie die Zeile:

swSketchBend.SetCustomBendAllowance (swCustBendAllow)

richtig heissen müsste, damit der k-Faktor auch richtig an das Feature übergeben wird ????
Ich weiss, ich erwarte damit allerhand, doch würde sich die Mühe bestimmt lohnen, da das Thema Biegezugabe, gestreckte Länge bei Blechteilen immer wieder eine große Rolle spielt und mir nun ein kleines Tool vorschwebt, das sehr hilfreich sein könnte.

mfg
Konrad

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Konrad
Mitglied
 


Sehen Sie sich das Profil von Konrad an!   Senden Sie eine Private Message an Konrad  Schreiben Sie einen Gästebucheintrag für Konrad

Beiträge: 53
Registriert: 02.05.2001

erstellt am: 05. Jul. 2005 13:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi,

zunächst vielen Dank für die Antwort.
Habe den Namen der Variablen jedoch einmal geändert und siehe da, es tut.
Offensichtlich ist der Name swSketchBend schuldig.
Bei mir heist nun dieser swFeatData und schon "tuts"

bis auf das kleine Manko, dass das Bendfeature dann im Einfügemodus stehenbleibt. Ich suche nun noch nach einem Befehl, der die Konstruktion dann aktualisiert.

mfg
Konrad

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bastl braucht hilfe
Mitglied



Sehen Sie sich das Profil von bastl braucht hilfe an!   Senden Sie eine Private Message an bastl braucht hilfe  Schreiben Sie einen Gästebucheintrag für bastl braucht hilfe

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 10. Jan. 2006 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Konrad 10 Unities + Antwort hilfreich

Hallo Konrad!

Kannst du bitte den kompletten Code posten, mit deinem bisherigen und der Ergänzung komme ich nicht wirklich weiter, da bei mir der Trick mit dem swFeatData nicht funktioniert!
Wäre super deinen ganzten Code zu sehen! Hab derzeit fast das gleiche Problem und bin für jede Art von Hilfe dankbar!
Gruß Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Konrad
Mitglied
 


Sehen Sie sich das Profil von Konrad an!   Senden Sie eine Private Message an Konrad  Schreiben Sie einen Gästebucheintrag für Konrad

Beiträge: 53
Registriert: 02.05.2001

erstellt am: 10. Jan. 2006 16:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Sebastian, anbei auf die Schnelle das Codefragment:


'--------------------------------------------
'
' Preconditions:
'      (1) Model document is open.
'      (2) Sketched bend is selected.
'
' Postconditions: Size of bend radius of the selected sketched bend
'      is increased by 1.5 times.
'---------------------------------------------

Option Explicit

Public Enum swFlangePositionTypes_e
    swFlangePositionTypeMaterialInside = 1
    swFlangePositionTypeMaterialOutside = 2
    swFlangePositionTypeBendOutside = 3
    swFlangePositionTypeBendCenterLine = 4
    swFlangePositionTypeBendSharp = 5
End Enum

Public Enum swBendAllowanceTypes_e
    swBendAllowanceBendTable = 1
    swBendAllowanceKFactor = 2
    swBendAllowanceDirect = 3
    swBendAllowanceDeduction = 4
End Enum

Sub DumpCustomBendAllowanceInfo( _
    sPadStr As String, _
    swCustBendAllow As SldWorks.CustomBendAllowance)

    Debug.Print sPadStr & "Type                    = " & swCustBendAllow.Type
    Print #1, sPadStr & "Type                    = " & swCustBendAllow.Type

    Debug.Print sPadStr & "BendAllowance            = " & swCustBendAllow.BendAllowance * 1000# & " mm"
    Print #1, sPadStr & "BendAllowance            = " & swCustBendAllow.BendAllowance * 1000# & " mm"

    Debug.Print sPadStr & "BendDeduction            = " & swCustBendAllow.BendDeduction * 1000# & " mm"
    Print #1, sPadStr & "BendDeduction            = " & swCustBendAllow.BendDeduction * 1000# & " mm"

    Debug.Print sPadStr & "BendTableFile            = " & swCustBendAllow.BendTableFile
    Print #1, sPadStr & "BendTableFile            = " & swCustBendAllow.BendTableFile

    Debug.Print sPadStr & "KFactor                  = " & swCustBendAllow.KFactor
    Print #1, sPadStr & "KFactor                  = " & swCustBendAllow.KFactor

End Sub

Sub main()

    Dim swApp                  As SldWorks.SldWorks
    Dim swModel                As SldWorks.ModelDoc2
    Dim swSelMgr                As SldWorks.SelectionMgr
    Dim swSelData              As SldWorks.SelectData
    Dim swFeat                  As SldWorks.feature
    Dim swFeatData              As SldWorks.SketchedBendFeatureData
    'Dim swSketchBend            As SldWorks.SketchedBendFeatureData
    Dim swBendFeat              As SldWorks.BendsFeatureData
    Dim swCustBendAllow        As SldWorks.CustomBendAllowance
    Dim swFace                  As SldWorks.face2
    Dim swEnt                  As SldWorks.Entity
    Dim component              As SldWorks.Component2
    Dim nFace_X                As Double
    Dim nFace_Y                As Double
    Dim nFace_Z                As Double
    Dim i                      As Long
    Dim bRet                    As Boolean
    Dim Destpath                As String

   

    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swSelData = swSelMgr.CreateSelectData
    Set swFeat = swSelMgr.GetSelectedObject5(1)
    Set swFeatData = swFeat.GetDefinition
    'Set swSketchBend = swFeat.GetDefinition
    Set swCustBendAllow = swFeatData.GetCustomBendAllowance

   

    Debug.Print "File = " & swModel.GetPathName
    Dim PSTR As Integer
    PSTR = Len(swModel.GetPathName)
    Destpath = Left(swModel.GetPathName, PSTR - 7) & ".txt"
    Open Destpath For Output As #1


    Debug.Print "  " & swFeat.Name
    Print #1, "    " & swFeat.Name
   
    Debug.Print "    BendAngle                  = " & swFeatData.BendAngle * 57.2957795130823 & " deg"
    Print #1, "    BendAngle = " & swFeatData.BendAngle * 57.2957795130823 & "; deg; "

    Debug.Print "    BendRadius                = " & swFeatData.BendRadius * 1000# & " mm"
    Print #1, "    BendRadius                = " & swFeatData.BendRadius * 1000# & " mm"

    Debug.Print "    PositionType              = " & swFeatData.PositionType
    Print #1, "    PositionType              = " & swFeatData.PositionType

    Debug.Print "    ReverseDirection          = " & swFeatData.ReverseDirection
    Print #1, "    ReverseDirection          = " & swFeatData.ReverseDirection

    Debug.Print "    UseDefaultBendAllowance    = " & swFeatData.UseDefaultBendAllowance
    Print #1, "    UseDefaultBendAllowance    = " & swFeatData.UseDefaultBendAllowance

    Debug.Print "    UseDefaultBendRadius      = " & swFeatData.UseDefaultBendRadius
    Print #1, "    UseDefaultBendRadius      = " & swFeatData.UseDefaultBendRadius

    ' Roll back to get to fixed face

    bRet = swFeatData.AccessSelections(swModel, Nothing): Debug.Assert bRet

    Set swFace = swFeatData.GetFixedFace(nFace_X, nFace_Y, nFace_Z)

    Set swEnt = swFace
   
    Debug.Print "    Fixed Face                = (" & nFace_X * 1000# & ", " & nFace_Y * 1000# & ", " & nFace_Z * 1000# & ") mm"

    Debug.Print "    Custom Bend Allowance:"
    Print #1, "    Custom Bend Allowance      = " & swCustBendAllow.Type & "  (Biegetabelle = 1; K-Faktor = 2; Direct = 3; Deduction = 4) "  'KFactor"

    DumpCustomBendAllowanceInfo "      ", swCustBendAllow


    bRet = swEnt.Select4(True, swSelData): Debug.Assert bRet
    bRet = swEnt.Select4(True, swSelData): Print #1, bRet
    ' Make some changes

    swFeatData.UseDefaultBendRadius = True
    swFeatData.BendRadius = 0.0035
   
  '-------------------------------------------------------------
 
    Dim bdata  As SldWorks.CustomBendAllowance
   
    Set bdata = swFeatData.GetCustomBendAllowance
    'Dim bType As Long
    'bType = bdata.Type
    bdata.BendAllowance = True
    bdata.Type = 2
    bdata.KFactor = 0.45
    'bdata.BendDeduction = 0.003


  '-------------------------------------------------------------

    ' Apply changes
   
    Call swFeatData.SetCustomBendAllowance(bdata)
   
    bRet = swFeat.ModifyDefinition(swFeatData, swModel, component): Print #1, bRet
    Close #1

    End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

jens_oliver
Mitglied
Softwareentwickler


Sehen Sie sich das Profil von jens_oliver an!   Senden Sie eine Private Message an jens_oliver  Schreiben Sie einen Gästebucheintrag für jens_oliver

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 11. Jan. 2006 09:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Konrad 10 Unities + Antwort hilfreich

Hallo,

ein Bauteil kann man mit ModelDoc2.EditRebuild3( ) aktualisieren.

Gruß Oliver

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bastl braucht hilfe
Mitglied



Sehen Sie sich das Profil von bastl braucht hilfe an!   Senden Sie eine Private Message an bastl braucht hilfe  Schreiben Sie einen Gästebucheintrag für bastl braucht hilfe

Beiträge: 32
Registriert: 09.08.2005

erstellt am: 11. Jan. 2006 09:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Konrad 10 Unities + Antwort hilfreich

Hallo Konrad!

Danke für deinen Code!
Er hat mir auf die richtige Spur geholfen.
Solid macht egal wie die Biegetabellendatei heißt aus allen Klein- Großbuchstaben! Das war das Problem, da ich im String den ausgelesenen Dateinamen wieder verwendet habe und Solid mit ihm nichts Anfangen konnte, weil eben alles klein war.

Ausgelesen wurde:
S:\..........\...\...\PR_Aluminium.btl
mit genau dieser Angabe kann Solid aber nichts anfangen.
Die richtige Eingabe muss sein:
S:\..........\...\...\PR_ALUMINIUM.btl

Also aus dem ausgelesenen String Klein- zu Großbuchstaben machen und alles tut!!!!

Danke und Gruß Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz