Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Baugruppenkomponenten auslesen

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 SOLIDWORKS
  
Zerspanungstreff mit SolidCAM bei der Hoffmann GmbH in Achim/Bremen
Autor Thema:  API: Baugruppenkomponenten auslesen (2550 mal gelesen)
Oberparleiter
Mitglied
Konstrukteur


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

Beiträge: 706
Registriert: 06.06.2000

erstellt am: 05. Jul. 2001 12:59    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

Hi SWXSolidWorks Usergemeinde

Wie kann ich aus aus einer BG die Teile/Unterbaugruppen in der ersten/zweiten usw Ebene auslesen und wie bekomme ich die Stückzahlen der verbauten Teile/U-BG.

Danke in vorraus.


Tschue

Oberparleiter

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

Armin B
Mitglied
Software Engineer ERP/PLM/CAD


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

Beiträge: 208
Registriert: 04.09.2000

Sw 2015 SP3

erstellt am: 05. Jul. 2001 13:13    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 Oberparleiter 10 Unities + Antwort hilfreich

Hallo,

in der API Hilfe gibt es ein Beispiel "Traverse Assembly Excample". Das ist schon mal ein guter Anfang.

Armin

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

Oberparleiter
Mitglied
Konstrukteur


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

Beiträge: 706
Registriert: 06.06.2000

erstellt am: 06. Jul. 2001 12: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

hi Armin

Das Beispiel "Traverse Assembly Excample" hilft mir schon die Teile und UBG's auszulesen.
Ich bräuchte aber noch die Stückzahlen.
Wie komm ich an diese?

Ich denke mit dem Befehl "Child Component Count" sollte es eigendlich gehen nur der Hacken ist den gibts nich für VBA(siehe API-Hilfe).
Das steht nur "Note: This method can only be called from COM implementations" wie kann ich den Befehl dennoch verwenden?

Danke in Vorraus

Tschue

Oberparleiter

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 06. Jul. 2001 12: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 Oberparleiter 10 Unities + Antwort hilfreich

Hallo,

du brauchst unter VB (oder VBA) diese Funktion gar nicht. Das Safearray mit den Children gibt dir schon die Anzahl zurück:

Code:

Children = Component.GetChildren
ChildCount = UBound(Children) + 1
' das Safearray beginnt die Zählung bei Index 0, deswegen für die Anzahl einen draufrechnen

Manchmal ist VB halt viel einfacher als COM.

Ciao,
Stefan

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

Oberparleiter
Mitglied
Konstrukteur


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

Beiträge: 706
Registriert: 06.06.2000

erstellt am: 09. Jul. 2001 12:36    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

HI

ÄÄhhhmm irgendwie stehe ich auf der Leitung. Sorry
Der Befehl "ChildCount = UBound(Children) + 1" gibt mir doch nur die Anzahl der Komponenten in einer UBG zurück oder verstehe ich das Falsch??????
Ich brauche aber die Anzahl der Teile die in einer BG gleich sind z.B. Schrauben,Stifte,Teile die mehrfach vorhanden sind.
Der Befehl "Component.Name" gibt mir z.B. den Text "SchraubeM8x20-<2>" raus wobei die 2 im Featurebaum von SWXSolidWorks fortlaufend ist, wenn ich aber eine Schraube aus meiner BG lösche und wieder eine gleiche Schraube einfüge überspringt mir die Nummerierung eine Ziffer. Ich kann also die Stückzahl aus dem Name auch nicht verwenden.

Danke für eure Bemühungen.

Tschue

FOberparleiter

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 09. Jul. 2001 12:47    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 Oberparleiter 10 Unities + Antwort hilfreich

Hi,

du hast recht, mit dem ChildCount bekommst du die Anzahl der Komponenten in der Baugruppe. Um die Anzahl der einzelnen Komponenteninstanzen herauszubekommen (also wie oft was verbaut ist) mußt du wohl oder übel eine kompletten Loop über die Baugruppe machen und dir z.B. anhand des Pfades ( Component.GetPathName ) selbst merken, welche Komponenten verbaut sind und dann auch selbst zählen, wieviele Instanzen einer bestimmten Komponente vorkommen.

Sorry, ich kenn leider keinen einfacheren Weg.

Ciao,
Stefan

------------------
--
Inoffizielle Solidworks Hilfeseite
http://solidworks.cad.de
EMail: Stefan.Berlitz@solidworks.cad.de

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

Armin B
Mitglied
Software Engineer ERP/PLM/CAD


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

Beiträge: 208
Registriert: 04.09.2000

Sw 2015 SP3

erstellt am: 09. Jul. 2001 14:07    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 Oberparleiter 10 Unities + Antwort hilfreich

Hallo,

da könnten evtl. noch mehr Probleme auftauchen.
Hast Du schon mal über Komponentenmuster nachgedacht:
Bis Sw2000 war es absolut unmöglich, herauszubekommen, welche Komponenten wie oft in einem Muster verbaut waren (gleiches galt auch für Features).
Sw2001 SP2+ bietet jetzt zwar eine Möglichkeit, aber die ist ein bißchen vertrakt und ich kann Dir leider noch keinen gangbaren Weg aufzeigen.
Schau Dir mal die API-Hilfe zu: LocalLinearPatternFeatureData, LocalCircularPatternFeatureData und DerivedPatternFeatureData an.

Gruß, Armin

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

Oberparleiter
Mitglied
Konstrukteur


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

Beiträge: 706
Registriert: 06.06.2000

erstellt am: 09. Jul. 2001 16:39    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

HI

An den Loop durch die BG habe ich auch schon gedacht muss ich wohl oder übel.
An das Komponentenmuster habe ich ehrlich gesagt noch garnicht gedacht. Muss noch ein bisschen darüber Hirnen.

Danke für die regen Antworten.

Tschue

Oberp.

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



Konstrukteur (m/w/d)
Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Mitarbeitende:n für einen unserer Kunden. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und arbeiten mit an anspruchsvollen Lösungen für die Industrie....
Anzeige ansehenKonstruktion, Visualisierung
Oberparleiter
Mitglied
Konstrukteur


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

Beiträge: 706
Registriert: 06.06.2000

Celsius R630, P4 Xeon 3,2
3GB Ram, 2x24" an FX3500
U320 SCSI,
SWX 2011 SP4.0
WinXP SP3
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wirs nicht wagen, ist es schwer.

erstellt am: 10. Jul. 2001 17:04    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

HI

So also genug Gehirnt.

Ich habe den Loop gemacht und es funkt auch mit Lokale Muster ohne Probleme. SWXSolidWorks gibt mir automatisch alle verbauten Teile raus auch diese in dem Muster.
Folgend habe ich das Macro. Man koennte es schöner Programmieren aber ich bin kein Profi und wichtig ist es funkt.

Sub Main()
Dim swApp As Object
Dim AssemblyDoc As Object
Dim Configuration As Object
Dim RootComponent As Object
Dim i As Integer
Dim s As Integer
Dim f
Dim Children As Variant
Dim UChildren As Variant
Dim Child As Object
Dim ChildCount As Integer
Dim UChildCount As Integer
Dim Component As Object
Dim UBg As String
Dim Stückzahl
Dim Komponente(100) As String
Dim KompTyp(100)
Dim vergleich As String

Set swApp = CreateObject("SldWorks.Application")
Set AssemblyDoc = swApp.ActiveDoc ' Actives Dokument
Set Configuration = AssemblyDoc.GetActiveConfiguration() ' Pointer auf active Konfiguration
Set RootComponent = Configuration.GetRootComponent() ' Pointer auf Baugruppe

Debug.Print "BG-Name :" & AssemblyDoc.gettitle ' Baugruppenname
Children = RootComponent.GetChildren ' List der Kinder holen
ChildCount = UBound(Children) + 1 ' childcount = anzahl der Kinder (Komponenten und BG's)
Debug.Print "Komponentenanzahl :" & ChildCount

For i = 0 To (ChildCount - 1)
Set Child = Children(i) ' Pointer auf Kind
UChildren = Child.GetChildren ' Liste der UBG holen
UChildCount = UBound(UChildren) + 1
' Püfen ob BG oder Teil
If UChildCount <> 0 Then
UBg = "BG"
Else
UBg = "Teil"
End If

Komponente(i) = Mid(Child.Name, 1, Len(Child.Name) - 2)
KompTyp(i) = UBg
Next i
' Auf Stückzahl prüfen
For f = 0 To i
Stückzahl = 0 'Zähler Nullen
If Komponente(f) = "" Then GoTo ende
vergleich = Komponente(f) ' Komponente in Vergleich übernehmen
For s = 0 To i ' Nach Teile suchen
If vergleich = Komponente(s) Then ' Der Vergleich
Stückzahl = Stückzahl + 1 'Zähler um gefundene Komponente erhöhen
Komponente(s) = "" 'Gefundene Komponente löschen
End If
Next s
Debug.Print "Name: " & vergleich & " Stückzahl: " & Stückzahl & " Typ: " & KompTyp(f)
ende:
Next f

End Sub


Jo danke an alle SWXSolidWorks User

Tschue


Oberparleiter

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