Skryptowanie w ANSYS SpaceClaim Marek Zaremba mzaremba@mesco.com.pl - 1 -
Geometria Krok 7-12 Krok 13-14 Krok 1-6 - 2 -
1. Otwarcie środowiska Script Otwórz SpaceClaim 18.2 z Menu Start Otwórz środowisko skryptowania File/New/Script - 3 -
1. Otwarcie środowiska Script Otwieranie/zapisywanie skryptów Publikacja skryptu do panelu grupy Nagraj Uruchom skrypt - 4 -
2. Opcja nagrywania Przed rozpoczęciem tworzenia modelu należy włączyć opcję nagrywania. Wtedy oprogramowanie będzie zapisywało każdy wykonany krok podczas modelowania i będzie przechwytywać wszystkie niezbędne parametry wymagane do powtórzenia operacji. - 5 -
3. Tworzenie elipsy Tworzymy elipsę na płaszczyźnie ZX o rozmiarach 300x200 [mm], po utworzeniu krawędzi elipsy ukażą się kolejne polecenia. # Sketch Ellipse plane = Plane.PlaneZX result = ViewHelper.SetSketchPlane(plane) origin = Point2D.Create(MM(0), MM(0)) majordir = DirectionUV.Create(-1, 0) minordir = DirectionUV.Create(0, 1) result = SketchEllipse.Create(origin, majordir, minordir, MM(150), MM(100)) - 6 -
4. Tworzenie geometrii typu Surface Za pomocą narzędzia Select wybierz krawędź, a następnie wybierz opcję Fill. Utworzy się ciało typu Surface i pojawi się kolejna lista poleceń. # Fill selection = Selection.Create(Curve1) secondaryselection = Selection() options = FillOptions() result = Fill.Execute(selection, secondaryselection, options, FillMode.Sketch, Info2) - 7 -
5. Zmiana płaszczyzny szkicowania Zmień w pierwszej linijce kodu płaszczyznę szkicowania z ZX na XY. Następnie dopisz przed komendą rysowania elipsy pętlę usuwającą wszystkie ciała z interfejsu SpaceClaim. Komenda ta jest ważna ze względu na odtworzenie geometrii. Po przez użycie przycisku Run program usunie wszystkie ciała, a następnie utworzy elipsę na płaszczyźnie XY. while GetRootPart().Bodies.Count > 0: GetRootPart().Bodies[0].Delete() # Sketch Ellipse plane = Plane.PlaneXY result = ViewHelper.SetSketchPlane(plane) origin = Point2D.Create(MM(0), MM(0)) majordir = DirectionUV.Create(-1, 0) minordir = DirectionUV.Create(0, 1) result = SketchEllipse.Create(origin, majordir, minordir, MM(150), MM(100)) # Fill selection = Selection.Create(Curve1) secondaryselection = Selection() options = FillOptions() result = Fill.Execute(selection, secondaryselection, options, FillMode.Sketch, Info2) - 8 -
5. Zmiana płaszczyzny szkicowania - 9 -
6. Wyciągnięcie powierzchni Wybierz utworzoną wcześniej powierzchnie i za pomocą narzędzia Pull, opcji Add wyciągnij powierzchnię o 15 mm w kierunku osi +Z # Extrude 1 Face selection = Selection.Create(Face2) options = ExtrudeFaceOptions() options.extrudetype = ExtrudeType.ForceAdd result = ExtrudeFaces.Execute(selection, Direction.Create(0, 0, -1), MM(-15), options, Info5) - 10 -
7. Wybranie powierzchni do szkicowania Za pomocą opcji Select zaznaczamy dolną powierzchnie modelu, następnie wybieramy opcję Sketch Mode # Change Section View selection = Selection.Create(Face3) result = ViewHelper.SetSketchPlane(selection, Info6) - 11 -
8. Tworzenie okręgu Wybieramy narzędzie Circle i rysujemy okrąg o średnicy 100 mm, w punkcie (0,0) względem globalnego układu współrzędnego. # Sketch Circle origin = Point2D.Create(MM(0), MM(0)) result = SketchCircle.Create(origin, MM(50)) - 12 -
9. Tworzenie geometrii typu Surface Za pomocą narzędzia Select wybierz krawędź, a następnie wybierz opcję Fill. Utworzy się ciało typu Surface. # Fill selection = Selection.Create(Curve2) secondaryselection = Selection() options = FillOptions() result = Fill.Execute(selection, secondaryselection, options, FillMode.Sketch, Info7) - 13 -
10. Przesunięcie geometrii tupu Surface Użyj narzędzia Move do przesunięcia geometri Surface w kierunku osi +Z o 100 mm oraz względem osi X o 50 mm/ # Move 1 object selection = Selection.Create(Body1) localsystem = Frame.Create(Point.Create(MM(0), MM(0), MM(0)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) options = MoveOptions() movetype = TransformType.TranslateZ result = Move.Execute(selection, localsystem, movetype, MM(-200), options) # Move 1 object selection = Selection.Create(Body1) localsystem = Frame.Create(Point.Create(MM(0), MM(0), MM(200)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) options = MoveOptions() movetype = TransformType.TranslateX result = Move.Execute(selection, localsystem, movetype, MM(50), options) - 14 -
11. Obrót geometrii Surface Użyj narzędzia Move do obrotu geometrii typu Surface o kąt -45 stopni względem osi X # Move 1 object selection = Selection.Create(Body1) localsystem = Frame.Create(Point.Create(MM(-50), MM(0), MM(200)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) options = MoveOptions() movetype = TransformType.RotateX result = Move.Execute(selection, localsystem, movetype, DEG(-45), options) - 15 -
12. Wyciągnięcie powierzchni Wybierz utworzoną wcześniej powierzchnie i za pomocą narzędzia Pull, opcji Add wyciągnij powierzchnię o w kierunku normalnym o 15 mm. # Extrude 1 Face selection = Selection.Create(Face4) options = ExtrudeFaceOptions() options.extrudetype = ExtrudeType.Add result = ExtrudeFaces.Execute(selection, Direction.Create(0, 0.707106781186546, -0.707106781186549), MM(15), options, Info8) Uwaga: w komendzie result, można zauważyć że wyciągnięcia będzie działać w kierunku Direction.Create(0, 0.707106781186546, -0.707106781186549). W tej sytuacji w kierunku normalnym (pod kątem 45 stopni). Natomiast jeśli zmienimy kąt powierzchni wyciągniecie będzie miało zły kierunek. - 16 -
12. Wyciągnięcie powierzchni Należy zmienić skrypt na poniższy, tzn. dopisać zmienną facenorm, która odczyta kierunek normalnej do powierzchni, następnie zmienną facenorm zastąpić formułę Direction.Create(0, 0.707106781186546, -0.707106781186549) w komendzie result. Wybrać opcję Run, aby sprawdzić poprawność działania skryptu. # Extrude 1 Face selection = Selection.Create(Face4) options = ExtrudeFaceOptions() options.extrudetype = ExtrudeType.Add facenorm = Face4.Item.MidPoint().Normal result = ExtrudeFaces.Execute(selection, facenorm, MM(15), options, Info8) - 17 -
13. Operacja Blend Zaznaczamy 2 powierzchnie zwrócone do siebie i wybieramy narzędzie Blend Zatwierdzamy operację Complete # Create Blend selection = Selection.Create(Face5, Face6) options = LoftOptions() options.geometrycommandoptions = GeometryCommandOptions() result = Loft.Create(selection, None, options) - 18 -
14. Operacja Shell Wybieramy dwie zewnętrzne powierzchnie, a następnie narzędzie Shell i wprowadzamy grubość modelu jako 4 mm # Make Shell selection = Selection.Create(Face7, Face8) result = Shell.RemoveFaces(selection, MM(-4)) - 19 -
15. Skrypt # Python Script, API Version = V17 1. while GetRootPart().Bodies.Count > 0: 2. GetRootPart().Bodies[0].Delete() 3. # Sketch Ellipse 4. plane = Plane.PlaneXY 5. result = ViewHelper.SetSketchPlane(plane) 6. origin = Point2D.Create(MM(0), MM(0)) 7. majordir = DirectionUV.Create(-1, 0) 8. minordir = DirectionUV.Create(0, 1) 9. result = SketchEllipse.Create(origin, majordir, minordir, MM(150), MM(100)) 10. 11. # Fill 12. selection = Selection.Create(Curve1) 13. secondaryselection = Selection() 14. options = FillOptions() 15. result = Fill.Execute(selection, secondaryselection, options, FillMode.Sketch, Info2) 16. 17. # Extrude 1 Face 18. selection = Selection.Create(Face2) 19. options = ExtrudeFaceOptions() 20. options.extrudetype = ExtrudeType.ForceAdd 21. result = ExtrudeFaces.Execute(selection, Direction.Create(0, 0, -1), MM(-15), options, Info5) 22. - 20 -
15. Skrypt 23. # Change Section View 24. selection = Selection.Create(Face3) 25. result = ViewHelper.SetSketchPlane(selection, Info6) 26. 27. # Sketch Circle 28. origin = Point2D.Create(MM(0), MM(0)) 29. result = SketchCircle.Create(origin, MM(50)) 30. 31. # Fill 32. selection = Selection.Create(Curve2) 33. secondaryselection = Selection() 34. options = FillOptions() 35. result = Fill.Execute(selection, secondaryselection, options, FillMode.Sketch, Info7) 36. 23. # Move 1 object 24. selection = Selection.Create(Body1) 25. localsystem = Frame.Create(Point.Create(MM(0), MM(0), MM(0)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) 26. options = MoveOptions() 27. movetype = TransformType.TranslateZ 28. result = Move.Execute(selection, localsystem, movetype, MM(-200), options) 29. 30. # Move 1 object 31. selection = Selection.Create(Body1) 32. localsystem = Frame.Create(Point.Create(MM(0), MM(0), MM(200)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) 33. options = MoveOptions() 34. movetype = TransformType.TranslateX 35. result = Move.Execute(selection, localsystem, movetype, MM(50), options) 36. - 21 -
15. Skrypt 37. # Move 1 object 38. selection = Selection.Create(Body1) 39. localsystem = Frame.Create(Point.Create(MM(-50), MM(0), MM(200)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) 40. options = MoveOptions() 41. movetype = TransformType.RotateX 42. result = Move.Execute(selection, localsystem, movetype, DEG(-45), options) 43. 44. # Extrude 1 Face 45. selection = Selection.Create(Face4) 46. options = ExtrudeFaceOptions() 47. options.extrudetype = ExtrudeType.Add 48. facenorm = Face4.Item.MidPoint().Normal 49. result = ExtrudeFaces.Execute(selection, facenorm, MM(15), options, Info8) 50. 51. # Create Blend 52. selection = Selection.Create(Face5, Face6) 53. options = LoftOptions() 54. options.geometrycommandoptions = GeometryCommandOptions() 55. result = Loft.Create(selection, None, options) 56. 57. # Make Shell 58. selection = Selection.Create(Face7, Face8) 59. result = Shell.RemoveFaces(selection, MM(-4)) 60. - 22 -
16. Parametryzacja W pierwszym etapie należy opublikować skrypt do panelu Groups Wprowadzamy nazwę w okienku Publish Script Group W panelu Groups pajawił się folder ze skryptem, który możemy uruchomić po przez kliknięcie na niego prawym przyciskiem myszy i wybranie opcji Run Script - 23 -
16. Parametryzacja Klikamy prawym przyciskiem myszy na folder Scripts i wybieramy opcję Create Parameter Zmieniamy nazwę np. na EllipseMajor, który będzie parametrem większego wymiaru elipsy. Postępujemy tak jeszcze 8 razy Przypisujemy następujące wartości utworzonym parametrom - 24 -
16. Parametryzacja Wprowadzamy przed komendą while zmienne odnoszące się do parametrów. Nazwy zmiennych muszą być takie same jak wprowadzone przez użytkownika w panelu Groups EllipseMajor = Parameters.EllipseMajor EllipseMinor = Parameters.EllipseMinor CircleRadius = Parameters.CircleRadius CircleAngle = Parameters.CircleAngle EllipseHeight = Parameters.EllipseHeight CircleOffset = Parameters.CircleOffset CircleVertical = Parameters.CircleVertical CircleHeight = Parameters.CircleHeight Thickness = Parameters.Thickness Następnie w skrypcie zmieniamy wartości wymiarów na zmienne parametrów # Sketch Ellipse plane = Plane.PlaneXY result = ViewHelper.SetSketchPlane(plane) origin = Point2D.Create(MM(0), MM(0)) majordir = DirectionUV.Create(-1, 0) minordir = DirectionUV.Create(0, 1) result = SketchEllipse.Create(origin, majordir, minordir, MM(EllipseMajor), MM(EllipseMinor)) - 25 -
16. Parametryzacja # Extrude 1 Face selection = Selection.Create(Face2) options = ExtrudeFaceOptions() options.extrudetype = ExtrudeType.ForceAdd result = ExtrudeFaces.Execute(selection, Direction.Create(0, 0, -1), MM(-EllipseHeight), options, Info5) # Sketch Circle origin = Point2D.Create(MM(0), MM(0)) result = SketchCircle.Create(origin, MM(CircleRadius)) # Move 1 object selection = Selection.Create(Body1) localsystem = Frame.Create(Point.Create(MM(0), MM(0), MM(0)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) options = MoveOptions() movetype = TransformType.TranslateZ result = Move.Execute(selection, localsystem, movetype, MM(-CircleVertical), options) # Move 1 object selection = Selection.Create(Body1) localsystem = Frame.Create(Point.Create(MM(0), MM(0), MM(200)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) options = MoveOptions() movetype = TransformType.TranslateX result = Move.Execute(selection, localsystem, movetype, MM(CircleOffset), options) - 26 -
16. Parametryzacja # Move 1 object selection = Selection.Create(Body1) localsystem = Frame.Create(Point.Create(MM(-50), MM(0), MM(200)),Direction.Create(-1, 0, 0),Direction.Create(0, 1, 0)) options = MoveOptions() movetype = TransformType.RotateX result = Move.Execute(selection, localsystem, movetype, DEG(-CircleAngle), options) # Extrude 1 Face selection = Selection.Create(Face4) options = ExtrudeFaceOptions() options.extrudetype = ExtrudeType.Add facenorm = Face4.Item.MidPoint().Normal result = ExtrudeFaces.Execute(selection, facenorm, MM(CircleHeight), options, Info1) # Make Shell selection = Selection.Create(Face7, Face8) result = Shell.RemoveFaces(selection, MM(-Thickness)) - 27 -
16. Parametryzacja W celu zmiany wartości danego wymiaru, należy w Panelu Groups kliknąć na daną wartość, wprowadzić inną wartość i zatwierdzić przyciskiem Enter Program automatycznie zbuduje nową geometrię. - 28 -
17. Otwieranie plików.scdm zawierające skrypt Do niniejszej prezentacji udostępniono gotową geometrię. Po otwarciu pliku Skryptowanie.scdm. W panelu Groups zostały już wprowadzone wszystkie parametry i można zmieniać wymiary w dowolny sposób. W celu edycji skryptu, należy w panelu Groups wybrać prawym przyciskiem myszy na skrypt i wybrać opcję Edit Script - 29 -