Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  Inventor VBA
  Makro für Modellbaum

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
  
PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  Makro für Modellbaum (2206 mal gelesen)
OngaBonga
Mitglied
student


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

Beiträge: 10
Registriert: 03.11.2006

erstellt am: 08. Jan. 2010 22:43    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

Sport Frei,

Ich hab da folgendes Problem.
Ich will ein Makro erstellen, welches das Bauteilende im Modellbaum über eine Benutzeroberfläche steuert (vor und zurück).

Die Benutzeroberfläche habe ich mir bereits erstellt, nun möchte ich die "click" Prozeduren für "vor" und "zurück" definieren. Und genau das ist mein Problem.
Kann da mir jemand vielleicht weiter helfen?

(da es meine ersten VBA Schritte sind, hoffe ich nicht all zu dumm rüber zukommen)

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

Michael Puschner
Ehrenmitglied V.I.P. h.c.
Rentner



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

Beiträge: 13008
Registriert: 29.08.2003

Toshiba Encore mit MS Office<P>Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben.
(Michael Anton)

erstellt am: 08. Jan. 2010 23: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 Nur für OngaBonga 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von OngaBonga:
... Ich will ein Makro erstellen,  ... da es meine ersten VBA Schritte sind, ...

Fragen zu der Erstellung von VBA-Macros sollten im IV-VBA-Forum diskutiert werden.

Darum verschiebe ich diesen Thread jetzt auch dort hin.

------------------
Michael Puschner
Autodesk Inventor Certified Expert
Scholle und Partner GmbH

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2788
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 09. Jan. 2010 13:23    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 OngaBonga 10 Unities + Antwort hilfreich

Hallo

Was genau ist das Problem? Eine Sub die auf deinen "Vor"-Button reagiert müßte so aussehen:

Code:
Private Sub Vor_Click()
hier den Code für's Verschieben des Bauteilendes
End Sub

Soll das Bauteilende im Part oder in einer Baugruppe verschoben werden? In der BG gibt's mW nur die Optionen Top und Bottom, keine Zwischenschritte.

Du kannst auch mal in der Programmierungshilfe von Inventor den Suchbegriff "Form" eingeben und dir den ersten Treffer mit dem SimpleSelection-Beispiel ansehen.

------------------
MfG
RK

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

OngaBonga
Mitglied
student


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

Beiträge: 10
Registriert: 03.11.2006

erstellt am: 10. Jan. 2010 02:00    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

erstmal Danke für Deine Antwort,
mein Problem ist der "Code für's Verschieben des Bauteilendes".
Vielleicht stelle ich mir das zu einfach vor, aber ich hab mir das wie folgt gedacht:

1.) if click auf "zurück" Then Bauteilende eine Position zurürck
2.) if click auf "vor" Then Bauteilende eine Position vor
3.)  Bedingungen um Fehlermeldung zu vemeiden

das Tool soll für den BauTeil-Modus sein.

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2788
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 10. Jan. 2010 11:38    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 OngaBonga 10 Unities + Antwort hilfreich

Hallo

Nein, der Klick auf den entsprechenden Button löst die zugehörige Sub aus. Du brauchst nicht zusätzlich prüfen, welcher Button gedrückt wurde.

Um das Bauteilende zu verschieben, mußt du erstmal herausfinden wo es eigentlich gerade steht. Es ist ja nicht garantiert, das es zu Beginn immer ganz unten ist. Dazu benutzt du die Eigenschaft "HealthStatus" der einzelnen Bauteilfeature. Diese Eigenschaft hat bei allen Features unterhalb des EoP (EndofPart) den Wert "kBeyondStopNodeHealth". Läuft man in einer Schleife durch alle Feature, kann man feststellen wann dieser Wert zum ersten Mal auftritt. Naja, da kommt dann sowas bei raus:

Code:
Option Explicit

Private Sub EoP_Hoch()

'erstmal rausfinden wo EoP gerade steht
Dim i As Integer
i = 1
Dim oFeats As PartFeatures
Set oFeats = ThisApplication.ActiveDocument.ComponentDefinition.Features
Dim oFeat As PartFeature

For Each oFeat In oFeats
    If oFeat.HealthStatus = kBeyondStopNodeHealth Then
        Exit For
    End If
    i = i + 1
Next

If i = 1 Then
    MsgBox "EoP nicht weiter nach oben verschiebbar"
    Exit Sub
End If

'Jetzt, wo wir die Position haben, können wir sie verschieben
Set oFeat = oFeats.Item(i - 1)
Call oFeat.SetEndOfPart(True)

End Sub


Private Sub EoP_Runter()

'erstmal rausfinden wo EoP gerade steht
Dim i As Integer
i = 0
Dim oFeats As PartFeatures
Set oFeats = ThisApplication.ActiveDocument.ComponentDefinition.Features
Dim oFeat As PartFeature

For Each oFeat In oFeats
    If oFeat.HealthStatus = kBeyondStopNodeHealth Then
        Exit For
    End If
    i = i + 1
Next

If i = oFeats.Count Then
    MsgBox "EoP nicht weiter nach unten verschiebbar"
    Exit Sub
End If

'Jetzt, wo wir die Position haben, können wir sie verschieben
Set oFeat = oFeats.Item(i + 1)
Call oFeat.SetEndOfPart(False)

End Sub


Das kann man sicher noch optimieren. Aber so ist es für Anfänger vielleicht leichter verständlich.

------------------
MfG
RK

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

OngaBonga
Mitglied
student


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

Beiträge: 10
Registriert: 03.11.2006

erstellt am: 10. Jan. 2010 19:56    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

Perfekt, ich hab es ausprobiert und es funktioniert  .
Ich werde es mir in den nächsten Tagen im Detail anschauen.

Dank Dir nochmal,
icke

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

hondaro
Mitglied
student

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

Beiträge: 1
Registriert: 30.03.2010

erstellt am: 04. Apr. 2010 19: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 OngaBonga 10 Unities + Antwort hilfreich

Hallo ich wollte den Code mal ausprobieren aber bei mir klappt es nicht, ich benutzte aber auch Inventor 2010 in der 64bit Version und Windows 7. Er sagt immer Fehler 13 bei der Zeile Set
oFeats = ThisApplication.ActiveDocument.ComponentDefinition.Features

kann mir jeman helfen???

Private Sub back_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   
    'Wo ist BtE?
    Dim i As Integer
    i = 0
    Dim oFeats As PartFeatures
    Set oFeats = ThisApplication.ActiveDocument.ComponentDefinition.Features
    Dim oFeat As PartFeature

    For Each oFeat In oFeats
        If oFeat.HealthStatus = kBeyondStopNodeHealth Then
            Exit For
        End If
        i = i + 1
    Next

    If i = oFeats.Count Then
        MsgBox "EoP nicht weiter nach unten verschiebbar"
        Exit Sub
    End If

    'Position gefunden, jetzt verschieben
    Set oFeat = oFeats.Item(i + 1)
    Call oFeat.SetEndOfPart(False)

    End Sub

Private Sub forward_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   
    'Wo ist BtE?
    Dim i As Integer
    i = 1
    Dim oFeats As PartFeatures
    Set oFeats = ThisApplication.ActiveDocument.ComponentDefinition.Features
    Dim oFeat As PartFeature

    For Each oFeat In oFeats
        If oFeat.HealthStatus = kBeyondStopNodeHealth Then
            Exit For
        End If
        i = i + 1
    Next

    If i = 1 Then
        MsgBox "EoP nicht weiter nach oben verschiebbar"
        Exit Sub
    End If

    'Position gefunden, jetzt verschieben
    Set oFeat = oFeats.Item(i - 1)
    Call oFeat.SetEndOfPart(True)

    End Sub

------------------
MfG

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2788
Registriert: 15.11.2006

Windows 10 x64, AIP 2020-2025

erstellt am: 05. Apr. 2010 09: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 OngaBonga 10 Unities + Antwort hilfreich

Hallo

Du probierst es nicht zufällig in einer Baugruppe oder? Fehler 13 - Typen unverträglich deutet für mich darauf hin, das oFeats als PARTFeatures definiert ist und ThisApplication.ActiveDocument.ComponentDefinition.Features was anderes zurückliefert.
Definiere doch mal z.B. vorher

Code:

Dim oApp as Application
Set oApp = ThisApplication

und setze auf die Zeile des Fehlers einen Haltepunkt. Füge eine Überwachung für oApp hinzu und dann kannst du von oApp aus die Werte von ActiveDocument, ComponentDefinition und Features ansehen.

------------------
MfG
RK

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