OpenSCAD 用户手册/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:用于抓取函数名称等的代码
此库不再是创建规则多边形的最佳方法 - 您可以使用以下方法更高效地执行此操作
circle(radius, $fn=numberOfSides);
规则多边形函数将保留以确保兼容性和可读性。
示例
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);
指定以下三个参数中的一个,给出半径(从中心到顶点的距离)、直径(相对顶点之间的距离),或作为across_flats(相对边之间的距离)。
示例
use <MCAD/regular_shapes.scad> ring(10, 5);
示例
use <MCAD/regular_shapes.scad> ellipse(30, 15);
示例
use <MCAD/regular_shapes.scad> egg_outline(10, 15);
示例
use <MCAD/regular_shapes.scad> cone(20, 10);
这是一个圆柱体,具有不同的 x 和 y 尺寸,这里指定为半径。
示例
use <MCAD/regular_shapes.scad> oval_prism(20, 15, 5);
两个缩放圆柱体的差值。请注意,如果圆柱体是椭圆形的,这不会得到均匀厚度的壁 - 你需要使用偏移来实现。
示例
use <MCAD/regular_shapes.scad> oval_tube(20, 10, 5, 1);
示例
use <MCAD/regular_shapes.scad> cylinder_tube(20, 10, 1);
示例
use <MCAD/regular_shapes.scad> triangle_prism(20,10);
示例
use <MCAD/regular_shapes.scad> triangle_tube(20,10, 1);
实心的五边形形状
空心的五边形形状
与上面类似
与上面类似
与上面类似
与上面类似
与上面类似
与上面类似
与上面类似
与上面类似
与上面类似
与上面类似
示例
use <MCAD/regular_shapes.scad> torus(30, 15);
示例
use <MCAD/regular_shapes.scad> torus2(30, 5);
示例
use <MCAD/regular_shapes.scad> oval_torus(20, thickness=[4, 8], $fn=50);
示例
use <MCAD/regular_shapes.scad> triangle_pyramid(20);
示例
use <MCAD/regular_shapes.scad> square_pyramid(10, 20, 30);
注意:我在创建此文档时无法让 egg() 工作。
修复 egg():在 regular_shapes.scad 中的第 254 行第 40 列,将 'cube(' 替换为 'square('。
关于斜齿轮的说明:两个斜齿轮啮合时,它们必须具有相同的锥距、圆周节距(在锥距处测量)和压力角。
bevel_gear_pair (gear1_teeth = 41, gear2_teeth = 7, axis_angle = 90, outside_circular_pitch=1000)
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_pitch、diametral_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);
示例
use <MCAD/involute_gears.scad> test_gears();
示例
use <MCAD/involute_gears.scad> test_meshing_double_helix();
示例
use <MCAD/involute_gears.scad> test_bevel_gear();
示例
use <MCAD/involute_gears.scad> test_bevel_gear_pair();
示例
use <MCAD/involute_gears.scad> test_backlash ();
泪滴形状可用于通过避免陡峭的悬垂来使 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); }
步进电机的轴指向负 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]);
示例
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);}
示例
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);