Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  ComboBox im Eigenschaften bearbeiten Fenster (Feldtext)

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:  ComboBox im Eigenschaften bearbeiten Fenster (Feldtext) (991 mal gelesen)
homerpower
Mitglied



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

Beiträge: 112
Registriert: 19.02.2003

ME10 8.70G
Creo Elements Direct Modeling 19
Creo Elements Direct Model Manager
Creo Elements Direct Drafting 19
Autodesk NavisWorks 2011
AutoCAD 2022
Inventor 2020, 2021, 2022
Revit 2020, 2021, 2022
<p>
Precision T3600
Intel Xeon Processor E5-1660 (Six Core, 3.30GHz Turbo, 15MB)
32GB RAM
NVIDIA Quadro K4000
Windows 7 pro
<p>
AMD Ryzen9 5900X
64GB RAM
GTX 970 4GB RAM
Windows 10 pro

erstellt am: 16. Nov. 2021 10: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


Toleranz.png

 
Hallo,

ich möchte gern das Eingabefenster für das Schriftfeld anpassen. Und im Feld Toleranz gerne eine ComboBox einsetzen, wo man eine hinterlegte Toleranz auswählen kann.

Dazu hab ich ein paar Fragen:

1. Wie kann ich die Werte für die ComboBox hinterlegen. Das so zumachen wie im Excel mit RowSource geht nicht, bzw. bekomme ich nicht hin. (Tabelle!A2:A5) Excel
2. Wie binde ich das ganze in das Eigenschaftenfenster ein?

homi

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 16. Nov. 2021 11:11    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 homerpower 10 Unities + Antwort hilfreich

Moin

1. Das ist ein Textfeld, dessen Eigenschaft du nicht ändern kannst. Da geht nix anderes als einen Text einzugeben.
2. Gar nicht.

Der Dialog bietet keine öffentlich zugänglichen Schnittstellen. Erstell dir selbst eine Form und gestalte die nach deinen Vorstellungen. Mach eine Addin dll draus, fang in den UserInputEvents das OnActivateCommand ab, prüfen ob der CommandName= "DrawingEditFieldTextCmd" ist, setze die EventHandled Eigenschaft auf kEventHandled damit Inventor seinen Dialog nicht anzeigt und blende deine Form ein. Fertsch 

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

BernoAn
Mitglied



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

Beiträge: 164
Registriert: 16.01.2014

erstellt am: 16. Nov. 2021 12:11    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 homerpower 10 Unities + Antwort hilfreich

Hallo,

Wo kommt das Feld "Toleranz" denn her?

Wähle mal im Feldtext statt "Alle" die Rubrik aus wo es herkommt.

Vielleicht geht es doch zu ändern.

Gruß
Berno

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

homerpower
Mitglied



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

Beiträge: 112
Registriert: 19.02.2003

ME10 8.70G
Creo Elements Direct Modeling 19
Creo Elements Direct Model Manager
Creo Elements Direct Drafting 19
Autodesk NavisWorks 2011
AutoCAD 2022
Inventor 2020, 2021, 2022
Revit 2020, 2021, 2022
<p>
Precision T3600
Intel Xeon Processor E5-1660 (Six Core, 3.30GHz Turbo, 15MB)
32GB RAM
NVIDIA Quadro K4000
Windows 7 pro
<p>
AMD Ryzen9 5900X
64GB RAM
GTX 970 4GB RAM
Windows 10 pro

erstellt am: 16. Nov. 2021 13:28    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 BernoAn,

das Feld hab ich selbst erstellt, im Zeichnungskopf Editor über "Angeforderte Eingabe". War als Beispiel gedacht. Und da man bestimmte Einträge immer wieder braucht. Könnte  man diese mit der ComboBox irgendwie einfügen. Oder halt eine neue Eingabemaske erstellen.

Wird wohl nichts werden, meine VBA Fähigkeiten liegen quasi bei 0%.

homi

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 16. Nov. 2021 18:54    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 homerpower 10 Unities + Antwort hilfreich


Toleranzliste.zip

 
Hallo

So schwer ist das nun auch wieder nicht. Eine Demo anbei.
- Zipfile herunterladen und irgendwo entpacken
- Inventor starten und mit ALT + F11 den VBA-Editor öffnen
- Anwendungsprojekt anklicken
- Menü "Datei" --> "Datei importieren" --> frmToleranz.frm und ShowFormToleranz.bas importieren
- VBA-Editor schließen
- Zeichnungsdatei öffnen (irgendeine)
- Ribbonleiste deiner Wahl, z.B. "Mit Anmerkungen versehen" akivieren
- Über Rechtsklick auf die Ribbonleiste --> "Benutzerbefehle anpassen..." öffnen
- Tab "Multifunktionsleiste" aktivieren
- Dropdown "Befehle auswählen aus" umstellen auf "Makros"
- Makro "ShowFormToleranz" per Doppelklick einfügen

Im Schriftfeld eine angeforderte Eingabe "Toleranz" anlegen und speichern oder den Namen im Quellcode an die vorhandene Eingabe anpassen. Die Liste beinhaltet derzeit nur beispielhaft A, B, C, D und E.
Theoretisch könnte man die Userform in der Optik dem Schriftfeld nachempfinden und damit alle benötigten Felder abfragen, Auswahllisten anbieten, Eingaben plausibilisieren usw. usw.
Ob man das noch in VBA macht ist eine andere Frage, da vermutlich ein Auslaufmodell. In einem anderen Thread habe ich ein paar Möglichkeiten gezeigt mit iLogic eine Form in VB.Net zu erstellen.

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

homerpower
Mitglied



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

Beiträge: 112
Registriert: 19.02.2003

ME10 8.70G
Creo Elements Direct Modeling 19
Creo Elements Direct Model Manager
Creo Elements Direct Drafting 19
Autodesk NavisWorks 2011
AutoCAD 2022
Inventor 2020, 2021, 2022
Revit 2020, 2021, 2022
<p>
Precision T3600
Intel Xeon Processor E5-1660 (Six Core, 3.30GHz Turbo, 15MB)
32GB RAM
NVIDIA Quadro K4000
Windows 7 pro
<p>
AMD Ryzen9 5900X
64GB RAM
GTX 970 4GB RAM
Windows 10 pro

erstellt am: 18. Nov. 2021 11: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

Hallo Ralf,

Danke erst mal für dein Beispiel, bin grad dabei dieses um ein Zweites Pulldown Menü zu erweitern.

Im Abschnitt: Private Sub UserForm_Initialize()

hab ich ein Problem mit der "For" Steuervariable

wie füge ich an dieser Stelle die zweite CBox2 ein?

Code:

Dim i As Integer
    For i = 0 To CBox1.ListCount - 1
        If CBox1.List(i) = sText Then
            CBox1.ListIndex = i
            Exit For
        End If

homi

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

homerpower
Mitglied



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

Beiträge: 112
Registriert: 19.02.2003

ME10 8.70G
Creo Elements Direct Modeling 19
Creo Elements Direct Model Manager
Creo Elements Direct Drafting 19
Autodesk NavisWorks 2011
AutoCAD 2022
Inventor 2020, 2021, 2022
Revit 2020, 2021, 2022
<p>
Precision T3600
Intel Xeon Processor E5-1660 (Six Core, 3.30GHz Turbo, 15MB)
32GB RAM
NVIDIA Quadro K4000
Windows 7 pro
<p>
AMD Ryzen9 5900X
64GB RAM
GTX 970 4GB RAM
Windows 10 pro

erstellt am: 18. Nov. 2021 12:28    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

Ok,
ich hatte einen Denkfehler.
hab die Variable "I" übersehen.
Also müsste die zweite CBox dann einen anderen Variabelen Buchstaben bekommen z.B. J liege ich richtig?

Code:
    Dim i As Integer
    For i = 0 To CBox1.ListCount - 1
        If CBox1.List(i) = sText Then
            CBox1.ListIndex = i
            Exit For
        End If
    Next
   
  Dim j As Integer
    For j = 0 To CBox2.ListCount - 1
        If CBox2.List(j) = sText Then
            CBox2.ListIndex = j
            Exit For
           
        End If

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 18. Nov. 2021 13:53    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 homerpower 10 Unities + Antwort hilfreich

Hallo

Nö, du kannst i wieder verwenden. Du hast in der ersten For-Schleife den ListIndex von ComboBox1 gesetzt und der Wert von i wird nicht länger benötigt. Daher kann die zweite For-Schleife wieder mit For i=0 beginnen. Ein zweite Zählvariable(j) würde man benötigen, wenn man zwei Schleifen ineinander schachtelt oder wenn der ermittelte Wert von i später im Code erneut benötigt werden würde und erhalten bleiben muss.

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

homerpower
Mitglied



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

Beiträge: 112
Registriert: 19.02.2003

ME10 8.70G
Creo Elements Direct Modeling 19
Creo Elements Direct Model Manager
Creo Elements Direct Drafting 19
Autodesk NavisWorks 2011
AutoCAD 2022
Inventor 2020, 2021, 2022
Revit 2020, 2021, 2022
<p>
Precision T3600
Intel Xeon Processor E5-1660 (Six Core, 3.30GHz Turbo, 15MB)
32GB RAM
NVIDIA Quadro K4000
Windows 7 pro
<p>
AMD Ryzen9 5900X
64GB RAM
GTX 970 4GB RAM
Windows 10 pro

erstellt am: 19. Nov. 2021 13:30    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,

das hab ich leider nicht hinbekommen, wie integriere ich denn hier die zweite CBox? Kleines Beispiel wäre schön.

Code:

Dim i As Integer
    For i = 0 To CBox1.ListCount - 1
        If CBox1.List(i) = sText Then
            CBox1.ListIndex = i
            Exit For
        End If
    Next

schönes Wochenende
homi

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 19. Nov. 2021 20:11    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 homerpower 10 Unities + Antwort hilfreich

Hallo

Nacheinander

Code:

Dim i As Integer
For i = 0 To CBox1.ListCount - 1
    If CBox1.List(i) = sText Then
        CBox1.ListIndex = i
        Exit For
    End If
Next
 
For i = 0 To CBox2.ListCount - 1
    If CBox2.List(i) = sText Then
        CBox2.ListIndex = i
        Exit For
    End If
Next


------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

homerpower
Mitglied



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

Beiträge: 112
Registriert: 19.02.2003

ME10 8.70G
Creo Elements Direct Modeling 19
Creo Elements Direct Model Manager
Creo Elements Direct Drafting 19
Autodesk NavisWorks 2011
AutoCAD 2022
Inventor 2020, 2021, 2022
Revit 2020, 2021, 2022
<p>
Precision T3600
Intel Xeon Processor E5-1660 (Six Core, 3.30GHz Turbo, 15MB)
32GB RAM
NVIDIA Quadro K4000
Windows 7 pro
<p>
AMD Ryzen9 5900X
64GB RAM
GTX 970 4GB RAM
Windows 10 pro

erstellt am: 22. Nov. 2021 10: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

Hallo,

Danke tut, aber im gesamten habe ich noch einen Fehler drin, denn Feld 1 wird nicht mehr übertragen, nur noch Feld 2. Denke der Fehler liegt im Fett gedruckten bereich. Sorry das ich so unfähig bin.

Code:

Option Explicit

Private Sub btnFertig_Click()
    Unload Me
End Sub

Private Sub btnUpdate_Click()
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
   
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument
   
    Dim oSheet As Sheet
    Set oSheet = oDrawDoc.ActiveSheet
   
    Dim oTitleBlock As TitleBlock
    Set oTitleBlock = oSheet.TitleBlock
   
    Dim sText As String
    sText = Me.CBox1.Value
    sText = Me.CBox2.Value
   
    Dim oTextBox As TextBox
    Set oTextBox = GetPromptTextBox(oTitleBlock.Definition, "Toleranz 1")
    Set oTextBox = GetPromptTextBox(oTitleBlock.Definition, "Toleranz 2")

   
    If Not oTextBox Is Nothing Then
        Call oTitleBlock.SetPromptResultText(oTextBox, sText)
    End If
End Sub

Private Sub CommandButton1_Click()

End Sub


Private Sub UserForm_Initialize()
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
   
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument
   
    Dim oSheet As Sheet
    Set oSheet = oDrawDoc.ActiveSheet
   
    Dim oTitleBlock As TitleBlock
    Set oTitleBlock = oSheet.TitleBlock
   
    Dim oTitleBlockdef As TitleBlockDefinition
    Set oTitleBlockdef = oTitleBlock.Definition

    Dim oTextBox As TextBox

    Set oTextBox = GetPromptTextBox(oTitleBlockdef, "Toleranz 1")
    Set oTextBox = GetPromptTextBox(oTitleBlockdef, "Toleranz 2")
 
    If Not oTextBox Is Nothing Then
        Dim sText As String
        sText = oTitleBlock.GetResultText(oTextBox)
    End If
   
    With Me.CBox1
        .AddItem "a"
        .AddItem "b"
        .AddItem "c"
        .AddItem "d"
        .AddItem "e"
    End With
   
    With Me.CBox2
        .AddItem "f"
        .AddItem "g"
        .AddItem "h"
        .AddItem "i"
        .AddItem "j"
    End With

Dim i As Integer
For i = 0 To CBox1.ListCount - 1
    If CBox1.List(i) = sText Then
        CBox1.ListIndex = i
        Exit For
    End If
Next

For i = 0 To CBox2.ListCount - 1
    If CBox2.List(i) = sText Then
        CBox2.ListIndex = i
        Exit For
    End If
Next
   
End Sub

Private Function GetPromptTextBox(ByVal oTitleBlockdef As TitleBlockDefinition, ByVal sPromptText As String) As TextBox
    Dim oTextBox As TextBox
    For Each oTextBox In oTitleBlockdef.Sketch.TextBoxes
        If UCase(Left(oTextBox.FormattedText, 7)) = "<PROMPT" Then
            Dim lIndex As Long
            lIndex = InStr(oTextBox.FormattedText, ">") + 1
            Dim llength As Long
            llength = Len(sPromptText)
            If UCase(Mid(oTextBox.FormattedText, lIndex, llength)) = UCase(sPromptText) Then
                Set GetPromptTextBox = oTextBox
                Exit For
            End If
        End If
        Set oTextBox = Nothing
    Next
End Function


homi

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 22. Nov. 2021 12:12    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 homerpower 10 Unities + Antwort hilfreich

Moin

Du füllst die Variable sText mit dem gewählten Eintrag deiner CBox1. In der nächsten Zeile überschreibst du den Wert  von sText mit dem gewählten Eintrag deiner CBox2. Das kann nicht funktionieren. Leg eine zweite Variable sText2 an. Oder benutzte erst sText, um CBox1 auszulesen und den Wert in die angeforderte Eingabe 1 zu schreiben und anschließend benutzt du sText, um CBox2 auszulesen und den Wert in die angeforderte Eingabe 2 zu schreiben.


Code:

Option Explicit

Private Sub btnFertig_Click()
    Unload Me
End Sub

Private Sub btnUpdate_Click()
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
 
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument
 
    Dim oSheet As Sheet
    Set oSheet = oDrawDoc.ActiveSheet
 
    Dim oTitleBlock As TitleBlock
    Set oTitleBlock = oSheet.TitleBlock
 
    Dim sText As String
    sText = Me.CBox1.Value
 
    Dim oTextBox As TextBox
    Set oTextBox = GetPromptTextBox(oTitleBlock.Definition, "Toleranz 1")
 
    If Not oTextBox Is Nothing Then
        Call oTitleBlock.SetPromptResultText(oTextBox, sText)
    End If

    sText = Me.CBox2.Value
    Set oTextBox = GetPromptTextBox(oTitleBlock.Definition, "Toleranz 2")

    If Not oTextBox Is Nothing Then
        Call oTitleBlock.SetPromptResultText(oTextBox, sText)
    End If

End Sub

Private Sub UserForm_Initialize()
    Dim oApp As Inventor.Application
    Set oApp = ThisApplication
 
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = oApp.ActiveDocument
 
    Dim oSheet As Sheet
    Set oSheet = oDrawDoc.ActiveSheet
 
    Dim oTitleBlock As TitleBlock
    Set oTitleBlock = oSheet.TitleBlock
 
    Dim oTitleBlockdef As TitleBlockDefinition
    Set oTitleBlockdef = oTitleBlock.Definition

    Dim oTextBox As TextBox
    Set oTextBox = GetPromptTextBox(oTitleBlockdef, "Toleranz 1")

    Dim sText As String
    If Not oTextBox Is Nothing Then
        sText = oTitleBlock.GetResultText(oTextBox)
    End If
 
    With Me.CBox1
        .AddItem "a"
        .AddItem "b"
        .AddItem "c"
        .AddItem "d"
        .AddItem "e"
    End With

    Dim i As Integer
    For i = 0 To CBox1.ListCount - 1
        If CBox1.List(i) = sText Then
            CBox1.ListIndex = i
            Exit For
        End If
    Next
 
    Set oTextBox = GetPromptTextBox(oTitleBlockdef, "Toleranz 2")
   
    If Not oTextBox Is Nothing Then
        sText = oTitleBlock.GetResultText(oTextBox)
    End If

    With Me.CBox2
        .AddItem "f"
        .AddItem "g"
        .AddItem "h"
        .AddItem "i"
        .AddItem "j"
    End With

    For i = 0 To CBox2.ListCount - 1
        If CBox2.List(i) = sText Then
            CBox2.ListIndex = i
            Exit For
        End If
    Next
 
End Sub

Private Function GetPromptTextBox(ByVal oTitleBlockdef As TitleBlockDefinition, ByVal sPromptText As String) As TextBox
    Dim oTextBox As TextBox
    For Each oTextBox In oTitleBlockdef.Sketch.TextBoxes
        If UCase(Left(oTextBox.FormattedText, 7)) = "<PROMPT" Then
            Dim lIndex As Long
            lIndex = InStr(oTextBox.FormattedText, ">") + 1
            Dim llength As Long
            llength = Len(sPromptText)
            If UCase(Mid(oTextBox.FormattedText, lIndex, llength)) = UCase(sPromptText) Then
                Set GetPromptTextBox = oTextBox
                Exit For
            End If
        End If
        Set oTextBox = Nothing
    Next
End Function


------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

homerpower
Mitglied



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

Beiträge: 112
Registriert: 19.02.2003

ME10 8.70G
Creo Elements Direct Modeling 19
Creo Elements Direct Model Manager
Creo Elements Direct Drafting 19
Autodesk NavisWorks 2011
AutoCAD 2022
Inventor 2020, 2021, 2022
Revit 2020, 2021, 2022
<p>
Precision T3600
Intel Xeon Processor E5-1660 (Six Core, 3.30GHz Turbo, 15MB)
32GB RAM
NVIDIA Quadro K4000
Windows 7 pro
<p>
AMD Ryzen9 5900X
64GB RAM
GTX 970 4GB RAM
Windows 10 pro

erstellt am: 21. Dez. 2021 12:28    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,

hab mich jetzt eine weile nicht gemeldet, aber hatte viel zutun, und es nimmt kein Ende.

Hab den Code so übernommen und auf 11 Pulldownmenüs erweitert.
Die Funktionieren auch alle. Nur beim wieder öffnen des Menü's ist der  Inhalt vom 2 Pulldown Menü's immer von alleine leer. Der Rest bleibt drin stehen. Im Eigenschaftenfeld sind aber alle Einstellungen gleich wie bei den anderen Pulldownmenüs abgesehen vom TabIndex, was ja auch so sein muss.

Wird ein Thema fürs nächste Jahr.
Einen Clear Button für alle Pulldownmenü's möchte ich dann auch noch hinzufügen. Und noch Normale Textfelder. Aber erst nächstes Jahr.

Da ich ja jetzt den ganzen Code komplett neu über Copy und Pace erstellt habe. Befindet sich ja keine Code Datei im Hintergrund wie beim ersten Beispiel. Habe versucht diese manuell anzulegen.

Grund ist. Wenn ich im Inventor einen Menü Button erstellen will. Wird unter Makros nichts angezeigt.
Wie bekomme den Code so hin, das ich ein Button erstellen kann. Der das Makros (den Code) ausführt.
Derzeit ist der Code im DWG gespeichert.

Gruß Homi

[Diese Nachricht wurde von homerpower am 21. Dez. 2021 editiert.]

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: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 21. Dez. 2021 13:10    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 homerpower 10 Unities + Antwort hilfreich

Hallo

Um ein Sub im Dialog für benutzerdefinierte Befehle auswählen zu könne, muss diese Public sein.

Code:
Public Sub ShowFormToleranz
Dim oForm As New frmToleranz
oForm.Show
End Sub

Von alleine passiert in einem Computer so gut wie gar nichts. Pulldowns leeren sich nicht von allein. Wenn die Eigenschaften alle identisch eingestellt sind, muss man im Code schauen ob man ungewollt den Inhalt entfernt oder einfach mit nichts überschreibt.

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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