Changes between Version 23 and Version 24 of PythonOcc/elbow


Ignore:
Timestamp:
Dec 7, 2013, 8:48:59 AM (10 years ago)
Author:
Leon Kos
Comment:

Dodaj rebro

Legend:

Unmodified
Added
Removed
Modified
  • PythonOcc/elbow

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