Autor
|
Thema: Punkte-Koordinaten in design table schreiben (11458 mal gelesen)
|
Steffen11 Mitglied
Beiträge: 4 Registriert: 15.11.2004
|
erstellt am: 15. Nov. 2004 15:01 <-- editieren / zitieren --> Unities abgeben:
Hat irgendjemand eine Ahnung wie ich die Koordinaten von Punkten, die ich auf einer Kurve erstellt habe, herausbekomme um sie dann in einen design table zu schreiben. Vielen Dank im voraus....... 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: 15. Nov. 2004 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
hi steffen! in eine design table kannst du nur elemente schreiben welche die geomtrie treiben (also definieren). wills du punkte auf einer vorhandenen kurve verwenden(die zb durch die punktfunktion mit konstantem abstand entlang der kurve erstellt wurden) so lässt catia das nicht zu. wenn du einfach nur die punktkoordinaten benötigst um später ausserhalb von catia was zu machen, dann am besten folgendermassen vorgehen. 1.) alles was du nicht rausschreiben willst ins no-show 2.) file mit save as.. als iges abspeichern 3.) iges file mit txt-editor öffnen und alles was nicht punktkoordinaten sind rauslöschen falls im iges file mehr ankommt als sichtbar war, dann eventuell in den tools-options-compatibility-iges: save only shown entities auswählen (sollte aber standardmässig aktiviert sein) gruss mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
myTea Mitglied Ingenieur Fahrzeugtechnik
Beiträge: 1344 Registriert: 22.07.2002 Catia V6 2014
|
erstellt am: 15. Nov. 2004 15:47 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Ich würd´s mit einem Makro probieren. Das müsste auf alle Fälle gehen. Das Makro wird einfacher zu programmieren sein wenn Du die Punkte alle in einen bestimmten OpenBody hineinerzeugst, und dort wirklich nur die Punkte drin sind Mit einem Makro könnte man dann die Koordinaten der Punkte auslesen und in eine txt-tabelle schreiben lassen. Ich hab aber kein entsprechendes Makro, ich sag nur dass das machbar wäre. Gruss, Thomas 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: 15. Nov. 2004 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
|
Steffen11 Mitglied
Beiträge: 4 Registriert: 15.11.2004
|
erstellt am: 15. Nov. 2004 16:14 <-- editieren / zitieren --> Unities abgeben:
|
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: 15. Nov. 2004 16:54 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
hi steffen! habe das makro getestet - es funktioniert. man muss nur den ausgabepfad anpassen. bei mir ist auf D: ein CD-laufwerk, und dahin kann er ja so nicht schreiben. hab's auf C: geändert und es hat gepasst. du bekommst für alle pkt die du in catia selektiert hast eine zeile in einer tabelle. sogar der punktname kommt mit an. mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
myTea Mitglied Ingenieur Fahrzeugtechnik
Beiträge: 1344 Registriert: 22.07.2002 Catia V6 2014
|
erstellt am: 15. Nov. 2004 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
|
Steffen11 Mitglied
Beiträge: 4 Registriert: 15.11.2004
|
erstellt am: 15. Nov. 2004 22:27 <-- editieren / zitieren --> Unities abgeben:
|
Gerste15 Mitglied
Beiträge: 1 Registriert: 16.07.2008
|
erstellt am: 17. Jul. 2008 00:34 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hi Leute, ich benötige dringend dieses Makro was ihr hier so angepriesen habt. ich habe alles so gemacht wie ihr es beschrieben habt aber leider bricht es immer wieder ab. Ich habe mal die Fehlermeldung beigefügt. Wäre super wenn mir jemand weiterhelfen könnte danke Patrick
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 17. Jul. 2008 21:53 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo Gerste15, erst einmal willkommen im Forum! Laut Fehlermeldung hast Du dem Makro eine falsche Dateiendung gegeben. Die richtige Dateiendung ist ".CATScript" und nicht ".catvbs"! Bei ".catvbs" darfst Du keine Typ-Deklarationen in Form von "... As ..." haben, was Dir in der Fehlermeldung ja auch "angemeckert" wird. Nenne doch Dein Script (fast wie das Original?!?) doch einfach "Getcoordinates.CATScript" und schon sollte Dein Problem gelöst sein, ODER? mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JohnnyNash Mitglied
Beiträge: 38 Registriert: 16.05.2008 ---
|
erstellt am: 07. Nov. 2008 08:29 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo Leute, hab dieses Makro mal ausprobiert und es funktioniert einwandfrei. Jetzt würde ich gerne wissen, ob es eine Möglichkeit gibt, Catia zu sagen, dass er jede einzelne Koordinate *1000 nehmen soll, bevor er sie in die .txt-Datei exportiert? Ich bräuchte die Werte nämlich in meter, statt mm. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
djebk Mitglied Konstrukteur, Dipl.-Ing.
Beiträge: 36 Registriert: 04.06.2008 CATIA V5 R16 SP6 CATIA V5 R19 SP7
|
erstellt am: 07. Nov. 2008 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo JohnnyNash. Du musst im Makro die Zeile 49: DStrom.Write (mySelection.Item(I).Value.name & Chr(9)& oPunktKoord(0) & Chr(9) & oPunktKoord(1) & Chr(9) &oPunktKoord(2) & Chr(10)) durch
DStrom.Write (mySelection.Item(I).Value.name & Chr(9)& oPunktKoord(0)*1000 & Chr(9) & oPunktKoord(1)*1000 & Chr(9) &oPunktKoord(2)*1000 & Chr(10)) ersetzen. Alternativ könntest du die Umrechnung auch ganz einfach in Excel durchführen, falls du die Koordinaten anschließend noch nach Excel exportierst. Gruß, djebk P.S. Wenn du die Werte in m statt in mm haben willst, musst du durch 1000 teilen (nicht mit 1000 malnehmen). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JohnnyNash Mitglied
Beiträge: 38 Registriert: 16.05.2008 ---
|
erstellt am: 07. Nov. 2008 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo djebjk also, dass die Lösung sooo einfach ist, hätt ich jetzt echt nicht erwartet. Vielen Dank dafür!! 10 Units sind dir sicher Achja, und das mit´m 1000x nehmen...... Hmmm, peinlich peinlich, aber passiert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JohnnyNash Mitglied
Beiträge: 38 Registriert: 16.05.2008 ---
|
erstellt am: 10. Nov. 2008 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
|
bgrittmann Moderator Konstrukteur
Beiträge: 11849 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 10. Nov. 2008 11:19 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
|
JohnnyNash Mitglied
Beiträge: 38 Registriert: 16.05.2008 ---
|
erstellt am: 10. Nov. 2008 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Tja, diese Idee hatte ich auch über die Suche gefunden, nur kann ich mich damit nicht so ganz anfreunden. Das Makro muss nämlich von mehreren PCs verwendet werden. Und im Betriebssystem immer was umstellen ist irgendwie nicht so das gelbe vom Ei. Ich hatte gehofft, dass es da eventuell ein Befehl gibt, so eine Art Replace (so wie bei Excel oder im Texteditor über STRG+H) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JohnnyNash Mitglied
Beiträge: 38 Registriert: 16.05.2008 ---
|
erstellt am: 13. Nov. 2008 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Lässt sich so etwas nicht auch mit einem zweiten Makro realisieren? Beispiel: Das CATIA-Makro exportiert alle Punkte in eine Excel-Tabelle und startet durch einen Befehl ein in der Exceltabelle integriertes Makro, welches wiederum alle Kommas durch Punkte ersetzt und die Tabelle dann abspeichert?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 13. Nov. 2008 22:14 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo JohnnyNash, warum ein zweites Makro? Du könntest doch die Zeile, die Dir "djebk" korrigiert hat, auch entsprechend ändern, z.B. so: Code: DStrom.Write (mySelection.Item(I).Value.name & Chr(9) & Replace(CStr(oPunktKoord(0)*1000),",",".") & Chr(9) & Replace(CStr(oPunktKoord(1)*1000),",",".") & Chr(9) & Replace(CStr(oPunktKoord(2)*1000),",",".") & Chr(10))
Ist allerdings nicht getestet, nur so eine Idee! mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JohnnyNash Mitglied
Beiträge: 38 Registriert: 16.05.2008 ---
|
erstellt am: 14. Nov. 2008 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
|
Jazzy Mitglied Maschinenbau Studentin, Luft- und Raumfahrttechnik
Beiträge: 1 Registriert: 04.12.2008 Windows XP Professional 32 bit, SP 3, Catia P3 V5 R17, SP 1
|
erstellt am: 04. Dez. 2008 18:49 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo Leute, ich hätte da mal Frage zu dem Macro. Würde gerne Punkte in eine Excel-Tabelle exportieren, da wir die Koordinaten zur Herstellung eines im Raum gekrümmten Flügels für unseren Modellflieger brauchen. Ich habe jedoch noch nie so ein Macro benutzt, erstellt oder sonst was. Wie mache ich das denn? Kann mir da jemand ne Erklärung für Doofe geben? Bin neu hier und beobachte das Forum schon einige Zeit... Ich hoffe jemand von uch kann mir helfen. Vielen Dank schon Mal Jazzy 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 NX12
|
erstellt am: 04. Dez. 2008 19:20 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
|
JohnnyNash Mitglied
Beiträge: 38 Registriert: 16.05.2008 ---
|
erstellt am: 05. Dez. 2008 08:54 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
@JazzyIch würd folgende Reihenfolge vorschlagen: 1.) Den oben genannten Quellcode kopieren(Getcordinates_1_CATScript.txt) 2.)Im CATIA mit ALT+F8 ein neues Makro erzeugen (z.B. catvbs) 3.)dieses dann editieren und den Quellcode einfügen. 4.) dann überall wo .txt steht, ändern in .xls 5.) abspeichern und hoffen, dass es funktioniert... Viel Plan hab ich von Makros auch nicht, aber die Try-and-Error-Methode funzt ganz gut @alle Anderen Die Punkte, die in die txt-Datei exportiert werden, sind manchmal so lang, dass der Editor sie automatisch kürzt mit "E-xx" (siehe Anhang).
Das Problem ist, dass das nachfolgende Programm dieses E nicht auslesen kann und immer eine Fehlermeldung ausspuckt. Gibt es eine Möglichkeit, das im o.g. Makro (Getcordinates_1_CATScript.txt) so zu ändern, dass es max. 6 Stellen nach dem Komma speichert? gruß, Johnny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ZaZuu Mitglied
Beiträge: 2 Registriert: 12.11.2014 Windows XP 64bit Catia V5 für Hochschulen (V5R18 SP0)
|
erstellt am: 12. Nov. 2014 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo allerseits, ich habe mir den Code in meine Catiadatei eingeladen und erhalte leider eine Fehler, wenn ich den Code ausführen will. Mir wird in Zeile 12 augezeigt, dass eine Anweisung erwartet wird. Hierbei handelt es sich um folgende Zeile: Sub fFileExist() As Integer also um die Zweite, die im Skript ausgeführt wird. Leider habe ich von VBA nicht viel Ahnung. Schönen Dank für die Antworten schon mal im Vorraus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11849 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 12. Nov. 2014 09:33 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Servus Willkommen im Forum. Bitte Systeminfo ausfüllen. Welchen Code hast du verwendet? Welche Fehlermeldung kommt? Als was hast du den Code abgespeichert (CAtScript oder CATvbs, vermutlich läuft der Code nur in einem CATScript)? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ZaZuu Mitglied
Beiträge: 2 Registriert: 12.11.2014 Windows XP 64bit Catia V5 für Hochschulen (V5R18 SP0)
|
erstellt am: 12. Nov. 2014 09:54 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Also: Ich habe folgenden Code verwendet: Code:
Const cDateiPfad = "D:\Dokumente und Einstellungen\MAX\Desktop\Punkt_exp.txt" ' Ich lege für den schnellen Zugriff meine Datei auf den Desktop ' Dateipfad nach eigenem Ermessen ändern ' Existiert die Date 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 Dim mySelection as Selection Set mySelection = Catia.ActiveDocument.Selection Dim AnzahlSelekt as integer AnzahlSelekt = mySelection.count ' Gibt an wieviele Elemente selektiert wurden Dim DStrom as TextStream Set DStrom = Datei.OpenAsTextStream ("ForAppending") DStrom.Write ( "Nr" & Chr(9) & "X" & Chr(9) & "Y" & Chr(9) & "Z" & Chr(10)) Dim I as integer Dim oPunktKoord(2) as CATSafeVariant Dim oSelElem as Object For I = 1 to AnzahlSelekt Set oSelElem = mySelection.Item(I) oSelElem.Value.GetCoordinates (oPunktKoord) DStrom.Write (mySelection.Item(I).Value.name & Chr(9)& oPunktKoord(0) & Chr(9) & oPunktKoord(1) & Chr(9) &oPunktKoord(2) & Chr(10)) ' Die Wertetabelle.txt kann in Excel importiert werden Next DStrom.Close End Sub
Hierbei bekomme ich in der Zeile: Function fFileExist() as Integer den Fehler, dass nicht kompilliert werden kann. Das Programm erwartet eine Anweisung in der Zeile. Ich habe das Skript als CATScript abgespeichert. Ich nutzte Catia V5 für Hochschulen (V5R18 SP0) Ich hoffe die Infos reichen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Anneneee Mitglied Student
Beiträge: 2 Registriert: 31.03.2016
|
erstellt am: 31. Mrz. 2016 16:00 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo ihr Lieben, vielleicht könnt ihr mir helfen. Bei mir funktioniert das Makro irgendwie nicht so richtig. Bekomme immer eine Fehlermeldung ... Mein Code lautet:
' Das Originalmakro stammt aus ' http://ww3.cad.de/foren/ubb/Forum137/HTML/000586.shtml ' es wurde hier angepasst um es ggf. in den ' GSD_PointSplineLoftFromExcel.xls von Dassault einzufügen 'Man markiert im GSD die auszulesenden Punkte und führt das Script aus Const cDateiPfad = "C:\Users\anneneee\Desktop\CATIA_Export\Punkt_exp.txt" ' Ich lege für den schnellen Zugriff meine Datei auf den Desktop ' Dateipfad nach eigenem Ermessen ändern ' Existiert die Date 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 Dim mySelection as Selection Set mySelection = Catia.ActiveDocument.Selection Dim AnzahlSelekt as integer AnzahlSelekt = mySelection.count ' Gibt an wieviele Elemente selektiert wurden Dim DStrom as TextStream Set DStrom = Datei.OpenAsTextStream ("ForAppending") DStrom.Write ( "Nr" & Chr(9) & "X" & Chr(9) & "Y" & Chr(9) & "Z" & Chr(10)) Dim I as integer Dim oPunktKoord(2) as CATSafeVariant Dim oSelElem as Object For I = 1 to AnzahlSelekt Set oSelElem = mySelection.Item(I) oSelElem.Value.GetCoordinates (oPunktKoord) In dieser Zeile gibt er mir die Fehlermeldung an DStrom.Write (mySelection.Item(I).Value.name & Chr(9)& oPunktKoord(0) & Chr(9) & oPunktKoord(1) & Chr(9) &oPunktKoord(2) & Chr(10)) ' Die Wertetabelle.txt kann in Excel importiert werden Next DStrom.Close End Sub Vielen Dank schon mal für jede Hilfe!!
[Diese Nachricht wurde von Anneneee am 31. Mrz. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11849 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 31. Mrz. 2016 16:06 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
|
Anneneee Mitglied Student
Beiträge: 2 Registriert: 31.03.2016
|
erstellt am: 31. Mrz. 2016 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
Hallo Bernd, ich habe einen Beinsimulator als CATIA-Modell von meinem Betreuer bekommen. Aus diesem muss ich jetzt die Ansatzpunkte der Innen- und Außenbänder exportieren. Ich dachte ich klicke einfach die gewünschten Stellen an und führe das Makro aus, aber das hat nicht so ganz funktioniert ... LG Anneke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11849 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 31. Mrz. 2016 18:13 <-- editieren / zitieren --> Unities abgeben: Nur für Steffen11
|