All Scripts

New Script

Hello Cube

My First Project
// My first Castor script
// Create a simple box with a hole

const box = cube(20, 20, 10)
const hole = cylinder({ r: 5, h: 15 })

const result = box.subtract(hole)

output(result)

Updated about 6 hours ago

Parallel Guide - Track Connector

Track Saw Stuff
const festool_rail_width = 16;
const festool_rail_height = 10.5;
const festool_thread_dia = 7;
const festool_bracket_width = 70;

const ttrack_thread_dia = 6.5;
const ttrack_height = 9.4;
const ttrack_width = 19;
const ttrack_inside_width = 9.2;
const ttrack_inside_depth = 4.5;
const ttrack_inside_bottom_width = 11.7;
const ttrack_bracket_length = 80;
const ttrack_flange = 2.4;
const ttrack_conn_length = 20;

const hole_spacing = 50;
const plate_thickness = 6;

const slop = 0.3;

const slot_width = 2;
const slot_depth = 3;

const festool_track_width = 18.5;
const zero_bar_thickness = 2;
const zero_foot_thickness = 9;

const TTrackRail = Component('ttrack_rail')
  .param('length')
  .param('connectors', { default: 0 })
  .param('slot', { default: false })
  .param('connector_shift', {default: 0} )
  .define(({length, slot, connectors, connector_shift}) => {
    const slope_plane = planeXZ().translateLocal(0, plate_thickness, 0)
    let rail = Cube()
      .w(ttrack_width)
      .d(length)
      .h(plate_thickness)
      .build()
      .add(
        Cube()
          .w(ttrack_inside_width)
          .d(length)
          .h(plate_thickness * 2)
          .build()
          .translate((ttrack_width - ttrack_inside_width) / 2, 0, 0)
      )
      .translate(-ttrack_width/2, 0, 0)
      .add(
        sketch()
          .moveTo(0,0)
          .lineTo(ttrack_inside_width / 2, ttrack_flange)
          .lineTo(
            ttrack_inside_bottom_width/2, 
            ttrack_inside_depth + ttrack_flange
          )
          .hLine(-ttrack_inside_bottom_width)
          .lineTo(-ttrack_inside_width / 2, ttrack_flange)
          .close()
          .onPlane(slope_plane)
          .extrude(-length)
      )

    
      rail = rail.cutIf(
        slot,
        Cube()
          .w(slot_width + slop)
          .h(slot_depth * 2 + slop)
          .d(length * 2)
          .centered()
          .build()
      )

      for( let i = 0; i < connectors; i++ ) {
        const gap = (length - (ttrack_conn_length * connectors)) /
          (connectors + 1)
        const dist = gap * (i + 1) + 
          ttrack_conn_length * (i + 0.5)
        
        rail = rail.cut( 
          Cube()
            .centered()
            .w(ttrack_width)
            .h(plate_thickness)
            .d(ttrack_conn_length)
            .build()
            .add(
              Cylinder()
              .r(ttrack_thread_dia / 2 + slop)
              .h(100)
              .centered()
              .build()
            )
            .translate(
              0, 
              dist + connector_shift, 
              plate_thickness * 1.5 + ttrack_flange - slop * 2
            )
        )
      }
      return rail
  })


//====== Zero Foot (Start) =======//

// Cube()
//   .w(ttrack_width)
//   .d(ttrack_bracket_length)
//   .h(zero_bar_thickness)
//   .build()




//====== Zero Foot (End) =======//


//====== Track Bracket (Start) =======//

const track_bracket = TTrackRail({length: 70, connectors: 1, connector_shift: 0, slot: true})

const festool_bracket = Cube()
  .w(festool_bracket_width)
  .d(festool_rail_width)
  .h(plate_thickness)
  .centered()
  .build()
  .cut(
    Cylinder()
    .r(festool_thread_dia / 2)
    .h(100)
    .centered()
    .build()
    .translate(hole_spacing / 2, 0, 0)
  )
  .cut(
    Cylinder()
    .r(festool_thread_dia / 2)
    .h(100)
    .centered()
    .build()
    .translate(-hole_spacing / 2, 0, 0)  
  )
  .translate(0, -festool_rail_width / 2, plate_thickness / 2)

festool_bracket
  .add(track_bracket.solid())
  .add(
    Cube()
    .centered()
    .w(ttrack_width)
    .d(6)
    .h(ttrack_height + plate_thickness)
    .build()
    .translate(0, 3,(ttrack_height + plate_thickness) / 2)
    
  )
  .subtract(
    Cylinder()
    .r(3.5 + (slop / 2))
    .h(100)
    .centered()
    .build()
    .translate(0, 50.5 + 6, 0)
  )
  //.translate(0,100,0)
  .output()


//====== Track Bracket (End) =======//

Updated about 1 hour ago