| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Size Designation aus iProperties auslesen (2126 mal gelesen)
|
mranderson Mitglied Entwicklungsingenieur Robotik
Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 25. Apr. 2006 10:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Bin ziemlich neu im Inventor VBA Geschäft. Wie lese ich die size designation eines Teils aus der Content Library aus? Die übrigen Eigenschaften habe ich aus den design tracking properties geholt, wie z.b. die partnumber und description. Allerdings lese ich die Properties aus ohne vorher die part-datei geöffnet zu haben. Dazu habe ich folgenden Code verwendet: partnum = oPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kPartNumberDesignTrackingProperties).Value Wenn ich allerdings die size designation auslesen will muss ich auf die content library zugreifen, das ich durch einfaches Austauschen der ID wie folgt versucht habe, jedoch bei einem Versuch blieb: size = oPropsets.Item("{B9600981-DEE8-4547-8D7C-E525B3A1727A}").ItemByPropId(kSizeDesignationContentLibrary).Value Bin für alle Vorschläge dankbar, wie ich die size designation auslesen kann! Ciao Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 25. Apr. 2006 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für mranderson
Probier mal über den Index. Normalerweise funktioniert das schon, außer die „kSizeDesignationContentLibrary“ ist nicht vorhanden. Bei mir konnte ich nichts Ähnliches finden. Ich habe es jetzt nur in VBA getestet, aber es soll kein Unterschied zur Apprentice sein. Probier mal so etwas: Code:
MsgBox oPart.PropertySets(5)(1).Value
------------------ Grüße daywa1k3r FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik
Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 25. Apr. 2006 15:09 <-- editieren / zitieren --> Unities abgeben:
Danke für deine Antwort. Leider hat das auch nicht funktioniert, als Size gibt er nur eine 0 aus, das jedoch nicht der Realität entspricht hier nochmal mein vollständiger Code, wie ich die Eigenschaften aus der Datei auslese: ------------------------------------------------------------------- Dim Datei As String Datei = x:\xxx.ipt Dim oApp As Inventor.Application Set oApp = GetObject(, "Inventor.Application") Dim opartDoc As PartDocument Set opartDoc = oApp.Documents.Open(Datei, False) Dim oPropsets As PropertySets Set oPropsets = opartDoc.PropertySets Dim partnum As String Dim description As String Dim size As String Dim standard As String Dim material As String partnum = oPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kPartNumberDesignTrackingProperties).Value description = oPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kDescriptionDesignTrackingProperties).Value 'size = oPropsets.Item("{B9600981-DEE8-4547-8D7C-E525B3A1727A}").ItemByPropId(kSizeDesignationContentLibrary).Value <----------- mein Versuch size = opartDoc.PropertySets(5)(1).Value <---------- neuer Versuch standard = oPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kStandardDesignTrackingProperties).Value material = oPropsets.Item("{32853F0F-3444-11d1-9E93-0060B03C1CA6}").ItemByPropId(kMaterialDesignTrackingProperties).Value Dim sLine As String sLine = partnum & "---" & description & "---" & size & "---" & standard & "---" & material opartDoc.Close ' wichtig wieder schliessen ------------------------------------------------------------------- Fällt dir oder jemandem noch etwas dazu ein, wie es funktionieren könnten bzw. warum es nicht so klappt? Wenn ja, bin ich für alle Anregungen dankbar. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik
Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 25. Apr. 2006 15:30 <-- editieren / zitieren --> Unities abgeben:
Noch eine Ergänzung: Wenn ich die Properties des Teils über SAP auslese wird die size designation unter den design tracking properties angezeigt. Im Objektkatalog vom VBA steht die size designation aber unter content library. Kann daher vielleicht der Fehler kommen? Wenn ja, wie kann ich die size designation trotzdem auslesen? Generell funktioniert übrigens dein Code, allerdings wird eine andere Eigenschaft ausgelesen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 25. Apr. 2006 15:40 <-- editieren / zitieren --> Unities abgeben: Nur für mranderson
Hallo, dann ist der Wert von der ersten Property 0. Das ist schon richtig. Wenn du probierst Code:
size = opartDoc.PropertySets(5)(2).Value
dann wird ein anderer Wert statt 0 erscheinen. Die Frage ist welche von den "Content Library Component Properties" du brauchst. Was ich mit dem Code feststellen wollte ist, ob es mit ItemByPropId(kSizeDesignationContentLibrary).Value zusammenhängt, warum es nicht funktioniert. Und das scheint so zu sein, denn nur über den Index (5 für Content Center Properties und 1 für die erste Property) funktioniert es ja. Vielleicht hast du je darin keine Property die sich mit dem Alias kSizeDesignationContentLibrary identifizieren kann. Setze einen Breakpoint und überwache mal dein PartDocument Objekt und die dazu gehörigen Properties… Edit: Zitat:
Wenn ich die Properties des Teils über SAP auslese wird die size designation unter den design tracking properties angezeigt. Im Objektkatalog vom VBA steht die size designation aber unter content library. Kann daher vielleicht der Fehler kommen?
Klar kann das sein, denn das DesignTracking PropertySet und ContentCenter PropertySet sind 2 verschiedene PropertySets. Und da trifft das was ich oben gesagt habe zu, und die „size designation“ ist in dem PropertySet wo du suchst nicht vorhanden. ------------------ Grüße daywa1k3r
FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik
Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 25. Apr. 2006 16:58 <-- editieren / zitieren --> Unities abgeben:
Ja, liegt wohl irgendwie an diesem Widerspruch. Die Frage ist nur, wie ich herausfinde, welche Nummer die Size Designation in welchem Property Set wirklich hat. Habe versucht per for next Schleife den Index einfach hochzählen zu lassen und dann in der angelegten Text-Datei nachzuschauen welche die richtige Nummer ist, und das für jedes einzelen Property Set. Hat aber auch nicht funktioniert, da der Index scheinbar eine Abbneigung dazu hat, sich hochzählen zu lassen. Wenn ich manuell eintippe und Programm beende und danach wieder starte mit der nächsten Zahl funktionierts. Ich will aber nicht über 100 verschieden Zahlen manuell durchprobieren. Also falls jemand einen Vorschlag hat, wie ich an die Size Designation komme, bitte posten! Danke im voraus! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 25. Apr. 2006 18:10 <-- editieren / zitieren --> Unities abgeben: Nur für mranderson
Hier: Code:
Sub Properties() Dim oDoc As PartDocument Set oDoc = ThisApplication.ActiveDocument Dim oPropSet As PropertySet Dim oProp As Inventor.Property For Each oPropSet In oDoc.PropertySets Debug.Print "~~~~~~~~~~~~~~~~~~~~~ " & oPropSet.Name & " ~~~~~~~~~~~~~~~~~~~~~" For Each oProp In oPropSet On Error Resume Next Debug.Print vbTab & oProp.Name & ": " & oProp.Value If Err.Number <> 0 Then Debug.Print vbTab & oProp.Name ": " & Err.Description Err.Clear End If Next Debug.Print "" Next End Sub
Und BTW ein Benutzer-Profil ist da um ausgefüllt zu werden. ------------------ Grüße daywa1k3r FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik
Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 26. Apr. 2006 08:47 <-- editieren / zitieren --> Unities abgeben:
|
lbcad Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3794 Registriert: 15.02.2001
|
erstellt am: 27. Apr. 2006 15:39 <-- editieren / zitieren --> Unities abgeben: Nur für mranderson
Zitat: Original erstellt von mranderson: ... Hat wunderbar funktioniert! ...
na Klasse! aber dies wohl noch nicht: Zitat: Original erstellt von daywa1k3r: ... Und BTW ein Benutzer-Profil ist da um ausgefüllt zu werden. ...
------------------ Gruß Lothar --------------------------------------------------- Während man es aufschiebt, verrinnt das Leben. —Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mranderson Mitglied Entwicklungsingenieur Robotik
Beiträge: 70 Registriert: 25.04.2006 IV: Autodesk Inventor 9 VB: Visual Basic 6.0 OS: Microsoft Windows 2000 Professional SP 4 CPU: Intel Xeon 1,7 GHz Arbeitsspeicher: 1 GB
|
erstellt am: 27. Apr. 2006 16:06 <-- editieren / zitieren --> Unities abgeben:
Häää??? Zitat:
Und BTW ein Benutzer-Profil ist da um ausgefüllt zu werden.
Hab doch meine Berufsbezeichnunng und wo ich herkomme reingeschrieben. Von das System an dem ich arbeite habe ich keine Ahnung, da das ein Firmenrechner ist und ich mich mit dem noch nicht wirklich beschäftigt hab. Hauptsache er macht was er soll. Also was soll ich denn noch ausfüllen??? Was heißt außerdem BTW? Danke für die Aufklärung. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lbcad Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Maschinenbau und CAD-Trainer
Beiträge: 3794 Registriert: 15.02.2001
|
erstellt am: 27. Apr. 2006 16:51 <-- editieren / zitieren --> Unities abgeben: Nur für mranderson
|