Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  XYZ-Koordinaten aus Excel einlesen

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:  XYZ-Koordinaten aus Excel einlesen (3126 mal gelesen)
duc33
Mitglied
Konstrukteur

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

Beiträge: 2
Registriert: 08.06.2007

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

Hallo,
gleich vorne weg. Ich bin auch der absolute Anfänger in der Pogrammierung.

Ich hab´s aber mitlerweilen geschafft, das Excel gestartet wird, die Koordinaten ausgelesen werden (XYZ in Spalten 1, 2 und 3), jedoch schneidet mir das System die Nachkommastellen ab.
Die XYZ-Werte werden auf- bzw. abgerundet.

Mein Script sieht wie folgt derzeit aus:

Sub CATMain()

  Dim Excel As Application
  Dim WB As Workbook
  Dim WS As Worksheet
  Dim XCoord As Reel
  Dim YCoord As Reel
  Dim ZCoord As Reel
  Dim nRow As Integer
  Dim Part As Part
  Dim HybShapeFac As HybridShapeFactory
  Dim Point
  Dim HKoerper As HybridBodies
  Dim measurement_points As HybridBody
 
  ' Excel starten
  Set Excel = CreateObject("Excel.Application")
  Excel.Visible = True
  ' arbeitsmappe öffnen
  Set WB = Excel.Workbooks.Open("X:/test.xls")
  ' tabelle holen
  Set WS = WB.Worksheets.Item(1)
 
  ' aktives part holen
  Set Part = CATIA.ActiveDocument.Part
  ' factory zu erstellen der Punkte
  Set HybShapeFac = Part.HybridShapeFactory
  ' hauptkörper (GeometricalSet) holen zum einfügen der Punkte
    Set HKoerper = CATIA.ActiveDocument.Part.HybridBodies
    Set measurement_points = HKoerper.Item ("measurement_points")

  ' Koordianten beginnen in der 2 Zeile der Tabelle
  nRow = 2
 
  ' Zeilen solange einlesen bis nichts mehr drin steht
  Do
    ' die koordinaten stehen in den Spalten 1, 2, 3
    XCoord = CInt(WS.Cells(nRow, 1).Text)
    YCoord = CInt(WS.Cells(nRow, 2).Text)
    ZCoord = CInt(WS.Cells(nRow, 3).Text)
   
    ' Punkt mit den Koordinaten erstellen
    Set Point = HybShapeFac.AddNewPointCoord(XCoord, YCoord, ZCoord)
    ' Punkt in Hauptkörper einfügen
    measurement_points.AppendHybridShape Point
    ' Zeile hochzählen
    nRow = nRow + 1
   
    ' Schleife verlassen, wenn Zelle leer ist
  Loop While (WS.Cells(nRow, 2).Text <> "")
 
  ' Part aktualisieren
  Part.Update
  ' Ecxel schliessen
  Excel.Quit
End Sub

Ich denke, es liegt evtl. an der Deklaration - doch wie gesagt - blutiger Anfänger

Danke schon mal.

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

BigCheese
Mitglied
Dipl-Ing


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

Beiträge: 130
Registriert: 12.05.2004

CATIA V5R19 SP3

erstellt am: 03. Mrz. 2008 13: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 Nur für duc33 10 Unities + Antwort hilfreich

Hallo duc33,

zwei Dinge würde ich in dem Script ändern.
Zum einen gibt es kein Zahlentyp 'Reel'. Hier könntest Du es mit 'Single' oder 'Double' versuchen.
Zum anderen würde ich die Werte nicht mit

Code:
XCoord = CInt(WS.Cells(nRow, 1).Text)


sondern mit
Code:
XCoord = CInt(WS.Cells(nRow, 1).Value)


auslesen.
Getestet habe ich meine Vorschläge allerdings nicht 

Gruß, Alex

[Diese Nachricht wurde von BigCheese am 03. Mrz. 2008 editiert.]

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

Proofin
Mitglied
Dpl.Ing


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

Beiträge: 208
Registriert: 24.11.2004

erstellt am: 03. Mrz. 2008 13: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 duc33 10 Unities + Antwort hilfreich

Hallo duc33,

wenn du die Nachkommastellen behalten möchtest solltest du nicht mit
CInt() arbeiten. Das wandelt deine Zahl in einen Integer um.
Du solltest CDbl() verwenden, also:

Code:

XCoord = CDbl(WS.Cells(nRow, 1).Value)

Und wie BigCheese schon erwähnt hat die Variablen auf Double deklarieren.

Gruß
Proofin

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

duc33
Mitglied
Konstrukteur

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

Beiträge: 2
Registriert: 08.06.2007

erstellt am: 03. Mrz. 2008 14: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

Danke Proofin und BigCheese, das war´s.

Die richtige Deklaration (Double) und statt CInt() - CDbl() verwendet.

  duc33 

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

BigCheese
Mitglied
Dipl-Ing


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

Beiträge: 130
Registriert: 12.05.2004

CATIA V5R19 SP3

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

Jo, stimmt, das CInt habe ich überlesen...

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