| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| FMB |
Autor
|
Thema: Mal wieder die API (MaterialPropertyValues) (292 mal gelesen)
|
Kalle Mitglied Student
Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 25. Mrz. 2002 11:12 <-- editieren / zitieren --> Unities abgeben:
Aloah API -Spezialisten ich möchte von einem Teil in einer Baugruppe die Komponenteneigenschaften was die Farben usw. angeht auslesen und einen der Werte ändern und wieder zurückschreiben. Der Code dazu müsste ja dann ungefähr so aussehen (auf's wesentliche reduziert): Code:
Dim swApp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long Dim Annotation As Object Dim Gtol As Object Dim DatumTag As Object Dim FeatureData As Object Dim Feature As Object Dim Component As Object Dim SelMgr As Object Dim selObj As Object Dim MaterialEigenschaften(8) As Double Dim MatEigArray As VariantSub main() Set swApp = CreateObject("SldWorks.Application") Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager() Set selObj = SelMgr.GetSelectedObject3(1) 'Auf das derzeit selektierte Zeit zeigen Set Component = selObj.GetComponent 'Die Baugruppenkomponente holen MatEigArray = MaterialEigenschaften 'Das Safe-Array erzeugen, das für MaterialPropertyValues benötigt wird MatEigArray = Component.MaterialPropertyValues 'Die derzeitigen Werte auslesen . . .
Dummerweise wird in MatEigArray nichts reingeschrieben. Warum nicht? Ich kann erst was auslesen wenn ich selber was reingeschrieben habe, aber damit würde ich ja die vorhandenen Werte überschreiben, was ich nicht will. Kann mir da jemand weiterhelfen? Danke
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberparleiter Mitglied Konstrukteur
Beiträge: 706 Registriert: 06.06.2000 Celsius R630, P4 Xeon 3,2 3GB Ram, 2x24" an FX3500 U320 SCSI, SWX 2011 SP4.0 WinXP SP3 Nicht weil es schwer ist, wagen wir es nicht, sondern weil wirs nicht wagen, ist es schwer.
|
erstellt am: 25. Mrz. 2002 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Kalle
|
Kalle Mitglied Student
Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 25. Mrz. 2002 12:36 <-- editieren / zitieren --> Unities abgeben:
Aloah Oberparleiter, ich erinnere mich schon noch selbst an meine alten Postings. In dem Thread, den Du verlinkst hatte ich ein anderes Problem. In dem Code dort wurden die MaterialPropertyValues gesetzt und wieder ausgelesen, was auch funktioniert. Wenn ich sie aber nur auslesen will, ohne vorher was gemacht zu habe, dann kommt da nichts. Mein Safe-Array wird wieder ein Empty/Variant. Bis dann Kalle Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
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: 25. Mrz. 2002 13:33 <-- editieren / zitieren --> Unities abgeben: Nur für Kalle
Hallo Kalle, das kommt wahrscheinlich daher, dass die Komponenteneigenschaften nicht geändert wurden, d.h. die Komponente hat praktisch noch die Originalfarbe. Du bekommst beim Lesen erst dann einen Nicht-Leeren-Wert zurückgeliefert, wenn die Komponenteneigenschaften in der Baugruppe geändert wurden. Siehe auch API Hilfe unter Component2::MaterialPropertyValues : > Be aware that this function will return a NULL VARIANT (and an > S_FALSE HRESULT for COM implementations) if this component has not > been explicitly modified from the material property values of the > underlying part document. Also fängst du am Besten den Laufzeitfehler ab und fragst explizit das darunterliegende Part ab, was das denn für Farben hat. Ciao, Stefan ------------------ -- Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kalle Mitglied Student
Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 25. Mrz. 2002 14:00 <-- editieren / zitieren --> Unities abgeben:
Aloah Stefan, Jetzt hab ich aus deiner Antwort gleich zwei Lehren für die Zukunft geschlossen. Die wichtigere der beiden ist: "Scroll in der Hilfedatei bis ganz nach unten und lies dir alles durch was da steht." Ich hab nämlich immer nur bis zu der Auflistung der einzelnen Parameter (R,G,B,Ambient,...) gescrollt. Hätte ich bis zum Schluss gelesen hätte ich mir die Frage hier sparen können. Dann weiss ich jetzt wenigstens was los ist und werde es wohl schaffen mein kleines Programm fertig zu machen. Besten Dank Kalle Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |