| | 213 | |
| | 214 | |
| | 215 | == Rebro s spremenljivo zaokrožitvijo == |
| | 216 | [[Image(elbow7.png,right)]] |
| | 217 | Ker si nismo točno zastavili velikost rebra, je le ta podan kar v enaki velikosti |
| | 218 | kot zunanji radi. Za izdelavo rebra je potrebno podati črto `aWire` in ravnino, ki |
| | 219 | seka model in iz katere je potem v smeri dveh vektorjev izvečeno. |
| | 220 | {{{ |
| | 221 | #!python |
| | 222 | # Izdelamo navadno rebro |
| | 223 | rib_thickness = 6.0 # polovica debeline rebra |
| | 224 | rib1 = gp_Pnt(2*R,R,0) |
| | 225 | rib2 = gp_Pnt(R,2*R,0) |
| | 226 | aPlane = Geom_Plane(0,0,1.0,0.0) |
| | 227 | edge1 = BRepBuilderAPI_MakeEdge(rib1, rib2).Edge() |
| | 228 | aWire = BRepBuilderAPI_MakeWire(edge1) |
| | 229 | rib = BRepFeat_MakeLinearForm( myShp4.Shape(), aWire.Wire(), aPlane.GetHandle(), \ |
| | 230 | gp_Vec(0.,0.,rib_thickness), gp_Vec(0.,0.,-rib_thickness), 1, True ) |
| | 231 | rib.Perform() |
| | 232 | }}} |
| | 233 | V vogal želimo dodati tudi zaokrožitev z naraščajočim radijem. |
| | 234 | Poiščemo vse štiri robove na obeh debelinah rebra, ki imajo začetno in končno Z isto |
| | 235 | in so vzporedni z osjo X ali Y ter jim dodamo spremenljivo debelino zaokrožitve. |
| | 236 | Z nekaj sreče, ker je začetek in konec robov pravilno orientiran, lahko dodamo |
| | 237 | vsem najdenim robovom še naraščajočo zaokrožitev. |
| | 238 | [[Image(elbow8.png,right)]] |
| | 239 | {{{ |
| | 240 | #!python |
| | 241 | TOL=1E-6 |
| | 242 | with_fillet = BRepFilletAPI_MakeFillet(rib.Shape()) |
| | 243 | topology_traverser = Topo(rib.Shape()) |
| | 244 | for aEdge in topology_traverser.edges(): |
| | 245 | first, last = TopExp().FirstVertex(aEdge), TopExp().LastVertex(aEdge) |
| | 246 | first_vert, last_vert = BRep_Tool().Pnt(first), BRep_Tool().Pnt(last) |
| | 247 | if abs(abs(first_vert.Z())-rib_thickness) < TOL and \ |
| | 248 | abs(first_vert.Z() - last_vert.Z()) < TOL and \ |
| | 249 | (abs(first_vert.X()-last_vert.X())<TOL or abs(first_vert.Y()-last_vert.Y())<TOL): |
| | 250 | with_fillet.Add(25, 0.0, aEdge) |
| | 251 | }}} |
| | 252 | Končni program z dodanim rebrom je podan v priponki kot [attachment:elbow.py] |
| | 253 | |