Upload
others
View
9
Download
1
Embed Size (px)
Citation preview
- 2 -
Geometria
Krok 1 - 6
Krok 7 - 12
Krok 13 - 14
- 3 -
1. Otwarcie środowiska „Script”
• Otwórz SpaceClaim 18.2 z Menu Start
• Otwórz środowisko skryptowania File/New/Script
- 4 -
1. Otwarcie środowiska „Script”
Otwieranie/zapisywanie skryptów
Publikacja skryptu do panelu grupy
Nagraj Uruchom skrypt
- 5 -
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.
- 6 -
3. Tworzenie elipsy
• Tworzymy elipsę na płaszczyźnie ZX o rozmiarach 300x200 [mm], po utworzeniu
krawędzi elipsy ukażą się kolejne polecenia.
# Sketch Ellipseplane = Plane.PlaneZXresult = 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))# EndBlock
- 7 -
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)
# EndBlock
- 8 -
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))
# EndBlock
# Fill
selection = Selection.Create(Curve1)
secondarySelection = Selection()
options = FillOptions()
result = Fill.Execute(selection, secondarySelection, options, FillMode.Sketch, Info2)
# EndBlock
- 9 -
5. Zmiana płaszczyzny szkicowania
- 10 -
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 Faceselection = Selection.Create(Face2)options = ExtrudeFaceOptions()options.ExtrudeType = ExtrudeType.ForceAddresult = ExtrudeFaces.Execute(selection, Direction.Create(0, 0, -1), MM(-15), options, Info5)# EndBlock
- 11 -
7. Wybranie powierzchni do szkicowania
• Za pomocą opcji „Select” zaznaczamy dolną powierzchnie modelu, następnie
wybieramy opcję „Sketch Mode”
# Change Section Viewselection = Selection.Create(Face3)result = ViewHelper.SetSketchPlane(selection, Info6)# EndBlock
- 12 -
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 Circleorigin = Point2D.Create(MM(0), MM(0))result = SketchCircle.Create(origin, MM(50))# EndBlock
- 13 -
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.
# Fillselection = Selection.Create(Curve2)secondarySelection = Selection()options = FillOptions()result = Fill.Execute(selection, secondarySelection, options, FillMode.Sketch, Info7)# EndBlock
- 14 -
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 objectselection = 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.TranslateZresult = Move.Execute(selection, localSystem, moveType, MM(-200), options)# EndBlock
# Move 1 objectselection = 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.TranslateXresult = Move.Execute(selection, localSystem, moveType, MM(50), options)# EndBlock
- 15 -
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 objectselection = 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.RotateXresult = Move.Execute(selection, localSystem, moveType, DEG(-45), options)# EndBlock
- 16 -
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 Faceselection = Selection.Create(Face4)options = ExtrudeFaceOptions()options.ExtrudeType = ExtrudeType.Addresult = ExtrudeFaces.Execute(selection, Direction.Create(0, 0.707106781186546, -0.707106781186549), MM(15), options, Info8)# EndBlock
• 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 tejsytuacji w kierunku normalnym (pod kątem 45 stopni). Natomiast jeśli zmienimy kątpowierzchni wyciągniecie będzie miało zły kierunek.
- 17 -
12. Wyciągnięcie powierzchni
• Należy zmienić skrypt na poniższy, tzn. dopisać zmienną facenorm, która odczytakierunek 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 Faceselection = Selection.Create(Face4)options = ExtrudeFaceOptions()options.ExtrudeType = ExtrudeType.Addfacenorm = Face4.Item.MidPoint().Normalresult = ExtrudeFaces.Execute(selection, facenorm, MM(15), options, Info8)# EndBlock
- 18 -
13. Operacja Blend
• Zaznaczamy 2 powierzchnie zwrócone do siebie i wybieramy narzędzie „Blend”
• Zatwierdzamy operację „Complete”
# Create Blendselection = Selection.Create(Face5, Face6)options = LoftOptions()options.GeometryCommandOptions = GeometryCommandOptions()result = Loft.Create(selection, None, options)# EndBlock
- 19 -
14. Operacja Shell
• Wybieramy dwie zewnętrzne powierzchnie, a następnie narzędzie „Shell” i
wprowadzamy grubość modelu jako 4 mm
# Make Shellselection = Selection.Create(Face7, Face8)result = Shell.RemoveFaces(selection, MM(-4))# EndBlock
- 20 -
15. Skrypt
# Python Script, API Version = V17
1. while GetRootPart().Bodies.Count > 0:2. GetRootPart().Bodies[0].Delete()
3. # Sketch Ellipse4. plane = Plane.PlaneXY5. 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. # EndBlock
11. # Fill12. selection = Selection.Create(Curve1)13. secondarySelection = Selection()14. options = FillOptions()15. result = Fill.Execute(selection, secondarySelection, options, FillMode.Sketch, Info2)16. # EndBlock
17. # Extrude 1 Face18. selection = Selection.Create(Face2)19. options = ExtrudeFaceOptions()20. options.ExtrudeType = ExtrudeType.ForceAdd21. result = ExtrudeFaces.Execute(selection, Direction.Create(0, 0, -1), MM(-15), options, Info5)22. # EndBlock
- 21 -
15. Skrypt
23. # Change Section View24. selection = Selection.Create(Face3)25. result = ViewHelper.SetSketchPlane(selection, Info6)26. # EndBlock
27. # Sketch Circle28. origin = Point2D.Create(MM(0), MM(0))29. result = SketchCircle.Create(origin, MM(50))30. # EndBlock
31. # Fill32. selection = Selection.Create(Curve2)33. secondarySelection = Selection()34. options = FillOptions()35. result = Fill.Execute(selection, secondarySelection, options, FillMode.Sketch, Info7)36. # EndBlock
23. # Move 1 object24. 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.TranslateZ28. result = Move.Execute(selection, localSystem, moveType, MM(-200), options)29. # EndBlock
30. # Move 1 object31. 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.TranslateX35. result = Move.Execute(selection, localSystem, moveType, MM(50), options)36. # EndBlock
- 22 -
15. Skrypt
37. # Move 1 object38. 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.RotateX42. result = Move.Execute(selection, localSystem, moveType, DEG(-45), options)43. # EndBlock
44. # Extrude 1 Face45. selection = Selection.Create(Face4)46. options = ExtrudeFaceOptions()47. options.ExtrudeType = ExtrudeType.Add48. facenorm = Face4.Item.MidPoint().Normal49. result = ExtrudeFaces.Execute(selection, facenorm, MM(15), options, Info8)50. # EndBlock
51. # Create Blend52. selection = Selection.Create(Face5, Face6)53. options = LoftOptions()54. options.GeometryCommandOptions = GeometryCommandOptions()55. result = Loft.Create(selection, None, options)56. # EndBlock
57. # Make Shell58. selection = Selection.Create(Face7, Face8)59. result = Shell.RemoveFaces(selection, MM(-4))60. # EndBlock
- 23 -
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”
- 24 -
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
- 25 -
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.EllipseMajorEllipseMinor = Parameters.EllipseMinorCircleRadius = Parameters.CircleRadiusCircleAngle = Parameters.CircleAngleEllipseHeight = Parameters.EllipseHeightCircleOffset = Parameters.CircleOffsetCircleVertical = Parameters.CircleVerticalCircleHeight = Parameters.CircleHeightThickness = Parameters.Thickness
• Następnie w skrypcie zmieniamy wartości wymiarów na zmienne parametrów
# Sketch Ellipseplane = Plane.PlaneXYresult = 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))# EndBlock
- 26 -
16. Parametryzacja
# Extrude 1 Faceselection = Selection.Create(Face2)options = ExtrudeFaceOptions()options.ExtrudeType = ExtrudeType.ForceAddresult = ExtrudeFaces.Execute(selection, Direction.Create(0, 0, -1), MM(-EllipseHeight), options, Info5)# EndBlock
# Sketch Circleorigin = Point2D.Create(MM(0), MM(0))result = SketchCircle.Create(origin, MM(CircleRadius))# EndBlock
# Move 1 objectselection = 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.TranslateZresult = Move.Execute(selection, localSystem, moveType, MM(-CircleVertical), options)# EndBlock
# Move 1 objectselection = 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.TranslateXresult = Move.Execute(selection, localSystem, moveType, MM(CircleOffset), options)# EndBlock
- 27 -
16. Parametryzacja
# Move 1 objectselection = 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.RotateXresult = Move.Execute(selection, localSystem, moveType, DEG(-CircleAngle), options)# EndBlock
# Extrude 1 Faceselection = Selection.Create(Face4)options = ExtrudeFaceOptions()options.ExtrudeType = ExtrudeType.Addfacenorm = Face4.Item.MidPoint().Normalresult = ExtrudeFaces.Execute(selection, facenorm, MM(CircleHeight), options, Info1)# EndBlock
# Make Shellselection = Selection.Create(Face7, Face8)result = Shell.RemoveFaces(selection, MM(-Thickness))# EndBlock
- 28 -
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ę.
- 29 -
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”