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);