Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Werte aus Excel einlesen über mehrere Dateien

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:   Werte aus Excel einlesen über mehrere Dateien (1590 mal gelesen)
flying12
Mitglied



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

Beiträge: 108
Registriert: 10.05.2007

SW 2018 Pro SP4

erstellt am: 10. Apr. 2014 07:19    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

Hi Leutz,

ein Makro soll mir 5 Kurven aus Excel in Solid einlesen (feature: Kurve durch XYZ-Punkte, welche ich in 5 Textdateien gespeichert habe). Wenn ich das Makro hinterher bearbeite fällt auf, dass er sich nicht die .txt-Dateien merkt, sondern die darin enthaltenen Punkte. Diese ändere ich aber ab und zu in der Excel Tabelle, sodass sie sich im Makro nicht ändern würden.

Weiß jemand wie man die einzelnen Dateien immer wieder neu auslesen lassen kann?

Schönen Gruß
flying

------------------
Grüße
flying

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 10. Apr. 2014 09:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für flying12 10 Unities + Antwort hilfreich

Hallo flying,

hast du schon mal ModelDoc2::InsertCurveFile probiert, das klingt für mich so, also sollte es das machen.

Allerdings wird auch das keine externe Referenz zu dein(en) Ecxeldatei(en) aufbauen, vermutlich wirst du die Kurve anschließend wegschmießen und neu einfügen müssen. Ob sich das mit deiner Konstruktion realisieren lässt weiß ich natürlich nicht.

Alternativ dazu liest du selbst in deinem Makro die Textdateie aus und erzeugst die mit ModelDoc2::InsertCurveFileBegin, ModelDoc2::InsertCurveFilePoint und ModelDoc2::InsertCurveFileEnd selbst.

Ich hoffe, dass gibt dir den Anstoß in eine gangbare Richtung, probiert hab ich das alles nicht.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

flying12
Mitglied



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

Beiträge: 108
Registriert: 10.05.2007

SW 2018 Pro SP4

erstellt am: 14. Apr. 2014 11: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

Hi Stefan,

ModelDoc2::InsertCurveFile  klingt an und für sich sehr gut. Leider habe ich dazu online keine Hinweise gefunden, wie man daraus jetzt ein Makro macht.

Bisher sieht das bei mir so aus:

Code:

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
Part.InsertCurveFileBegin
boolstatus = Part.InsertCurveFilePoint(0.03, 0, 0)
...
boolstatus = Part.InsertCurveFileEnd()
Part.InsertCurveFileBegin
boolstatus = Part.InsertCurveFilePoint(0.04, 0, 0)
boolstatus = Part.InsertCurveFilePoint(0.0369551813, 0.01530733729, -0.000078125)
usw.)


------------------
Grüße
flying

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

flying12
Mitglied



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

Beiträge: 108
Registriert: 10.05.2007

SW 2018 Pro SP4

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

Hat keiner eine Idee wie man die Daten aus der txt-Datei einliest?

------------------
Grüße
flying

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP)


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

Beiträge: 1036
Registriert: 20.12.2003

SolidWorks 2018 SP4, Windows 10 x64,
Workstation:
Fujitsu Celsius M740 Power, Xeon E5-1650v4, 32 GB DDR-Ram, Quadro K4000
Laptop:
HP ZBook 17 G4, i7-7820HQ, 32 GB DDR-Ram, Quadro P-3000

erstellt am: 16. Apr. 2014 10: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 flying12 10 Unities + Antwort hilfreich

Hallo Flying,

du musst der Methode InsertCurveFile als Parameter die Text-Datei übergeben.
Z.B. boolstatus = Part.InsertCurveFile(C:\temp\test.txt)

In test.txt führst du pro Zeile die Koordinaten eines Punktes auf. Laut
API-Hilfe sind Kommas, Leerzeichen oder Tabs zwischen den drei Werten erlaubt.
Ist allerdings die Hilfe von SWX 2014, aber das sollte trotzdem passen 

------------------
==========
Gruß
Andreas
==========

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

flying12
Mitglied



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

Beiträge: 108
Registriert: 10.05.2007

SW 2018 Pro SP4

erstellt am: 16. Apr. 2014 15: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

Hallo Andreas,

so in etwa? Gibt bei mir aber noch einen Fehler aus: Fehler beim Kompilieren. Erwartet Listentrennzeichen oder)

Code:
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.InsertCurveFileBegin(U:\tests\kurve.txt)

boolstatus = Part.InsertCurveFileEnd()
End Sub


Was ist mit dem "ModelDoc2::"-Teil, den Stefan erwähnt hatte?

------------------
Grüße
flying

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP)


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

Beiträge: 1036
Registriert: 20.12.2003

SolidWorks 2018 SP4, Windows 10 x64,
Workstation:
Fujitsu Celsius M740 Power, Xeon E5-1650v4, 32 GB DDR-Ram, Quadro K4000
Laptop:
HP ZBook 17 G4, i7-7820HQ, 32 GB DDR-Ram, Quadro P-3000

erstellt am: 16. Apr. 2014 19: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 Nur für flying12 10 Unities + Antwort hilfreich

Hallo Flying,

Zitat:
Original erstellt von flying12:
...
Code:

boolstatus = Part.InsertCurveFileBegin(U:\tests\kurve.txt)

boolstatus = Part.InsertCurveFileEnd()


Was ist mit dem "ModelDoc2::"-Teil, den Stefan erwähnt hatte?


die Methode heißt nur InsertCurveFile, das angehängte Begin bzw. End
existiert nicht- ModelDoc2 ist das Object, das du mit Dim Part as Object verwendest.

Kleiner Tipp: Schau dir mal in den Lehrbüchern von SWX das Buch zum Thema
API an. Und unter http://solidworks.cad.de/mm_boerse05.htm findest du unter der Nr. 42 eine weitere Hilfe.

------------------
==========
Gruß
Andreas
==========

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

flying12
Mitglied



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

Beiträge: 108
Registriert: 10.05.2007

SW 2018 Pro SP4

erstellt am: 17. Apr. 2014 07: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

Hi Andreas,

danke für die Lesetipps. Habe angefangen die Nr 42 zu lesen. Komme da aber schon auf Seite 16 ins stocken (einfügen von Button und Label). Habe absolut keine VB-Grundkenntnisse, und werde mich wohl - zumindest in diesem Jahr - nicht mehr darin einlesen. Hatte es kurz überlegt, aber es wird einfach zuviel. Derzeit lese ich mich in Excel bzw. tiefergehende Funktionen ein.

Wenn es dann mit dem einlesen der Kurven nicht klappt, dann muss ich eben damit leben. Aber wenn ich eines Tages mit VB und API anfangen sollte, werde ich mich an deinen Link erinnern  .

Danke!

------------------
Grüße
flying

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

flying12
Mitglied



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

Beiträge: 108
Registriert: 10.05.2007

SW 2018 Pro SP4

erstellt am: 17. Apr. 2014 09: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

Habe jetzt in diesem Thread noch diesen Code gefunden:

Code:
Sub main()
    Dim swApp As Object
    Dim Part As Object
    Dim boolstatus As Boolean
   
    ' an SolidWorks anhängen
    Set swApp = Application.SldWorks
    ' aktives Modell holen
    Set Part = swApp.ActiveDoc
   
    ' und nacheinander die Kurvendateien einlesen
    boolstatus = Part.InsertCurveFile("c:\temp\kurve-params-01.txt")
    boolstatus = Part.InsertCurveFile("c:\temp\kurve-params-02.txt")
    boolstatus = Part.InsertCurveFile("c:\temp\kurve-params-03.txt")
    ' usw.

End Sub


Sieht vielversprechend aus, allerdings passiert bei mir im SW nichts.    
Die Pfade hatte ich natürlich angepasst.

edit: jetzt gehts doch! Hatte da tatsächlich nochn Tippfehler drin.

Vielen Dank an Stefan Berlitz und dir ANdreas!

------------------
Grüße
flying

[Diese Nachricht wurde von flying12 am 17. Apr. 2014 editiert.]

[Diese Nachricht wurde von flying12 am 17. Apr. 2014 editiert.]

[Diese Nachricht wurde von flying12 am 17. Apr. 2014 editiert.]

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

nahe
Mitglied



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

Beiträge: 1497
Registriert: 18.01.2001

arbeite mit:
HP Z440 Workstation
Xenon (12-Kern) 3.5GHz
32GB RAM
238GB SSD
------------------------
SWX-2016 SP5.0
DBWorks-R15 SP2.17
----------------
Windows 7 64 bit
----------------
VB
VBA
Lotus Notes Datenbanken
erste Schritte mit Swift

erstellt am: 17. Apr. 2014 10: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 flying12 10 Unities + Antwort hilfreich


xy.zip

 
Hallo flying

also bei mir klappt es mit dem folgenden code
im Anhang das Makro und meine "Kurven-Dateien"

Vielleicht liegt es am Format der txt-Dateien?
Als Dezimalzeichen muss ein Punkt und kein Komma verwendet werden
und meine xyz Werte hab ich mit TAB getrennt.


Sub main()
Dim swapp As SldWorks.SldWorks
Dim doc As ModelDoc2

Set swapp = Application.SldWorks
Set doc = swapp.ActiveDoc
ok = doc.InsertCurveFile("C:\Temp\c1.txt")
ok = doc.InsertCurveFile("C:\Temp\c2.txt")

End Sub

------------------
Grüße
Heinz

PS
kannst ev. eine Deiner Kurvendateien posten?

[Diese Nachricht wurde von nahe am 17. Apr. 2014 editiert.]

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

flying12
Mitglied



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

Beiträge: 108
Registriert: 10.05.2007

SW 2018 Pro SP4

erstellt am: 17. Apr. 2014 10: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

Hallo Heinz!

Da haben wir uns wohl überschnitten, aber vielen Dank für dein Feedback!

------------------
Grüße
flying

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