'Getcoordinates_Punkt 10.08.05 zusammengestellt aus Onlinehilfe u. div. Forenbeiträgen 'Dieser Makro liest markierte Punkte in eine Textdatei '======================================================= '= WICHTIG Nur Punkte selektieren, sonst Fehlfunktion = '======================================================= 'Punkte aus Projektionen, Verschneidungen usw. müssen vorher kopiert oder isoliert werden 'Bei Verwendung von ";" als Trennzeichen kann die Datei als .csv abgespeichert werden 'Bei Verwendung von Chr(9) als Trennzeichen sollte die Datei als .txt abgespeichert werden 'Pfad nach eigenem PC anpassen Const cDateiPfad = "C:\Dokumente und Einstellungen\hammax01\Desktop\Punkt_exp.csv" 'Alle Punkte im Trace selektieren - optional testen - auskommentiert-------------------------------- 'Hier wurde offenbar versucht dem Schwachpunkt dieses Makros beizukommen 'Ich bleibe beim "Handbetrieb", da weiß ich was ich mache Sub sMark_Points() Dim Liste As Collection Set Liste = CATIA.ActiveDocument.Selection Liste.clear Liste.Search "(((((FreeStyle.Point + Sketcher.Point) + Drafting.Point) + 'Part Design'.Point) + 'Generative Shape Design'.Point) & Name=*),all" End Sub '--------------------------------------------------------- 'Existiert die Datei bereits? ------- Function fFileExist() as Integer On Error Resume Next CATIA.FileSystem.GetFile (cDateiPfad) fFileExist = Err.Number End Function '============================================ Sub CATMain() 'Datei erzeugen ------------- Dim Datei as File If fFileExist() <> 0 then Set Datei = CATIA.FileSystem.CreateFile (cDateiPfad, False) Else Set Datei = CATIA.FileSystem.GetFile (cDateiPfad) End If 'sMark_Points() ' Markiert alle Punkte - auskommentiert s.o. --------------------------- Dim mySelection as Selection Set mySelection = Catia.ActiveDocument.Selection 'markierte Punkte Dim AnzahlSelekt as integer AnzahlSelekt = mySelection.count ' Anzahl selektierter Elemente Dim DStrom as TextStream Set DStrom = Datei.OpenAsTextStream ("ForAppending") 'hängt an die existierende Datei an DStrom.Write ( "Nr" & ";" & "X" & ";" & "Y" & ";" & "Z" & Chr(10)) Dim i as integer Dim acoord(2) as CATSafeVariant Dim oSelElem as SelectedElement For i = 1 to AnzahlSelekt Set oSelElem = mySelection.Item(i) oSelElem.Value.GetCoordinates (acoord) text = acoord(0) & ";" & acoord(1) & ";" & acoord(2) 'text = replace(text, "," , ".") 'falls Dezimalpunkte erforderlich sind DStrom.Write ((i)& ";" & text & Chr(10)) Next DStrom.Close End Sub