Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Koord auslesen und sortieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
Autor Thema:  Koord auslesen und sortieren (1730 mal gelesen)
ThebigH
Mitglied


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

Beiträge: 5
Registriert: 04.03.2010

AutoCAD2007

erstellt am: 04. Mrz. 2010 17: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

Hallo liebe Community!!

Das ist mein erster Beitrag (hoffentlich nicht der letzte) und ich hab gleich ein paar schwere Probleme.
Ich soll aus einer CAD Zeichnung alle Koordinaten der vorhandenen Punkte auslesen, mit Bubblesort sortieren
und hübsch formatiert in eine txt ausgeben.
Einlesen, formatieren und ausgeben funktioniert schon ganz gut, aber der Bubblesort sortiert einfach nicht.
Bin für jede Hilfe dankbar.

Hier mein Code:

Sub Bam()

Dim obj As AcadEntity
Dim Dateiname As String
Dim PktKoord As Variant
Dim Abstand As Double
Dim x(1 To 100) As Double
Dim Anz As Integer

Dim Mark As Long, I As Long, EndIdx As Long, StartIdx As Long
Dim Temp As Variant

Dateiname = "D:\Ablage\Bam.txt"
Open Dateiname For Output As #1

Anz = 0

For Each obj In ThisDrawing.ModelSpace
If TypeOf obj Is AcadPoint Then
PktKoord = obj.Coordinates
PktKoord(0) = Round(PktKoord(0), 2)
PktKoord(1) = Round(PktKoord(1), 2)

Anz = Anz + 1

EndIdx = UBound(PktKoord)
  StartIdx = LBound(PktKoord)
  Do While EndIdx > StartIdx
    Mark = StartIdx
    For I = StartIdx To EndIdx - 1
      If PktKoord(I) > PktKoord(I + 1) Eqv Ascending Then
        Temp = PktKoord(I)
        PktKoord(I) = PktKoord(I + 1)
        PktKoord(I + 1) = Temp
        Mark = I
      End If
    Next I
    EndIdx = Mark
  Loop

Write #1, PktKoord(0); PktKoord(1), n
End If
Next obj


Close #1

End Sub

[Diese Nachricht wurde von ThebigH am 04. Mrz. 2010 editiert.]

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


Ex-Mitglied

erstellt am: 04. Mrz. 2010 18:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

zugegeben, den Code hab ich nicht probiert, darum könnten die Rückfragen jetzt auch aus der Flüchtigkeit heraus anfechtbar sein.

Folgender Gedanke (nur dass ich Deinen Code richtig interpretiere)

zuerst holst Du von einem Punkt die Koordinaten, die liegen dann in der Variable PktKoord(0 to 2)
und dann überprüfst Du, ob der X-Wert kleiner als der Y-Wert ist, ob der Y-Wert kleiner als der Z-Wert ist und bei Bedarf vertauscht Du X mit Y bzw Y mit Z.

So lese ich zumindest diesen Bereich:

Code:
For I = StartIdx To EndIdx - 1          '==> da steht ja eigentlich For I = 0 to 1
  If PktKoord(I) > PktKoord(I + 1) Then '==> wenn X > Y
    Temp = PktKoord(I)
    PktKoord(I) = PktKoord(I + 1)        '==> Y=X
    PktKoord(I + 1) = Temp
    Mark = I
  End If
Next I

Der Code

Code:
Do While EndIdx > StartIdx
  Mark = StartIdx
  ...
  EndIdx = Mark
Loop

...läuft in meinen Augen auch nur ein einziges mal, oder?


Seh ich das falsch? Oder ist das ev. auch schon Dein Problem?

- alfred -

------------------
www.hollaus.at

ThebigH
Mitglied


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

Beiträge: 5
Registriert: 04.03.2010

AutoCAD2007

erstellt am: 04. Mrz. 2010 19:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!
Danke für die schnelle Antwort.

Also ich lese mehrere Punktkoordinaten aus (in meinem Fall 5), und ich will nach der Größe der x-Werte sortieren, sodass der größte x Wert am anfang steht und der kleinste x Wert am Ende in der Ausgabe.

Ich hoffe es ist jetzt verständlich.

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


Ex-Mitglied

erstellt am: 04. Mrz. 2010 19:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> und ich will nach der Größe der x-Werte sortieren

Das ging aber meinem Verständnis nach mit Deinem Code nicht, Du hast nicht X-Werte unterschiedlicher Punkte verglichen, sondern nur X mit Y des gleichen Punkts verglichen. Von einer Punktliste sehe ich in Deinem Code gar nix.

Du verzeihst daher auch, wenn ich auf das Vokabel 'BubbleSort' nicht eingehe (auch weil es sich um ganze 5 Punkte handelt) und stell Dir das Beispiel mal zur Verfügung.

- alfred -

Code:
Public Sub ModuleTemp()
  Dim i As Integer
 
  Dim tPntColl As Collection
  Set tPntColl = New Collection
 
  'mal eine Liste mit von Koordinaten erstellen
  For i = 0 To 10
      Dim tPnt(2) As Double
      tPnt(0) = Rnd()
      tPnt(1) = Rnd()
      tPnt(2) = Rnd()
      Call tPntColl.Add(tPnt)
  Next
 
  'und jetzt sortieren lassen
  Dim tSortedColl As Collection
  Set tSortedColl = sortCoords(tPntColl)
 
  'und das sollte es gewesen sein
End Sub
Private Function sortCoords(ByRef SourceColl As Collection) As Collection
  Dim tDestColl As Collection
  Set tDestColl = New Collection
 
  Dim tSourceIndex As Integer
  Dim tDestIndex As Integer
 
  For tSourceIndex = 1 To SourceColl.Count
      Dim tSourcePnt As Variant
      tSourcePnt = SourceColl.Item(tSourceIndex)
      If tDestColl.Count = 0 Then
        Call tDestColl.Add(tSourcePnt)
      Else
        Dim tPntAddedOK As Boolean: tPntAddedOK = False
        Dim tDestPnt As Variant
        For tDestIndex = 1 To tDestColl.Count
            tDestPnt = tDestColl.Item(tDestIndex)
            If tDestPnt(0) < tSourcePnt(0) Then
              Call tDestColl.Add(tSourcePnt, , tDestIndex)
              tPntAddedOK = True
              Exit For
            End If
        Next
        If Not tPntAddedOK Then
            'dann am Ende einfügen
            Call tDestColl.Add(tSourcePnt)
        End If
      End If
  Next
 
  Set sortCoords = tDestColl
End Function

------------------
www.hollaus.at

ThebigH
Mitglied


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

Beiträge: 5
Registriert: 04.03.2010

AutoCAD2007

erstellt am: 04. Mrz. 2010 19: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

Oh, da seh ich gar nich durch.

Ich hab BubbleSort leider als Vorgabe. Und in meinem Beispiel sind es nur 5 Punkte, es muss aber auch mit beliebig vielen Punkten der Zeichnung gehen.

Ich hab die 2 dimensionalen Koordinaten der Punkte

For Each obj In ThisDrawing.ModelSpace
If TypeOf obj Is AcadPoint Then
PktKoord = obj.Coordinates
PktKoord(0) = Round(PktKoord(0), 2)
PktKoord(1) = Round(PktKoord(1), 2)

In diesem Fall sind PktKoord(0) meine x Werte und PktKoord(1) meine y Werte.
Die x Werte würde ich gerne als Array haben und danach mit BubbleSort der Größe nach sortieren.
Ich weiß nicht wie ich die x Werte als array darstellen kann.

Ich hoffe das ist irgendwie machbar.

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


Ex-Mitglied

erstellt am: 04. Mrz. 2010 20:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

lies Dir mal das zu 'BubbleSort' durch. Ich finde es immer wieder bei diesem Begriff interessant, wie ein triviales Irgendwas zu einem vermeintlich hochtechnologischem Vokabel mutiert, und das schwirrt dann herum als wärs extrem kompliziert.  


>> PktKoord = obj.Coordinates
>> ...
>> In diesem Fall sind PktKoord(0) meine x Werte

Sorry, PktKoord(0) ist genau ein X-Wert, und zwar nur vom aktuellen Punkt <obj>


>> Ich weiß nicht wie ich die x Werte als array darstellen kann

Ist Dir Array auch vorgegeben, wenn nein, dann nimm meinen Vorschlag mit Collection. Die Einstiegsroutine mit der Erzeugung von Zufallspunkten kannst Du ja austauschen gegen Deine Einleseroutine. Wie Du die 3 Koordinatenwerten (X/Y/Z) in einer Liste sammelst, steht ja eigentlich da.

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 04. Mrz. 2010 editiert.]

ThebigH
Mitglied


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

Beiträge: 5
Registriert: 04.03.2010

AutoCAD2007

erstellt am: 04. Mrz. 2010 20: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

Ich weiß das BubbleSort nich so doll is. Aber ich muss das nehmen.

Kann denn hier niemand sowas mit BubbleSort??

Und gibt es einen anderen Weg als

For Each obj In ThisDrawing.ModelSpace
If TypeOf obj Is AcadPoint Then
PktKoord = obj.Coordinates

um an die Koordinaten zu kommen??

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


Ex-Mitglied

erstellt am: 04. Mrz. 2010 21:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Kann denn hier niemand sowas mit BubbleSort??

Oh doch, aber ich schreibe Code, den ich brauche. Ich schreibe auch manchmal Code für das Forum. Ich schreibe aber immer nur sinnvollen Code, direkt verwendbar oder als Vorlage zum Ankupfern/Abwandeln für eigene Bedürfnisse, der zielführend ist - für das Ergebnis in der Praxis, nicht für theoretische Ansätze a la Hausaufgaben.


>> Und gibt es einen anderen Weg als
>> ...
>> um an die Koordinaten zu kommen??

Ja, ein SelectionSet machen, das mir nur die Punkte retourniert, damit ich nicht für 5 Punkte eine ganze Zeichnung durchscannen muss.


Last-but-not-least kommt dazu, dass ich mit 'kann denn hier niemand' ein kritisches Verhältnis aufgebaut habe.

Somit bin ich out.

- alfred -

------------------
www.hollaus.at

ThebigH
Mitglied


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

Beiträge: 5
Registriert: 04.03.2010

AutoCAD2007

erstellt am: 04. Mrz. 2010 21: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

Ich wollte dir nicht zu nahe treten. Aber wenn du mir mit dem BubbleSort Problem nicht helfen möchtest ... dann lass es doch einfach sein.

Das mit dem Selection.Set werde ich weiterverfolgen.

Danke!

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

Knerstin
Mitglied


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

Beiträge: 7
Registriert: 05.03.2010

erstellt am: 05. Mrz. 2010 18: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 ThebigH 10 Unities + Antwort hilfreich

Hi, ich habe die gleiche Aufgabe, hänge aber zurzeit an einem anderen Problem.
und zwar habe ich die txt datei und muss ja diese x und y-werte einlesen,
wenn ich schreibe
Input #100, x, y
liest er jedoch nur die 1. zeile aus *ist ja auch logisch
wie kann ich ihm sagen dass er die nächste zeile auch auslesen soll?
bei der bubblesort funktion, will er ja den ersten wert mit dem zweiten wert vergleichen, jedoch hapert es daran dass er den zweiten wert nicht liest,
hat jemand eine idee wie ich das tun kann?
Dachte schon an Input #100, x(i), y(i) oder irgendwas mit array....aber funktionieren will das alles nich :-(
Vielleicht hat ja jemand eine idee!

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


Ex-Mitglied

erstellt am: 05. Mrz. 2010 18:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

herzlich willkommen bei CAD-de!  

Ich kann mir und Dir eine Frage leider nicht ersparen: was hat einlesen von einer ASCII-Datei mit dem Forum-Thema AutoCAD VBA zu tun?

Ich hätte als erstes mal dieses >>>klick<<< gemacht.

Und wenn Ansätze in Richtung AutoCAD-Steuerung mit VBA vorhanden sind und Du an einem bestimmten Punkt (oder ev. mehreren Punkten) hängst, dann zeig uns das Code-Schnippsel, markiere die Problemzeile, und sei Dir der Hilfe hier sicher.

- alfred -

PS: Meine Auffassung des Forums ist es, bei Problemen im Fortschritt bei der Arbeit zu unterstützen. Dieses Forum ist kein Hausaufgabenlöser.  

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 05. Mrz. 2010 editiert.]

Knerstin
Mitglied


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

Beiträge: 7
Registriert: 05.03.2010

erstellt am: 05. Mrz. 2010 18:24    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 ThebigH 10 Unities + Antwort hilfreich

hey....ich kann dich ja verstehen und ehrlich gesagt will ich es auch verstehen und googlen tu ich schon seid 3 tagen....habe jede menge sachen gelesen und ausprobiert und komme dennoch nich weiter.
mein "derzeitiges" problem-da hast du recht- hat nicht wirklich etwas mit autocad zu tun....dennoch läuft das VBA unter Autocad.
vielleicht hast du ja dennoch ein tipp für mich, wie ich die x werte (welche zur zwischenspeicherung in einer textdatei untereinander stehen) nach und nach einlesen und dann vergleichen kann....(das mit dem vergleichen bekomm ich hoffentlich hin)
danke schonmal für die schnelle antwort!

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


Ex-Mitglied

erstellt am: 05. Mrz. 2010 18:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

bin gespannt, was jetzt passiert 

Code:

Public Sub myImport()
 
  Dim tFNr As Integer
  tFNr = FreeFile
 
  Dim X As Double
  Dim Y As Double
  Dim Z As Double
 
  Dim tArr() As Variant
  Dim tArrIndex As Integer
 
  Open "C:\TEMP\XYZ.TXT" For Input As #tFNr    ' Datei zum Einlesen öffnen.
  Do While Not EOF(tFNr)    ' Auf Dateiende abfragen.
      Input #tFNr, X, Y, Z
      Dim tPnt(2) As Double
      tPnt(0) = X
      tPnt(1) = Y
      tPnt(2) = Z
     
      ReDim Preserve tArr(tArrIndex)
      tArr(tArrIndex) = tPnt
     
      tArrIndex = tArrIndex + 1
  Loop
 
  Close #tFNr
End Sub

- alfred -

------------------
www.hollaus.at

Knerstin
Mitglied


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

Beiträge: 7
Registriert: 05.03.2010

erstellt am: 08. Mrz. 2010 21:35    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 ThebigH 10 Unities + Antwort hilfreich

DAAAAAAAAAANKESCHÖN.
Leider bleibt noch eine Frage offen, wenn ich jetzt mit den Koordinaten weiterarbeiten möchte und z.B mit UBound die Anzahl bestimme, schreibe ich doch
UBound(X)
dann sagt er jedoch, "Erwartet Datenfeld"...
ob du mir das noch erklären kannst. es ist doch eindeutig gesagt dass tPnt(0)=X ist....

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


Ex-Mitglied

erstellt am: 08. Mrz. 2010 22:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

X ist ein Double-Wert und kein Array, daher kannst Du auch den Wert X nicht befragen, aus wie vielen Elementen es/er besteht.

Ausgenommen, Du bezeichnest mit X nicht das, was ich oben im Code mit X bezeichnet habe (X-Koordinate), in diesem Fall wäre der Zusammenhang von X mit meinem Beispiel zu erklären.

- alfred -

------------------
www.hollaus.at

Knerstin
Mitglied


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

Beiträge: 7
Registriert: 05.03.2010

erstellt am: 12. Mrz. 2010 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 ThebigH 10 Unities + Antwort hilfreich

So habe es nun soweit hinbekommen,
nun habe ich ein anderes Problem, er möchte einfach keinen Kreis zeichnen und sagt andauernd:
Laufzeitfehler
Die Methode 'Document' für das Objekt 'IAcadModelSpace' ist fehlgeschlagen
bei folgendem Quelltext:

    Dim PKoord(0 To 1) As Double        'PKoord als Array
    Dim Kreis As AcadCircle
    Dim Radius As Double

    Open "D:\Ergebnis.txt" For Input As #100 'Datei für Koordinaten öffnen
 
    Input #100, PKoord(0), PKoord(1)
    Radius = 30

