Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API Farbe

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
  
Technikerschüler der staatlichen Feintechnikschule Schwenningen zu Besuch bei SolidCAM GmbH in Schramberg
Autor Thema:  API Farbe (3497 mal gelesen)
Johannes Sauber
Mitglied
Masterand


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

Beiträge: 10
Registriert: 12.05.2011

erstellt am: 17. Sep. 2012 11:02    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

Servus,
ich habe vor einiger Zeit ein Makro geschrieben, das Step-Dateien einliest und sie als Jpeg abspeichert also über savebmp. Hierfür muss ich das Model vorbereiten also Hintergrundfarbe, Ansicht etc.. Nun hat sich bei uns die SW Version geändert von SW2010 auf SW2012 was keine gravierenden Probleme bereitet hat lediglich die Modellfarbe zu ändern funktioniert nicht mehr mit dem bisherigen Code.

        swModel = CType(swApp.ActiveDoc, ModelDoc2)
        'Teilefarbe festlegen
        Dim swXMatProp(8) As Double
        swXMatProp(0) = CDbl(230 / 255)    'rot
        swXMatProp(1) = CDbl(230 / 255)    'grün
        swXMatProp(2) = CDbl(230 / 255)    'blau
        swXMatProp(3) = CDbl(100 / 100)    'Ambient
        swXMatProp(4) = CDbl(100 / 100)    'Diffuse
        swXMatProp(5) = CDbl(100 / 100)    'Specular
        swXMatProp(6) = CDbl(31 / 100)      'Shininess
        swXMatProp(7) = CDbl(0 / 100)      'Transparency
        swXMatProp(8) = CDbl(0 / 100)      'Emission
        swModel.MaterialPropertyValues = (swXMatProp)
        swModel.EditRebuild3()

Ist diese Problematik bekannt bzw. wie kann ich es ändern, sodass die Teilefarbe in SW 2012 geändert wird?

Mfg
Johannes

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1358
Registriert: 24.07.2002

AutoCAD ACA 2019
Solidworks 2021 Sp5.1
Enterprise PDM 2021 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Dell Ultrasharp U2415
Dell M4800

erstellt am: 17. Sep. 2012 11:12    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 Johannes Sauber 10 Unities + Antwort hilfreich

Hi Johannes,

Könnte es sein das du erst alle Erscheinunsbilder bei dem Modell entfernen musst damit deine Farbe sichtbar wird?!
Nimm mal ein Teil auf welches du dein Makro ändernder hast und schau die die Erscheinungsbildanzeige an und lösche mal alle und lass dein Makro nochmal laufen.

Gruß, Carsten

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 17. Sep. 2012 11:54    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 Johannes Sauber 10 Unities + Antwort hilfreich

Hallo Johannes,

der Code funktioniert bei mir einwandfrei unter SW2012 x64 SP4.0 als VBA-Makro

Code:
Sub main()
   
    Dim swApp As Object
    Dim Part As Object

    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc

    'Teilefarbe festlegen
    Dim swXMatProp(8) As Double
    swXMatProp(0) = CDbl(120 / 255)    'rot
    swXMatProp(1) = CDbl(230 / 255)    'grün
    swXMatProp(2) = CDbl(230 / 255)    'blau
    swXMatProp(3) = CDbl(100 / 100)    'Ambient
    swXMatProp(4) = CDbl(100 / 100)    'Diffuse
    swXMatProp(5) = CDbl(100 / 100)    'Specular
    swXMatProp(6) = CDbl(31 / 100)     'Shininess
    swXMatProp(7) = CDbl(40 / 100)     'Transparency
    swXMatProp(8) = CDbl(0 / 100)      'Emission
   
    Part.MaterialPropertyValues = (swXMatProp)
   
    Part.EditRebuild3

End Sub



Was klappt denn bei dir nicht, kommt irgendeine Fehlermeldung, oder inwiefern stellt sich das Ergebnis anders dar, als du es erwartest?

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

Johannes Sauber
Mitglied
Masterand


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

Beiträge: 10
Registriert: 12.05.2011

erstellt am: 17. Sep. 2012 12:28    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

Servus Stefan,

leider ändert sich die Farbe des Objektes nicht. Eine Fehlermeldung erscheint nicht. Bei SW 2010 funktioniert das gleiche Release einwandfrei. Bei SW 2012 funktioniert nur das setzten der Farbe nicht.
Der Vorschlag von Carsten klappt. Also wenn ich manuell das Erscheinungsbild lösche. Danke Hierfür!
Wie kann ich per Api auf den Body zugreifen, damit ich dein Makro Nr. 31 verwenden kann, da die Methode getBodies2 für mein modeldoc objekt nicht existiert.

vbody = ModelDoc.GetBodies2(swSolidBody, False)

funktioniert leider nicht.

Danke für die Hilfe
Johannes

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 17. Sep. 2012 12:54    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 Johannes Sauber 10 Unities + Antwort hilfreich

Hallo Johannes,

hast du es mal mit meinem Quelltext probiert? Welche SW2012 Servicepack hast du? Vielleicht ist irgendwas an dem Modell besonderes, kannst du das hochladen? Warum solltest du keine Volumenkörper kriegen, außer es sind keine da? Oder du hast das falsche ModelDoc erwischt. Machst du die Automatisierung von einem Makro oder einem externen Tool aus? Hast du sicher das richtige SolidWorks-Session erwischt?

Alles Fragen, die dir vielleicht helfen das zu lösen, Antworten hab ich im Moment keine, da es prinzipiell mit diesem Code (bei mir) klappt.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

Johannes Sauber
Mitglied
Masterand


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

Beiträge: 10
Registriert: 12.05.2011

erstellt am: 19. Sep. 2012 13:40    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

Servus Stefan,

danke für die Hinweise!

Ich habe es jetzt hinbekommen indem ich über alle Features laufe und dann die Farbe der Komponenten abändere. Ich kann mir zwar immernoch nicht erklären, warum es bei 2010 funktioniert und bei 2012 nicht aber immerhin klappt es jetzt. Hier noch mein Lösungscode.

        swSelMgr = CType(swModel.SelectionManager, SelectionMgr)
        Dim strAssemblyName As String = swModel.GetTitle
        Dim swComponent As Component2
        Dim swComponent2 As Component2
        Dim oSwFeatureManager As FeatureManager = swModel.FeatureManager
        Dim bolHit As Boolean = False
        Dim boolselect As Boolean = False

        ' Die Farbe ist in jeder Komponente einzeln Hinterlegt!
        For Each oSWFeature As Feature In CType(oSwFeatureManager.GetFeatures(False), Array)
            boolselect = swModel.Extension.SelectByID(oSWFeature.Name & "@" & strAssemblyName, "COMPONENT", 0, 0, 0, False, 0, Nothing)
            If boolselect = True Then
                swComponent = swSelMgr.GetSelectedObjectsComponent3(1, 0)
                swComponent2 = CType(swComponent, Component2)
                swComponent2.MaterialPropertyValues = swXMatPropArray
                swModel.EditRebuild3()
                bolHit = True
            End If
        Next

Servus und Danke

Johannes

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