| 154 | | |
| | 154 | Celoten program za izdelavo modela je naslednji: |
| | 155 | {{{ |
| | 156 | #!python |
| | 157 | from OCC.gp import * |
| | 158 | from OCC.BRepPrimAPI import * |
| | 159 | from OCC.TopExp import * |
| | 160 | from OCC.TopAbs import * |
| | 161 | from OCC.BRep import * |
| | 162 | from OCC.Geom import * |
| | 163 | from OCC.GCE2d import * |
| | 164 | from OCC.GC import * |
| | 165 | from OCC.Geom2d import * |
| | 166 | from OCC.BRepLib import * |
| | 167 | from OCC.BRepFeat import * |
| | 168 | from OCC.Utils.Topology import Topo |
| | 169 | from OCC.BRepBuilderAPI import * |
| | 170 | from OCC.BRepAlgoAPI import * |
| | 171 | from OCC.BRepFilletAPI import * |
| | 172 | from OCC.TopoDS import * |
| | 173 | from OCC.StlAPI import * |
| | 174 | from math import radians |
| | 175 | |
| | 176 | from OCC.Display.SimpleGui import * |
| | 177 | from OCC.Graphic3d import * |
| | 178 | |
| | 179 | R = 20 |
| | 180 | L = 150 |
| | 181 | p = gp_Pnt(0.,0.,0) |
| | 182 | d = gp_Dir(1. ,0., 0.) |
| | 183 | myAxes1 = gp_Ax2(p,d) |
| | 184 | myPrim1 = BRepPrimAPI_MakeCylinder(myAxes1, R, 100) |
| | 185 | |
| | 186 | mkFillet = BRepFilletAPI_MakeChamfer(myPrim1.Shape()) |
| | 187 | ex = TopExp_Explorer(myPrim1.Shape(), TopAbs_EDGE) |
| | 188 | ex2 = TopExp_Explorer(myPrim1.Shape(), TopAbs_FACE) |
| | 189 | edge = TopoDS_edge(ex.Current()) |
| | 190 | face = TopoDS_face(ex2.Current()) |
| | 191 | mkFillet.Add(15.0, 3.0, edge, face) |
| | 192 | |
| | 193 | myAxes2 = gp_Ax2(p, gp_Dir(0,-1,0)) |
| | 194 | myPrim2 = BRepPrimAPI_MakeCylinder(myAxes1, R-5, L) |
| | 195 | myShp1 = BRepAlgoAPI_Cut(mkFillet.Shape(),myPrim2.Shape()) |
| | 196 | |
| | 197 | mySphere = BRepPrimAPI_MakeSphere(p, R) |
| | 198 | |
| | 199 | rotateAxis = gp_Ax1(p, gp_Dir(0.0,0.0,1.0)) #Os rotacije |
| | 200 | transfRot1 = gp_Trsf() |
| | 201 | transfRot1.SetRotation(rotateAxis, radians(90.0)) |
| | 202 | myShp2 = BRepBuilderAPI_Transform(myShp1.Shape(), transfRot1) |
| | 203 | myShp3 = BRepAlgoAPI_Fuse(myShp1.Shape(),myShp2.Shape()) |
| | 204 | myShp4 = BRepAlgoAPI_Fuse(myShp3.Shape(), mySphere.Shape()) |
| | 205 | stl_writer = StlAPI() |
| | 206 | stl_writer.Write(myShp4.Shape(), "elbow.stl", False) |
| | 207 | |
| | 208 | display, start_display, add_menu, add_function_to_menu = init_display() |
| | 209 | material = Graphic3d_MaterialAspect(Graphic3d_NOM_SILVER) |
| | 210 | display.DisplayShape(myShp4.Shape(), material) |
| | 211 | start_display() |
| | 212 | }}} |
| | 235 | }}} |
| | 236 | |
| | 237 | {{{ |
| | 238 | #!html |
| | 239 | <script src="/vaje/raw-attachment/wiki/PythonOcc/elbow/jsc3d.min.js"></script> |
| | 240 | <script type="text/javascript"> |
| | 241 | function onLoad(){ |
| | 242 | var canvas = document.getElementById('cv'); |
| | 243 | var viewer = new JSC3D.Viewer(canvas); |
| | 244 | viewer.setParameter('SceneUrl', '/vaje/raw-attachment/wiki/PythonOcc/elbow/elbow.stl'); |
| | 245 | viewer.init(); |
| | 246 | viewer.update(); |
| | 247 | } |
| | 248 | window.onload = window.onresize = function() {onLoad();} |
| | 249 | </script> |
| | 250 | <canvas id="cv" width="600" height="400" |
| | 251 | style="background:lightgrey; border: 1px solid; float:right;" ></canvas> |
| | 252 | }}} |
| | 253 | Osnovno kodo lahko še dodatno opremimo z lastnostmi, ki so podrobneje opisane v |
| | 254 | [http://code.google.com/p/jsc3d/wiki/GettingStarted osnovnem primeru] jsc3d. |