| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
Autor
|
Thema: Zugewiesene Masseneigenschaften in Baugruppe per API setzen (883 mal gelesen)
|
MKuehner Mitglied

 Beiträge: 10 Registriert: 16.10.2006 SolidWorks 2006 SP01 Windows 2000
|
erstellt am: 13. Nov. 2006 11:27 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute! Ich möchte bei importierten Baugruppen die Masseneigenschaften via Makro setzen. Bei Einzelteilen (PART) funktioniert das auch prima, nur bei Baugruppen versagt scheinbar die API Funktion. Auch ein aufgezeichnetes Makro funktioniert nicht. Weiß jemand Rat?
Code: Dim swApp As Object Dim Part As Object Dim SelMgr As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim Feature As Object Sub main()Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager swApp.ActiveDoc.ActiveView.FrameState = 1 boolstatus = Part.Extension.CreateMassProperty.SetAssignedMassProp(70.47, 0.2066550628926, 0.01819243865049, 0.007945965011094, 1, Empty) Part.Save2 False End Sub
SolidWorks 2006 SP01 Windows 2000
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
   
 Beiträge: 1384 Registriert: 20.12.2003 SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 13. Nov. 2006 12:45 <-- editieren / zitieren --> Unities abgeben:          Nur für MKuehner
Hallo, das Eigengewicht einer Baugruppe ergibt sich doch aus den Gewichten der Einzelteile. Daher macht es doch keinen Sinn, dieser Baugruppe eine Masseneigenschaft zuzuweisen oder bin ich da jetzt auf dem Holzweg Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MKuehner Mitglied

 Beiträge: 10 Registriert: 16.10.2006 SolidWorks 2006 SP01 Windows 2000
|
erstellt am: 13. Nov. 2006 12:56 <-- editieren / zitieren --> Unities abgeben:         
Mir geht es hier um importierte Baugruppen (Kaufteile). Deren Gewicht ist ja im Katalog angegeben und kann nicht berechnet werden, da die Gewichte (Materialien) der Einzelteile nicht bekannt sind. Außerdem sind diese Modelle meist stark vereinfacht. Damit das Gewicht in übergeordneten Baugruppen richtig ausgewertet wird möchte ich es eben manuell zuweisen und nicht berechnen lassen. Der Weg über das Menü-->Extras-->Masseigenschaften funktioniert auch tadellos, nur mit einem Makro geht's dann nicht. MfG, Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
u.clemens Mitglied Konstrukteur
  
 Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 13. Nov. 2006 13:18 <-- editieren / zitieren --> Unities abgeben:          Nur für MKuehner
Zitat: Original erstellt von ad_man: ...oder bin ich da jetzt auf dem Holzweg
im Prinzip hast du recht, aber neuerdings geht es eben tatsächlich, einer Baugruppe ein fixes Gewicht zuzuweisen - und das erwähnte Beispiel ist eine Anwendung, wo dies durchaus nützlich ist. Ein andere Anwendung: du kannst Baugruppen vereinfachen (Schrauben und so'n Kleinkrams raus) und kanst diese vereinfachte Baugruppe dann dennoch mit dem korrekten Gewicht weiterverarbeiten ... ------------------ mfg uc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
u.clemens Mitglied Konstrukteur
  
 Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 13. Nov. 2006 13:38 <-- editieren / zitieren --> Unities abgeben:          Nur für MKuehner
Zitat: Original erstellt von MKuehner: ... bei Baugruppen versagt scheinbar die API Funktion. Auch ein aufgezeichnetes Makro funktioniert nicht.
was funktioniert denn nicht ? Ich hab's gerade mal getestet. Makro aufgezeichnet, Baugruppe importiert, Makro losgelassen - alles o.k. Mein aufgezeichnetes Makro sieht auf den ersten Blick - in den wesentlichen Punkten - nicht anders aus, als deins.
------------------ mfg uc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MKuehner Mitglied

 Beiträge: 10 Registriert: 16.10.2006 SolidWorks 2006 SP01 Windows 2000
|
erstellt am: 13. Nov. 2006 14:33 <-- editieren / zitieren --> Unities abgeben:         
Danke u.clemens für das Testen. Bei mir wird da einfach nichts gesetzt. Im Einzelschrittmodus stelle ich fest das die Funktion
Code: boolstatus = Part.Extension.CreateMassProperty.SetAssignedMassProp(70.47, 0.2066550628926, 0.01819243865049, 0.007945965011094, 1, Empty)
FALSE zurückgibt. Computer sind eben auch nur Menschen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
u.clemens Mitglied Konstrukteur
  
 Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 13. Nov. 2006 15:01 <-- editieren / zitieren --> Unities abgeben:          Nur für MKuehner
|
Piet Mitglied Konstruktionsleiter & Konstrukteur
  
 Beiträge: 661 Registriert: 20.11.2001 SWx 2021
|
erstellt am: 13. Nov. 2006 15:13 <-- editieren / zitieren --> Unities abgeben:          Nur für MKuehner
Ich hab in der API-Hilfe mal eben folgende Seite gefunden (unter Beispiele für CreateMassProperties): Get Mass Properties using MassProperty Object Example (VB) This example show how to get the mass properties of an assembly. It is assumed that a document named claw_mechanism.sldasm is open. '--------------------------------------------- Option Explicit Sub main() Dim swApp As SldWorks.SldWorks Dim Part As SldWorks.ModelDoc2 Dim comp As Component2 Dim compbody(0) As body2 Dim val As Double Dim params As Variant Dim mass As SldWorks.MassProperty Dim pos As MathPoint Dim vec As MathVector Dim boolstatus As Boolean Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc boolstatus = Part.Extension.SelectByID2("collar-1@claw-mechanism", "COMPONENT", 0, 0, 0, False, 0, Nothing, swSelectOptionDefault) Set comp = Part.SelectionManager.GetSelectedObject6(1, 0) Set compbody(0) = comp.GetBody Set mass = Part.Extension.CreateMassProperty boolstatus = mass.AddBodies((compbody)) mass.UseSystemUnits = False val = mass.mass val = mass.Volume val = mass.Density val = mass.SurfaceArea params = mass.CenterOfMass params = mass.PrincipleAxesOfInertia(0) params = mass.PrincipleAxesOfInertia(1) params = mass.PrincipleAxesOfInertia(2) params = mass.PrincipleMomentsOfInertia params = mass.GetMomentOfInertia(0) End Sub Der Befehl "AddBodies" könnte weiterhelfen. Piet
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
   
 Beiträge: 1384 Registriert: 20.12.2003 SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 13. Nov. 2006 15:34 <-- editieren / zitieren --> Unities abgeben:          Nur für MKuehner
|
MKuehner Mitglied

 Beiträge: 10 Registriert: 16.10.2006 SolidWorks 2006 SP01 Windows 2000
|
erstellt am: 13. Nov. 2006 16:35 <-- editieren / zitieren --> Unities abgeben:         
@ad-man Den Schwerpunkt übernehme ich aus der importierten Baugruppe. Der stimmt dann zwar nicht 100%ig aber was solls. Ich denke mal mit den genauen Schwerpunkten arbeitet bei Kaufteilen sowieso keiner. Ist mir auch nicht aufgefallen das der irgendwo angegeben wird (in Katalogen). Aber ich glaube damit kann ich leben (Maschinen werden nicht gleich umfallen). @piet
Danke für die Sucherei in der API. Über dieses Beispiel bin ich nicht gestolpert. Werd mal schaun ob's Hilft. Mfg, Mario
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |