| |
| 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
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 09. Jun. 2005 12:05 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für SHP
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
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 09. Jun. 2005 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
startrek Mitglied Architekt
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 / zitieren --> Unities abgeben: Nur für SHP
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
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 09. Jun. 2005 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
startrek Mitglied Architekt
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 / zitieren --> Unities abgeben: Nur für SHP
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 09. Jun. 2005 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 09. Jun. 2005 17:10 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für SHP
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
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 09. Jun. 2005 23:36 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 10. Jun. 2005 08:43 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 10. Jun. 2005 08:59 <-- editieren / zitieren --> Unities abgeben:
|
startrek Mitglied Architekt
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 / zitieren --> Unities abgeben: Nur für SHP
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
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 10. Jun. 2005 10:48 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
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 TypePrivate 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
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 10. Jun. 2005 14:00 <-- editieren / zitieren --> Unities abgeben:
|
P164 Mitglied
Beiträge: 39 Registriert: 03.06.2004
|
erstellt am: 13. Jun. 2005 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
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.
Beiträge: 11977 Registriert: 28.05.2002 Trau keiner Diva unter SP2....
|
erstellt am: 13. Jun. 2005 10:43 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
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
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 13. Jun. 2005 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
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
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 13. Jun. 2005 11:48 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
Charly Setter Ehrenmitglied V.I.P. h.c.
Beiträge: 11977 Registriert: 28.05.2002 Trau keiner Diva unter SP2....
|
erstellt am: 13. Jun. 2005 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
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
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 24. Aug. 2005 18:48 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 24. Aug. 2005 19:42 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 24. Aug. 2005 19:59 <-- editieren / zitieren --> Unities abgeben:
|
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 25. Aug. 2005 07:37 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
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
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 25. Aug. 2005 07:50 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 25. Aug. 2005 09:05 <-- editieren / zitieren --> Unities abgeben:
@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
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 29. Aug. 2005 22:56 <-- editieren / zitieren --> Unities abgeben:
|
startrek Mitglied Architekt
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 / zitieren --> Unities abgeben: Nur für SHP
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;-) CU Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SHP Mitglied Konstrukteur
Beiträge: 1331 Registriert: 17.07.2003 IV9-SP3 IV10-Sp3a IV11
|
erstellt am: 30. Aug. 2005 04:57 <-- editieren / zitieren --> Unities abgeben:
@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
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 30. Aug. 2005 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für SHP
|