Set Kreis = ThisDrawing.ModelSpace.AddCircle(PKoord, Radius)

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


Ex-Mitglied

erstellt am: 12. Mrz. 2010 15:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> Die Methode 'Document' für das Objekt 'IAcadModelSpace' ist fehlgeschlagen

   Wundert mich, denn die Fehlermeldung passt nicht zu Deinem Code (zu dem Teil, den Du hier gezeigt hast), d.h. der Code bricht wohl woanders ab (oder es sind in den Verweisen des Projekts falsche Einstellungen).


Und der ersichtliche Fehler: Der Einfügepunkt des Kreises muss ein 3D-Punkt sein, Du hast aber nur als Array aus 2 Doubles definiert ==> PKoord(0 to 1)

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 12. Mrz. 2010 editiert.]

Knerstin
Mitglied


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

Beiträge: 7
Registriert: 05.03.2010

erstellt am: 12. Mrz. 2010 15:29    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 ThebigH 10 Unities + Antwort hilfreich

ah cool, das mit dem 3D eingabepunkt war der fehler.
dankeschön!

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

Knerstin
Mitglied


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

Beiträge: 7
Registriert: 05.03.2010

erstellt am: 14. Mrz. 2010 17: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 Nur für ThebigH 10 Unities + Antwort hilfreich

Soooo mal wieder eine Frage :-)
ich möchte eine textdatei auslesen und vorerst in einer messagebox fragen, welche zeile aus der textdatei eingelesen wird.
sprich mein quelltext sieht so aus:

Szenario = InputBox("Was soll dargestellt werden?")

Open "D:\E.txt" For Input As #100

If Szenario=1 then open 'dann soll er die erste zeile einlesen
   
und so weiter
   
Input #100, S, h, St, ta, te, c, maxW      'Eingeben der Ergebnisse
Close #100

Vielleicht kannst du mir einen tipp geben, wie ich ihm sage, welche zeile er einlesen soll?
Gruß und vielen dank

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


Ex-Mitglied

erstellt am: 14. Mrz. 2010 18:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Diese Zeile:
Open "D:\E.txt" For Input As #100
öffnet eine Datei im sequentiellen Lesemodus, damit kann diese nur von vorne lesen, sprich von 1 beginnen.  Mit dieser Öffnungsmethode würde das bedeuten: Vorne anfangen, so lange lesen bis die gewünschte Zeilennummer erzielt ist.

Schau Dir daher in der VB/VBA-Hilfe mal die anderen Parameter (und Lesemethoden) von OPEN an, damit Du diese nicht sequentiell liest.

- alfred -

PS: Du siehst immer #100 als Dateizugriffsnummer an, die könnte aber schon reserviert sein. Vergleich dieses mit meinem Code oben. 

------------------
www.hollaus.at

Knerstin
Mitglied


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

Beiträge: 7
Registriert: 05.03.2010

erstellt am: 14. Mrz. 2010 19:55    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 ThebigH 10 Unities + Antwort hilfreich

hmm so richtig komm ich nich voran, auch nich mit google und der hilfe...
ich denke ich würde es schaffen mit einer do schleife und der funktion line input die richtige zeile einzulesen.
aber wie kann ich dann die ganze zeile in ihre einzelnen komponenten zerlegen?

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



Anzeige:Infos zum Werbeplatz >>

AVC Fixture CAD APP für 3D, Möbel, Messestände

Plugin AVC_Fixture for AutoCAD and BricsCAD. Arrangement of fixtures along joints of solids. RTA fittings, Fasteners, Furniture hinges, Shelf holders, Hardware


Ex-Mitglied

erstellt am: 14. Mrz. 2010 20:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>>>probier mal<<<, was würde dann helfen, wenn hier nochmals eine Anleitung gemacht wird, die schon tausendfach im Internet existiert?


>> aber wie kann ich dann die ganze zeile in ihre einzelnen komponenten zerlegen?

SPLIT könnte hier helfen, nur kommt da zu wenig Info. Der Begriff 'Komponenten' verrät nichts über Deinen Zeilenaufbau, wie soll man/Frau Dir helfen?

- alfred -

------------------
www.hollaus.at

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz