跳转到内容

OpenSCAD 用户手册/MCAD

来自维基教科书,开放世界中的开放书籍

注意:正在进行中


MCAD 库概述

[编辑 | 编辑源代码]

下载源代码:github dot com/openscad/MCAD

MCAD 库包含在设计和制作机械模型设计中常用的组件。它目前尚未完成,您可以期待一些 API 更改,但许多功能已经可以使用。

该库由各种作者创建,如各个文件中的注释中所述。所有文件均采用 LGPL 2.1 许可(见 creativecommons dot org/licenses/LGPL/2.1/ 或包含的文件 lgpl-2.1.txt),其中一些文件允许在更宽松的条款下分发(如文件注释中所述)。

您可以在脚本中使用 use <MCAD/filename.scad> 导入这些文件,其中 'filename' 是下面列出的文件之一,如 'motors' 或 'servos'。一些文件包含有用的常量,可以使用 include <MCAD/filename.scad> 使用,这在所有包含的文件上都是安全的(即没有顶层代码应该创建几何体)。(存在一个阻止包含来自“包含”其他文件的常量的文件中的常量的错误/功能 - 有关详细信息,请参见 openscad 邮件列表档案。由于维护人员响应不积极,因此可能需要以某种方式解决此问题)

如果您在 git 中托管项目,您可以在您的仓库中执行 git submodule add URL PATH 来导入该库作为 git 子模块,以方便使用。然后您需要在克隆后执行 git submodule update --init。当您想要更新子模块时,执行 cd PATH; git checkout master; git pull。有关更多信息,请参见 git help submodule。

当前提供的工具:

  • regular_shapes.scad
    • 规则多边形,即二维
    • 规则多面体,即三维
  • involute_gears.scad (在 Thingiverse 上)
    • gear()
    • bevel_gear()
    • bevel_gear_pair()
  • gears.scad (旧版本)
    • gear(number_of_teeth, circular_pitch OR diametral_pitch, pressure_angle OPTIONAL, clearance OPTIONAL)
  • motors.scad:
    • stepper_motor_mount(nema_standard, slide_distance OPTIONAL, mochup OPTIONAL)

工具(alpha 和 beta 质量):

  • nuts_and_bolts.scad:用于创建公制和英制螺栓/螺母孔
  • bearing.scad:标准/定制轴承
  • screw.scad:螺钉和螺旋钻
  • materials.scad:不同材料的颜色定义
  • stepper.scad:NEMA 标准步进器轮廓
  • servos.scad:伺服轮廓
  • boxes.scad:带圆角的盒子
  • triangles.scad:简单的三角形
  • 3d_triangle.scad:更高级的三角形

非常通用的函数和常量:

  • math.scad:通用数学函数
  • constants.scad:数学常量
  • curves.scad:定义曲线的数学函数
  • units.scad:简单的公制单位
  • utilities.scad:几何函数和各种有用的东西
  • teardrop.scad (www dot thingiverse dot com/thing:3457):参数化水滴模块
  • shapes.scad:已弃用,由 Catarina Mota 创建的简单形状
  • polyholes.scad:印刷时应该能够很好地打印出来的孔

其他:

  • alphabet_block.scad
  • bitmap.scad
  • letter_necklace.scad
  • name_tag.scad
  • height_map.scad
  • trochoids.scad
  • libtriangles.scad
  • layouts.scad
  • transformations.scad
  • 2Dshapes.scad
  • gridbeam.scad
  • fonts.scad
  • unregular_shapes.scad

Umetric_fastners.scad

  • lego_compatibility.scad
  • multiply.scad
  • hardware.scad

用于生成和处理 openscad 代码的外部实用程序:

  • openscad_testing.py:测试代码,见下文
  • openscad_utils.py:用于抓取函数名称等的代码

MCAD/regular_shapes.scad

[编辑 | 编辑源代码]

二维规则形状

[编辑 | 编辑源代码]

此库不再是创建规则多边形的最佳方法 - 您可以使用以下方法更高效地执行此操作

circle(radius, $fn=numberOfSides);

规则多边形函数将保留以确保兼容性和可读性。

regular_polygon(sides, radius), 或在旧库中,reg_polygon(sides, radius)

[编辑 | 编辑源代码]

N 边的二维形状

[编辑 | 编辑源代码]

示例

规则二维形状截图,具有不同数量的边
use <MCAD/regular_shapes.scad>

radius = 5;

translate([00,0,0]) triangle(radius);
translate([10,0,0]) pentagon(radius);
translate([20,0,0]) hexagon(radius);
translate([30,0,0]) heptagon(radius);
translate([40,0,0]) octagon(radius);
translate([50,0,0]) nonagon(radius);
translate([60,0,0]) decagon(radius);
translate([70,0,0]) hendecagon(radius);
translate([80,0,0]) dodecagon(radius);
triangle(radius)
[编辑 | 编辑源代码]
pentagon(radius)
[编辑 | 编辑源代码]
hexagon(radius, diameter, across_flats)
[编辑 | 编辑源代码]

指定以下三个参数中的一个,给出半径(从中心到顶点的距离)、直径(相对顶点之间的距离),或作为across_flats(相对边之间的距离)。

heptagon(radius)
[编辑 | 编辑源代码]
octagon(radius)
[编辑 | 编辑源代码]
nonagon(radius)
[编辑 | 编辑源代码]
decagon(radius)
[编辑 | 编辑源代码]
hendecagon(radius)
[编辑 | 编辑源代码]
dodecagon(radius)
[编辑 | 编辑源代码]

ring(inside_diameter, thickness)

[编辑 | 编辑源代码]

示例

环形形状的截图
use <MCAD/regular_shapes.scad>
ring(10, 5);

ellipse(width, height)

[编辑 | 编辑源代码]

示例

ellipse() 的截图
use <MCAD/regular_shapes.scad>
ellipse(30, 15);

egg_outline(width, length)

[编辑 | 编辑源代码]

示例

Egg_outline() 的截图
use <MCAD/regular_shapes.scad>
egg_outline(10, 15);

3D 正多边形

[编辑 | 编辑源代码]

cone(height, radius, center = false)

[编辑 | 编辑源代码]

示例

cone() 的截图
use <MCAD/regular_shapes.scad>
cone(20, 10);

oval_prism(height, rx, ry, center = false)

[编辑 | 编辑源代码]

这是一个圆柱体,具有不同的 x 和 y 尺寸,这里指定为半径。

示例

oval_prism() 的截图
use <MCAD/regular_shapes.scad>
oval_prism(20, 15, 5);

oval_tube(height, rx, ry, wall, center = false)

[编辑 | 编辑源代码]

两个缩放圆柱体的差值。请注意,如果圆柱体是椭圆形的,这不会得到均匀厚度的壁 - 你需要使用偏移来实现。

示例

oval_tube() 的截图
use <MCAD/regular_shapes.scad>
oval_tube(20, 10, 5, 1);

cylinder_tube(height, radius, wall, center = false)

[编辑 | 编辑源代码]

示例

cylinder_tube() 的截图
use <MCAD/regular_shapes.scad>
cylinder_tube(20, 10, 1);

triangle_prism(height,radius)

[编辑 | 编辑源代码]

示例

triangle_prism() 的截图
use <MCAD/regular_shapes.scad>
triangle_prism(20,10);

triangle_tube(height,radius,wall)

[编辑 | 编辑源代码]

示例

triangle_tube() 的截图
use <MCAD/regular_shapes.scad>
triangle_tube(20,10, 1);

pentagon_prism(height,radius)

[编辑 | 编辑源代码]

实心的五边形形状

pentagon_tube(height,radius,wall)

[编辑 | 编辑源代码]

空心的五边形形状

hexagon_prism(height,radius)

[编辑 | 编辑源代码]

与上面类似

hexagon_tube(height,radius,wall)

[编辑 | 编辑源代码]

与上面类似

heptagon_prism(height,radius)

[编辑 | 编辑源代码]

与上面类似

heptagon_tube(height,radius,wall)

[编辑 | 编辑源代码]

与上面类似

octagon_prism(height,radius)

[编辑 | 编辑源代码]

与上面类似

octagon_tube(height,radius,wall)

[编辑 | 编辑源代码]

与上面类似

nonagon_prism(height,radius)

[编辑 | 编辑源代码]

与上面类似

decagon_prism(height,radius)

[编辑 | 编辑源代码]

与上面类似

hendecagon_prism(height,radius)

[编辑 | 编辑源代码]

与上面类似

dodecagon_prism(height,radius)

