| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Nahe an industriellen Realbedingungen |
Autor
|
Thema: Per API auf Teile in Zeichenansichten zugreifen - wie? (1278 mal gelesen)
|
Kalle Mitglied Student
Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 16. Okt. 2001 10:49 <-- editieren / zitieren --> Unities abgeben:
Und immernoch schlage ich mich mit der API rum und stelle fest, dass meine Programmierkenntnisse eher marginal sind und meine Ziele verflucht hoch. Aber nachdem hier dann doch einige Leute sind die da doch recht gut durchblicken komme ich immer wieder hierher zurück. Mein derzeitiges Problem ist, dass ich es nicht schaffe in Zeichnungen auf die Teile zuzugreifen, die in den einzelnen Ansichten vorkommen. Über die ganzen Befehle wie GetFirstSubFeature, GetNextSubFeature, GetNextFeature ist der tiefste Punkt an den ich in meinem Baum komme die Zeichenansicht selbst. Aber wie komme ich jetzt an das Zeug ran, das unter der Zeichenansicht kommt? In erster Linie will ich rausbekommen welche Teile drin sind und dann will ich auf die Dateieigenschaften zugreifen um mit Werten die dort drin stehen in der Zeichnung diese Teile dann auf bestimmt Layer zu legen (wobei ich dafür auch noch keinen Befehl gefunden habe). Fragen über Fragen und hoffentlich auch bald eine (oder meherere Antworten). Besten Dank, Kalle Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Armin B Mitglied Software Engineer ERP/PLM/CAD
Beiträge: 208 Registriert: 04.09.2000 Sw 2015 SP3
|
erstellt am: 16. Okt. 2001 11:08 <-- editieren / zitieren --> Unities abgeben: Nur für Kalle
Moin moin, um sowas zu machen, muss man erst mal verstehen, wie SolidWorks in Zeichnungen arbeitet. Die Zeichnung besteht nämlich im Wesentlichen aus ein paar Ansichten und Referenzen auf (i.d.R. geöffnete) Modelle. Jede Zeichensicht hat daher selbst die Information auf welches Modell sie referenziert. Wie so oft, habe ich mal wieder keine Lust, Dir den ganzen Code vorzukauen, deshalb hier nur die Vorgehensweise:
- Über DrawingDoc.GetFirstView() und View.GetNextView durch die Ansichten iterieren, bis die gewünschte Ansicht gefunden ist.
- Mit View.IsModelLoaded() herausfinden, ob das Modell geladen ist und ggf. mit View.LoadModel() nachladen.
- Den Namen des Modells mit View.GetReferencedModelName() holen
- dessen Dokument-Interface mit SldWorks.GetOpenDocumentByName(...) holen.
- Dann die ganze Feature-Arie und was Du noch so vorhast...
Hoffe das hilft Dir. Gruß, Armin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kalle Mitglied Student
Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 16. Okt. 2001 11:47 <-- editieren / zitieren --> Unities abgeben:
Na das ist doch schonmal ein Anfang. Wenn man nicht wirklich weiss wonach man suchen muss, ist man irgendwie ganz schön verloren. Wenn ich wieder etwas Zeit hier habe, werde ich das mal so versuchen. Dann sollte es ja auch kein Thema mehr sein, an die Dateieigenschaften ranzukommen. Nur die Sache mit den Layern weiss ich noch nicht. Wenn ich versuche das mal per Makro aufzuzeichnen steht nachher gar nichts im Code (wie so oft). Im Grunde genommen muss ich ja das Teil in der Zeichnung auswählen und dann einen Layer (da kommt mir gerade eine Idee, die ich gleich mal versuchen werde...... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beere Mitglied Dipl.-Ing. Maschinenbau
Beiträge: 1437 Registriert: 31.07.2001 Pro/E 2001 Wildfire 2 SWX 2013 HP Z400; 4GB
|
erstellt am: 16. Okt. 2001 12:17 <-- editieren / zitieren --> Unities abgeben: Nur für Kalle
Hi Kalle! Meine API Kenntnisse sind ebenso marginal, wenn nicht sogar noch marginaler (schönes Wort ). >>>>Dann sollte es ja auch kein Thema mehr sein, an die Dateieigenschaften ranzukommen.<<<<<<<<< sagst Du so in Deinem jugendlichen leichtsinn....... Ich wollt da auch mal ran! Wenn Du da rangekommen bist, ich mein an die Dateieigenschaften, dann sag doch mal bescheid. Ich bin bisher nur an die Eigenschaften "Info" (Titel,Thesen,Datum etc.) gekommen. Kommen aber mit .CustomInfo und .CustomInfo2 nicht an die benutzerdefinierten oder gar konfigurationsspezifische Eigenschaften ran. Wie gesagt, wenn Du da rankommst, würd mich freuen wenn Du mal bescheid sagst. Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
u.clemens Mitglied Konstrukteur
Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 16. Okt. 2001 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Kalle
|
Kalle Mitglied Student
Beiträge: 706 Registriert: 14.04.2002
|
erstellt am: 16. Okt. 2001 12:35 <-- editieren / zitieren --> Unities abgeben:
Hi Beere, das funktioniert aber mit den Befehlen. Zum setzten einer Eigenschaft, die schon existiert mache ich das mit
Code:
ModelDoc.CustomInfo("Name der Eigenschaft") = "Text der rein soll"
und wenn die Eigenschaft noch nicht existiert dann geht's mit
Code:
result = ModelDoc.AddCustomInfo("Name der Eigenschaft", Art der Eigenschaft, "Text der rein soll")
die Art der Eigenschaft ist auch nur ein String bzw. die SWX-eigenen Konstanten swCustomInfoUnknown, swCustomInfoText, swCustomInfoDate, swCustomInfoNumber und swCustomInfoYesOrNo Das ist wahrscheinlich die einfachste (und stümperhafteste) Art um auf die benutzerdefinierten Dateieigenschaften zu zugreifen. Wenn Du auf die konfigurationsspezifischen erstellen willst geht das folgendermaßen: Code:
result = ModelDoc.AddCustomInfo3("Name der Konfiguration", "Name der Eigenschaft", Art der Eigenschaft, "Text der rein soll")
Und um die sie zu ändern macht man das mit Code:
ModelDoc.CustomInfo2("Name der Konfiguration", "Name der Eigenschaft") = "Text der rein soll"
Ich hoffe das hat geholfen. Bis dann Kalle [Diese Nachricht wurde von Kalle am 16. Oktober 2001 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baltenweck Mitglied Konstrukteur
Beiträge: 170 Registriert: 13.03.2001 Früher brauche man 3 Comodore, um zum Mond zu fliegen - heute braucht man 1 Ghz um Windows zu starten...
|
erstellt am: 17. Okt. 2001 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für Kalle
|