Dzin budizmo maldų mašinėlė

Sveikiname visus dzin-budizmo gerbėjus. Siūlau susikonstruoti šį maldų mechanizmą.

dzin budizmo maldu malunelis

Labai ramina nervus, tiesiog galima sukti rankose ir jūsų ramybės ir dzin koeficientas tik kyla ir kyla. Dėmesio, jei šalia stovi kokie nors ne dzin budizmo pasiekėjai tai tada galimos problemos- mašinėlė kažkaip sugeba ištraukti kantrybę iš aplinkinių. Todėl tie pašaliniai gali jus aprėkti, švelniai primušti ar net atimti kulto priemonę. Būkite saugūs.


Čai filmukas nekokybiškas, kuris rodo, kad visdėlto ji sukasi.

O jei rimčiau, pabaigiau, bent jau kiek man reikėjo, dantračių paišymo softą. Po daugybės metų panaudojau mokyklines žinias apie sinusus, kosinusus ir net arcsinusus. Eiktupeklon!

6 replies on “Dzin budizmo maldų mašinėlė”

  1. Levai, o minčių apie planetarinį kelių pakopų reduktorių nekilo minčių daryti? Žinoma, nauda iš tokio dalyko tik sportinis interesas kaip ir šio Dzin budizmo aparato 😀 Aišku, tik ten daugiau skaičiavimų.. 🙂

    Ei, išduok paslaptį, kur ten sinusai, kosinusai ir arcsinusai naudojami? Ar tik ne dantų profilių skaičiavimams?

    Esu matęs laikrodžių padarytų iš tokių medinių dantratukų 🙂

  2. Reduktorių galima padaryti, tik reikia užsiimti. Ir dar softa patobulinti, nes jam reikia “išvirkščio” dantračio.

    Sinusai, kosinusai naudojami skaičiuoti krumplio pradžiai ir galui. Dantratis skaičiuojamas turint tik krumplio plotį ir krumplių skaičių. Iš to pasiskaičiuoja darbinis apskritimo ilgis ir dantračio diametras. CorelDraw dirba su Dekarto koordinatėm, o kreivės brėžiasi dar pridedant kampo parametrą laipsniais.
    Arcsinusas naudojamas pasikaičiuoti “stipino” padėčiai- stipino centras eina per apibrėžtus laipsnius, tačiau jo koordinatės pasislinkusios per jo storį. Gaunasi kaip ir pasislinkęs spindulys. Žodžiu reikia pagal stačius trikampius skaičiuoti stipino pradinį kampą…bla bla. Corelio basicas skaičiuoja viską radianais, o pats korelis dirba su laipsniais. Šita painiava daug problemų sukėlė.
    Kas juokingiausia- softo source kodas tik 8 kilobaitų ilgio! Ir čia su komentarais.

    geometrija dantraciu

    arba da Vinci stilium:
    Leonardo da Vabolis

  3. Gal kam reikės, source kodas:

    
    Private Sub CommandButton1_Click()
        Unload Me
    End Sub
    Public Function dcos(ByVal deg As Double) As Double
        dcos = Cos(deg * 3.14159265358979 / 180)
    End Function
    Public Function dsin(ByVal deg As Double) As Double
        dsin = Sin(deg * 3.14159265358979 / 180)
    End Function
    Public Function arcsin(ByVal x As Double) As Double
    arcsin = (Atn(x / Sqr((-x) * x + 1))) * 180 / 3.14159265358979
    End Function
    
    Private Sub gearz_Click()
    
    
    ' dimai
    Dim n, w, h, ax As Single
    Dim x, y, x1, y1, x2, y2 As Double
    Dim i, l, r, s As Double
    Dim d1, d2, d3, d4 As Double
    Dim trap, lase As Single
    Dim round As Single
    Dim tmp As Double
    Dim spoke As Integer
    Dim spr1, spr2 As Double
    Dim spwidth As Single
    
    
    'corelio subtilybes
    ActiveDocument.Unit = cdrMillimeter
    Set doc = ActiveDocument
    doc.Unit = cdrMillimeter
    
    dx = DrawingOriginX
    dy = DrawingOriginY
    ActiveDocument.ClearSelection
    Set curva = Application.CreateCurve(ActiveDocument) ' cia jau korelio reikalas
    
    ' reiksmiu is formos paemimas, korekcija
    n = Val(g1ts.Value) ' dantu kiekis
    w = Val(pitchs.Value) ' dancio plotis
    h = Val(heights.Value) ' dancio aukstis
    ax = Val(axis.Value) ' asies diametras
    trap = Val(trapezoids.Text)
    lase = Val(laser.Text)
    round = Val(rounds.Text)
    spoke = Abs(Int(Val(spokes.Text)))
    spr1 = Val(spr1s.Value)
    spr2 = Val(spr2s.Value)
    spwidth = Val(spwidths.Value)
    
    
    
    'fixai
    If lase < 0 Then lase = 0
    If lase > 5 Then lase = 5
    
    'asis
    If ax < 0 Then ax = 0
    
    ' pradiniai skaiciavimai
    l = n * w * 2 ' dantracio darbinis ilgis dantys * ilgis du kartus, nes ir duobute
    r = l / 3.14159265358979 / 2 ' darbinio apskritimo spindulys
    s = 360 / n / 2 ' vienas krumplis ir viena duobute turi 3 koordinates. +4 koordinates konusams. Cia elemento laipsniai
    
    ' apatinio krumplio kampo padidejimas "di". Standartinis laipsnis yra s
    ' taciau krumplis turi tilpti i skylute. Todel isorini reikia mazinti, o vidini didinti
    ' dabar reikia paskaiciuoti kiek laipsniu bus kampas, kad krumplio plotis butu tas pats kaip ir viduryje.
    d1 = w * 360 / 2 / 3.14159265358979 / (r - h / 2)
    d2 = w * 360 / 2 / 3.14159265358979 / (r + h / 2)
    
    'jei pjaunam lazeriu, dalis nudega. Cia nudegimo kampas.
    
    d3 = lase * 360 / 2 / 3.14159265358979 / r ' centre
    d4 = lase * 360 / 2 / 3.14159265358979 / (r - h / 2) ' apacioje
    
    ' taip gaunam kiek laipsniu yra apatinis kampas.
    ' o jo skirtumas nuo vidutinio, per mazgus
    d1 = ((s - d1) / 2) * (1 - trap / 10) - ((s - d1) / 2) * (1 - trap / 10) * r / 50
    d2 = (-(d2 - s) / 2) * (1 + trap / 10) + ((s - d1) / 2) * (1 - trap / 10) * (2 + n / 5) / r
    
    
    'spokes
    If spoke > 0 Then
    
    spr1 = spr1 + ax / 2 'mazasis
    spr2 = r - h / 2 - spr2 ' dydysis
    spdeg = 360 / spoke
    
    Dim alpha1, alpha2, alpha3, alpha4  As Double
    Dim s5 As Shape
    Dim kamputis1, kamputis2 As Double
    
    If (spwidth / 2 / spr1) < = 1 Then kamputis1 = arcsin(spwidth / 2 / spr1) Else kamputis1 = 0
    If (spwidth / 2 / spr2) <= 1 Then kamputis2 = arcsin(spwidth / 2 / spr2) Else kamputis2 = 0
    
    For i = 0 To spoke - 1
        alpha1 = spdeg * i + kamputis1
        alpha2 = spdeg * i + kamputis2
    
        alpha3 = spdeg * i - kamputis1
        alpha4 = spdeg * i - kamputis2
    
        x1 = (spr1) * dcos(alpha1) + dx
        y1 = (spr1) * dsin(alpha1) + dy
    
        x2 = (spr2) * dcos(alpha2) + dx
        y2 = (spr2) * dsin(alpha2) + dy
    
        Set spath = curva.CreateSubPath(x1, y1) ' Create a SubPath. Kreives pradzios taskas.
        spath.AppendLineSegment x2, y2
    
        x1 = (spr1) * dcos(alpha3) + dx
        y1 = (spr1) * dsin(alpha3) + dy
    
        x2 = (spr2) * dcos(alpha4) + dx
        y2 = (spr2) * dsin(alpha4) + dy
        ''
        Set spath = curva.CreateSubPath(x1, y1) ' Create a SubPath. Kreives pradzios taskas.
        spath.AppendLineSegment x2, y2
    
        'kreivumas
        Set s5 = ActiveLayer.CreateEllipse2(dx, dy, spr1, spr1, alpha1, alpha3 + spdeg, False)
        Set s5 = ActiveLayer.CreateEllipse2(dx, dy, spr2, spr2, alpha2, alpha4 + spdeg, False)
    Next i
    
    End If
    
    
    'paisom dantracio krumpliukus
    
    i = 0
    
    x = r * dcos(i + d3) + dx
    y = r * dsin(i + d3) + dy ' pradines krumplio koordinates
    Set spath = curva.CreateSubPath(x, y) ' Create a SubPath. Kreives pradzios taskas.
    
    For i = 0 To 360 - s Step s * 2
    
    ' zemyn i duobute (1):
        tmp = i + d1 + d4
        x = (r - h / 2) * dcos(tmp) + dx
        y = (r - h / 2) * dsin(tmp) + dy
    spath.AppendCurveSegment x, y, 0, 0, 0, 0
    
    ' zemyn, desiniau (2):
        tmp = i + s - d1 - d4
        x = (r - h / 2) * dcos(tmp) + dx
        y = (r - h / 2) * dsin(tmp) + dy
    spath.AppendCurveSegment x, y, 0, 0, 0, 0
    
    ' aukstyn, bazinis taskas (3)
        tmp = i + s - d3
        x = (r) * dcos(tmp) + dx
        y = (r) * dsin(tmp) + dy
    spath.AppendCurveSegment x, y, 0, 0, 0, 0
    
    'aukstyn, (4):
        tmp = i + s + d2
        x = (r + h / 2 + lase) * dcos(tmp) + dx
        y = (r + h / 2 + lase) * dsin(tmp) + dy
    spath.AppendCurveSegment x, y, round, tmp, 0, 0
    
    ' desinen, krumplio virsus. (5)
        tmp = i + s + s - d2
        x = (r + h / 2 + lase) * dcos(tmp) + dx
        y = (r + h / 2 + lase) * dsin(tmp) + dy
    spath.AppendCurveSegment x, y, 0, 0, 0, 0
    
    ' zemyn, baze. (6):
        tmp = i + s + s + d3
        x = (r) * dcos(tmp) + dx
        y = (r) * dsin(tmp) + dy
    spath.AppendCurveSegment x, y, 0, 0, round, tmp
    
    Next i
    
    spath.Closed = True
    Set sh = ActiveLayer.CreateCurve(curva)
    
    ' grupavimas ir asis
    If ax <> 0 Then
    Set sh = ActiveLayer.CreateEllipse(dx - ax / 2, dy - ax / 2, dx + ax / 2, dy + ax / 2)
        ActiveLayer.Shapes(1).AddToSelection
        ActiveLayer.Shapes(2).AddToSelection
        Dim s1 As Shape
        Set s1 = ActiveSelection.Group
    End If
        Dim OrigSelection As ShapeRange
        Set OrigSelection = ActiveSelectionRange
        ActiveSelection.ObjectData("Name").Value = "CogGear"
    Set sh = Nothing
    
    ' ActiveDocument.ClearSelection
    
    End Sub
    
    
    
  4. gal turi sita reikala dxf formatu?
    patiko! tai ant cnc issipjauciau.
    pats matau su lazeriu pjovei?

  5. Neturiu jokiam formate- tie dantračiai tai gamybinės atraižos testuojant rašomą softą.
    Galima susigeneruoti per naujo, svarbu tik krumplio dydį visur vienodą išlaikyti.

Leave a Reply

Your email address will not be published. Required fields are marked *