Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  mehrdimensionales Datenfeld

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:  mehrdimensionales Datenfeld (4613 mal gelesen)
SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 09. Jun. 2005 12:05    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


Datenfeld.jpg

 
Hallo WBF,
brauch schon wieder Eure Hilfe.
Ich hab ein Datenfeld wie folgt.

  Dim iFeatureWerte() As String
 
  max_iFeatures = 6
  max_Werte = 26
   
  ReDim iFeatureWerte(1 To max_iFeatures, 1 To max_Werte)


Nun möchte ich wissen wieviel Einträge in
iFeatureWerte (1,???)
iFeatureWerte (2,???)
iFeatureWerte (3,???)
....
drinnen sind.

  var1 = UBound(iFeatureWerte, 1) 'liefert mir 6
  var2 = UBound(iFeatureWerte, 2) 'liefert mir 26


Geht das überhaupt?

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

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

startrek
Mitglied
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

Veni, Vidi, VW ...
I came, I saw, I drove around in a little car.

erstellt am: 09. Jun. 2005 13:05    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 SHP 10 Unities + Antwort hilfreich

Hi Peter,

Arr(1 to 6, 1 to 26) as String, liefert dir ein Array mit 6x26 Feldern.

Ubound(arr,1) == Indexgrenze der 1. Dimension == 6
Ubound(arr,2) == Indexgrenze der 2. Dimension == 26

Vermute mal, um festzustellen was keine Leeren = "" sind,
musste das über eine Schleife abklopfen oder irgendso;-)

Code:

for r=1 to 6
   for c=1 to 26
       if arr(r,c)<>"" then x=x+1
   next
   debug.print r & "/" & x
   x=0
next

lg Nancy 

[Diese Nachricht wurde von startrek am 09. Jun. 2005 editiert.]

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 09. Jun. 2005 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 Nur für SHP 10 Unities + Antwort hilfreich

@ Nancy

Mal schauen ob du eine Rückmeldung bekommst 

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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

startrek
Mitglied
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

Veni, Vidi, VW ...
I came, I saw, I drove around in a little car.

erstellt am: 09. Jun. 2005 14: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 SHP 10 Unities + Antwort hilfreich

Schreib' ich mir halt selber was ;-)

vielleicht 'ne kleine Spielerei am Rande?
Klassischerweise brauch ich hier ein zweifaches for-next um den string zu verketten.
Gehts auch auf einen Hieb? ZB mit Join()
Ein join() benötigt ja was eindimensionales.
Mit x=array(a) erhalte ich auch als Unter-Unter-Element nen string(1 to 10).
Preisfrage: Blos wie zum Geier komm ich denne da dran?

Code:

Sub question()
  Dim a$(1 To 3, 1 To 10), r%, c%, x
  For r = 1 To 3
      For c = 1 To 10
        a(r, c) = CStr(r) & "|" & CStr(c)
      Next
  Next
  'jetzt kommts, nur mit r - ohne c- ein join() versuchen
  x = Array(a)
  For r = 1 To 3
      Debug.Print Join(x(0)(r), ";") 'geht so nich
  Next
End Sub

Unter Excel gehts zwar mit 'nem doppelten worksheetfunction.Transpose,
aaaber gehts auch ohne applications.blabla?

Any Ideas?;-)

lg Nancy 

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 09. Jun. 2005 15:20    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 SHP 10 Unities + Antwort hilfreich

So?

Code:

Private Type MYARRAY
    sArray() As String
End Type

Sub answer()
    Dim a(1 To 3) As MYARRAY
    Dim r%, c%
    For r = 1 To 3
        For c = 0 To 9
            ReDim Preserve a(r).sArray(c)
            a(r).sArray(c) = CStr(r) & "|" & CStr(c + 1)
        Next
    Next
   
    For r = 1 To 3
        Debug.Print Join(a(r).sArray(), ";")
    Next
End Sub


BTW Ist dir langweilig? 

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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

startrek
Mitglied
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

Veni, Vidi, VW ...
I came, I saw, I drove around in a little car.

erstellt am: 09. Jun. 2005 15: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 SHP 10 Unities + Antwort hilfreich

...  nein, Dir? 

war ein kleiner 'Feldversuch',
jedenfalls daywa ich Danke Dir, erste Code-Obduktionen ergaben durchweg positive Ergebnisse;-)

thx & lg Nancy

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 09. Jun. 2005 16: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 SHP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von startrek:
...
jedenfalls daywa ich Danke Dir, erste Code-Obduktionen ergaben durchweg positive Ergebnisse;-)...

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 09. Jun. 2005 17: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

Zitat:
Original erstellt von startrek:
Hi Peter,

Arr(1 to 6, 1 to 26) as String, liefert dir ein Array mit 6x26 Feldern.

Ubound(arr,1) == Indexgrenze der 1. Dimension == 6
Ubound(arr,2) == Indexgrenze der 2. Dimension == 26

Vermute mal, um festzustellen was keine Leeren = "" sind,
musste das über eine Schleife abklopfen oder irgendso;-)

Code:

for r=1 to 6
   for c=1 to 26
       if arr(r,c)<>"" then x=x+1
   next
   debug.print r & "/" & x
   x=0
next

lg Nancy 


[Diese Nachricht wurde von startrek am 09. Jun. 2005 editiert.]



Danke Euch beiden.
Dieser Code bringt das was ich will, hab nur debug.print durch msgbox ersetzt.
Hat nicht gefunzt.
Noch eine Frage eines Anfängers.
Kann man eine Variable umbenennen (z.B. var1 in var2)?


etwas später:
die anderen Codes werd ich natürlich auch probieren.
Und noch eine dumme Frage.
Wenn ein Makro im IV läuft, ist es dann noch viel Aufwand um ein AddInn daraus zu machen?

------------------
Gruß
Hans-Peter 
Der Wahnsinn in Sachen Musik.

   Das Saxregister
  

[Diese Nachricht wurde von SHP am 09. Jun. 2005 editiert.]

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

startrek
Mitglied
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

Veni, Vidi, VW ...
I came, I saw, I drove around in a little car.

erstellt am: 09. Jun. 2005 19: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 SHP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von SHP:
Dieser Code bringt das was ich will, hab nur debug.print durch msgbox ersetzt.
Hat nicht gefunzt.

Aha ... 

> Kann man eine Variable umbenennen (z.B. var1 in var2)?

Jederzeit, ausser zur Laufzeit;-) [des Codes, mein ich jetzt]
Nee, mal ersthaft:
Peter, versteh' noch nicht ganz worauf du hinauswillst, sowas:
var2 = var1 : var_sweetheart = var2 ?
Ist zwar kein Umbenennen - einfach eine Übergabe halt, wobei Option Explicit 'ne Rolle spielt, ist's deaktiviert ;-( gehts einfach, aber kann mit Knast bis zu zwei Jahren bestraft werden;-)
ist's aktiviert :-) , bist du zwar gezwungen deine Variablen von vorherein zu benimen, aber dafür hast du sie auch besser unter Kontrolle.

Gib' mal paar mehr Infos, was du vorhast;-)

Gruss Nancy      

[Diese Nachricht wurde von startrek am 09. Jun. 2005 editiert.]

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 09. Jun. 2005 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

Hallo Nancy,
in meinem Beispiel hab ich ein Bauteil in dem ? iFeatures eingefügt sind.
Ich such mir die iFeatures und schreib die Werte der iFeature-inputs in ein Datenfeld.
Im Beispiel sind in 1.1 bis 1.26 sind die Werte des 1. iFeatures und von 2.1 bis 2.26 die Werte des 2. usw..
Wie teile ich jetzt dieses Datenfeld auf 6 Datenfelder auf?
Ich müsste im Vorfeld beim Codeschreiben schon wissen wieviele Datenfelder ich brauche.
Also hab ich mir gedacht ich fang mit einem Datenfeld an und nenn das inputliste1.
Das ganze passiert in einer Schleife, darum kommen bei einem 2. iFeature die Inputs auch in die Inputliste1 (jetzt in das mehrdimensionale Datenfeld wollen tät ich ein eindimensionales für jedes iFeature).

Geht das:
Beim 1. Durchlauf der Schleife eine Variable z.B. inputs_durchlauf_1 zu deklarieren und beim 2. Durchlauf eben eine inputs_durchlauf_2 usw.?

oder

Ich deklariere am Anfang der Schleife ein Datenfeld inputs und benenn das am Ende des 1. Durchlaufs um auf inputs_1, beim 2. Durchlauf wird wieder inputs deklariert und am Ende auf inputs_2 umbenannt.


Ich hoffe Du verstehst was ich meine?
Bin eben ein Anfänger.

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 10. Jun. 2005 08: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 Nur für SHP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von SHP:
...Ich müsste im Vorfeld beim Codeschreiben schon wissen wieviele Datenfelder ich brauche...

Redim Preserve... Private Type... Wo ist denn das Problem?

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 10. Jun. 2005 08: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

@daywalker

kannst Du mir das anhand eines Beispiels erklären?

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

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

startrek
Mitglied
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

Veni, Vidi, VW ...
I came, I saw, I drove around in a little car.

erstellt am: 10. Jun. 2005 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 SHP 10 Unities + Antwort hilfreich

Hmm ... war doch ein Beispiel? ;-)
Code:

Sub noch_ein_Beispiel()
Dim i%, iB%, iC%, a, b(), c()
a = Array(1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 2, 2, 1, 1)
  For i = LBound(a) To UBound(a)
    If a(i) = 1 Then
      ReDim Preserve b(0 To iB)
      b(iB) = a(i)
      iB = iB + 1
    ElseIf a(i) = 2 Then
      ReDim Preserve c(0 To iC)
      c(iC) = a(i)
      iC = iC + 1
    End If
  Next
  Debug.Print UBound(b), UBound(c)
 
  'oder meinst Du sowas?
  Dim d(0, 0, 0, 0, 0)
  i = 1
  On Error GoTo hell
  While Not IsError(UBound(d, i))
    i = i + 1
  Wend
hell:
  MsgBox i - 1 & " Dimensionen"

End Sub



Gruss Nancy
             

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 10. Jun. 2005 10:48    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 SHP 10 Unities + Antwort hilfreich

Erstelle eine Baugruppe und lade ein paar einfache Teile rein. test_array liest alle Bauteile in das MeinBauteil Array, das vom Typ BAUTEIL ist. In dem Typ BAUTEIL kann ich unter sBauteil den Namen der Komponente speichern, und in das Datenfeld aKanten() (das von Typ KANTE ist) kann ich alle Kanten eines Bauteils speichern. Typ KANTE erlaubt mir wiederum x, y und z Koordinaten von Start- und End- Punkten zu speichern. Also etwas blöderes ist mir im Moment nicht eingefallen, aber wenn du das verstanden hast, dann kannst du auch dein Problem lösen. Zur Problematik: Ich weiss nicht wie viele Bauteile die Baugruppe hat, noch weniger weiss ich wie viel Kanten die Bauteile haben. Aber das ist egal, weil das Programm passt sich während der Laufzeit der Umgebung an.
Code:

Private Type KANTE
    dStartX As Double
    dStartY As Double
    dStartZ As Double
    dStopX As Double
    dStopY As Double
    dStopZ As Double
End Type

Private Type BAUTEIL
    sBauteil As String
    aKanten() As KANTE
End Type

Sub test_arrays()
    Dim oAsm As AssemblyDocument
    Set oAsm = ThisApplication.ActiveDocument
   
    Dim oOccs As ComponentOccurrences
    Set oOccs = oAsm.ComponentDefinition.Occurrences
   
    Dim MeinBauteil() As BAUTEIL
   
    Dim i%, j%
   
    For i = 0 To oOccs.Count - 1
        ReDim Preserve MeinBauteil(i)
        MeinBauteil(i).sBauteil = oOccs(i + 1).Name ' Array MeinBauteil vergroessern mit jedem neuen Bauteil
        For j = 0 To oOccs.Item(i + 1).SurfaceBodies(1).Edges.Count - 1
            ReDim Preserve MeinBauteil(i).aKanten(j) ' Array sKanten vergroessern mit jeder neuen Kante
            MeinBauteil(i).aKanten(j).dStartX = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StartVertex.Point.X
            MeinBauteil(i).aKanten(j).dStartY = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StartVertex.Point.Y
            MeinBauteil(i).aKanten(j).dStartZ = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StartVertex.Point.Z
            MeinBauteil(i).aKanten(j).dStopX = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StopVertex.Point.X
            MeinBauteil(i).aKanten(j).dStopY = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StopVertex.Point.Y
            MeinBauteil(i).aKanten(j).dStopZ = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StopVertex.Point.Z
        Next
    Next
   
    Stop
End Sub


PS: VB Arrays fangen von 0 an und die Inventor Arrays von 1. Deshalb ist die Addierung von 1 nötig, bei jedem Zugriff auf Inventor Collections.


------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

[Diese Nachricht wurde von daywa1k3r am 10. Jun. 2005 editiert.]

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 10. Jun. 2005 14: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

Nochmal Danke Euch beiden.
Ich werd mir das am WE mal genauer reinziehen.

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

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

P164
Mitglied



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

Beiträge: 39
Registriert: 03.06.2004

erstellt am: 13. Jun. 2005 10:27    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 SHP 10 Unities + Antwort hilfreich

hallo
hier eine Lösung ganz andererer Art
legst Du Dein DatenFeld Recordset an, dann sieht die Abfrage ungefähr so aus
Recordset.Filter = BereichX = "1" and BereichY <>""
AnzahDerEinträge = Recordset.Count

grüßle P164

------------------
das Leben ist schön, meint Ingolf

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

Charly Setter
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 11977
Registriert: 28.05.2002

Trau keiner Diva unter SP2....

erstellt am: 13. Jun. 2005 10: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 Nur für SHP 10 Unities + Antwort hilfreich

Hi Igor

Dein letztes Beispiel ist aber suboptimal.  Du kennst in beiden Fällen die benötigte Größe des Datenfeldes bevor Du in die for-next Schleife kommst. Du kannst also das redim preserve vor die Schleife ziehen.

Und jetzt hab ich den SHP vollends aus dem Tritt gebracht 

@Ingolf: Sieht nicht schlecht aus, wenn´s funzt  . Muß ich mir mal näher ansehen.

Und herzlich willkommen im Ableger vom weltbesten (IV-) Forum 

------------------
Der vernünftige Mensch paßt sich der Welt an;
der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.

Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab.
(George Bernard Shaw)

[Diese Nachricht wurde von Charly Setter am 13. Jun. 2005 editiert.]

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 13. Jun. 2005 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 SHP 10 Unities + Antwort hilfreich

Hi Charly 

  • 1. Kann es sein, dass "suboptimal" dein Lieblingswort geworden ist? 
  • 2. Kann es sein, dass ich dir erst gestern erklärt habe, was ein Redim Preserve macht?   
  • 3. Bei dem Beispiel, dass wir am Sonntag vorgenommen haben, handelte es sich um ein 50x10000 Einträgen Array, und da war der Performance Gewinn ein paar ms, sobald ich die Arrays vor den Schleifen initialisiert habe. Das ist aber hier nicht anwendbar, da ich zwar weiss, wie viele Bauteile in meiner Baugruppe sind, aber nicht wie viele Kanten jedes Bauteil hat (aber vielleicht du als omnipräsent und allwissender  ). So ist die Festlegung von Array Größe in der zweiten For notwendig. In der ersten For könnte ich das Array zuvor initialisieren, aber dann wird es immer nur mit Bauteilen funktionieren, und so kann man die Funktion rekrusiv machen wo man mit Unterbaugruppen (von welchen man den Anzahl der Komponenten nicht weiss) auch zu Recht kommt. 

OK?

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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

PaulSchuepbach
Moderator
Programmierer




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

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 13. Jun. 2005 11:48    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 SHP 10 Unities + Antwort hilfreich

Hallo Igor,

... mit dieser Erklärung solltest Du nun die letzten Klarheiten beseitigt haben ... jetzt musst Du nur noch erklären, was ein rekursiver Aufruf ist und wie man sowas programmiert ... 


Grüsse,

Paul

www.morecam.ch/cad.htm

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

Charly Setter
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 11977
Registriert: 28.05.2002

Trau keiner Diva unter SP2....

erstellt am: 13. Jun. 2005 13:09    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 SHP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von PaulSchuepbach:
jetzt musst Du nur noch erklären, was ein rekursiver Aufruf ist und wie man sowas programmiert ... 

Und warum machst Du das nicht mit Listen, da brauchst Du kein sondern erzeugst halt immer eine neue Instanz deiner Datenstruktur.

Die Sache mit den Baugruppen lasse ich gelten 

------------------
Der vernünftige Mensch paßt sich der Welt an;
der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.

Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab.
(George Bernard Shaw)

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 24. Aug. 2005 18:48    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


Fehlermeldung.jpg

 
Hallo,
hab nochmal ein Problem, und zwar möchte ich das Array "MeineIfeatures" an eine andere Funktion übergeben, die mir die Einträge alphabetisch sortiert.
Aber leider bekomme ich eine Fehlermeldung (siehe Anhang), mit der ich nichts anfangen kann.
Kann mir da jemand helfen?

____________________
Private Type IDATEN
    dPromt As String
End Type
   
Private Type IFEATURE
    sIFEATURE As String
    aINPUTS() As IDATEN
End Type

Public Sub iFeaturedaten_Onepart()
 
  Dim MeineIfeatures() As IFEATURE

usw.

End Sub

__________________________________________

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

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

PaulSchuepbach
Moderator
Programmierer




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

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 24. Aug. 2005 19: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 SHP 10 Unities + Antwort hilfreich

Hi Hans-Peter,

Dein Sub muss 'Public' sein.


Grüsse,

Paul

www.morecam.ch/cad.htm

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 24. Aug. 2005 19: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

Zitat:
Original erstellt von PaulSchuepbach:
Hi Hans-Peter,

Dein Sub muss 'Public' sein.


Grüsse,

Paul

www.morecam.ch/cad.htm


Hallo Paul,
ist es doch, oder?

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

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

PaulSchuepbach
Moderator
Programmierer




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

Beiträge: 1005
Registriert: 01.10.2003

erstellt am: 25. Aug. 2005 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 SHP 10 Unities + Antwort hilfreich

Hallo Hans-Peter,

sorry, aber ich glaube, dass ich gestern vor lauter coden bei Deinen Zeilen den Durchblick komplett verloren habe - hab da wohl was verwechselt mit Private Type und Public Sub....

Sorry, aber ich blicke nicht ganz durch, was Du überhaupt machen willst.


Grüsse,

Paul

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 25. Aug. 2005 07: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 SHP 10 Unities + Antwort hilfreich

Die Meldung bezieht sich auf "wo du die Sachen definiert hast".

Und den Datentyp:

Private Type IDATEN
    dPromt As String
End Type

kannst du dir eigentlich auch sparen, denn einen String als neuen Type zu definieren ist 

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 25. Aug. 2005 09:05    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

@Paul,
ich hole mir in einer idw das Part und schreibe die Inputs der iFeatures in "MeineIfeatures".
Das funzt schon (Dank Daywalker), nun möchte ich diese Werte alphabetisch sortieren.
Das soll in einer Sub passieren, nur kann ich "MeineIfeatures" nicht an diese Sub übergeben.

@daywalker,
es kommen wahrscheinlich noch andere Einträge dazu.
Bezüglich "wo definiert" ????
Ich hab mich an das Beispiel von Dir gehalten.


etwas später:
so nun läufts.

------------------
Gruß
Hans-Peter 
Der Wahnsinn in Sachen Musik.

   Das Saxregister
  

[Diese Nachricht wurde von SHP am 25. Aug. 2005 editiert.]

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 29. Aug. 2005 22: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

@all
jetzt mal was zum Lachen (für Euch).
Wie kann ich prüfen ob in einem Array tatsächlich was drinnen steht?

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

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

startrek
Mitglied
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

Veni, Vidi, VW ...
I came, I saw, I drove around in a little car.

erstellt am: 30. Aug. 2005 00: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 SHP 10 Unities + Antwort hilfreich

Hi Peter,

na zum lachen ist des vei net;-)

Ernsthaft, mit strPtr() oder objPtr() oder VarPtr() bekommst du heraus, ob eine Variable überhaupt initialisiert worden ist.

Wenn Du aber ein vordimenioniertes Array hast, was komplett leer ist,
hat das nix mit Initialisierung zu tun, das Array ist halt dimensioniert, auch wenn alle Items empty/leer/nullstring sind.

Was für ein Array isses eigentlich? Ein Variantarray, ein Stringarray?
Wieviele Dimensionen?

Oder was genau meintest Du mit deiner Frage?
Sorry, weil begriffstutzig - bin heut auch nimmer die Frischeste und nur noch müde;-)

CUSee You Nancy   

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

SHP
Mitglied
Konstrukteur


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

Beiträge: 1331
Registriert: 17.07.2003

IV9-SP3
IV10-Sp3a
IV11

erstellt am: 30. Aug. 2005 04:57    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

@Nancy,
z.B. so ein Array wie von daywalker.

Code:
--------------------------------------------------------------------------------

Private Type KANTE
    dStartX As Double
    dStartY As Double
    dStartZ As Double
    dStopX As Double
    dStopY As Double
    dStopZ As Double
End Type
Private Type BAUTEIL
    sBauteil As String
    aKanten() As KANTE
End Type

Sub test_arrays()
    Dim oAsm As AssemblyDocument
    Set oAsm = ThisApplication.ActiveDocument
   
    Dim oOccs As ComponentOccurrences
    Set oOccs = oAsm.ComponentDefinition.Occurrences
   
    Dim MeinBauteil() As BAUTEIL
   
    Dim i%, j%
   
    For i = 0 To oOccs.Count - 1
        ReDim Preserve MeinBauteil(i)
        MeinBauteil(i).sBauteil = oOccs(i + 1).Name ' Array MeinBauteil vergroessern mit jedem neuen Bauteil
        For j = 0 To oOccs.Item(i + 1).SurfaceBodies(1).Edges.Count - 1
            ReDim Preserve MeinBauteil(i).aKanten(j) ' Array sKanten vergroessern mit jeder neuen Kante
            MeinBauteil(i).aKanten(j).dStartX = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StartVertex.Point.X
            MeinBauteil(i).aKanten(j).dStartY = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StartVertex.Point.Y
            MeinBauteil(i).aKanten(j).dStartZ = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StartVertex.Point.Z
            MeinBauteil(i).aKanten(j).dStopX = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StopVertex.Point.X
            MeinBauteil(i).aKanten(j).dStopY = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StopVertex.Point.Y
            MeinBauteil(i).aKanten(j).dStopZ = oOccs(i + 1).SurfaceBodies(1).Edges(j + 1).StopVertex.Point.Z
        Next
    Next
   
    Stop
End Sub

--------------------------------------------------------------------------------

------------------
Gruß
Hans-Peter
Der Wahnsinn in Sachen Musik.

  Das Saxregister
 

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

daywa1k3r
Moderator
Softwareentwickler




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

Beiträge: 3497
Registriert: 01.08.2002

Alienware m17x, Win7, Inventor2012

erstellt am: 30. Aug. 2005 10:51    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 SHP 10 Unities + Antwort hilfreich

Pruefe den Rueckwert von UBound(Array())

Fehler = Nicht initialisiert
0 = Leer
=>1 = Anzahl von Elementen

Greets from here 

------------------
Grüße daywa1k3r

FX64 Software Solutions
Mold&More Software Solutions

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