| 1 | == SALOME SHAPER == |
| 2 | [[PageOutline]] |
| 3 | |
| 4 | SALOME je odprtokodno okolje, ki vsebuje več integriranih modulov, ter je namenjeno reševanju kompleksnih numeričnih problemov ter izvajanju simulacij. Ti numerični problemi bazirajo na začetnem CAD modelu. SALOME vsebuje tudi orodja, ki omogočajo delo s CAD modeli oz. z značilkami CAD modelov ter tako spremembo CAD modelov (poenostavitev) in pridobitev različnih podatkov iz CAD modelov. |
| 5 | |
| 6 | Povezave: |
| 7 | * [https://events.prace-ri.eu/event/896/sessions/2723/attachments/998/1676/SHAPER_AShortIntro_2.pdf Predstavitev SHAPER modula] |
| 8 | * [https://docs.salome-platform.org/latest/gui/SHAPER/index.html SHAPER dokumentacija] |
| 9 | * [https://www.youtube.com/channel/UCm7CSP3v1VF6brzmTlV9c3Q SHAPER primeri na Youtube] |
| 10 | * [http://www.learnsalome.org/shaper/interactive_tutorial SHAPER interaktivni tutorial] |
| 11 | |
| 12 | == Predstavitev SHAPER modula na primerih == |
| 13 | |
| 14 | = Primer 1: Postopek preprostega izvleka v prostor (Extrude) = |
| 15 | |
| 16 | V SALOME Python shell vnesemo naslednje ukaze: |
| 17 | |
| 18 | {{{ |
| 19 | #!python |
| 20 | |
| 21 | # Uvozimo potrebne knjižnice |
| 22 | from salome.shaper import model |
| 23 | |
| 24 | # Inicializiramo model |
| 25 | model.begin() |
| 26 | mypartset = model.moduleDocument() |
| 27 | |
| 28 | # Dodamo novi part |
| 29 | mypart = model.addPart(mypartset).document() |
| 30 | |
| 31 | # Naredimo skico, ki predstavlja osnovo za naš izvlek v prostor |
| 32 | sketch_base = model.addSketch(mypart, model.defaultPlane("XOY")) |
| 33 | # - Določimo štiri linije |
| 34 | l1 = sketch_base.addLine(0, 0, 0, 50) # Linijo, ki leži v trenutni ravnini, se definira z dvema točkama na način (x1,y1, x2, y2) |
| 35 | l2 = sketch_base.addLine(0, 50, 50, 50) |
| 36 | l3 = sketch_base.addLine(50, 50, 50, 0) |
| 37 | l4 = sketch_base.addLine(50, 0, 0, 0) |
| 38 | |
| 39 | # Prikaži dopolnjen model |
| 40 | model.do() |
| 41 | |
| 42 | # Izvlek v prostor |
| 43 | mybox = model.addExtrusion(mypart, sketch_base.selectFace(), 50) |
| 44 | |
| 45 | # Prikaži dopolnjen model |
| 46 | model.do.() |
| 47 | |
| 48 | }}} |
| 49 | |
| 50 | = Primer 2: Postopek izvleka v prostor z uporabo relacij = |
| 51 | |
| 52 | Ta primer je podoben primeru 1 z razliko da se bo uporabilo relacije med elementi (sovpadanje točk, vzporednost ipd.). |
| 53 | |
| 54 | V SALOME Python shell vnesemo naslednje ukaze: |
| 55 | |
| 56 | {{{ |
| 57 | #!python |
| 58 | |
| 59 | # Uvozimo potrebne knjižnice |
| 60 | from salome.shaper import model |
| 61 | |
| 62 | # Inicializiramo model |
| 63 | model.begin() |
| 64 | mypartset = model.moduleDocument() |
| 65 | |
| 66 | # Dodamo novi part |
| 67 | mypart = model.addPart(mypartset).document() |
| 68 | |
| 69 | # Naredimo skico, ki predstavlja osnovo za naš izvlek v prostor |
| 70 | # V tem primeru bomo naredili "neustrezno" skico, v kateri nam linije ne bodo sovpadale. To se bo kasneje uredilo z relacijami |
| 71 | sketch_base = model.addSketch(mypart, model.defaultPlane("XOY")) |
| 72 | # - Določimo štiri linije v ravnini |
| 73 | l1 = sketch_base.addLine(0, 0, 0, 50) |
| 74 | l2 = sketch_base.addLine(0, 123, 50, 50) # neustrezna linija |
| 75 | l3 = sketch_base.addLine(50, 50, 50, 0) |
| 76 | l4 = sketch_base.addLine(50, 0, 123, 123) # neustrezna linija |
| 77 | model.do() |
| 78 | |
| 79 | # Določevanje relacij med linijami v skici: |
| 80 | # - fiksna pozicija točk linij. Linija l1 in l3 so v redu zato jih določimo kot fiksne |
| 81 | sketch_base.setFixed(l1.startPoint()) |
| 82 | sketch_base.setFixed(l1.endPoint()) |
| 83 | sketch_base.setFixed(l3.startPoint()) |
| 84 | sketch_base.setFixed(l3.endPoint()) |
| 85 | |
| 86 | # - stikanje koncev linij |
| 87 | sketch_base.setCoincident(l1.endPoint(), l2.startPoint()) |
| 88 | sketch_base.setCoincident(l2.endPoint(), l3.startPoint()) |
| 89 | sketch_base.setCoincident(l3.endPoint(), l4.startPoint()) |
| 90 | sketch_base.setCoincident(l4.endPoint(), l1.startPoint()) |
| 91 | |
| 92 | # Prikaži dopolnjen model |
| 93 | model.do() |
| 94 | |
| 95 | # Izvlek v prostor |
| 96 | mybox = model.addExtrusion(mypart, sketch_base.selectFace(), 50) |
| 97 | |
| 98 | # Prikaži dopolnjen model |
| 99 | model.do() |
| 100 | |
| 101 | }}} |
| 102 | |
| 103 | Namesto sikanja koncev točk linij se lahko ureja druge relacije ter lastnosti. Pri tem je treba paziti, da se skico ne predefinira! |
| 104 | |
| 105 | Spodaj je prikaz, kako se lahko določi druge relacije. |
| 106 | {{{ |
| 107 | #!python |
| 108 | |
| 109 | # - vzporednost |
| 110 | sketch_base.setParallel(l1, l3) |
| 111 | sketch_base.setParallel(l2, l4) |
| 112 | # - pravokotnost |
| 113 | sketch_base.setPerpendicular(l1, l4) |
| 114 | - vertikalnost |
| 115 | sketch_base.setVertical(l1) |
| 116 | # - fiksna pozicija točk linij |
| 117 | sketch_base.setFixed(l1.startPoint()) |
| 118 | # Določitev širine linije |
| 119 | mywidth = sketch_base.setLength(l1, 50) |
| 120 | # Določitev dolžine skice |
| 121 | mylength = sketch_base.setDistance(l1.startPoint(), l3.endPoint(), 50) |
| 122 | }}} |