| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| ZW3D 2024: Vereinheitlichung von Konstruktion, Simulation und Fertigung zur Verbesserung der Produktivität |
Autor
|
Thema: Programmierung mit Delphi + Inventor (700 mal gelesen)
|
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 08. Sep. 2003 14:08 <-- editieren / zitieren --> Unities abgeben:
Hallo, wir versuchen mit Delphi auf Inventor zu zugreifen und suchen Informationen über die Methode PropertySet.add(...). Bei uns tritt der Fehler "Falscher Parameter" auf. In der API von Inventor lässt sich nichts dazu finden. Hat überhaupt schon jemand im Forum Erfahrungen mit Inventorprogrammierung und Delphi? Wir würden uns über jegliche Tipps oder Hilfe freuen. gruß Melanie
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Moderator
Beiträge: 11977 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 08. Sep. 2003 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
HAllo Melanie. Genau Diese Frage hatte ichj vor ungefähr 1 JAhr gestellt. Einhellige Antwort von den IV/VB-Gurus: Viel Spaß beim erstellen des API-Interface. Im IV ist alles auf VB / VBA abgestellt und für Delphi nix vorhanden. Bis heute hat sich da IMHO nis geändert. Zumindest habe ich mir inzwischen VB angeschafft und fange jetzt an meine 4.-5. Programmiersprache zu lernen. lg MAthias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 08. Sep. 2003 16:18 <-- editieren / zitieren --> Unities abgeben:
|
invhp Ehrenmitglied V.I.P. h.c. MB Techniker, AE, WKZmacher
Beiträge: 5552 Registriert: 16.05.2002 (fast) alles, was Autodesk im Mechanikbereich anbietet ;)
|
erstellt am: 08. Sep. 2003 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 08. Sep. 2003 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
Zitat: Bei mir ist es inzwischen die 8. Programmiersprache.
PropertySet.add braucht 3 Parameter. Zitat: Add(PropValue As Variant, Name As Variant, PropId As Variant) As Property PropValue Input Variant that specifies the value of the Property to add to the set. Name Input Variant that specifies the name of the Property. If this name is prefixed with an "_" character, then this property is created as a hidden property and can only be accessed if indexed by its name or propID. PropertySet.Count will not account for such hidden properties. PropId Input Variant that specifies the PropertyID of the Property to add to the set. The valid range for PropIds is 2-255; 1 cannot be used because it is reserved.
Was übergibst du ? Mal Breakpoint drauf setzten und mit der Maus über die Parameter drüber fahren. Wenn "Nothing" dann nix gut HTH ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Moderator
Beiträge: 11977 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 08. Sep. 2003 16:49 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
Hallo Melanie. Der Daywalker ist übrigens der richtige Ansprechpartner in Programmierfragen. Er ist auch Moderator im VBA-Forum. Viel Spaß PS.: @invhp: So richtig hilft das auch nicht, da kein Delphi-Interface zur API zur Verfügung steht. DCOM ist ja schön und gut, aber Du mußt trotzdem erstmal ein Interface stricken (Und vorher den Kram begreifen ). [Diese Nachricht wurde von Charly Setter am 08. September 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 08. Sep. 2003 16:58 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
Charly Setter Moderator
Beiträge: 11977 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 08. Sep. 2003 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 09. Sep. 2003 08:56 <-- editieren / zitieren --> Unities abgeben:
Hi, die Developer Seite kannte ich überings schon, nur ist sie nicht wirklich hilfreich. Wie man den Debugger benutzen weiss ich selber. Die Übergabe ist wie in der Doku und es geht nicht. Trotzdem vielen Dank. gruß Melanie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 09. Sep. 2003 09:40 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
Zitat: Wie man den Debugger benutzen weiss ich selber.
Entschuldigung dass ich geboren bin Hier ein Beispiel für dich: Code:
Private Sub test_melanie() Dim oAsm As AssemblyDocument Dim oPropsets As PropertySets Dim oNewPopertySet As PropertySet Dim i As Integer On Error Resume Next Set oAsm = ThisApplication.ActiveDocument If Err Then MsgBox "Kein Assembly!" End End If Set oPropsets = oAsm.PropertySets On Error Resume Next Set oNewPropertySet = oPropsets.Item("Neue Eigenschaft") If Err Then Set oNewPropertySet = oPropsets.Add("Neue Eigenschaft") Call oNewPropertySet.Add("Property Wert", "Property Name", 2) End If For i = 1 To oAsm.PropertySets.Count Debug.Print meldung & oAsm.PropertySets.Item(i).DisplayName & vbCrLf For j = 1 To oAsm.PropertySets.Item(i).Count On Error Resume Next Debug.Print meldung & oAsm.PropertySets.Item(i).Item(j).DisplayName & ": " & oAsm.PropertySets.Item(i).Item(j).Value Err.Clear Next Next End Sub
HTH ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bene Ehrenmitglied ich putz' hier nur
Beiträge: 1939 Registriert: 10.04.2002
|
erstellt am: 09. Sep. 2003 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 09. Sep. 2003 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 09. Sep. 2003 11:09 <-- editieren / zitieren --> Unities abgeben:
Hallo, @daywa1k3r: ____________________________________________ Zitat: Entschuldigung dass ich geboren bin ____________________________________________ Das mit dem Debugger war nicht böse gemeint, nur mag ich es nicht Grundfertigkeiten erklärt zu bekommen. Zum Code: Der hilft mir leider nicht weiter, die Fehlermeldung bleibt. Vielleicht fällt dir ja zu meinem Source was auf. Formal scheint der richtig zu sein. _____________________________________________________________________ function TFileObject.CreateAVParameter(): Boolean; var NewPropertySet : Variant; PropertySets : Variant; NewProperty : Variant; Index: AnsiString; EnumPropertySets :TEnumVariant; aPropertySet leVariant; DisplayName :AnsiString; EnumPropertySet :TEnumVariant; aProperty leVariant; PropertyCount: Integer; Vorhanden: Boolean; begin result:= false; Vorhanden:= false; if (FFileParameter=nil) then exit; try if ((FGestartet)and(FGeoeffnet)) then begin Index:= FFileParameter.Values['INDEX']; if (Index <> '') then begin PropertySets:= Document.PropertySets; EnumPropertySets:= TEnumVariant.Create(PropertySets); try while ((EnumPropertySets.ForEach(aPropertySet))and(not Vorhanden)) do begin DisplayName:= UpperCase(Trim(aPropertySet.DisplayName)); Vorhanden:= (DisplayName = 'IBE AV32'); if (Vorhanden) then begin Vorhanden:= false; PropertyCount:= 1; EnumPropertySet:= TEnumVariant.Create(aPropertySet); try while ((EnumPropertySets.ForEach(aProperty))) do begin DisplayName:= UpperCase(Trim(aPropertySet.DisplayName)); if (not Vorhanden) then Vorhanden:= (DisplayName = 'INDEX'); inc(PropertyCount); end; if (not Vorhanden) then begin inc(PropertyCount); NewProperty:= aPropertySet.Add(Index,'INDEX',PropertyCount); end; finally EnumPropertySet.Free; end; end; end; if (not Vorhanden) then begin NewPropertySet:= PropertySets.Add('IBE AV32'); NewProperty:= NewPropertySet.Add(Index,'INDEX',2); end; finally EnumPropertySets.Free; end; end; end; except end; end; _____________________________________________________________________ gruß Melanie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 09. Sep. 2003 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
Hi, es ist schlecht lesbar. Du kannst um Code zu posten die Code Tags benutzen. Stürzt das Programm hier ab: Code:
if (not Vorhanden) then begin NewPropertySet:= PropertySets.Add('IBE AV32'); NewProperty:= NewPropertySet.Add(Index,'INDEX',2); end;
? Wenn ja, glaube ich, dass das: NewProperty:= NewPropertySet.Add(Index,'INDEX',2); dein Fehler ist. NewPropertySet.Add ist eine Methode und hat IMHO keinen Rückwert.
------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Moderator
Beiträge: 11977 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 09. Sep. 2003 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
Malo Mitglied Konstrukteur+NC-Programmierer+Arbeitsplaner
Beiträge: 921 Registriert: 09.04.2001
|
erstellt am: 09. Sep. 2003 12:15 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 09. Sep. 2003 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
Code:
NewPropertySet : Variant; PropertySets : Variant; NewProperty : Variant;
Der Compiler kann auch nicht wissen was du meinst, wenn alles als Variant deklariert ist. Es ist ein RunTimeError und kein SyntaxError. ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Charly Setter Moderator
Beiträge: 11977 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 09. Sep. 2003 12:26 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 09. Sep. 2003 12:34 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
Charly Setter Moderator
Beiträge: 11977 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 09. Sep. 2003 12:35 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 09. Sep. 2003 14:00 <-- editieren / zitieren --> Unities abgeben:
Hallo noch mal, wir benutzen für unser Programm nur Delphi, vielleicht kannst du folgenden aber dennoch beantworten. Kann es sein, dass bei einer späten Bindung das property nicht funktioniert? Aufgrund der späten Bindung, müssen alle Variablen als Variant deklariert werden. Danke für die zahlreichen Bemühungen! gruß Melanie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 09. Sep. 2003 14:12 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
Hi Melanie, natürlich kann es sein, dass die Polymorphie mal nicht funktioniert, aber du must doch sehen können, ob es sich 100% um einen Datentyp handelt oder nicht. Beispiel: Du erwartest ein Dokument, kennst aber nicht den Typ nicht ---> klarer Fall "späte Bindung" Aber im Code oben ist doch klar, dass wir PropertySets und PropertySet haben werden, dann deklarieren wir es auch gleich richtig. ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 09. Sep. 2003 14:23 <-- editieren / zitieren --> Unities abgeben:
Hi, aber wenn wir alles gleich richtig deklarieren, dann müssten wir auch die Typbiliothek einbinden und genau das muss bei uns vermieden werden. Also brauchen wir späte Bindung und Variantdeklarationen. Dann mussen wir eben weiter ausprobieren und das beste hoffen. Irgendwann finden wir ne Lösung. gruß Melanie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 09. Sep. 2003 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
|
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 09. Sep. 2003 15:01 <-- editieren / zitieren --> Unities abgeben:
hi, unter VB geht es, aber nicht unter Delphi und da soll es schließlich funktionieren. Und die Typbiliotheken wollen wir nicht mit einbinden, das gab bei unserer Software immer Probleme. Also versuchen wir das Problem jetzt zu umgehen, bevor wir die dll doch in VB schreiben. Wird später Wartungstechnisch einfacherer. gruß Melanie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012 64Bi
|
erstellt am: 09. Sep. 2003 15:18 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
Ich bin mir sicher, dass das Problem hier ist: NewProperty:= NewPropertySet.Add(Index,'INDEX',2); Das ergibt keinen Sinn. Hast du schon mal nur: NewPropertySet.Add(Index,'INDEX',2); Probiert ? ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 09. Sep. 2003 15:50 <-- editieren / zitieren --> Unities abgeben:
|
Charly Setter Moderator
Beiträge: 11977 Registriert: 28.05.2002 Der vernünftige Mensch paßt sich der Welt an; der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.<P>Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab. (George Bernard Shaw)
|
erstellt am: 09. Sep. 2003 22:23 <-- editieren / zitieren --> Unities abgeben: Nur für Melanie
Hallo Melanie Ich habe vorhin mal versucht die IV-Typbibliothek in Delphi 5 zu importieren und bin an anhängender Fehlermeldung gescheitert. Gibt´s das Problem auch bei euch, und wenn ja: Wie habt Ihr´s gelöst. Vielleicht ist Delphi 5 ja auch schon zu veraltet lg Mathias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Melanie Mitglied
Beiträge: 30 Registriert: 14.10.2002
|
erstellt am: 10. Sep. 2003 09:41 <-- editieren / zitieren --> Unities abgeben:
Hi, also wir haben D7. Und wir wollen die Typbiliotheken überhaupt nicht einbinden. In der Vergangenheit hat das immer wieder zu Fehlern geführt, sodass wir gar nicht erst wieder versuchen sie einzufügen. Wie wir das Problem jetzt weiter behandeln wissen wir auch noch nicht. Ich muss eh erst noch ein anderes Projekt vorziehen. Eventuell arbeiten wir dann in diesem einen Punkt mit VB, da geht es so wie wir wollen, aber eben nicht in D7. bis dann Melanie Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |