Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Zugriff auf Spaltengleichung einer Stückliste per Makro

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
Autor Thema:   Zugriff auf Spaltengleichung einer Stückliste per Makro (911 mal gelesen)
Spirou85
Mitglied
Konstruktuer und CAD-Betreuer


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

Beiträge: 59
Registriert: 01.12.2014

HP ZBook 17 G3
i7-6820 2,7 GHz - 32GB Ram
NVIDIA Quadro M4000M
Windows 10 Pro 64Bit Version 1803
Build 17134.285
SWX2018-64Bit-SP5.0
MaxxDB 2018 SP0.56
DraftSight 2018 x64 SP2
3DCONNEXION SpaceMouse Enterprise mit CadMouse

erstellt am: 21. Dez. 2015 07: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

Hallo SWX-Gemeinde und Makro-Spezialisten,

habe ein Makro erstellt um auf Knopfdruck zu einer ausgewählten Ansicht eine Stückliste einzufügen.
Dieses funktioniert auch gut. Wird eine Baugruppe mehrfach benötigt, so wird bei uns in der Stückliste
eine Spalte nach der Stückzahlspalte eingefügt und hier per Splatengleichung mit der Stückzahl verknüpft.
Es gibt eine Stücklistenvorlage, die schon entsprechend vorbereitet ist.
Nun würde ich gerne nach dem Einfügen der Stückliste in dieser Gleichung den Multiplikator entsprechend
ändern. Weis jemand mit welcher API-Funktion man Zugriff auf die Spaltengleichung bekommt. Habe nur die
Funktion für die Auswahl der Benutzerdefinierten Eigenschaften gefunden. Auch die Suche im Forum blieb
Erfolglos.

Danke im Vorraus.

------------------
Viele Grüße aus Brackenheim

Lars Pauly

[Diese Nachricht wurde von Spirou85 am 01. Feb. 2016 editiert.]

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

BenLed
Mitglied
Maschinenbau Ing

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

Beiträge: 9
Registriert: 16.02.2015

erstellt am: 31. Jan. 2016 21:14    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 Spirou85 10 Unities + Antwort hilfreich

Hallo Spirou85,

ich bin beim lesen über deinen Beitrag gestolpert. Könntest du "bitte bitte bitte"  deinen Code für das einfügen einer Stückliste via Makro hier Posten? Ich suche schon seit ner Woche genau das und krieg es einfach nicht auf die Reihe. Wäre mir echt ne riesen Hilfe 

Lg Ben

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

Spirou85
Mitglied
Konstruktuer und CAD-Betreuer


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

Beiträge: 59
Registriert: 01.12.2014

HP ZBook 17 G3
i7-6820 2,7 GHz - 32GB Ram
NVIDIA Quadro M4000M
Windows 10 Pro 64Bit Version 1803
Build 17134.285
SWX2018-64Bit-SP5.0
MaxxDB 2018 SP0.56
DraftSight 2018 x64 SP2
3DCONNEXION SpaceMouse Enterprise mit CadMouse

erstellt am: 01. Feb. 2016 09:06    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 SWX-Gemeinde,

auf meinen Beitrag habe ich leider keine Antwort erhalten. Wahrscheinlich liegt es daran, dass es nicht möglich ist per VBA auf diese Gleichungen zuzugreifen. Habe mich durch die Hilfe und andere Foren gewühlt und nichts gefunden auch mit der Funktion, mit der man die Eigenschaften auswählen kann hat man keine Chance.
Habe es nun anders gelöst. Meine Gleichung multipliziert die Stückzahl mit dem Inhalt einer anderen Spalte, und in jede Zeile dieser Spalte schreibe ich den Multiplikator rein, und blende die Spalte aus.

Nachfolgend der Code zum Einfügen der Stückliste.
Vor dieser Routine hat der Benutzer angegeben ob Englisch und
die Anzahl. Die Anzahl wird an die Routine übergeben. Ist sie
kleiner 0 dann wird Englisch verwendet.
Die Stückliste wird an der Position der ausgewählten Ansicht eingefügt.
Vielleicht kann jemand den ein oder anderen Teil verwenden.

Sub StueliEinfuegen(ByVal nAnzahl As Long)

    Dim swApp As SldWorks.SldWorks              'Zugriff auf SolidWorks
    Dim PartDoc As SldWorks.ModelDoc2          'Zugriff auf Aktuelles Dokument
    Dim DrwDoc As SldWorks.DrawingDoc          'Zugriff auf Aktuelle Zeichnung
    Dim AktModelView As SldWorks.View          'Zugriff auf Aktive Ansicht
    Dim ModAusView As SldWorks.ModelDoc2        'Zugriff auf das Modell der Zeichnung
   
    Dim vPos As Variant                        'Position der Ansicht
    Dim Stueli As SldWorks.BomTableAnnotation  'Zugriff auf Stückliste
    Dim StTable As SldWorks.BomFeature          'Zugriff auf Tabellenfeature
    Dim swTable As SldWorks.TableAnnotation    'Zugriff auf Spalten und Texte
    Dim vStAnno As Variant                      'Zugriff auf Inhalte
    Dim sConfig As String                      'Konfiguration des Modells in der Ansicht
    Dim sUeberschr As String                    'Inhalt der Überschrift
    Dim nI As Long                              'Zähler
    Dim dHeight As Long                        'Zeilenhöhe
    Dim sVorlage As String                      'Tabellenvorlage
    Dim sAnzahl As String                      'Text für Fertigungsanzahl
    Dim nMerk As Long                          'Merker
   
'SolidWorks-Objekt erstellen und mit Aktivem Dokument verbinden
    Set swApp = Application.SldWorks
    Set PartDoc = swApp.ActiveDoc
   
    If (PartDoc.GetType <> swDocDRAWING) Then
        ' wenn keine Zeichnung aktiv wird das Makro wieder beendet
        Call MsgBox("Aktuelles Dokument ist keine Zeichnung!", vbCritical + vbOKOnly, "Fehler !")
        Exit Sub
    End If
    Set DrwDoc = PartDoc
    Set AktModelView = DrwDoc.ActiveDrawingView
    If AktModelView Is Nothing Then
        ' wenn keine Ansicht aktiv wird das Makro wieder beendet
        Call MsgBox("Keine Ansicht aktiviert!", vbCritical + vbOKOnly, "Fehler !")
        Exit Sub
    End If
    Set ModAusView = AktModelView.ReferencedDocument
   
    'Entsprechend dem Wert von nAnzahl die Tabellenvorlage auswählen
    If nAnzahl < 0 Then
        If nAnzahl < -1 And (ModAusView.GetType = swDocASSEMBLY) Then
            sVorlage = "L:\SWX_APPS_2013\Vorlagen\Stücklistenvorlagen\WKS-Fertigung-Mehrfach-Englisch.sldbomtbt"
        Else
            sVorlage = "L:\SWX_APPS_2013\Vorlagen\Stücklistenvorlagen\WKS-Fertigung-Englisch.sldbomtbt"
        End If
        nAnzahl = nAnzahl * -1
        sUeberschr = "bill of materials for: "
        sAnzahl = " - manufacture " + CStr(nAnzahl) + " piece"
        If nAnzahl > 1 Then
            sAnzahl = sAnzahl + "s"
        End If
    Else
        If nAnzahl > 1 And (ModAusView.GetType = swDocASSEMBLY) Then
            sVorlage = "L:\SWX_APPS_2013\Vorlagen\Stücklistenvorlagen\WKS-Fertigung-Mehrfach.sldbomtbt"
        Else
            sVorlage = "L:\SWX_APPS_2013\Vorlagen\Stücklistenvorlagen\WKS-Fertigung.sldbomtbt"
        End If
        sUeberschr = "Stückliste zu: "
        sAnzahl = " - " + CStr(nAnzahl) + " Stück fertigen"
    End If
   
    'Tabelle mit Bezug zur aktuell dargestellten Konfiguration einfügen
    sConfig = AktModelView.ReferencedConfiguration
    vPos = AktModelView.Position
    Set Stueli = AktModelView.InsertBomTable4(False, vPos(0), vPos(1), swBOMConfigurationAnchor_BottomLeft, swBomType_PartsOnly, _
      sConfig, sVorlage, False, swIndentedBOMNotSet, True)
    Set StTable = Stueli.BomFeature
    ni = StTable.GetTableAnnotationCount
    If ni = 1 Then
        vStAnno = StTable.GetTableAnnotations
        Set swTable = vStAnno(0)
    Else
        ' wenn mehrere Tabellen im Feature dann kann keine Tabelle eingefügt werden
        Call MsgBox("Aufgrund mehrerer Tabellen in der Ansicht kann keine Überschrift eingefügt werden!", vbCritical + vbOKOnly, "Fehler !")
        Exit Sub
    End If
    If (ModAusView.GetType = swDocASSEMBLY) Then
        'Ist Baugruppe, nun noch Überschrift einblenden und benennen
        sUeberschr = sUeberschr & CStr(ModAusView.CustomInfo2(sConfig, "Desc1"))
        If CStr(ModAusView.CustomInfo2(sConfig, "Desc2")) <> "" Then
            sUeberschr = sUeberschr & " " & CStr(ModAusView.CustomInfo2(sConfig, "Desc2"))
        End If
        sUeberschr = sUeberschr + sAnzahl
        If InStr(1, CStr(ModAusView.CustomInfo2(sConfig, "PWDB_field9")), "lackiert", vbTextCompare) > 0 Then
            If Left(sUeberschr, 1) = "b" Then
                sUeberschr = sUeberschr + " - paint coated"
            Else
                sUeberschr = sUeberschr + " - lackiert"
            End If
        End If
        If InStr(1, CStr(ModAusView.CustomInfo2(sConfig, "PWDB_field9")), "verzinkt", vbTextCompare) > 0 Then
            If Left(sUeberschr, 1) = "b" Then
                sUeberschr = sUeberschr + " - zinc coated"
            Else
                sUeberschr = sUeberschr + " - verzinkt"
            End If
        End If
       
        swTable.TitleVisible = True
        swTable.Title = sUeberschr
       
        'Nun noch die Gesamtanzahl eventuell eintragen
        If nAnzahl > 1 Then
            nMerk = swTable.RowCount
            For ni = 2 To nMerk - 1
                swTable.Text(ni, 2) = CStr(nAnzahl)
            Next ni
            swTable.ColumnHidden(2) = True
        End If
    Else
        'Ist Teil, Überschrift ausblenden, und falls lackiert oder verzinkt wird diese wieder einblenden
        swTable.TitleVisible = False
        If nAnzahl > 1 Then
            'Anzahl > 1 somit Stückzahl anpassen
            swTable.Text(1, 1) = CStr(nAnzahl)
        End If
        sUeberschr = sUeberschr & CStr(ModAusView.CustomInfo2(sConfig, "Desc1"))
        If Left(CStr(ModAusView.CustomInfo2(sConfig, "Desc2")), 5) <> Auftragsnummer(CStr(ModAusView.CustomInfo2(sConfig, "Field1"))) Then
            sUeberschr = sUeberschr & " " & CStr(ModAusView.CustomInfo2(sConfig, "Desc2"))
        End If
        sUeberschr = sUeberschr & sAnzahl
        If InStr(1, CStr(ModAusView.CustomInfo2(sConfig, "PWDB_field9")), "lackiert", vbTextCompare) > 0 Then
            If Left(sUeberschr, 1) = "b" Then
                sUeberschr = sUeberschr + " - paint coated"
            Else
                sUeberschr = sUeberschr + " - lackiert"
            End If
            swTable.TitleVisible = True
            swTable.Title = sUeberschr
        End If
        If InStr(1, CStr(ModAusView.CustomInfo2(sConfig, "PWDB_field9")), "verzinkt", vbTextCompare) > 0 Then
            If Left(sUeberschr, 1) = "b" Then
                sUeberschr = sUeberschr + " - zinc coated"
            Else
                sUeberschr = sUeberschr + " - verzinkt"
            End If
            swTable.TitleVisible = True
            swTable.Title = sUeberschr
        End If
    End If
   

End Sub

------------------
Viele Grüße aus Brackenheim

Lars Pauly

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

BenLed
Mitglied
Maschinenbau Ing

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

Beiträge: 9
Registriert: 16.02.2015

erstellt am: 01. Feb. 2016 13:29    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 Spirou85 10 Unities + Antwort hilfreich

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)2019 CAD.de | Impressum | Datenschutz