Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor
  Konturlänge per Formel berechnen, VBA

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Konturlänge per Formel berechnen, VBA (2948 mal gelesen)
Nicola2
Mitglied


Sehen Sie sich das Profil von Nicola2 an!   Senden Sie eine Private Message an Nicola2  Schreiben Sie einen Gästebucheintrag für Nicola2

Beiträge: 4
Registriert: 23.01.2015

erstellt am: 23. Jan. 2015 14:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

ich bin neu hier und starte mit folgender Frage:
Zur Kalkulation von Schnittkosten benötige ich die Summe aller Konturlängen eines Blechbauteils. Durch die Forensuche bin ich bei einem Beitrag namens "Physikalische Eigenschaften in Parameterliste benutzen" auf die Lösung gestoßen. Dort wurde ein VBA-Skript gepostet, welches genau das tun sollte, was ich mir vorstelle. (Skript von daywa1k3r):

Code:

Public Sub Kontur()
    Dim oPart As PartDocument
    Dim oFace As Face
    Dim oThicknessParam As Parameter
    Dim oSheetMetalCompDef As SheetMetalComponentDefinition
   
    Dim dArea As Double
    Dim dVolume As Double
    Dim dThickness As Double
    Dim dContour As Double
    ' Aktives Dokument holen
    Set oPart = ThisApplication.ActiveDocument
   
    dArea = 0
   
    For Each oFace In oPart.ComponentDefinition.SurfaceBodies(1).Faces
        ' Gesamtfläche berechnen
        dArea = dArea + oFace.Evaluator.Area
    Next
   
    'Volumen berechnen
    dVolume = oPart.ComponentDefinition.SurfaceBodies(1).Volume(0.01)


    Set oSheetMetalCompDef = oPart.ComponentDefinition
    Set oThicknessParam = oSheetMetalCompDef.ActiveSheetMetalStyle.Thickness
   
    ' Blechstärke berechnen
    dThickness = oThicknessParam.ModelValue
   
    ' Kontur berechnen
    dContour = (dArea - (2 * (dVolume / dThickness))) / dThickness
   
    MsgBox ("Fläche: " & dArea & vbCrLf & _
            "Volumen: " & dVolume & vbCrLf & _
            "Blechstärke: " & dThickness & vbCrLf & vbCrLf & _
            "Kontur: " & dContour)
End Sub


Leider scheint das aus 2006 stammende Skript mit meiner Inventor-Version (Professional 2015) nicht zu funktionieren. Bei "Set oThicknessParam = oSheetMetalCompDef.ActiveSheetMetalStyle.Thickness"
kommt im VBA-Editor eine Fehlermeldung "Typen unverträglich".
Kann mir jemand dabei helfen, das Skript zum Laufen zu bringen? Ich bin leider nicht so sehr bewandert wenn es um VBA geht..

Vielen Dank im voraus,

Nicola

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 23. Jan. 2015 15:10   

- Inhaltsloser Beitrag -

Nicola2
Mitglied


Sehen Sie sich das Profil von Nicola2 an!   Senden Sie eine Private Message an Nicola2  Schreiben Sie einen Gästebucheintrag für Nicola2

Beiträge: 4
Registriert: 23.01.2015

erstellt am: 23. Jan. 2015 15:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Jürgen,

vielen Dank für die schnelle Antwort. Das Skript hatte ich auch schon gesehen und getestet, aber bei abgewickelten Blechteilen rechnet es fehlerhaft, wahrscheinlich da die Oberfläche des Teils dann in mehrere Flächen aufgeteilt wird (die man dann auch alle selektieren muss).

Die im alten Beitrag angegebene (ziemlich elegante) Formel greift nur auf Gesamtoberfläche, Volumen und Blechstärke zu, da muss ich nichts selektieren und das Ergebnis passt immer.

Grüße,

Nicola

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 23. Jan. 2015 17:30   

- Inhaltsloser Beitrag -

Roland Schröder
Moderator
Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen




Sehen Sie sich das Profil von Roland Schröder an!   Senden Sie eine Private Message an Roland Schröder  Schreiben Sie einen Gästebucheintrag für Roland Schröder

Beiträge: 13310
Registriert: 02.04.2004

IV 2019 + 2020 + 2021
W7pro64 F-Secure-Safe
Dell-M4600 2,13GHz 12GB
Quadro2000M
15,4"1920x1080
MS-IntelliMouse-Optical
SpacePilotClassic

erstellt am: 24. Jan. 2015 00:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Nicola2 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von VORTEX59:
Mögliche Lösung:...

Hast Du eigentlich gelesen, worum es hier geht?

Oder hattest Du nur wieder Zeit zuviel? 

------------------
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

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



