Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API-Frage ...

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
  
InnovateNext 26. in Seligenstadt, eine Veranstaltung am 23.10.2025
Autor Thema:  API-Frage ... (668 mal gelesen)
Teddibaer
Ehrenmitglied V.I.P. h.c.
Struktur-Experte



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

Beiträge: 2125
Registriert: 09.02.2004

erstellt am: 01. Sep. 2004 08:31    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

Guten Morgen zusammen,

heute mal wieder was für die APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)-Jünger:

Unten habe ich ein paar Auszüge aus der APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)-Hilfe von SWXSolidWorks. So ganz schlau werde ich da nicht. Ich möchte mittels Klick auf Button in UserForm die Dokumenteigenschaften-Linien-Kanteart-Linienart bzw.
Dokumenteigenschaften-Linien-Kanteart-Linienstärke ändern.
Folgendes habe ich schon zusammengetragen:

Welche Variablen (Typen) müssen definiert sein, und wie lautet die Befehlsyntax für z.B.:

Setzte Eigenschaft(Strichstärke) der sichbaren Kanten in geöffneter Zeichnung auf dünn.


...
...
...
Dim SwApp As Object
Dim DrawingDoc As Object

Dim Annotation As Object
Dim DatumTag As Object
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object

'Input
    Dim userPreferenceValue As Long
    Dim value As Long

'Output
    Dim retval As Bool
   
   


Private Sub CommandButton1_Click()
    'Linienstärken auf dünn setzen
   
    ' an SolidWorks und das aktuelle Dokument anklinken
    Set SwApp = CreateObject("SldWorks.Application")
    Set DrawingDoc = SwApp.ActiveDoc
    If DrawingDoc Is Nothing Then
        MsgBox ("No active document / Kein aktives Dokument")
        End
    End If
       
        If DrawingDoc.GetType() = swDocPART Then
            Call MsgBox("Aktives Dokument ist ein 3D-Modell, Makro ändert Linien nur für Zeichnungen.")
            End
            End If
   
    'Jetzt soll die Eigenschaft gesetzt werden!!!
    userPreferenceValue = "swLineCONTINUOUS"
    value = "swLW_THIN"
    retval = DrawingDoc.SetUserPreferenceIntegerValue(userPreferenceValue, value)
   
End Sub
...
...
...


Für Hilfe jeglicher Art wäre ich echt dankbar.


Anhang:
----------------------------

Die gibt's:
swLineFontVisibleEdgesThickness
swLineFontVisibleEdgesStyle
swLineFontHiddenEdgesThickness
swLineFontHiddenEdgesStyle
swLineFontSketchCurvesThickness
swLineFontSketchCurvesStyle
swLineFontDetailCircleThickness
swLineFontDetailCircleStyle
swLineFontSectionLineThickness
swLineFontSectionLineStyle
swLineFontDimensionsThickness
swLineFontDimensionsStyle
swLineFontConstructionCurvesThickness
swLineFontConstructionCurvesStyle
swLineFontCrosshatchThickness
swLineFontCrosshatchStyle
swLineFontTangentEdgesThickness
swLineFontTangentEdgesStyle
swLineFontDetailBorderThickness
swLineFontDetailBorderStyle
swLineFontCosmeticThreadThickness
swLineFontCosmeticThreadStyle

Und das sind die values
swLineTypes_e
Specifies values for line styles used in layers.
swLineCONTINUOUS
swLineHIDDEN
swLinePHANTOM
swLineCHAIN
swLineCENTER
swLineSTITCH
swLineCHAINTHICK
swLineDEFAULT

swLineWeights_e
Specifies values for line weights used in layers.
swLW_NONE
swLW_THIN
swLW_NORMAL
swLW_THICK
swLW_THICK2
swLW_THICK3
swLW_THICK4
swLW_THICK5
swLW_THICK6


Syntax (OLE Automation)
retval = ModelDoc2.SetUserPreferenceIntegerValue ( userPreferenceValue, value )

Input:
(long) userPreferenceValue
User preference value as defined in swUserPreferenceIntegerValue_e

Input:
(long) value
Numeric value you  give to the user preference specified in userPreferenceValue

Return:
(BOOL) retval
TRUE if the setting is changed successfully, FALSE otherwise

Syntax (COM)
status = ModelDoc2->SetUserPreferenceIntegerValue ( userPreferenceValue, value, &retval )

Input:
(long) userPreferenceValue
User preference value as defined in swUserPreferenceIntegerValue_e

Input:
(long) value
Numeric value to give to the user preference specified in userPreferenceValue

Output:
(VARIANT_BOOL) retval
TRUE if the setting is changed successfully, FALSE otherwise

Return:
(HRESULT) status
S_OK if successful


Remarks
This method is equivalent to interactively setting system and document options in the SolidWorks software.


------------------
Gruß, der Teddibaer
---------
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
John Osborne (1929-94)

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

JR
Mitglied
Konstrukteur


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

Beiträge: 106
Registriert: 21.10.2003

