| |
| CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min |
| |
| KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
|
Autor
|
Thema: CATIA V5 Programmierung (3509 mal gelesen)
|
dennisw Mitglied Konstrukteuer
Beiträge: 6 Registriert: 11.02.2009 WinXP Pro, 1Gb Arbeitsspeicher, 2,4 Ghz, 128 Mb Nvidia
|
erstellt am: 11. Feb. 2009 22:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Kollegien und Kollegen, ich bin ein absoluter Anfänger mit Programmierung. Ich möchte einen Skript für Schweißpunkte bzw. Schweißwolke programmieren. So was ähnlich habe ich schon gesehen. Das Makro soll in einem Datensatz (Part) automatisch die Punkte suchen und den Kugel mit D=3mm erstellen. Man kann aber auch diese Punkte und die Kugelchen mit ZX-Ebene spiegeln. Falls jemand eine Ahnung hat, wie das programmieren kann werde ich mich für den Vorschlag freuen. ------------------ MfG Dennis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 12. Feb. 2009 01:24 <-- editieren / zitieren --> Unities abgeben: Nur für dennisw
Hallo dennisw, willkommen im Forum! Den Vorschlag kann ich schnell liefern, programmieren musst Du aber selber. Da kann ich nur helfen! Also: 1.) alle Punkte suchen und selektieren, sprich in eine "Selektion" suchen 2.) um alle Elemente (Punkte) der Selektion eine "Sphere" (Kugelfläche - GSD-Workbench) mit gewünschten Radius erstellen 3.) Spiegelung? -> Punkt-Koordinaten auslesen, Y-Wert invertieren, Punkt mit neuen Koordinaten erstellen, Kugelfläche erzeugen Ich hoffe, dies reicht Dir erst mal als Konzept, nun musst du es nur noch in ein Programm umsetzen ... Falls Du aber irgendwo nicht weiter kommst, frag einfach gezielt - am Besten mit CODE-Schnipsel...
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 |
dennisw Mitglied Konstrukteuer
Beiträge: 6 Registriert: 11.02.2009 WinXP Pro, 1Gb Arbeitsspeicher, 2,4 Ghz, 128 Mb Nvidia
|
erstellt am: 22. Feb. 2009 01:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie, ich komme leider nicht weiter. Wie gesagt, ich bin ein Anfänger und mit Makro habe ich nicht wirklich gearbeitet, besser gesagt nur ganz einfache Makro. Die Lösung ist für mich zu schwer. Ich habe einige Themen in Forum angeschaut (die .pdf- Datei ). Selektieren kann ich, aber danach komme ich nicht weiter. Kannst du bitte helfen? Was muss ich weiter tun. Über Makro werde ich mich sehr freuen. MfG wdennis ------------------ MfG Dennis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12014 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Feb. 2009 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für dennisw
|
dennisw Mitglied Konstrukteuer
Beiträge: 6 Registriert: 11.02.2009 WinXP Pro, 1Gb Arbeitsspeicher, 2,4 Ghz, 128 Mb Nvidia
|
erstellt am: 22. Feb. 2009 18:04 <-- editieren / zitieren --> Unities abgeben:
Hallo bgrittmann, vielen Dank für deine Mithilfe. Es hat mir sehr geholfen. Ich habe folgende Makro ausprobiert. Code: Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set myPartDocument = CATIA.ActiveDocument Set myPart = myPartDocument.Part Set myAxis =myPart.CreateReferenceFromObject(myPart.AxisSystems.Item("Achsensystem.1")) Set myHybridBodies = myPart.HybridBodies.Add() myHybridBodies.Name = "Kugel" Set mySelection = CATIA.ActiveDocument.Selection Anzahl = mySelection.Count For i = 1 To Anzahl Set Pt = mySelection.Item(i).Value Set myhybridShapeFactory = myPart.HybridShapeFactory Set myhybridShapeSphere = myhybridShapeFactory.AddNewSphere(Pt, myAxis, 1.5, -45, 45, 0, 180) myhybridShapeSphere.Limitation = 1 myHybridBodies.AppendHybridShape myhybridShapeSphere myPart.InWorkObject = myhybridShapeSphere Next myPart.Update End Sub Die Kügelchen macht Catia in einem Geo-Set "Kugel". Ich möchte gern, dass die Kügelchen in einem Aktiven Geo-Set erzeugt werden. Dafür versuche ich Code zu kriegen: Set myHybridbodies1 = part1.Hybridbodies Set myHybridBody = oSelectedElement.Parent und GEO-Set "Kugel" zu löschen. Klappt erst mal nicht. Hat jemand einen Vorschlag? Noch besser wäre, wenn ich die Punkte mit ZX-Ebene gespiegelt hätte und noch für einen gespiegelten Punkt den Kugel erzeugen. Hat jemand eine Ahnung? ------------------ MfG Dennis Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 22. Feb. 2009 19:03 <-- editieren / zitieren -->
|
dennisw Mitglied Konstrukteuer
Beiträge: 6 Registriert: 11.02.2009 WinXP Pro, 1Gb Arbeitsspeicher, 2,4 Ghz, 128 Mb Nvidia
|
erstellt am: 22. Feb. 2009 19:10 <-- editieren / zitieren --> Unities abgeben:
|
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 22. Feb. 2009 20:13 <-- editieren / zitieren --> Unities abgeben: Nur für dennisw
Hallo, Die Kügelchen macht Catia in einem Geo-Set "Kugel". Ich möchte gern, dass die Kügelchen in einem Aktiven Geo-Set erzeugt werden. Dafür versuche ich Code zu kriegen: Set myHybridbodies1 = part1.Hybridbodies Set myHybridBody = oSelectedElement.Parent
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ogard1 Mitglied Verfahrenstechniker
Beiträge: 442 Registriert: 12.09.2004 R19 SP2
|
erstellt am: 22. Feb. 2009 20:17 <-- editieren / zitieren --> Unities abgeben: Nur für dennisw
Hallo, Die Kügelchen macht Catia in einem Geo-Set "Kugel". Ich möchte gern, dass die Kügelchen in einem Aktiven Geo-Set erzeugt werden. Dafür versuche ich Code zu kriegen: Set myHybridbodies1 = part1.Hybridbodies Set myHybridBody = oSelectedElement.Parent dann mußt du deinen Aktiven Geo-Set in work setzen, part1.InWorkObject = hybridBody1 und GEO-Set "Kugel" zu löschen. Klappt erst mal nicht. Hat jemand einen Vorschlag? das kann mann z.b. über Selektion machen Dim hybridBody1 As HybridBody Set hybridBody1 = hybridBodies1.Item("Kugel")
selection1.Add hybridBody1 selection1.Delete Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12014 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 22. Feb. 2009 20:26 <-- editieren / zitieren --> Unities abgeben: Nur für dennisw
Servus Kleine Ergänzung zu ogard1. Lösche die Zeilen: Set myHybridBodies = myPart.HybridBodies.Add() myHybridBodies.Name = "Kugel"aus dem Makro raus, dann wird dieses Set erst gar nicht angelegt. Gruß Bernd @ogard1: Es gibt auch eine Edit-Funktion ;-) ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dennisw Mitglied Konstrukteuer
Beiträge: 6 Registriert: 11.02.2009 WinXP Pro, 1Gb Arbeitsspeicher, 2,4 Ghz, 128 Mb Nvidia
|
erstellt am: 22. Feb. 2009 23:20 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe folgendes ausprobiert: Code: ________________ Language="VBSCRIPT" Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set myPartDocument = CATIA.ActiveDocument Set myPart = myPartDocument.Part Set myAxis =myPart.CreateReferenceFromObject(myPart.AxisSystems.Item("Achsensystem.1"))
Set myHybridBodies = myPart.Hybridbodies myPart.InWorkObject = myHybridbodies Set mySelection = CATIA.ActiveDocument.Selection Anzahl = mySelection.Count For i = 1 To Anzahl Set Pt = mySelection.Item(i).Value Set myhybridShapeFactory = myPart.HybridShapeFactory Set myhybridShapeSphere = myhybridShapeFactory.AddNewSphere(Pt, myAxis, 1.5, -45, 45, 0, 180) myhybridShapeSphere.Limitation = 1 myHybridbodies.AppendHybridShape myhybridShapeSphere myPart.InWorkObject = myhybridShapeSphere Next myPart.Update End Sub das Makro läuft bis: myHybridbodies.AppendHybridShape myhybridShapeSphere myPart.InWorkObject = myhybridShapeSphere und dann nicht mehr.Ich vermute mal, dass das mit dem: Set myHybridBodies = myPart.Hybridbodies myPart.InWorkObject = myHybridbodies einen Zusammenhang hat. Ich komme noch einmal nicht weiter.Kann mir jemand bitte wieder helfen ------------------ MfG Dennis 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: 23. Feb. 2009 01:13 <-- editieren / zitieren --> Unities abgeben: Nur für dennisw
ersetze Code: Set myHybridBodies = myPart.Hybridbodies myPart.InWorkObject = myHybridbodies
inCode: Set myHybridBodies = myPart.InWorkObject
und fertig dann etwa so? (Erzeugt auch den gespiegelten Punkt und die dazugehörige Kugel)
Code: Sub CATMain() 'Set CATIA = GetObject("", "CATIA.Application") 'ist nur wegen Excel drinnen Dim myPartDocument ' As Document ReDim acoord(2)Set myPartDocument = CATIA.ActiveDocument Set myPart = myPartDocument.Part Set myAxis = myPart.CreateReferenceFromObject(myPart.AxisSystems.Item("Achsensystem.1")) 'Axis mit dem Namen erforderlich Set myHybridBodies = myPart.InWorkObject Set mySelection = CATIA.ActiveDocument.Selection Anzahl = mySelection.Count For i = 1 To Anzahl Set Pt = mySelection.Item(i).Value Set oPt = myHybridBodies.HybridShapes oPt.Item(i).GetCoordinates acoord a = (acoord(0) & ";" & acoord(1) & ";" & acoord(2) & Chr(10)) 'XYZ-Koordinate b = (acoord(0) & ";" & acoord(1) * -1 & ";" & acoord(2) 'XYZ-Koordinate gespiegelt 'MsgBox (a & b) Set myhybridShapeFactory = myPart.HybridShapeFactory Set myhybridShapeSphere = myhybridShapeFactory.AddNewSphere(Pt, myAxis, 4, -45, 45, 0, 180) myhybridShapeSphere.Limitation = 1 myHybridBodies.AppendHybridShape myhybridShapeSphere Set hybridShapePointCoord1 = myhybridShapeFactory.AddNewPointCoord(acoord(0), acoord(1) * -1, acoord(2)) myHybridBodies.AppendHybridShape hybridShapePointCoord1 Set myhybridShapeSphere = myhybridShapeFactory.AddNewSphere(hybridShapePointCoord1, myAxis, 4, -45, 45, 0, 180) myhybridShapeSphere.Limitation = 1 myHybridBodies.AppendHybridShape myhybridShapeSphere Next myPart.Update End Sub
... und Scripte bitte immer als Code formatieren ;-) ... und gebt dem Betreff: Aussagekräftige Namen Tante Edith: Y-Wert acoord(1) korrigiert [Diese Nachricht wurde von Thomas Harmening am 26. Feb. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dennisw Mitglied Konstrukteuer
Beiträge: 6 Registriert: 11.02.2009 WinXP Pro, 1Gb Arbeitsspeicher, 2,4 Ghz, 128 Mb Nvidia
|
erstellt am: 25. Feb. 2009 22:58 <-- editieren / zitieren --> Unities abgeben:
ein vielen vielen Dank, hat es geklappt. Mit gespiegelte Variante habe ich probiert, klappt noch nicht. Catia spiegelt, aber nicht um die ZX-Ebene. Ich muss mal etwas fummeln um es zu kriegen. Trotzdem vielen Dank ------------------ MfG Dennis 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: 26. Feb. 2009 00:44 <-- editieren / zitieren --> Unities abgeben: Nur für dennisw
Ah, die Punkte können auch auf der Rechten Seite = Y+ liegen? Dann ersetze das zweimalige Vorkommen von Abs(acoord(1)) durch acoord(1) * -1 dadurch wird der Y-Wert invertiert und nicht nur wenn Negativ = positiv... lieg wohl daran, dass ich zu 90% nur links arbeite ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |