| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| | |
 | Exklusives EDU-Programm für RTX PRO Blackwell, eine Pressemitteilung
|
|
Autor
|
Thema: mit VBA Stücklistenspalte hinzufügen (679 mal gelesen)
|
VOSTA1 Mitglied techn. Angestellter
 
 Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 14. Jan. 2003 13:48 <-- editieren / zitieren --> Unities abgeben:         
Hallo, habe folgendes Anliegen: möchte in eine bestehende *.idw mit Stückliste eine benutzerdefinierte Spalte in der Stückliste hinzufügen Bei den Werkstoffen funktioniert folgendes Makro: ------------------------------------------------------------------- Sub Neuen_Werkstoff_einfügen() 'fügt in einer *.ipt ein neues Material hinzu 'dieses Makro funktioniert nur wenn Material noch nicht vorhanden Dim oPartDoc As PartDocument Set oPartDoc = ThisApplication.ActiveDocument Dim oNewMaterial As Material Dim Werkstoff_neu As String, Dichte As Single Werkstoff_neu = "S355J2G3" Dichte = 7.85 Set oNewMaterial = oPartDoc.Materials.Add(Werkstoff_neu, Dichte) End Sub -------------------------------------------------------------------- Wo liegt mein Fehler für das Stücklisten Makro ??????????????? -------------------------------------------------------------------- Sub Neue_Spalte_in_Stückliste_hinzufügen() Dim oDrawDoc As DrawingDocument Set oDrawDoc = ThisApplication.ActiveDocument Dim oPartList As PartsList Set oPartList = oDrawDoc.ActiveSheet.PartsLists.Item(1) MsgBox ("Felder Senkrecht : " & oPartList.PartsListColumns.Count) MsgBox ("Felder Waagerecht : " & oPartList.PartsListRows.Count) Dim Neue_Spalte As String Neue_Spalte = "Test" 'bis hier läuft es Dim NewColumn As PartsListColumn Set NewColumn = oPartList.PartsListColumns.Item(Neue_Spalte) MsgBox ("Felder Senkrecht : " & oPartList.PartsListColumns.Count) MsgBox ("Felder Waagerecht : " & oPartList.PartsListRows.Count) End Sub --------------------------------------------------------------------- wer hat sich damit schon beschäftigt MFG K. W.
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: 14. Jan. 2003 13:56 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
|
VOSTA1 Mitglied techn. Angestellter
 
 Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 14. Jan. 2003 14:17 <-- editieren / zitieren --> Unities abgeben:         
Hallo daywa1k3r, habe Ihre Antwort erhalten. Bitte um Entschuldigung, dass ich mich nicht gemeldet habe. War zwischen den Tagen im Urlaub. Hatte das Problem bis zu Ihrer Antwort schon gelöst. Da ich jetzt wieder jeden Tag arbeite würde ich mich über eine erneute Antwort freuen. Falls es Sie Interessiert meine Lösung -----------------------------------------------
Sub Benutzerdefinierte_Properties() 'auslesen der Benutzerdefinierten Eigenschaften Dim oApplication As Inventor.Application Set oApplication = GetObject(, "Inventor.Application") Dim oDoc As Document Set oDoc = oApplication.ActiveDocument Dim oPropsets As PropertySets Set oPropsets = oDoc.PropertySets Open "C:\tmp\testprop-2.txt" For Output As #1 'Schreibt alle Benutzerdefinierten Eigenschaften in ein Textfile Dim oProp As Property Set oPropSet = oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}") i = 1 For Each oProp In oPropSet Dim Name As String Name = oProp.Name Dim Value As Variant Value = oProp.Value Dim PropertyId As Long PropertyId = oProp.PropId Display_Name = oPropSet.InternalName 'MsgBox (Display_Name & " Name : " & Name & " PropID " & PropertyId & " i = " & i) i = i + 1 Name_Länge = Len(Name) Space_1 = 33 - Name_Länge If PropertyId < 9.9 Then Space_2 = 1 End If If PropertyId > 9.9 Then Space_2 = 0 End If file1 = Display_Name & " Name : " & Name & Space(Space_1) & "PropID " & Space(Space_2) & PropertyId & " i = " & i & " Value = " & Value Print #1, file1 If Name = "Abmessung" Then CB_Abmessung.Value = True TB_Rohteilnummer.Value = oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Item("Abmessung").Value End If If CB_Abmessung.Value = False Then oDoc.PropertySets("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}").Add sAbmessung, "Abmessung" End If 'usw....... Next Close #1 End Sub
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: 14. Jan. 2003 14:37 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
Hallo, eine Lösung interessiert immer. Und zwar nicht nur mich  Zu dein Problem, das hier: Set NewColumn = oPartList.PartsListColumns.Item(Neue_Spalte) sieht falsch aus. Du übergibst als Item einen String. Ich glaube es wäre besser: oPartList.PartsListColumns.Item(1).Title = Neue_Spalte aber das erzeugt nicht eine neue Spalte. Mich würde auch interesieren ob sowas geht. Aber normal schon. Vielleicht Dim neu as Long neu = oPartList.PartsListRows.Count + 1 oPartList.PartsListColumns.Item(neu).Title = Neue_Spalte Kann ich aber jetzt leider nicht testen. Bis bald...
------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pisarz Mitglied
 
 Beiträge: 280 Registriert: 05.03.2002 AIP2011 Win7x64 HP Z400/W3565(3.2GHz) 12GB RAM 100GB SSD / 1TB Raid1 MSI R5770 Hawk SpacePilot
|
erstellt am: 14. Jan. 2003 16:59 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
HI, von der Idee der OOP her muss das Objekt PartsListColums (die "Sammlung" aller Spalten) eine Methode Add mitbringen, damit es eine neue Spalte gibt. Gibts aber nicht.  Also: Warten auf IV 8.3 SP1
------------------ Grüße Jörgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VOSTA1 Mitglied techn. Angestellter
 
 Beiträge: 108 Registriert: 23.12.2002
|
erstellt am: 14. Jan. 2003 17:30 <-- editieren / zitieren --> Unities abgeben:         
|
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: 14. Jan. 2003 18:25 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
Zitat: von der Idee der OOP her muss das Objekt PartsListColums (die "Sammlung" aller Spalten) eine Methode Add mitbringen, damit es eine neue Spalte gibt.
Genau die (Add) habe ich versucht ihm aufzuzwingen, aber er wollte es nicht. ------------------ Grüße daywa1k3r 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: 15. Jan. 2003 07:32 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
Zitat:
Hi, Thank you for contacting us. I am afraid that there is no API method to do this as of now. Sorry for the bad news, autodesk Thilaknath Rao Developer Technical Services
------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pisarz Mitglied
 
 Beiträge: 280 Registriert: 05.03.2002 AIP2011 Win7x64 HP Z400/W3565(3.2GHz) 12GB RAM 100GB SSD / 1TB Raid1 MSI R5770 Hawk SpacePilot
|
erstellt am: 15. Jan. 2003 13:12 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
Naja, dass wollte ich eigentlich mit meinem Hinweis auf IV 8.3 sagen. Obwohl ich ehrlich gesagt nicht glaube, dass die das überhaupt implementieren. Es gibt im übrigen noch ein anderes Problem mit den Stücklisten. Wenn man bei der Erstellung "Hauptbaugruppe" wählt, dann kann bei verschachtelten Baugruppen nur die oberste Ebene abgefragt werden. Wenn mann Unterbaugruppen "aufklappt", dann ändert sich im API -Objekt nix. Beispiel: sowohl die Liste ITEM NAME 1 Verschraubung 2 Haken als auch die aufgeklappte Liste ITEM NAME 1 Verschraubung 1.1 Schraube 1.2 Scheibe 1.3 Mutter 2 Haken liefert PartList.PartsListRows(1).Item(2) "Verschraubung" PartList.PartsListRows(2).Item(2) "Haken"
Aber wahrscheinlich ist das kein Bug sondern ein Feature. ------------------ Grüße Jörgen 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: 15. Jan. 2003 16:28 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
Gut dass wir das Feature jetzt schon haben und nicht auf die nächste Version von IV warten müssen  Ja, das stimmt, aber sowas ist zwar ein Bug, aber reparabel. Es wäre möglich alle Zeilen einzulesen (zB. txt Datei mit Separator), die Liste zu löschen und anschliessend Row(1) für jede Zeile durch zB. BubbleSort zu jagen. Danach alles wieder reinschreiben. Sauarbeit, aber es würde gehen. ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Pisarz Mitglied
 
 Beiträge: 280 Registriert: 05.03.2002 AIP2011 Win7x64 HP Z400/W3565(3.2GHz) 12GB RAM 100GB SSD / 1TB Raid1 MSI R5770 Hawk SpacePilot
|
erstellt am: 15. Jan. 2003 16:37 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
nee, nee Die Zeilen 1.1 Schraube 1.2 Scheibe 1.3 Mutter existieren im Objekt schlichtweg nicht. Mann müsste sich seine eigene Stückliste zusammenbauen, indem man die ComponentDefinition des Assembly (rekursiv) selbst durchsucht. Auch 'ne Sauarbeit. ------------------ Grüße Jörgen 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: 15. Jan. 2003 19:13 <-- editieren / zitieren --> Unities abgeben:          Nur für VOSTA1
Zitat:
Die Zeilen1.1 Schraube 1.2 Scheibe 1.3 Mutter existieren im Objekt schlichtweg nicht.
Ah so, ... *aktexmelodiepfeif* Ja, wozu brauchst Du die überhaupt ? Die Zeilen gehen dich ja nichts an Nein mal im Ernst, vielleicht ist es ein Inventor Jedi Gedanken Trick !!! Und wir Menchen beherrschen ihn nicht. Wer weiss... Die Warheit ist irgendwo da draussen *erneutaktexmelodiepfeif* Naja, wie wir es auch immer drehen, ist progen auf Inventor eine SAUARBEIT !!! ------------------ Grüße daywa1k3r Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |