Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Multivalueparameter ändern

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:  Multivalueparameter ändern (5224 mal gelesen)
Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 22. Jun. 2011 13:16    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 liebe CADler,
ich habe eine Frage und hoffe jemand hat eine Antwort, das wäre super.

Ich weiß nicht wie ich einen Multivalueparameter im Product ansprechen kann.

Struktur:

-Product
+Part1
+Part2
+Part3
.
.
.
+Parameters
  +Batterie
    -Variante (Hier gibt es verschiedene Varianten 1,2,3)

Diese sollen nun zum einen in einer Eingabeform aufgelistet sein in einer Combobox und auch darüber angewählt werden können.

Ich hoffe jemand hat eine Idee.

LG

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 23. Jun. 2011 10:32    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 Dennis030186 10 Unities + Antwort hilfreich

Servus
So wie ich die Doku interpretiere kannst du mit .GetEnumerateValues dir den Array der Werte ausgeben lassen, mit .SetEnumerateValues den Array der Werte definieren und mit .GetEnumerateValuesSize dir die Anzahl der Werte ausgeben lassen.
Den Wert auswählen kannst du mit .Value .
Hier findest du noch ein Beispiel.

Gruß
Bernd

PS: In VBA kommt bei mir die Meldung "function or Interface is marked as restricted"

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 24. Jun. 2011 07: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

Danke dafür erst einmal.

Anfangs hatte der Beitrag mir nicht geholfen aus dem anderen Post, jetzt aber schon. Durch Änderung zu folgendem Code werden mir die Werte ausgegeben.

Private Sub CommandButton1_Click()

    Dim intDoc As ProductDocument
    Dim intProduct As Product
    Dim intParas As Parameters
    Dim intPara As Parameter
    Dim intParamValues()
    Dim intParamValue
   
    Set intDoc = CATIA.ActiveDocument
    Set intProduct = intDoc.Product
    Set intParas = intProduct.Parameters
    Set intPara = intParas.Item("Batterievariante")


    ReDim intParamValues(intPara.GetEnumerateValuesSize - 1)
    intPara.GetEnumerateValues intParamValues
    For i = 0 To UBound(intParamValues)
        intParamValue = CStr(intParamValues(i))
        MsgBox "Folgende Werte wurden ausgelesen:" + vbNewLine + vbNewLine + _
                "Parametername:" + vbTab + vbTab + intPara.Name + vbNewLine + _
                "Parameter Werteanzahl:" + vbTab + CStr(i + 1) + " von " + CStr(UBound(intParamValues) + 1) + vbNewLine + _
                "Parameterwert:" + vbTab + vbTab + intParamValue, vbInformation, "Hinweis"
    Next
               
End Sub


Aber wie muss der Code nun aussehen, damit der Parameter, auch den jeweiligen auswählt, den ich in einer Combobox auswähle, bzw- wie bekomme ich überhaupt ersteinmal die Werte in die Combobox :-(


Edit:
Also das Eintragen in die Combobox habe ich geschafft über anschließendes Anfügen der Zeile:

MEINFORMNAME.ComboBox1.AddItem (intParamValue)

Zuvor habe ich immer auf meine Parameter so zugegriffen und diesen somit die Werte zugewiesen, aber wie stelle ich das jetzt an mit dem Multivalueparameter? Zunächst muss ja erkannt werden, welcher Wert angewählt wurde aus der Combobox... Wenn beispielsweise jetzt Variante 2 angewählt wurde steht diese nun in der Combobox. Wie bekomme ich es dann hin, dass der Parameter auch diesen Wert erhält? Hier der Code für meine vorigen "normalen" Parameter.

Dim parameters1 As Parameters
Set parameters1 = product1.Parameters

Dim length1 As Length
Set length1 = parameters1.Item("Productname\Rahmenwerte\Laenge")

length1.Value = FrameLength

'###############intPara.SetEnumerateValues intParamValue


Die letzte Zeile hatte ich mir dann so überlegt, aber der Code stimmt ja so absolut nicht. Ich hoffe auf weitere Hilfe :-)

[Diese Nachricht wurde von Dennis030186 am 24. Jun. 2011 editiert.]


Edit2:Nächster Versuch, aber es klappt einfach nicht...

Dim parameters200 As Parameters
Set parameters200 = product1.Parameters

Dim length200 As Variant
Set length200 = parameters200.Item("Productname\Rahmenwerte\Batterievariante")

length200.Value = intParamValue

Product1.Update

[Diese Nachricht wurde von Dennis030186 am 24. Jun. 2011 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 24. Jun. 2011 10:50    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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Anbei ein Beispiel wie man den Aktuellen Wert ausliest, und den Wert neu setzt:
Code:
Sub CATMain()

    Dim intDoc As ProductDocument
    Dim intProduct As Product
    Dim intParas As Parameters
    Dim intPara As Parameter
    Dim intParamValues() as String
    Dim intParamValue as String
  
    Set intDoc = CATIA.ActiveDocument
    Set intProduct = intDoc.Product
    Set intParas = intProduct.Parameters
    Set intPara = intParas.Item("Batterievariante")

    ReDim intParamValues(intPara.GetEnumerateValuesSize - 1)
    intPara.GetEnumerateValues intParamValues

    MsgBox "Aktuelle gewählter Wert: " &  intPara.Value
    'der dritten Wert auswählen
    intPara.Value = intParamValues(2)
              
End Sub


Gruß
Bernd

PS: Bitte Release in der Systeminfo ergänzen.

------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 24. Jun. 2011 editiert.]

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 24. Jun. 2011 14:46    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

Hello,
danke für die Info. Ich habe es jetzt so gelöst.

'--------------------------------------#############Batterytypes################-----------------------------------------
Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim product1 As Product
Set product1 = productDocument1.Product

Set product1 = product1.ReferenceProduct

'###############Eintragen der Werte des Multivalueparameters Batterievariante#######################
    Dim intDoc As ProductDocument
    Dim intProduct As Product
    Dim intParas As Parameters
    Dim intPara As Parameter
    Dim intParamValues()
    Dim intParamValue
   
    Set intDoc = CATIA.ActiveDocument
    Set intProduct = intDoc.Product
    Set intParas = intProduct.Parameters
    Set intPara = intParas.Item("Batterievariante")


    ReDim intParamValues(intPara.GetEnumerateValuesSize - 1)
    intPara.GetEnumerateValues intParamValues
    For i = 0 To UBound(intParamValues)
        intParamValue = CStr(intParamValues(i))
    Next
   

Dim parameters201 As Parameters
Set parameters201 = product1.Parameters

Dim length201 As Variant

Set length201 = parameters201.Item("PRODUKTNAME\Knopfzellenvariante\Batterievariante")

If ComboBox1.Text = "CR1025" Then
length201.Value = intParamValues(0)
End If
   
    If ComboBox1.Text = "CR1216" Then
    length201.Value = intParamValues(1)
    End If
   
        If ComboBox1.Text = "CR1220" Then
        length201.Value = intParamValues(2)
        End If
       
            If ComboBox1.Text = "CR1225" Then
            length201.Value = intParamValues(3)
            End If
       
                If ComboBox1.Text = "CR1616" Then
                length201.Value = intParamValues(4)
                End If
               
                    If ComboBox1.Text = "CR1620" Then
                    length201.Value = intParamValues(5)
                    End If
                   
                        If ComboBox1.Text = "CR1632" Then
                        length201.Value = intParamValues(6)
                        End If
                       
                            If ComboBox1.Text = "CR1820" Then
                            length201.Value = intParamValues(7)
                            End If
       
  ' product1.Update
'--------------------------------------------------------------------------------------


Systeminfo soll ich da jetzt Rx-19 hinschreiben? Das aktuelle Problem ist zumindest auf R19 gewesen :-)

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 24. Jun. 2011 15:08    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 Dennis030186 10 Unities + Antwort hilfreich

Die vielen If's würde ich gegen ein

select case ersetzen oder wenigstens

if then

elseif

end if

Ist viel sauberer und schont auch die Ressourcen. :-)

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 24. Jun. 2011 15:16    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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Einen Schönheitspreis gewinnst du mit deinem Code sich nicht *grins*
Welchen SInn hat bei dir die Zeile For i = 0 To UBound(intParamValues) und folgende (oder ist das nur ein Teil des Codes?)
Was steht denn in deinem Mulitvalueparameter? Falls dort zb auch "CR1225" steht sollte es auch ohne die If-Schleifen gehen:
length201.Value = ComboBox1.Text

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 27. Jun. 2011 11: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 Dennis030186 10 Unities + Antwort hilfreich

Bernd meint natürlich IF-Anweisungen. :-)
Und gebe ihm da völlig Recht, die Zählschleife wirkt leicht konfus.

Wenn Du uns mehr Infos zu Deinem Code und den Gedanken dahinter gibst, können wir ihn wahrscheinlich mit Dir zusammen einkürzen und sauberer machen, so dass er einfacher zu warten ist.

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

Dennis030186
Mitglied
Design Engineer


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

Beiträge: 121
Registriert: 19.01.2007

NX 5,6,7 ; CATIA V5 R-21

erstellt am: 29. Jun. 2011 10: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

Weitere Infos, also...
Es ist ein Bauteil geladen, dort soll angegeben werden welche Batterievariante eingesetzt werden soll. Über eine UserForm wird das Ganze gesteuert, sprich über die Combobox, soll ausgewählt werden, welche Variante gewünscht ist. Diese wird selektiert. Über einen Button namens Update, wird das Gesamte Produkt angepasst. Alles funktioniert bisher. Vielleicht hilft das ja, um den Code umzustrukturieren und somit auf eine kürzere Fassung zu bringen?!

Eine andere Frage mal nebenher... weiß jemand wie und ob es überhaupt möglich ist einen Sketch auszutauschen, so wie mit Replace Component?!?!

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 29. Jun. 2011 15: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 Dennis030186 10 Unities + Antwort hilfreich

Dann würde ich doch vorschlagen (Achtung Pseudocode!)

Code:

    For i = 0 To UBound(intParamValues)
        intParamValue = CStr(intParamValues(i))
    Next

raus zu nehmen

und eine art

Code:

select (ComboBox1.Text)
  case "CR1025":
    iMyValue = 1
  case "CR1220"
    iMyValue = 2
...
end select

length201.Value = intParamValues(iMyValue)


oder direkt

Code:

length201.Value = intParamValues(ComboBox1.GetSelected())

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

Pietzonka
Mitglied
Maschinening.


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

Beiträge: 114
Registriert: 14.03.2006

erstellt am: 05. Sep. 2011 13:08    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 Dennis030186 10 Unities + Antwort hilfreich


Konstruktionstabelle1.jpg

 
Hallo Euch Kundigen von Combobox!

In Euren Beiträgen fand ich den günstigsten Zugang für mein Vorhaben:

Per Catscript möchte ich aus einer laufend ergänzten Konstruktionstabelle die aktuell Zeichenfolge.1 in einer Box anzeigen lassen. Dann sollte per Anklicken die gewünschte Variante auwählbar sein.

Soweit bin ich gekommen:

Language="VBSCRIPT"

Sub CATMain()

Dim documents1 As Documents
Set documents1 = CATIA.Documents

Dim productDocument1 As Document
Set productDocument1 = documents1.Open("D:\neues Werkzeug\Produkt Platten\Platten roh.CATProduct")

Dim partDocument1 As Document
Set partDocument1 = documents1.Item("Skelett Platten System.CATPart")

Dim part1 As Part
Set part1 = partDocument1.Part

Dim relations1 As Relations
Set relations1 = part1.Relations

Dim designTable1 As Relation
Set designTable1 = relations1.Item("Konstruktionstabelle.1")
designTable1.Configuration = 2

part1.Update
End Sub

Im Voraus für Eure Hilfe dankend

Stephan

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 05. Sep. 2011 13: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 Dennis030186 10 Unities + Antwort hilfreich

Servus
Mit welchem Parameter ist diese Zeichenfolge im CATPart verknüpft?
Dann könntest du direkt den Parameter abfragen, und brauchst nicht auf die Tabelle zugreifen.
zB (unschön, ungetestet):
Code:
String = partDocument1.Part.Parameters.Item("Zeichenfolge.1")


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Pietzonka
Mitglied
Maschinening.


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

Beiträge: 114
Registriert: 14.03.2006

erstellt am: 06. Sep. 2011 07:37    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 Dennis030186 10 Unities + Antwort hilfreich

Hallo Bernd!

Ich habe mich nicht genau ausgedrückt, bitte um Verzeihung.

Da der Aufwand für die umfangreiche Tabelle sehr groß ist, wollte ich sie nach und nach ergänzen.
Somit wird die Variable "Zeichenfolge.1", die auf eine gleichnamige String-Variable bezogen ist, eine zunehmende Anzahl Einträge bekommen.
Aus der Spalte Zeichenfolge.1 wollte ich mir, eventuell mit vertikaler Scrollbar, die Einträge anzeigen lassen.
Dann könnte man bestimmt auch noch den gewünschten Eintrag per Klick auswählen. Davon wollte ich mit Set designTable1 = relations1.Item("Konstruktionstabelle.Wunsch") den Eintrag Wunsch (z.B. =1)aktivieren.

Leider bin ich nicht so fit in der Programmierung und kann hier auf Arbeit nur mit den Mitteln von Catia und Excel arbeiten.

Stephan

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 06. Sep. 2011 08: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 Nur für Dennis030186 10 Unities + Antwort hilfreich

Servus
Du könntest mit CellAsSting die Zellen in einen Array schreiben und diesen dann in eine ListBox schreiben.
Beispiel (ungetestet):
Code:
...
Dim designTable1 As Relation
Set designTable1 = relations1.Item("Konstruktionstabelle.1")
Dim AnzahlZeilen as long
AnzahlZeilen  = designTable1.ConfigurationsNb
dim oString(AnzahlZeilen) as String
For i = 1 to AnzahlZeilen
  oString(i) = designTable1.CellAsString (i , 1)
next
...

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Pietzonka
Mitglied
Maschinening.


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

Beiträge: 114
Registriert: 14.03.2006

erstellt am: 06. Sep. 2011 10: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 Nur für Dennis030186 10 Unities + Antwort hilfreich

Hallo Bernd!

Zunächst ein Danke für Deine bisherige Unterstützung.

Das Makro sieht jetzt jetzt so aus:

Sub CATMain()

Dim documents1 As Documents
Set documents1 = CATIA.Documents
Dim productDocument1 As Document
Set productDocument1 = documents1.Open("D:\neues Werkzeug\Produkt Platten\Platten roh.CATProduct")
Dim partDocument1 As Document
Set partDocument1 = documents1.Item("Skelett Platten System.CATPart")
Dim part1 As Part
Set part1 = partDocument1.Part
Dim relations1 As Relations
Set relations1 = part1.Relations
Dim designTable1 As Relation
Set designTable1 = relations1.Item("Konstruktionstabelle.1")

Dim I, AnzahlZeilen As Integer
AnzahlZeilen  = designTable1.ConfigurationsNb
MsgBox("Anzahl der Zeilen:  " & AnzahlZeilen)
Dim Eintrag(AnzahlZeilen) As String
For I = 1 to AnzahlZeilen
  Eintrag(I) = designTable1.CellAsString (I , 1)
Next

'designTable1.Configuration = 2
part1.Update
End Sub

Die Zeile "Dim Eintrag(AnzahlZeilen) As String" erzeugt die Fehlermeldung: "ganzzahliger Eintrag erwartet". Der Eintrag z.B. 7 statt AnzahlZeilen hat kein Problem.
An dieser Stelle habe ich keine Idee, mir kommt diese Zeile korrekt vor.

Stephan

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

meisterlumpi
Mitglied



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

Beiträge: 118
Registriert: 15.04.2011

Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64

erstellt am: 06. Sep. 2011 10: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 Dennis030186 10 Unities + Antwort hilfreich

probier mal

Code:

  Dim Eintrag() As String
  ReDim Eintrag(AnzahlZeilen)

gruß

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

Pietzonka
Mitglied
Maschinening.


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

Beiträge: 114
Registriert: 14.03.2006

erstellt am: 06. Sep. 2011 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 Nur für Dennis030186 10 Unities + Antwort hilfreich

@ Bernd:

Die vorgeschlagene Änderung funktioniert!

Meine Suche im Netz zum Thema ListBox ergab keinen funktionierenden Code. Im Forum habe ich natürlich auch gesucht.

Kannst Du mir hierbei auch helfen? Außerdem habe ich immer Schwierigkeiten, VB-Code im CatScript zum Laufen zu bringen.
Gibt es dafür Literatur?

Der aktuelle Stand:

Language="VBSCRIPT"
Sub CATMain()

Dim documents1 As Documents
Set documents1 = CATIA.Documents
Dim productDocument1 As Document
Set productDocument1 = documents1.Open("D:\neues Werkzeug\Produkt Platten\Platten roh.CATProduct")
Dim partDocument1 As Document
Set partDocument1 = documents1.Item("Skelett Platten System.CATPart")
Dim part1 As Part
Set part1 = partDocument1.Part
Dim relations1 As Relations
Set relations1 = part1.Relations
Dim designTable1 As Relation
Set designTable1 = relations1.Item("Konstruktionstabelle.1")

Dim I, AnzahlZeilen, selEintrag, x As Integer
AnzahlZeilen  = designTable1.ConfigurationsNb
AnzahlZeilen  = AnzahlZeilen  + 1
MsgBox("Anzahl der Zeilen:  " & AnzahlZeilen)
  Dim Eintrag() As String
  ReDim Eintrag(AnzahlZeilen) 'Dim Eintrag(AnzahlZeilen) As String
For I=1 to AnzahlZeilen
  Eintrag(I) = designTable1.CellAsString (I , 1)
MsgBox("Eintrag  " & I & " ist: " & Eintrag(I))
Next

'designTable1.Configuration = selEintrag
part1.Update
End Sub


'Private Sub button1_Click(sender As Object, e As System.EventArgs)
   
'    Dim listBox1 As New ListBox() 'Create an instance of the ListBox.
'    listBox1.Size = New System.Drawing.Size(200, 100) 'Set the size and location of the ListBox.
'    listBox1.Location = New System.Drawing.Point(10, 10)
'    Me.Controls.Add(listBox1) ' Add the ListBox to the form.
'    listBox1.MultiColumn = True ' Set the ListBox to display items in multiple columns.
'    listBox1.SelectionMode = SelectionMode.MultiExtended ' Set the selection mode to multiple and extended.

'    listBox1.BeginUpdate() 'Shutdown the painting of the ListBox as items are added.
'    Dim x As Integer ' Loop through and add 50 items to the ListBox.
'    For x = 1 To 50
'        listBox1.Items.Add("Item " & x.ToString())
'    Next x
'    listBox1.EndUpdate() ' Allow the ListBox to repaint and display the new items.

'    listBox1.SetSelected(1, True) ' Select three items from the ListBox.
'    listBox1.SetSelected(3, True)
'    listBox1.SetSelected(5, True)

'    System.Diagnostics.Debug.WriteLine(listBox1.SelectedItems(1).ToString()) ' Display the second selected item in the ListBox to the console.
'    System.Diagnostics.Debug.WriteLine(listBox1.SelectedIndices(0).ToString()) ' Display the index of the first selected item in the ListBox.
' End Sub


Danke
Stephan

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

meisterlumpi
Mitglied



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

Beiträge: 118
Registriert: 15.04.2011

Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64

erstellt am: 06. Sep. 2011 13:02    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 Dennis030186 10 Unities + Antwort hilfreich

Hallo nochmal,

du kannst keine List- oder Combobox erstellen ohne Userform, sprich das geht nur mit VBA. Oder soll die Listbox in Excel erstellt werden? Dann würde ich den code direkt in ein excel makro packen.
gruß


Code:

Dim I, AnzahlZeilen, selEintrag, x As Integer


deklariert lediglich x als Integer. I, AnzahlZeilen und selEintrag werden (nicht gerade speicherschonend) als Variant deklariert.
besser wäre
Code:

Dim I As Integer, AnzahlZeilen As Integer, selEintrag As Integer, x As Integer

------------------
    NJ | Inoffizielle CATIA Hilfeseite | ???

[Diese Nachricht wurde von meisterlumpi am 06. Sep. 2011 editiert.]

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

shoutz000
Mitglied
Techn. Produktdesigner


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

Beiträge: 168
Registriert: 19.08.2013

CatiaV5 R19
CatiaV5 R24
Windows 7 Professional

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

...

[Diese Nachricht wurde von shoutz000 am 16. Feb. 2016 editiert.]

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