跳轉到內容

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);
華夏公益教科書