Sehen Sie sich das Profil von Torsten Niemeier an!   Senden Sie eine Private Message an Torsten Niemeier  Schreiben Sie einen Gästebucheintrag für Torsten Niemeier

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 24. Jan. 2015 02:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Nicola2 10 Unities + Antwort hilfreich

Hallo.

Ich habe zwar keine Ahnung mehr von der neueren Inventor-API, aber hier, in dem unteren Thread, scheint dasselbe Problem gelöst worden zu sein:

http://www.mcadforums.com/forums/viewtopic.php?f=15&t=10689

Ohne Gewehr, Torsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Ehrenmitglied V.I.P. h.c.
Softwareentwickler



Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

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: 25. Jan. 2015 09:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Nicola2 10 Unities + Antwort hilfreich

Guten Morgen!

Es war nur eine Kleinigkeit - das Objektmodel wurde seitens Autodesk ein wenig geändert.

Code:

' Das Makro gibt Fläche, Volumen, Blechstärke und Konturlänge
' eines Blechteils aus. Die Kontur wird nicht über die Summe
' von einzelnen Kanten, sondern mittels Formel berechnen
' (dArea - (2 * (dVolume / dThickness))) / dThickness

' FX64 daywa1k3r, Igor Zupevc, 25.01.2015 >> 2x0, 2x1, 2x2 und 2x5 -> hübsch :) <<

Public Sub BlechteilParameter()
    Dim oPart As PartDocument
    Dim oFace As Face
    Dim oThicknessParam As Parameter
    Dim oSheetMetalCompDef As SheetMetalComponentDefinition
   
    Dim dArea As Double
    Dim dVolume As Double
    Dim dThickness As Double
    Dim dContour As Double
    ' Aktives Dokument holen
    Set oPart = ThisApplication.ActiveDocument
   
    dArea = 0
   
    For Each oFace In oPart.ComponentDefinition.SurfaceBodies(1).Faces
        ' Gesamtfläche berechnen
        dArea = dArea + oFace.Evaluator.Area
    Next
   
    'Volumen berechnen
    dVolume = oPart.ComponentDefinition.SurfaceBodies(1).Volume(0.01)

    Set oSheetMetalCompDef = oPart.ComponentDefinition
    Set oThicknessParam = oSheetMetalCompDef.Thickness
   
    ' Blechstärke berechnen
    dThickness = oThicknessParam.ModelValue
   
    ' Kontur berechnen
    dContour = (dArea - (2 * (dVolume / dThickness))) / dThickness
   
    MsgBox ("Fläche:" & vbTab & vbTab & Round(dArea, 2) & " cm^2" & vbCrLf & _
            "Volumen:" & vbTab & vbTab & Round(dVolume, 2) & " cm^3" & vbCrLf & _
            "Blechstärke:" & vbTab & Round(dThickness, 2) & " cm" & vbCrLf & vbCrLf & _
            "Konturlänge:" & vbTab & Round(dContour, 2) & " cm")
End Sub


------------------
Grüße Igor

FX64 Software Solutions - Inventor Tools
FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nicola2
Mitglied


Sehen Sie sich das Profil von Nicola2 an!   Senden Sie eine Private Message an Nicola2  Schreiben Sie einen Gästebucheintrag für Nicola2

Beiträge: 4
Registriert: 23.01.2015

erstellt am: 26. Jan. 2015 07:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Guten Morgen allerseits!

Vielen Dank an alle für die schnelle und freundliche Hilfe und speziell an Igor, das aktualisierte Skript funktioniert perfekt!

Viele Grüße und eine schöne Woche,

Nicola

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andy1983
Mitglied
Techniker Maschinenbau HF


Sehen Sie sich das Profil von Andy1983 an!   Senden Sie eine Private Message an Andy1983  Schreiben Sie einen Gästebucheintrag für Andy1983

Beiträge: 79
Registriert: 15.01.2014

erstellt am: 02. Nov. 2016 16:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Nicola2 10 Unities + Antwort hilfreich

Weiss jemand wie man das Makro umstellt dass am schluss mm rauskommen? Ist im VBA gar nicht so einfach wenn man das ned beherscht :-)

Danke


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

AnMay
Mitglied
Konstrukteur MB


Sehen Sie sich das Profil von AnMay an!   Senden Sie eine Private Message an AnMay  Schreiben Sie einen Gästebucheintrag für AnMay

Beiträge: 632
Registriert: 16.02.2008

Inventor 2019
Inventor 2023

erstellt am: 02. Nov. 2016 18:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Nicola2 10 Unities + Antwort hilfreich

bin zwar kein Experte, aber ich würde einfach in den Berechungen mit der entsprechenden 10er Potenz multiplizieren und in der Ausgabe statt "cm" "mm" schreiben

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz