| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Volumenkörperliste im ipt (980 / mal gelesen)
|
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 21. Sep. 2021 12:50 <-- editieren / zitieren --> Unities abgeben:
Moin! Ich würde gern ein kleines Modul erstellen, das mir alle Volumenkörper eines ipt mit dem jeweiligen Volumen auflistet. Ich stelle mir das ungefähr wie folgt vor, wobei ich sicher bin, dass das so noch nicht funktioniert (vor allem bei den Fragezeichen . Ich wäre also für Tips und Korrekturen sehr dankbar Public Sub VolumesAndProperties() If ThisApplication.ActiveDocumentType = kPartDocumentObject Then Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument Dim n as integer n=oPart.ComponentDefinition.Volumes.Count Dim oVol as Volume Dim V(n) As ...????... Dim Name(n) As ...????... Dim i as integer i=1
If oPart.ComponentDefinition.Volumes.Count > 0 Then For Each oVol In oPart.ComponentDefinition.Volumes V(i)= oVol.Volume Name(i)= oVol.Name i=i+1 Next MsgBox "Name Volumen in cm³" "Name(1).????. V(1).????.." "Name(2).????. V(2).????.." "... " EndIf ElseIf MsgBox "Geht nur für gesondert geöffnete ipt." Exit Sub End If End Sub ------------------ Roland www.Das-Entwicklungsbuero.de It's not the hammer - it's the way you hit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xerxses Mitglied Laufbursche
Beiträge: 137 Registriert: 06.09.2011 IV2019 ACDM2019
|
erstellt am: 21. Sep. 2021 22:14 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
hallo Roland, Anfänger hier. das wäre eine schöne Übung für den Abend gewesen. zwar komme ich mit "odoc.ComponentDefinition.SurfaceBodies" an die Volumenkörper, aber in allen "Items" steht immer das Gesamtvolumen der IPT drin. Ich finde nirgends die Massproperties der einzelnen Volumenkörper. (dazugelernt, leider nicht möglich. Siehe Link unten) mein gescheiterter Versuch zum Testen. Sub Name_Volumen() Dim odoc As Document Set odoc = ThisApplication.ActiveDocument Dim Anzahl As Long Dim obj As Object Set obj = odoc.ComponentDefinition.SurfaceBodies Anzahl = obj.Count Dim i As Integer i = 1 For Each Item In obj If i <= Anzahl Then iVol = obj.Item(i).ComponentDefinition.MassProperties.Volume MsgBox ("Name: " & Item.Name & " Volumen: " & iVol) i = i + 1 End If Next End Sub hier eine Lösung über Umwege. keine schlechte Umsetzung. Eventuell so umbauen dass die Textdatei sich am Ende selbst öffnet und die erzeugten Dateien automatisch gelöscht werden.
Grüße [Diese Nachricht wurde von xerxses am 22. Sep. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bwr Mitglied Konstrukteur
Beiträge: 139 Registriert: 21.02.2007
|
erstellt am: 22. Sep. 2021 07:23 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hallo, prinzipiell funktioniert es so: Code:
Public Sub VolumesAndProperties() If ThisApplication.ActiveDocumentType = kPartDocumentObject Then Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument Dim sText As String Dim oBody As SurfaceBody For Each oBody In oPart.ComponentDefinition.SurfaceBodies sText = sText & oBody.Name & vbTab & oBody.Volume(0.001) & vbCrLf Next MsgBox sText End If End Sub
Das ganze lässt sich dann noch mit Fehlerabfragen und einer schöneren Ausgabe verfeinern.
------------------ Grüße Andreas etaCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Roland Schröder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13408 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 22. Sep. 2021 11:49 <-- editieren / zitieren --> Unities abgeben:
|
bwr Mitglied Konstrukteur
Beiträge: 139 Registriert: 21.02.2007
|
erstellt am: 22. Sep. 2021 13:43 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Bitteschön. Zitat: Elegante, schlanke und intelligente Lösungen sind meine Spezialität.
Den Satz habe ich von deiner Internetseite geklaut. Das gilt sowohl fürs Konstruieren als auch fürs Programmieren: je einfacher, desto besser. ------------------ Grüße Andreas etaCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xerxses Mitglied Laufbursche
Beiträge: 137 Registriert: 06.09.2011 IV2019 ACDM2019
|
erstellt am: 22. Sep. 2021 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
|
bwr Mitglied Konstrukteur
Beiträge: 139 Registriert: 21.02.2007
|
erstellt am: 23. Sep. 2021 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
Hallo xerxses, das habe ich aus der Programmierhilfe. Der Parameter steht für die Genauigkeit: Input Double that specifies the requested relative accuracy of the result as a percentage. For example, a value of 0.01 requests a maximum error of one percent. The application should find the mass properties for several requested accuracies and compare the results since there is a limitation to the current algorithm in that it does have a bound on how precisely the algorithm can calculate mass properties, due to hard coded convergence criteria in the functions. If you tighten the relative error value and the mass properties values don't change, that means it is as close as can be achieved.
------------------ Grüße Andreas etaCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xerxses Mitglied Laufbursche
Beiträge: 137 Registriert: 06.09.2011 IV2019 ACDM2019
|
erstellt am: 23. Sep. 2021 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
|
bwr Mitglied Konstrukteur
Beiträge: 139 Registriert: 21.02.2007
|
erstellt am: 23. Sep. 2021 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
|
xerxses Mitglied Laufbursche
Beiträge: 137 Registriert: 06.09.2011 IV2019 ACDM2019
|
erstellt am: 23. Sep. 2021 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Roland Schröder
man lernt immer dazu. Zitat: 'Volume' ist eine ganz normale Eigenschaft von SurfaceBody
taucht im Object Model nicht auf. Bin immer davon ausgegangen, Eigenschaften die da nicht aufgelistet sind gibt es auch nicht. Wohl falsch gedacht.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |