| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | KISTERS 3DViewStation: verbesserte Effizienz durch optimierte Bedienoberfläche, eine Pressemitteilung
|
Autor
|
Thema: Catia V5 Makro Problem (3740 mal gelesen)
|
danillo04 Mitglied Konstrukteur
 Beiträge: 7 Registriert: 28.11.2012
|
erstellt am: 28. Nov. 2012 11:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo! Ich habe hier ein V5 Makro, dass mir die Koordinaten von 3D-Punkten aus einem Part ausliest und in eine Excel-Tabelle exportiert. Jedoch wird mit diesem Makro das gesamte Part auf 3D-Punkte untersucht, ich möchte aber nur Punkte aus einem bestimmten Geometrischen Set auslesen. Vielleicht kann mir jemand weiter helfen,da ich mit Makros keine Erfahrung habe! Anbei noch das Script: Dim objGEXCELapp As Object Dim objGEXCELwkBks As Object Dim objGEXCELwkBk As Object Dim objGEXCELwkShs As Object Dim objGEXCELSh As Object Dim fs, f, f1, fc, s Dim coords(2) As Integer Dim PartDocument1 Sub CATMain() CATIA.ActiveDocument.Selection.Search "CATGmoSearch.Point,all" StartEXCEL ExportPoint 'objGEXCELSh.Application.ActiveWorkbook.SaveAs (ExcelFolder & Left(CATIA.ActiveDocument.Name,Len(CATIA.ActiveDocument.Name)-8) & ".xls") 'objGEXCELSh.Application.ActiveWorkbook.Close End Sub '****************************************************************************** Sub StartEXCEL() '****************************************************************************** Err.Clear On Error Resume Next Set objGEXCELapp = GetObject (,"EXCEL.Application") If Err.Number <> 0 Then Err.Clear Set objGEXCELapp = CreateObject ("EXCEL.Application") End If objGEXCELapp.Application.Visible = TRUE Set objGEXCELwkBks = objGEXCELapp.Application.WorkBooks Set objGEXCELwkBk = objGEXCELwkBks.Add Set objGEXCELwkShs = objGEXCELwkBk.Worksheets(1) Set objGEXCELSh = objGEXCELwkBk.Sheets (1) objGEXCELSh.Cells (1,"A") = "Name" objGEXCELSh.Cells (1,"B") = "X" objGEXCELSh.Cells (1,"C") = "Y" objGEXCELSh.Cells (1,"D") = "Z" End Sub '****************************************************************************** Sub ExportPoint() '****************************************************************************** For i = 1 To CATIA.ActiveDocument.Selection.Count Set selection = CATIA.ActiveDocument.Selection Set element = selection.Item(i) Set point = element.value 'Write PointData to Excel Sheet point.GetCoordinates(coords) objGEXCELSh.Cells (i+1,"A") = point.name objGEXCELSh.Cells (i+1,"B") = coords(0) objGEXCELSh.Cells (i+1,"C") = coords(1) objGEXCELSh.Cells (i+1,"D") = coords(2) Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Nov. 2012 12:38 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
Servus Willkommen im Forum. Bitte Systeminfo ausfüllen. Am einfachst die Zeile ändern: Code: CATIA.ActiveDocument.Selection.Search "CATGmoSearch.Point,sel"
Dann wird nur noch in der aktuellen Auswahl gesucht. Das heißt du musst zuvor das GeoSet selektieren.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
buecherm83 Mitglied Ingenieur IT Application Software

 Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R26 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2016
|
erstellt am: 02. Sep. 2013 14:30 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
Hallo, ich habe folgendes Problem zwischen CATIA VBA 6 und Excel. Ich bekomme die Meldung "User-defined type not defined" an der Stelle dim objXLBook As Excel.Workbook. Wo liegt hier das Problem? Als Catia Script läuft es einwandfrei durch. Dim i As Integer Dim prod As Product Dim objXL As Object Dim objXLBook As Excel.WorkBook Dim objXLSheet As Excel.Worksheet On Error Resume Next Set objXL = GetObject(, "Excel.Application") If Err.Number <> 0 Then Err.Clear Set objXL = CreateObject("Excel.Application") Set objXlBook = objXL.Workbooks.Add End If On Error GoTo 0 objXL.Visible = True Danke
Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
   
 Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 02. Sep. 2013 16:22 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
Der Verweis in den Referenzen aus Excel fehlt. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
buecherm83 Mitglied Ingenieur IT Application Software

 Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R26 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2016
|
erstellt am: 03. Sep. 2013 10:08 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
Ok, Danke. Jetzt bekomme ich zumindest keine Fehlermeldung mehr. Um mit der erstellt Tabelle weiter arbeiten zu können, wollte ich diese transponieren und anschließend speichern. Gespeichert wird diese jedoch ohne transponiert zu sein. Der Code zum Transponieren sieht folgender Maßen aus: ....
' Parameter transponieren für weitere Verwendung Dim objXlBooks As Object Dim objXLSheets As Object Dim objXLBook As Object Dim objXLSheet As Object Set objXLBooks As objXL.Application.WorkBooks Set objXLBook AS objXLBooks.add Set objXLSheets As objXLBook.Worksheets(1) Set ObjXLSheet As objXLBook.Sheet(1) Dim Parameter As String Parameter = objXL.Range("A2:I3").Value objXL.Range("A2:B10").Value = objXL.WorksheetFunction.Transpose(Parameter) objXL.Range("C2:I3") = "" objXL.ActiveWorkbook.SaveAS("C:\Temp\test.xls") objXLBook.Close objXL.Quit Set objXLSheet = Nothing Set objXLBook = Nothing Set objXL = Nothing MsgBox "Parameter ausgelesen und gespeichert!" End Sub Grüße
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 03. Sep. 2013 10:23 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
|
buecherm83 Mitglied Ingenieur IT Application Software

 Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R26 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2016
|
erstellt am: 03. Sep. 2013 10:32 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
Servus, ich habe meinen Fehler gefunden. Ich hatte ein Add zuviel. Jetzt bekomme ich eine transponierte Tabelle in der richtigen größe, jedoch stehen keine Werte in den Zellen sondern nur "WAHR" @bgrittmann ja, da ich nur den die Werte von A2:B10 brauche und der Rest gelöscht werden kann. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
buecherm83 Mitglied Ingenieur IT Application Software

 Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R26 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2016
|
erstellt am: 03. Sep. 2013 11:04 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
   
 Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 03. Sep. 2013 11:05 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
|
buecherm83 Mitglied Ingenieur IT Application Software

 Beiträge: 78 Registriert: 20.09.2011 SIEMENS NX10 CATIA V5 R26 VB7.1 Tecnomatix Process Designer/Simulate<P>Win7 64bit Office 2016
|
erstellt am: 03. Sep. 2013 11:13 <-- editieren / zitieren --> Unities abgeben:          Nur für danillo04
|