Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - Feature einfärben

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
  
SolidCAM auf der GROB Hausmesse 2024
Autor Thema:  API - Feature einfärben (2451 mal gelesen)
AlexSchaaf
Mitglied



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

Beiträge: 21
Registriert: 23.09.2014

SWX 2014 SP5

erstellt am: 30. Okt. 2014 15:48    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 Forum,

Ich habe ein Makro, dass ein Part mit 4 Features erzeugt. Diese Features sind alles einzelne Körper, die gefärbt werden sollen.

Ich finde leider keine Methode, mit der ich das Feature, dass ich mit FeatureExtrusion2 erstelle, einfärben kann.
Momentan habe ich einfach eine Traversal durch die Bodies, die dann nacheinander gefärbt werden, allerdings finde ich das sehr unschön und würde gerne, direkt nach dem erzeugen des features, die Farben setzen.

Gibt es keinen API Call ohne Interface Objekt?

Gruß Alex

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 30. Okt. 2014 16: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 Nur für AlexSchaaf 10 Unities + Antwort hilfreich

Hallo Alex

Der Rückgabewert von FeatureExtrusion2 ist ja ein Feature-Objekt.
Also kannst du das doch gleich Einfärben.

CodeSchnippsel mit Ergänzungen zum Beispiel aus der API-Hilfe
http://help.solidworks.com/2011/English/api/sldworksapi/Create_and_Edit_Linear_Sketch_Pattern_Example_VB.htm

Code:
' Create the extrude feature
Set swFeatureMgr = swModel.FeatureManager
Set swFeature = swFeatureMgr.FeatureExtrusion2(True, False, False, 0, 0, 0.0508, 0.381, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, True, True, True, 0, 0, False)
   
Dim vMatProp                    As Variant
vMatProp = swModel.MaterialPropertyValues
    vMatProp(0) = 0#
    vMatProp(1) = 0#
    vMatProp(2) = 1#
    swFeature.SetMaterialPropertyValues2 vMatProp, swInConfigurationOpts_e.swThisConfiguration, ""

' Fit the model in the graphics area
swModel.ViewZoomtofit2

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

AlexSchaaf
Mitglied



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

Beiträge: 21
Registriert: 23.09.2014

SWX 2014 SP5

erstellt am: 31. Okt. 2014 08: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

Hallo Andreas,

vielen dank für deine schnelle hilfe. Leider stürzt mein Solid durch diese Funktion ab.

Die letzten Zeilen im Error Log sind folgende:

Code:
<AD2> "LOAD_ADDIN" "sldfuncfeat.dll" "sldFuncFeat" [0.03] "19.4.0.66" 9 COM.new 1307534961 7
<DOC_OPEN> ".PRTDOT" 1, 1, 0, 0, 3
<EVENT> [EVT_SWITCH_TO_PART]
<PROCMEM> CMD:nobiggrin cOpen ATTR:PageFileBytes=313565184 ATTR:PageFileBytesPeak=315584512 ATTR:PoolNonpagedBytes=183380 ATTR:PoolPagedBytes=2184248 ATTR:PrivateBytes=313565184 ATTR:VirtualBytes=2216644608 ATTR:VirtualBytesPeak=2218663936 ATTR:WorkingSet=322428928 ATTR:WorkingSetPeak=324435968 ATTR:AvailableReservesMask=7 ATTR:GDIHandlesTotal=10000 ATTR:GDIHandlesUsed=1179 </PROCMEM>
<ED>uiSkRectangleProp_c "Rechteck"
<*ED>[0.23]
<ED>uiDveSketchMessageDlg_c "Skizze bearbeiten"
<*ED>[0.05]
<ED>uiSkRectangleProp_c "Rechteck"
<*ED>[0.16]

Es geht aber nichtmal der SolidWorks Absturzbericht auf, nur die Windows Meldung "SldWrks.exe funktioniert nicht mehr"

Gruß Alex

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: 31. Okt. 2014 08:29    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 AlexSchaaf 10 Unities + Antwort hilfreich

Hallo Alex

Zitat:
Original erstellt von AlexSchaaf:
Leider stürzt mein Solid durch diese Funktion ab. [...]
Es geht aber nichtmal der SolidWorks Absturzbericht auf, nur die Windows Meldung "SldWrks.exe funktioniert nicht mehr"

Durch welche Funktion? Andreas hat dir oben je nur einen Codeausschnitt gegeben, den du in dein Makro einbauen musst. Bleibt das Makro vielleicht mit einem Fehler im Editor hängen und deswegen reagiert das SolidWorks nicht mehr? Hast du irgendwo eine Endlosschleife im Makro gebaut? Wartet dein Makro irgendwo auf eine Eingabe, die nicht kommt?

Ciao,
Stefan

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

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

AlexSchaaf
Mitglied



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

Beiträge: 21
Registriert: 23.09.2014

SWX 2014 SP5

erstellt am: 31. Okt. 2014 08:42    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,

Also meine Subs sind eigentlich erstmal nur nach Typ Aufgebaut:

Code:
Private Sub buildAufspannplatte()
    Dim myDisplayDim As Object
    Dim boolstatus As Boolean
    Dim myFeature As Object
    Dim vSkLines As Variant
    Dim vMatProp As Variant
   
    boolstatus = swModel.Extension.SelectByID2("Front Plane", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
    swModel.SketchManager.InsertSketch False
   
    swApp.SetUserPreferenceToggle swInputDimValonCreate, False
    swModel.ClearSelection2 True

    vSkLines = swModel.SketchManager.CreateCenterRectangle(0, 0, 0, dAufspannLength / 2, dAufspannWidth / 2, 0)
    swModel.ClearSelection2 True
    boolstatus = swModel.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
    Set myDisplayDim = swModel.AddDimension2(0, dAufspannHeight + 0.0005, 0)
    swModel.ClearSelection2 True
    boolstatus = swModel.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
    Set myDisplayDim = swModel.AddDimension2(dAufspannWidth + 0.0005, 0, 0)
    swModel.ClearSelection2 True

    Set myFeature = swModel.FeatureManager.FeatureExtrusion2(True, False, True, 0, 0, dAufspannHeight, 0, False, False, False, False, 0, 0, False, False, False, False, False, True, True, swStartOffset, dZwischenHeight, True)
    vMatProp = swModel.MaterialPropertyValues
    vMatProp(0) = 0#
    vMatProp(1) = 0#
    vMatProp(2) = 1#
    myFeature.SetMaterialPropertyValues2 vMatProp, swInConfigurationOpts_e.swThisConfiguration, ""



Beim SingleStep Läuft er problemlos bis zur letzten Code Zeile, dann ist es vorbei. Fehler gibt er keine aus und sobald ich die SetMaterialPropertyValues2 Funktion wieder entferne läuft alles.

Gruß

Edit:

Wenn ich die SolidWorks Konstante swInConfigurationOpts_e.swThisConfiguration durch 1 ersetze, geht das Debugger Fenster auf.

Folgende Fehlermeldung ist zu sehen:

Code:
Laufzeitfehler '-1072365553 (c015000f)':
Automatisierungsfehler

[Diese Nachricht wurde von AlexSchaaf am 31. Okt. 2014 editiert.]

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 31. Okt. 2014 09:56    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 AlexSchaaf 10 Unities + Antwort hilfreich

Hallo Alex

Hier mal ein komplettes Beispiel, welches bei mir funktioniert.

Code:
Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swSketchMgr As SldWorks.SketchManager
Dim swFeature As SldWorks.Feature
Dim swFeatureMgr As SldWorks.FeatureManager
Dim vSkLines As Variant
Dim boolstatus As Boolean

Sub main()
   
    Set swApp = Application.SldWorks
   
' Create part document
    Set swModel = swApp.NewDocument(swApp.GetUserPreferenceStringValue(8), 0, 0, 0)
    'Set swModel = swApp.ActiveDoc
   
' Select the Front plane 'Name der Ebene anpassen
    Set swModelDocExt = swModel.Extension
    boolstatus = swModelDocExt.SelectByID2("Vorne", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
   
' Open a sketch and sketch a rectangle
    Set swSketchMgr = swModel.SketchManager
    swSketchMgr.InsertSketch True
    vSkLines = swSketchMgr.CreateCornerRectangle(-0.08, 0.05, 0, 0.08, -0.05, 0)
   
' Create the extrude feature
    Set swFeatureMgr = swModel.FeatureManager
    Set swFeature = swFeatureMgr.FeatureExtrusion2(True, False, False, 0, 0, 0.05, 0, False, False, False, False, 0, 0, False, False, False, False, True, True, True, 0, 0, False)
   
'Farbe auf Blau ändern
'[ R, G, B, Ambient, Diffuse, Specular, Shininess, Transparency, Emission ]
    Dim vMatProp(8) As Double
    vMatProp(0) = 0    'R
    vMatProp(1) = 0    'G
    vMatProp(2) = 1    'B
    vMatProp(3) = 1    'Ambient
    vMatProp(4) = 1    'Diffuse
    vMatProp(5) = 0.8  'Specular
    vMatProp(6) = 0.3  'Shininess
    vMatProp(7) = 0    'Transparency
    vMatProp(8) = 0    'Emission
   
'Farbe dem Feature zuweisen
    swFeature.SetMaterialPropertyValues2 vMatProp, 1, ""
   
' Fit the model in the graphics area
    swModel.ViewZoomtofit2

End Sub


Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

AlexSchaaf
Mitglied



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

Beiträge: 21
Registriert: 23.09.2014

SWX 2014 SP5

erstellt am: 31. Okt. 2014 10:23    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 Andreas,

und wieder einmal hast du mir die Lösung gebracht, ich danke dir!

Es lag bei mir an der Definition des FeatureManagers. Nachdem ich den FeatureManager in ein eigenes Object geschoben habe, funktioniert es auch bei mir. Seltsam finde ich das aber schon, da es doch eigentlich egal sein müsste, ob ich

Code:
    Set swFeatureMgr = swModel.FeatureManager
    Set swFeature = swFeatureMgr.FeatureExtrusion2(True, False, False, 0, 0, 0.05, 0, False, False, False, False, 0, 0, False, False, False, False, True, True, True, 0, 0, False)
swFeature.SetMaterialPropertyValues2 vMatProp, 1, ""

oder
Code:
set swFeature = swModel.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.05, 0, False, False, False, False, 0, 0, False, False, False, False, True, True, True, 0, 0, False)
swFeature.SetMaterialPropertyValues2 vMatProp, 1, ""

Kannst du mir dazu noch eine erklärung geben?
Im Objekt swFeature sollte doch in beiden fällen das selbe enthalten sein?

Gruß Alex

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

AlexSchaaf
Mitglied



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

Beiträge: 21
Registriert: 23.09.2014

SWX 2014 SP5

erstellt am: 04. Nov. 2014 15: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


Mold_Builder.zip

 
Hallo,


Im Anhang habe ich mal das Fertige Makro. Falls jemand dazu verbesserungsvorschläge hat, auch bezüglich des Programmierstils, bin ich jederzeit dafür offen.

Falls jemand code von mir adaptiert, würde ich mich über einen credit freuen.

Danke nochmal an Andreas, der mir die Farbfunktion mehr oder weniger geliefert hat =)

Gruß Alex

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