Alibre Design Expert V26
Keyshot 11.2

erstellt am: 01. Sep. 2004 09:11    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 Teddibaer 10 Unities + Antwort hilfreich

Hallo Teddibaer,
um z.B. die sichtbaren Kanten auf Dünn zu setzen, versuch mal folgendes.
(Die Werte nicht in Gänsefüßchen setzen, da es sonst Zeichenketten statt Integerwerte sind !)

Code:

retval = DrawingDoc.SetUserPreferenceIntegerValue(swLineFontVisibleEdgesThickness, swLW_THIN)

Ich hoffe das war das was Du gemeint hast...

Gruss Jörn

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

Teddibaer
Ehrenmitglied V.I.P. h.c.
Struktur-Experte



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

Beiträge: 2125
Registriert: 09.02.2004

erstellt am: 01. Sep. 2004 09:32    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

Tja so ähnlich,
so wie ich die APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface)-Hilfe verstehe liefert retval (REturnVALue) einen Wert ZURÜCK.
Soll heissen, die Zeile (und viele viele andere) habe ich schon mal ausprobiert, leider ohne Erfolg.
Trotzdem Danke.

------------------
Gruß, der Teddibaer
---------
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
John Osborne (1929-94)

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

JR
Mitglied
Konstrukteur


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

Beiträge: 106
Registriert: 21.10.2003

Alibre Design Expert V26
Keyshot 11.2

erstellt am: 01. Sep. 2004 09:37    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 Teddibaer 10 Unities + Antwort hilfreich

Hallo Teddibaer,
bei mir funktioniert es, daher liegt der Fehler vermutlich bei der Definition von retval.
Da müßte es heißen
Code:

Dim retval as Boolean ' (nicht Bool !)

P.S.: retval kann man natürlich auch weglassen

Code:

DrawingDoc.SetUserPreferenceIntegerValue wLineFontVisibleEdgesThickness, swLW_THIN

Gruss Jörn

[Diese Nachricht wurde von JR am 01. Sep. 2004 editiert.]

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

JR
Mitglied
Konstrukteur


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

Beiträge: 106
Registriert: 21.10.2003

erstellt am: 01. Sep. 2004 10:22    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 Teddibaer 10 Unities + Antwort hilfreich

Hallo Teddibaer,
hier mein komplettes Makro, dass bei mir funktioniert.
Vielleicht kann es Dir als Grundlage dienen.

Code:

' Achtung:
' Mit dem Menübefehl Extras\Verweise... die "SolidWorks Constant type library" einbinden !!

Option Explicit

Dim swApp  As SldWorks.SldWorks
Dim swModel As Object

Sub main()

  Dim retVal As Boolean
 
  Set swApp = Application.SldWorks
  Set swModel = swApp.ActiveDoc
 
  ' Ist ein Dokument geöffnet ?
  If swModel Is Nothing Then
    MsgBox "Kein Dokument geöffnet !"
    Exit Sub
  End If
 
  ' Ist das aktive Dokument eine Zeichnung ?
  If swModel.GetType <> swDocDRAWING Then
    MsgBox "Das aktive Dokument ist keine Zeichnung !"
    Exit Sub
  End If
 
  ' Sichtbare Kanten auf Dünn setzen
  retVal = swModel.SetUserPreferenceIntegerValue(swLineFontVisibleEdgesThickness, swLW_THIN)

  ' Prüfen ob das setzen der Liniendicke geklappt hat
  If retVal Then
    MsgBox "Ok"
  Else
    MsgBox "Oops"
  End If
 
  ' Sichtbare Kanten auf Gestrichelt setzen
  retVal = swModel.SetUserPreferenceIntegerValue(swLineFontVisibleEdgesStyle, swLineHIDDEN)
 
  ' Prüfen ob das setzen des Linienstils geklappt hat
  If retVal Then
    MsgBox "Ok"
  Else
    MsgBox "Oops"
  End If
 
End Sub


Gruss Jörn

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

Teddibaer
Ehrenmitglied V.I.P. h.c.
Struktur-Experte



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

Beiträge: 2125
Registriert: 09.02.2004

**CSWP 06/2004**
--
MacBook Air M1
MacBook Pro M1-Max

erstellt am: 01. Sep. 2004 10:39    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

Soweit erst mal vorab:

Es sieht schon verdammt gut aus: DANKE und 10P4U

------------------
Gruß, der Teddibaer
---------
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
John Osborne (1929-94)

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 01. Sep. 2004 12:19    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 Teddibaer 10 Unities + Antwort hilfreich

Aheu Teddibaer,

Wird durch die CreateObject - Geschichte nicht eine neue Instanz von Solidworks aufgemacht? Nimm lieber GetObject(, "SldWorks.Application")

Was die Liniengeschichten angeht, so habe ich mich damit noch nicht befasst und hab auch nicht die Zeit das grade zu tun. Mir ist nur obiger Punkt gleich in Auge gestochen.

Bis dann,
Kalle

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