Vielen Dank, Stefan! Dein Code funktioniert, wie nicht anders zu erwarten, reibungslos. Leider lag ich mit der Interpretation von SWX
-Befehlen falsch.
Das erste swDraw.Extension.SetUserPreferenceInteger setzt die tangentiale Kante auf durchgehend, und die von dir bearbeitete Schleife macht eine dünne Linie daraus. Die Linienenden werden dabei noch nicht entfernt.
Nach langem Suchen hab ich einen Verdächtigen für diesen Befehl in swDraw.Extension.SetUserPreferenceInteger gefunden, aber die Zeile hat keine Wirkung. Bin ich der Einzige, der die API-Onlinehilfe seit Jahren mit jeder Version konsequent unverständlicher findet? Hab ich da eine falsche Syntax oder den falschen Befehl am Wickel?
So sieht's jetzt aus:
Dim swApp As SldWorks.SldWorks
Dim swView As SldWorks.View 'Object 'SldWorks.View
Dim swDraw As SldWorks.DrawingDoc 'Object 'SldWorks.DrawingDoc
Dim ModelDocExtension As ModelDocExtension
Dim boolstatus As Boolean
'Public Enum DocumentTypes_e
Public Const swDocNONE = 0
Public Const swDocPART = 1
Public Const swDocASSEMBLY = 2
Public Const swDocDRAWING = 3
Public Const swDocSDM = 4
Public Enum swDisplayTangentEdges_e
swTangentEdgesHidden = 0
swTangentEdgesVisibleAndFonted = 1
swTangentEdgesVisible = 2
End Enum
'Public Enum EdgesTangentEdgeDisplay_e
Public Const swEdgesTangentEdgeDisplayVisible = 1
Public Const swEdgesTangentEdgeDisplayPhantom = 2
Public Const swEdgesTangentEdgeDisplayRemoved = 3
'Public Const swLineFontTangentEdgesStyle = 70
Private Sub SetTangentialeKanten()
Dim value As Variant
boolstatus = swDraw.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swLineFontTangentEdgesStyle, 0, swLineStyles_e.swLineCONTINUOUS) 'setzt tangentiale Kanten auf durchgehend, aber nicht dünn
boolstatus = swDraw.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swEdgesTangentEdgeDisplay, swUserPreferenceOption_e.swDetailingNoOptionSpecified, EdgesTangentEdgeDisplay_e.swEdgesTangentEdgeDisplayRemoved) '<<< tut nichts
Set swView = swDraw.GetFirstView 'erste Ansicht=Blattformat
' erste "echte" Ansicht selektieren
Set swView = swView.GetNextView
Do While Not swView Is Nothing
Call swView.SetDisplayTangentEdges2(1) 'swTangentEdgesVisibleAndFonted = dünne Volllinien
boolstatus = ModelDocExtension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swDetailingDimensionStandard, swUserPreferenceOption_e.swDetailingNoOptionSpecified, swDetailingStandard_e.swDetailingStandardISO)
Set swView = swView.GetNextView
Loop
End Sub
Sub main()
Set swApp = Application.SldWorks
Set swDraw = swApp.ActiveDoc 'an's aktuelle SWX-Dokument anklinken
Set ModelDocExtension = swDraw.Extension
If Not swDraw.GetType = swDocDRAWING Then 'wenn keine Zeichnung, Meldung und Ende
MsgBox "Das geht nur bei Zeichnungen", vbCritical, "Falsche Datei"
Exit Sub
End If
Call SetTangentialeKanten
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP