Autor
|
Thema: koordinaten aus Excel (16448 mal gelesen)
|
treuss13 Mitglied
Beiträge: 4 Registriert: 28.11.2006
|
erstellt am: 30. Nov. 2006 14:08 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal an alle, nachdem ich leider gar nicht weiterkomme, habe ich das Problem einmal etwas aufgesplittet. Es wäre super, wenn mir jemand sagen könnte, wie ich mir aus einer Exceltabelle, in denen ich 3 Spalten X,Y und Z mit Koordinaten habe,diese in CATIA als Koordinatenpunkte darstellen lassen kann...?! Vielen Dank für eure Antworten Grüße Tobi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 01. Dez. 2006 10:24 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
Hi Tobi, ich hab hier mal ein einfaches Beispiel für dich. Das Beispiel habe ich im VBA Editor von CATIA erstellt. ------------------------------ Code ------------------------------ Sub CATMain() Dim oExcel As Application Dim oWB As Workbook Dim oWS As Worksheet Dim XCoord As Double Dim YCoord As Double Dim ZCoord As Double Dim nRow As Integer Dim oPart As Part Dim oHybShapeFac As HybridShapeFactory Dim oPoint Dim oMainBody As Body ' Excel starten Set oExcel = CreateObject("Excel.Application") oExcel.Visible = True ' arbeitsmappe öffnen Set oWB = oExcel.Workbooks.Open("e:\temp\punkte.xls") ' tabelle holen Set oWS = oWB.Worksheets.Item(1) ' aktives part holen Set oPart = CATIA.ActiveDocument.Part ' factory zu erstellen der Punkte Set oHybShapeFac = oPart.HybridShapeFactory ' hauptkörper holen zum einfügen der punkte Set oMainBody = oPart.MainBody ' 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 2, 3, 4 XCoord = CInt(oWS.Cells(nRow, 2).Text) YCoord = CInt(oWS.Cells(nRow, 3).Text) ZCoord = CInt(oWS.Cells(nRow, 4).Text) ' Punkt mit den Koordinaten erstellen Set oPoint = oHybShapeFac.AddNewPointCoord(XCoord, YCoord, ZCoord) ' Punkt ein Hauptkörper einfügen Call oMainBody.InsertHybridShape(oPoint) ' Zeile hochzählen nRow = nRow + 1 ' Schleife verlassen, wenn Zelle leer ist Loop While (oWS.Cells(nRow, 2).Text <> "") ' PArt aktualisieren oPart.Update ' Ecxel schliessen oExcel.Quit End Sub ------------------------------------- Code Ende ------------------------------------- Meine Tabelle sind wie folgt aus: Name X Y Z 10 10 10 20 10 10 30 10 10 40 10 10 50 10 10 Ich hoffe es hilft dir weiter. Gruß Proofin [Diese Nachricht wurde von Proofin am 01. Dez. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
treuss13 Mitglied
Beiträge: 4 Registriert: 28.11.2006
|
erstellt am: 01. Dez. 2006 11:29 <-- editieren / zitieren --> Unities abgeben:
|
Solidos Mitglied
Beiträge: 328 Registriert: 26.06.2002
|
erstellt am: 10. Mrz. 2008 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
Hallo zusammen Ich (blutiger Catia-Makro Anfänger) habe es geschaft mit dem oben beschiebenen Makro und dem wo hier steht die Punkte zu importieren. Nur fehlt mir noch die Möglichkeit, die Punkte auch so zu benennen, wie ich sie in Excel (in Spalte 1) schon benannte. Ich habe mal was versucht zu erstellen, aber bin leider daran gescheitert. Hoffentlich hat ein Profi von euch erbarmen mit mir und schreibt mir den richigen Code hin. Hier also mein Versuch: Sub CATMain() Dim Excel As Application Dim WB As Workbook Dim WS As Worksheet Dim Element As Text Dim XCoord As Double Dim YCoord As Double Dim ZCoord As Double Dim nRow As Integer Dim Part1 As Part Dim HybShapeFac As Factory Dim Point As HybridShapePointCoord 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("c:\temp\punkte.xls") ' tabelle holen Set WS = WB.Worksheets.Item(1) ' aktives part holen Set Part1 = CATIA.ActiveDocument.Part ' factory zu erstellen der Punkte Set HybShapeFac = Part1.HybridShapeFactory ' hauptkörper holen zum einfügen der Punkte Set HKoerper = CATIA.ActiveDocument.Part.HybridBodies Set measurement_points = HKoerper.Add() ' Koordianten beginnen in der 2 Zeile der Tabelle nRow = 2 ' Zeilen solange einlesen bis nichts mehr drin steht Do ' die Punkte stehen in den Spalten 2, 3, 4, Der Name davon in Spalte 1 Element = CInt(WS.Cells(nRow, 1).Text) XCoord = CDbl(WS.Cells(nRow, 2).Value) YCoord = CDbl(WS.Cells(nRow, 3).Value) ZCoord = CDbl(WS.Cells(nRow, 4).Value) ' Punkt mit den Koordinaten erstellen Set Point = HybShapeFac.AddNewPointCoord(XCoord, YCoord, ZCoord) Set Point = HybShapeFac.Item(Element) ' Punkt ein 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 Part1.Update ' Ecxel schliessen Excel.Quit End Sub
[Diese Nachricht wurde von Solidos am 10. Mrz. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 10. Mrz. 2008 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
Probiere mal dies Code: Sub CATMain() 'Set CATIA = GetObject("", "CATIA.Application") ' wird nur benötigt, weil ich Excel als Entwicklungssumgebung benutze Dim Excel As Application Dim WB As Workbook Dim WS As Worksheet Set Excel = CreateObject("Excel.Application") ' Excel starten Excel.Visible = True Set WB = Excel.Workbooks.Open("c:\temp\punkte.xls") ' Arbeitsmappe öffnen Set WS = WB.Worksheets.Item(1) ' Tabelle holen Set Part1 = CATIA.ActiveDocument.Part ' aktives part holen Set partDocument1 = CATIA.ActiveDocument Set HybShapeFac = Part1.HybridShapeFactory 'factory zu erstellen der Punkte Set HKoerper = CATIA.ActiveDocument.Part.HybridBodies 'hauptkörper holen zum einfügen der Punkte Set measurement_points = HKoerper.Add 'Geoset einfügen measurement_points.Name = "Messpunkte" 'benennen nRow = 2 'ab Zeile 2 Zeile der Tabelle einlesen Do 'lesen bis EOF ' Spalte 1 = Name // Spalte 2,3,4 = Werte Element = (WS.Cells(nRow, 1).Value) XCoord = CDbl(WS.Cells(nRow, 2).Value) YCoord = CDbl(WS.Cells(nRow, 3).Value) ZCoord = CDbl(WS.Cells(nRow, 4).Value) Set hybridShapeFactory1 = Part1.HybridShapeFactory Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(XCoord, YCoord, ZCoord) measurement_points.AppendHybridShape hybridShapePointCoord1 ' Punkt einfügen hybridShapePointCoord1.Name = Element ' Punkt benennen nRow = nRow + 1 ' Zeile hochzählen Loop While (WS.Cells(nRow, 2).Text <> "") ' Schleife verlassen, wenn Zelle leer ist Part1.Update ' Part aktualisieren Excel.Quit ' Excel schliessen End Sub
[Diese Nachricht wurde von Thomas Harmening am 10. Mrz. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Solidos Mitglied
Beiträge: 328 Registriert: 26.06.2002
|
erstellt am: 11. Mrz. 2008 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|
kalanja Mitglied Entwicklungsing.
Beiträge: 1239 Registriert: 29.10.2001 Dell Precision M3800 Mobile Workstation i7 2,2GHz - 16GB RAM Nvidia Quadro K1100 Treiber: 353.62 Windows 10 Pro (x64) V5 R21 x64 SP6
|
erstellt am: 11. Mrz. 2008 09:57 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
hi thomas! geniales makro! hat fast auf anhieb funktioniert. wie müsste man es ändern das der pfad zum messpunkte file nicht hard coded drin steht, sondern der standard windows open dialog kommt, und man das file dann auswählen kann? - dann wär's perfekt hab lieder überhaupt keine ahnung von programmierung :-) mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 11. Mrz. 2008 18:21 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
Zitat: Original erstellt von kalanja: hab lieder überhaupt keine ahnung von programmierung :-)
ich doch auch nicht ;-) habe es mal geändert, Schnippsel in http://ww3.cad.de/foren/ubb/Forum137/HTML/001999.shtml#000004 einbauen ;-) oberer Code, wenn man es aus Excel laufen lässt. Code: Set Excel = CreateObject("Excel.Application") ' Excel starten Excel.Visible = True MsgBox "Guten Morgen, " & Chr$(13) & "bitte die Exceldatei *.xls auswählen" 'just for phun ChDir "C:\temp\" 'Pfadvorgeben NameZiel = Application.GetOpenFilename("XLS-Dateien (*.xls),*.xls,", , "XLS-Dateien für den Punkteimport auswählen!", MultiSelect:=False) If NameZiel = False Then Beep MsgBox "eine Datei auswählen!" Exit Sub End If Set WB = Excel.Workbooks.Open(NameZiel) ' arbeitsmappe öffnen Set WS = WB.Worksheets.Item(1)
unterer code wenn das macro als *.catvbs existiert - da kenne ich leider nicht die Pfadadressierung
Code: Set Excel = CreateObject("Excel.Application") ' Excel starten Excel.Visible = True MsgBox "Guten Morgen, " 'ChDir "C:\temp\" 'Pfadvorgeben NameZiel = Excel.Application.GetOpenFilename("XLS-Dateien (*.xls),*.xls,", , "XLS-Dateien für den Punkteimport auswählen!") If NameZiel = False Then Beep MsgBox "eine Datei auswählen!" Exit Sub End If Set WB = Excel.Workbooks.Open(NameZiel) ' arbeitsmappe öffnen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Solidos Mitglied
Beiträge: 328 Registriert: 26.06.2002
|
erstellt am: 12. Mrz. 2008 08:54 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
So, dann will ich auch noch mein Optimierter Script hier veröffentlichen. Es hat nun auch ein Startfenster, Eingabe Fenster und Abschluss Fenster. Bei mir mit Catia 5.12 läuft dies prima. Viel spass beim testen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kalanja Mitglied Entwicklungsing.
Beiträge: 1239 Registriert: 29.10.2001 Dell Precision M3800 Mobile Workstation i7 2,2GHz - 16GB RAM Nvidia Quadro K1100 Treiber: 353.62 Windows 10 Pro (x64) V5 R21 x64 SP6
|
erstellt am: 12. Mrz. 2008 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|
fenua73 Mitglied
Beiträge: 4 Registriert: 03.05.2006
|
erstellt am: 15. Mrz. 2008 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 15. Mrz. 2008 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|
meraton Mitglied -
Beiträge: 22 Registriert: 30.04.2005
|
erstellt am: 25. Nov. 2008 20:46 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
... sorry könnte kurz erläutert werden wie das mit der Exeldatei von fenua73 funktioniert? Habe ???.CATPart und die Excel-Datei geöffnet bekomme die Fehlermeldung "Error..." Habe so ungefähr überhaupt keine Ahnung davon und was ich da machen muß ... Danke schon mal ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 26. Nov. 2008 08:07 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
Hallo, hast du CATIA vor dem Starten ausgeführt? Das sieht mir nach einem API Problem aus. Das CATIA Objekt das der Code bracht wird nicht gefunden bzw. kann nicht gestartet werden (hab mir den Code nicht angesehen da ich noch kein Excel installiert habe). Ev. liegt´s an der Registrierung von CATIA im System. Hierzu mal Start -> Ausführen => C:\Programme\Dassault Systemes\B16\intel_a\code\bin>CNEXT.exe regserver (muss natürlich an deinen Installationspfad angeglichen werden!) Danach CATIA nochmal neu starten und dann das Makro ausführen. Ev. findet er dann die CATIA.Application. @fenua73: Is it possible that you only call a existing CATIA object? If that is true then you can create a own CATIA.Application object if the first request of the object is nothing.
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 26. Nov. 2008 08:42 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|
denyo_1 Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 26. Nov. 2008 08:50 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
Hallo, so ich habe den Quellcode mal kurz geändert. Jetzt sollte dieser Fehler nicht mehr auftreten (falls das OLE-Object "CATIA" ordentlich registriert wurde) ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meraton Mitglied -
Beiträge: 22 Registriert: 30.04.2005
|
erstellt am: 27. Nov. 2008 14:54 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|
Ralf Krause Mitglied Maschinenbauer
Beiträge: 9 Registriert: 31.10.2009
|
erstellt am: 01. Nov. 2009 18:19 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|
Ralf Krause Mitglied Maschinenbauer
Beiträge: 9 Registriert: 31.10.2009
|
erstellt am: 01. Nov. 2009 18:21 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
Hallo zusammen, das Makro / die Makros sind super! Die einzelnen Punlkte zeigt er mir an. Aber warum fängt er mir die einzelnen Punkte im sketcher (part desig) nicht, ich möchte sie zu einem spline verbinden!? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 01. Nov. 2009 20:14 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
Weil das Makro 3D-Punkte (Typ Coordinates) erstellt und verbindet. Im Sketcher sind das dann 2D Points und eine 2DSpline-Funktion, die mit diesem Makro nicht angesteuert werden. EDIT: vielleicht habe ich dich auch missverstanden: du möchtest die 3D-Punkte im Sketcher fangen als Input für den Spline ? - Dann müsstest du diese erst in deine Skizze projizieren mit "Project 3D Elements", danach kannst du die Projektionen der Reihe nach anklicken, um den Spline aufzubauen. ------------------ Grüße aus dem Rheinland Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... "Phase 2 in CATIA V5" - www.tobeplus.de tberger@tobeplus.de
[Diese Nachricht wurde von tberger am 01. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 02. Nov. 2009 05:48 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|
Ralf Krause Mitglied Maschinenbauer
Beiträge: 9 Registriert: 31.10.2009
|
erstellt am: 08. Nov. 2009 18:30 <-- editieren / zitieren --> Unities abgeben: Nur für treuss13
|