[编辑 | 编辑源代码]

与上面类似

torus(outerRadius, innerRadius)

[编辑 | 编辑源代码]

示例

torus() 截图
use <MCAD/regular_shapes.scad>
torus(30, 15);

torus2(r1, r2)

[编辑 | 编辑源代码]

示例

torus2() 截图
use <MCAD/regular_shapes.scad>
torus2(30, 5);

oval_torus(inner_radius, thickness=[0, 0])

[编辑 | 编辑源代码]

示例

oval_torus() 截图
use <MCAD/regular_shapes.scad>
oval_torus(20, thickness=[4, 8], $fn=50);

triangle_pyramid(radius)

[编辑 | 编辑源代码]

示例

triangle_pyramid() 截图
use <MCAD/regular_shapes.scad>
triangle_pyramid(20);

square_pyramid(base_x, base_y, height)

[编辑 | 编辑源代码]

示例

square_pyramid() 截图
use <MCAD/regular_shapes.scad>
square_pyramid(10, 20, 30);

egg(width, length)

[编辑 | 编辑源代码]

注意:我在创建此文档时无法让 egg() 工作。

修复 egg():在 regular_shapes.scad 中的第 254 行第 40 列,将 'cube(' 替换为 'square('。

MCAD/involute_gears.scad

[编辑 | 编辑源代码]

关于斜齿轮的说明:两个斜齿轮啮合时,它们必须具有相同的锥距、圆周节距(在锥距处测量)和压力角。

bevel_gear_pair()

[编辑 | 编辑源代码]
bevel_gear_pair (gear1_teeth = 41, gear2_teeth = 7, axis_angle = 90, outside_circular_pitch=1000)

bevel_gear()

[编辑 | 编辑源代码]
bevel_gear (
    number_of_teeth=11, 
    cone_distance=100, 
    face_width=20, 
    outside_circular_pitch=1000, 
    pressure_angle=30,
    clearance = 0.2, 
    bore_diameter=5,
    gear_thickness = 15, 
    backlash = 0, 
    involute_facets=0, 
    finish = -1) 
    Bevel Gear Finishing Options:
    bevel_gear_flat = 0;
    bevel_gear_back_cone = 1;

更多信息

  • number_of_teeth 齿数
  • cone_distance 齿轮齿角的重要因素。参见 锥距
  • pressure_angle 构成齿轮齿廓的各项参数之一。参见 压力角
  • bore_diameter 齿轮中间孔的大小
  • outside_circular_pitch 大致来说,这是齿轮的周长。这是最重要的测量参数之一,值得更精确地查找。参见 节圆。它间接控制着齿轮半径。齿轮的总直径大约为 outside_circle_pitch / 360 * number_of_teeth。例如,1000 / 360 * 36 的结果是直径约为 100 毫米的齿轮。
  • finish 特殊参数。将其设置为 bevel_gear_flat (0) 或 bevel_gear_back_cone (1) 会改变齿轮的外观,即是否看起来像平齿斜齿轮,或者是否使用后锥(类似于之前的“锥”)。参见 后锥
  • gear_thickness 有点用词不当。这并非齿轮厚度“典型”的定义。相反,它与齿轮的齿无关,而是询问齿轮齿应该放在顶部的圆柱体的高度。
gear (
    number_of_teeth=15,
    circular_pitch=false, diametral_pitch=false,
    pressure_angle=28,
    clearance = 0.2,
    gear_thickness=5,
    rim_thickness=8,
    rim_width=5,
    hub_thickness=10,
    hub_diameter=15,
    bore_diameter=5,
    circles=0,
    backlash=0,
    twist=0,
    involute_facets=0,
    flat=false)

更多信息

  • number_of_teeth 齿数。请注意,由于周长 = 2πr∝齿数,因此齿轮间距 ∝ 总齿数 * 节距。基本上,如果您有两个齿轮,那么任何两个齿数之和相同的齿轮也适合该间距。
  • circular_pitchdiametral_pitch 与齿的大小成正比。(待办事项:比例常数)
  • 压力角
  • 间隙
  • flat 使模块成为二维对象。这样您就可以自己进行 `linear_extrude`。

该模块有很多“额外”功能。

  • rim_thickness 边缘的厚度(接触的地方)。
  • gear_thickness 内部厚度,它会切出一个圆,使内部更平坦(如果小于边缘厚度)。
  • rim_width 齿轮制作到边缘的距离。
  • hub_thickness, hub_diameter, 中间的较厚部分。
  • bore_diameter 中心孔,例如用于轴承。
  • circles 在中心周围制作指定数量的孔,以节省材料。
  • 间隙
  • twist 线性拉伸中的扭曲。用于制作螺旋齿轮。(例如斜齿/人字齿或蜗轮蜗杆齿轮)
  • involute_facets

示例

 gear(number_of_teeth=20, circular_pitch=200, flat=true);

test_gears()

[编辑 | 编辑源代码]

示例

test_gears() 输出的演示
use <MCAD/involute_gears.scad>
test_gears();

test_meshing_double_helix()

[编辑 | 编辑源代码]

示例

testing_meshing_double_helix() 输出的截图
use <MCAD/involute_gears.scad>
test_meshing_double_helix();

test_bevel_gear()

[编辑 | 编辑源代码]

示例

test_bevel_gear 的截图
use <MCAD/involute_gears.scad>
test_bevel_gear();

test_bevel_gear_pair()

[编辑 | 编辑源代码]

示例

test_bevel_gear_pair() 的截图
use <MCAD/involute_gears.scad>
test_bevel_gear_pair();

test_backlash()

[编辑 | 编辑源代码]

示例

test_backlash() 的截图
use <MCAD/involute_gears.scad>
test_backlash ();

MCAD/teardrop.scad

[编辑 | 编辑源代码]

泪滴形状可用于通过避免陡峭的悬垂来使 3D 打印机更容易打印垂直孔。

示例

泪滴形切口的截图
 use <MCAD/teardrop.scad>
 
 difference() {
     cube([5, 60, 40], center=true);
     translate([0, -15, 0]) teardrop(radius=6, length=20, angle=90);
     translate([0,   0, 0]) teardrop(radius=5, length=20, angle=60);
     translate([0,  15, 0]) teardrop(radius=4, length=20, angle=45);
 }


MCAD/stepper.scad

[编辑 | 编辑源代码]

步进电机的轴指向负 Z 方向。步进电机的圆形前面板与 Z 平面齐平。


示例

步进电机的截图
 include <MCAD/stepper.scad>
 
 for (size = [NemaShort, NemaMedium, NemaLong]) {  
   translate([50, size*100,0])  motor(Nema34, size, dualAxis=false);
   translate([150,size*100,0])  motor(Nema23, size, dualAxis=false);
   translate([250,size*100,0])  motor(Nema17, size, dualAxis=true);
   translate([350,size*100,0])  motor(Nema14, size, dualAxis=true);
   translate([450,size*100,0])  motor(Nema11, size, dualAxis=true);
   translate([550,size*100,0])  motor(Nema08, size, dualAxis=true);
 }
 % translate([0, 150, 0.01]) cube([600, 200, 0.1]); 


MCAD/nuts_and_bolts.scad

[编辑 | 编辑源代码]

示例

Screenshot of M3 capscrew, nut, bole, and clearance holes
M3 内六角螺钉、螺母、螺栓和通孔的截图
 use <MCAD/nuts_and_bolts.scad>
 include <MCAD/units.scad>

 $fn=50;

 //M3 is an alias for 3. It is defined in units.scad

 // cap screw
 boltHole(M3, length=10);
 // clearance hole for cap screw
 %translate([0, 7, 0])
   boltHole(M3, length=10, tolerance=0.3);
 // nut
 translate([7, 0, 0]) 
   nutHole(M3, tolerance=0.0);
 // nut hole
 %translate([7, 7, 0]) 
   nutHole(M3, tolerance=0.3);
 // bolt
 translate([14, 0, 0]){
    boltHole(M3, length=10);
    rotate([180,0,0])nutHole(M3, tolerance=0.0);}

MCAD/2Dshapes.scad

[编辑 | 编辑源代码]

示例

各种二维形状的截图
 use <MCAD/2Dshapes.scad>
 
 ellipse(width=50, height=80);
 
 translate([100, 0, 0]) pieSlice([50, 100], start_angle=0, end_angle=250);
 
 translate([210, 0, 0]) donutSlice(20,50,0,300);
 
 translate([320, 0, 0]) ngon(6, 50, center=false);
华夏公益教科书