コンテンツへスキップ
CADCAMFUN
ドキュメント

ドキュメント

CAD ジオメトリ

エンティティ、拘束されたスケッチ、パラメトリック履歴、メッシュ、および正確なソリッドを共有ジオメトリ コアで描画します。

英語から自動翻訳されています。 英語の原文を見る

エンティティの描画

@cadcamfun/core cAD 機能を直接およびその下の両方にエクスポートします。 cad 名前空間。スキーマファースト 2D エンティティは _tag 識別子: 線、円、円弧、ポリライン、長方形、楕円、スプライン、テキスト、寸法、ハッチング、ブロック。各エンティティには安定した識別子、レイヤー、可視性、およびロック状態があります。選択はエディター状態に属します。

エンティティのジオメトリではミリメートルとラジアンが使用されます。円弧の角度は完全な回転に正規化され、等しい開始角度と終了角度は完全な円を表します。ローカル エンティティ変換では、スケール、回転、次に平行移動が適用されます。 Affine2D せん断を含めることができる合成変換をサポートします。シーン要素アダプターとパラメトリック履歴アダプターには、次数値の配置や機能のコントロールなど、文書化された独自の角度フィールドがあります。

entitySchemaOf(tag) 1 つのエンティティ種類のスキーマを返します。ジオメトリ関数を呼び出す前に、インポートされたデータをデコードします。境界、テッセレーション、交差、オフセット、スナップは別個の操作です。テッセレーションされた曲線をレンダリングしても、その解析エンティティは置き換えられません。

拘束されたスケッチ

スケッチ モデルには、名前付きの点、点間の線、中心と半径を持つ円、および反時計回りの円弧が含まれています。共有ポイント識別子は共有エンドポイントを表します。制約には、一致、水平および垂直の配置、距離、長さ、平行線および垂直線、等しい長さと半径、接線、対称性、幾何学的入射などが含まれます。

数値ソルバーは、レーベンバーグ・マルカート反復と中心差分ヤコビアンを使用して制約残差を最小化します。自由度、自由点、冗長方程式、矛盾する制約がレポートされます。結果には、完全に制約されている場合、制約が不十分である場合、制約が過剰である場合、矛盾している場合、または失敗する場合があります。制約が不十分なソリューションは、動きを許容しながらあらゆる次元を満たすことができます。呼び出し側はその区別を保持する必要があります。

スケッチ拘束は数値を受け取ります。パラメトリック履歴は、ソルバーを呼び出す前にパラメータ式を解決します。スケッチ角度の制約はラジアンです。ユーザーが入力した寸法を変換するときは、フィーチャ独自の入力規則を使用します。

パラメトリック履歴

パラメトリック パーツには、そのパラメーターと順序付けされたフィーチャー履歴が保存されます。再構築では式とフィーチャが順番に評価されるため、フィーチャは以前に作成されたスケッチ、平面、ボディ、またはツールを参照できます。コアには、押し出し、回転、ロフトとスイープ、ブール値、穴、パターン、面編集、テキスト、ねじ、板金フィーチャー、および嵌合コントロールが含まれます。正確な表現が利用できるかどうかは、特定の特徴シーケンスによって異なります。

rebuild メッシュ ボディとフィーチャの問題が発生します。 rebuildExact 境界表現カーネルを通じて履歴を再生し、ボディに正確な表現が欠けている理由を記録します。履歴を編集可能なソースとして保存します。生成されたボディは派生出力です。失敗した機能またはサポートされていない機能は、問題レコードを通じて表示されたままにする必要があります。

リプレイ結果を読む

正確な再生ではフィーチャを表現できない場合、メッシュ出力が存在する可能性があります。正確な形状、体積、または輸出時の忠実性について主張する前に、本体と問題の記録を確認してください。

メッシュのジオメトリと配置

メッシュはインデックス付きの三角形ジオメトリを使用します。 CAD レイヤーは、プリミティブ構築、メッシュ ブール値、スイープおよびロフト ヘルパー、トポロジおよび通常のユーティリティ、およびジオメトリのクリーンアップを提供します。 CAM モデル アダプターは、サポートされているシーン要素をネストされたコンポーネントを含むメッシュに変換するため、解析とツールパスの生成で同じ配置されたジオメトリを使用できます。

要素の位置、回転、スケール、および移動は、結果のパーツに影響します。正確なシーンの配置は、バウンディング ボックスの中心を中心としたビューポートの変換を反映します。不均一なスケーリングにより、要素の正確なモデル パスが削除される可能性があります。シーン変換により理由が報告され、エクスポート中にファセット表現が使用される場合があります。

正確な境界表現

cad.brep 面、ループ、エッジ使用、エッジ、および頂点トポロジを含む解析ジオメトリと NURBS ジオメトリを公開します。そのモジュールは、プリミティブ、スイープ、ロフト、ブール値、面編集、ブレンド、縫製、テッセレーション、分類、検証、質量特性、STEP の読み取りと書き込みをカバーします。 history-brep.ts そして scene-step.ts このカーネルをパラメトリック パーツおよび配置されたシーン要素に接続します。

POST /api/cad/exact/analyze 部品ごとの妥当性の問題、体積、面積、重心、境界、トポロジ数、サーフェス数、認識された穴、および加工分類を返します。また、スキップされた要素と理由および集計合計も返します。プリズム加工の結果は、輪郭、穴、ポケット、および上部/下部レベルをレポートします。サポートされていない部品には理由があります。

POST /api/cad/exact/assembly 干渉、予想されるオーバーラップ、接触ペアと未決定のペア、部品表アイテム、ジョイント、およびファスナーの計画をレポートします。未決定の形状は報告された結果であり、クリアランスの証拠ではありません。これらの解析ルートは、図面を変更せずに結果を計算します。

輸入と輸出

このコアには、DXF および図面インポート ヘルパー、プリズム STEP 解釈パス、正確な STEP B-rep リーダーが含まれています。角柱状のパスは、適切なプレート、ブラケット、フランジの設置面積と押し出し高さを読み取ります。プリズムでは表現できない特徴を報告します。サポートされている正確な STEP トポロジが必要な場合は、正確なリーダーを選択し、いずれかのパスから診断を検査します。

sceneToStep シーンを STEP AP214 として書き込みます。サポートされている正確なソリッドは正確な形状を保持します。メッシュのみのソリッドはファセット ソリッドとして放出できます。非ソリッド要素は理由によりスキップされます。の faceted オプションはフォールバックを制御します。なしの応答 step エクスポート可能なソリッドは含まれていません。

HTTP の正確なルートは次のいずれかを受け入れます。 elements または drawingId;明示的な要素が優先されます。スナップショット配列では、1 – 2、000 要素、および最大 200 個の識別子のオプションの選択が可能です。保存された図面を使用すると、サイドカーは図面アクセス ルールに従ってシーンを読み取ります。ソースが欠落している、空の図面、不明な図面、または拒否された図面があると、対応する要求エラーまたはアクセス エラーが発生します。

技術図面

の drawing 名前空間は、3D モデルからの投影、セクション、寸法、シート構成、SVG 出力を提供します。これは、編集可能な 2D エンティティ図面および加工プログラムとは別の表現です。投影と断面のジオメトリは、モデルの変更後に再生成する必要があります。シートのエクスポートでは、モデルの構築に使用されたモデルの状態がキャプチャされます。

ジオメトリを拡張する場所

から始める packages/core/src/cad/index.ts パブリック CAD サーフェス用。エンティティの操作が並行して行われる entities.ts;制約解決が行われています sketch.ts;メッシュ履歴があります history.ts;正確なリプレイが入っています history-brep.ts;正確なトポロジと交換は以下にあります brep/. packages/core/src/drawing/ シート出力を所有しています。同じフォルダー内のサポート モジュールには次のものがあります。 expr.ts (次のようなパラメータ式 width / 2 + 3、依存関係の順序で解決され、サイクルがエラーとして報告されます)、 tolerance.ts (曲線の弦矢状セグメントの数)、 gear.ts (ISO 53 インボリュート平歯車の輪郭)、 thread.ts, sheet-metal.ts, fasteners.ts, recipes.ts (完全で完全に制約された機能履歴を出力するジェネレーター)、 dfm.ts (測定値と必要な値を含む製造設計の結果)、および dxf.ts.

ジオメトリ関数は、アプリケーション ストレージを開かずに値を操作します。サイドカー サービスはアクセスと永続性を処理し、デスクトップ アダプターは対話とレンダリングを処理します。表示メッシュ、正確なソリッド、および保存された履歴がそれぞれの明確な意味を保持できるように、境界での変換を明示的に保ちます。

ソリッドを構築、検証、エクスポートする

この完全なコア例は、ワールド原点に 1 つの角を持つ 40 × 25 × 8 mm ボックスを構築し、そのトポロジをチェックして測定し、STEP テキストをエクスポートします。必要なのはワークスペース コア パッケージのみであり、アプリケーションへの書き込みは実行されません。

正確なボックスとその STEP テキスト
import { cad } from "@cadcamfun/core"

const solid = cad.brep.makeBox(40, 25, 8)
const report = cad.brep.validateBrep(solid)
if (!report.valid) throw new Error(JSON.stringify(report.issues))

const mass = cad.brep.massProperties(solid)
console.log(mass.volume.toFixed(3)) // "8000.000" cubic millimetres
console.log(mass.centroid) // approximately { x: 20, y: 12.5, z: 4 }
const step = cad.brep.writeStepBreps([{ name: "Bracket blank", brep: solid }], {
  author: "Workshop",
  timestamp: "2026-01-01T00:00:00.000Z"
})
console.log(step.startsWith("ISO-10303-21;")) // true

明示的なタイムスタンプにより、繰り返される交換出力が再現可能になります。これがない場合、STEP 書き込みでは現在時刻が使用されます。 massProperties また、面積、面ごとの面積、単位密度での重心の周りの慣性テンソルも返します。体積は mm3、面積は mm2 です。物理質量を計算するときに密度を明示的に変換します。

ソース: packages/core/src/cad/brep/primitives.ts, mass.ts, validate.ts、 そして step.ts.

検証と変換のオプション

validateBrep 返品 valid、発行記録、 manifoldSolid、およびオプションの属/ボリューム。 manifoldSolid すべてのエッジが反対の意味で 2 回使用される閉じたシェルを意味します。デフォルトの幾何学的距離公差は、床が 10⁻⁶ mm のモデル サイズの 10⁻⁵ としてスケールされます。呼び出し側が提供できるのは、 tol、ボリューム/方向のチェックをスキップします skipVolume、または方向付けに粗いテッセレーションを使用します。 coarseVolume.

正確な分析 API machining フラグのデフォルトは true です。 STEPシーンエクスポート faceted フォールバックのデフォルトは true で、アセンブリ ファスナーの計画は washers オプションのデフォルトは true です。選択 ID は、シーンのトラバーサルによって解決されるコンポーネントの子を含むシーン要素を参照します。これらの HTTP オプションは、保存された図面ではなく、解析/エクスポートに影響します。

シーンのエクスポートはパートごとに返されます exact, faces, valid、およびオプションのメモ。それらのフィールドを横にチェックしてください skipped: 有効なファセット ソリッドは、解析サーフェスを保持せずにエクスポートできます。

ソース: packages/core/src/cad/brep/validate.ts, scene-analysis.ts, scene-step.ts, assembly-analysis.ts、 そして packages/api/src/cad-exact.ts.

失敗したリビルドまたはエクスポートを修復する

見つける次回の検査
スケッチは拘束が不十分なままです自由度および自由点 ID を読み取ります。不足している位置/方向の制約を追加します。固定端点が 1 つだけある寸法線も回転できます。
スケッチ拘束の競合名前付き競合 ID と残差を使用して、互換性のないディメンションを見つけます。互換性のある方程式を繰り返すことは冗長です。 2 つの異なる必要な長さは競合します。
履歴機能が未知の物体または飛行機を参照しています機能の順序と識別子を確認します。依存関係は再生の早い段階で存在する必要があり、抑制/削除により後の参照が無効になる可能性があります。
スケーリング後に正確なモデルが利用できない不均一なスケールと要素の報告された理由を検査します。サポートされている均一な配置を使用するか、ファセット エクスポートを受け入れてラベルを付けます。
STEP 結果に項目がスキップされているか、テキストがありません選択範囲にソリッドが含まれているかどうか、およびファセット フォールバックが有効になっているかどうかを確認します。空または 2D のみを選択すると、固体の STEP ファイルを生成できません。

プリミティブ次元は正で有限でなければなりません。直接ジオメトリ関数は、無効な寸法に対して範囲エラーをスローする可能性があります。トランスポート層とサービス層は、それらの失敗を独自の型付き結果に変換する必要があります。再構築の問題はフィーチャ ID に関連付けられているため、以前のメッシュを保持して障害を隠すのではなく、障害をその原因で修復できます。

ソース: packages/core/src/cad/sketch.test.ts, history.ts, scene-step.ts、 そして apps/sidecar/test/cad-exact.test.ts.

スケッチを段階的に解決する

スケッチはプレーン データ、つまり次の配列です。 entities (点、線、円、円弧) および配列 constraints。線、円、円弧は識別子によってポイントを参照するため、端点を共有する 2 つの線は同じポイント ID を共有します。ソルバーは点の座標と円の半径のみを移動します。エンティティを追加または削除することはありません。

p1 (固定)p2p3p4 l1 · 水平l2 · 垂直 l3 · 水平l4 · 垂直 幅 = 40 深さ = 25
例で使用されるスケッチ: 4 つの点、4 つの直線、1 つの固定点、4 つの方向拘束、および 2 つの長さ寸法。すべての自由度が削除されるため、ソルバーは次のようにレポートします。 fully-constrained と dof = 0.
完全に拘束された長方形を解く
import { cad } from "@cadcamfun/core"

const sketch = {
  entities: [
    { id: "p1", kind: "point", x: 0, y: 0 },
    { id: "p2", kind: "point", x: 38, y: 1 },   // rough positions are fine:
    { id: "p3", kind: "point", x: 39, y: 26 },  // the solver moves them
    { id: "p4", kind: "point", x: 1, y: 24 },
    { id: "l1", kind: "line", p1: "p1", p2: "p2" },
    { id: "l2", kind: "line", p1: "p2", p2: "p3" },
    { id: "l3", kind: "line", p1: "p3", p2: "p4" },
    { id: "l4", kind: "line", p1: "p4", p2: "p1" },
  ],
  constraints: [
    { type: "fixed", point: "p1", x: 0, y: 0 },
    { type: "horizontal", line: "l1" },
    { type: "horizontal", line: "l3" },
    { type: "vertical", line: "l2" },
    { type: "vertical", line: "l4" },
    { id: "width", type: "length", line: "l1", value: 40 },
    { id: "depth", type: "length", line: "l2", value: 25 },
  ],
}

const result = cad.solveSketch(sketch)
result.status     // "fully-constrained"
result.dof        // 0
result.iterations // 3
result.residual   // < 1e-9
// points now at (0,0) (40,0) (40,25) (0,25)

を使用せずに同じスケッチを実行します。 fixed 制約が適用され、結果は次のように変わります。 under-constrained と dof = 2 そして free = ["p1", "p2", "p3", "p4"]。長方形のサイズはまだ適切ですが、X と Y にスライドできます。3 番目の長さを追加します。 { id: "w2", type: "length", line: "l3", value: 50 }、ステータスは次のようになります。 conflicting. conflicts 次に、一緒に満たすことができない名前付き制約を最悪の順にリストします (たとえば、 w2 そして width)。気になる制約に名前を付けます id;名前のない制約は、次のような生成されたラベルとともにレポートされます。 vertical#4.

オプションデフォルト意味
maxIterations200解決が次のように報告される前のレーベンバーグ・マルカート反復の上限 failed.
tolerance1e-9解決されたものとして受け入れられる最大の絶対残差。
結果フィールドコンテンツ
sketch解決された座標と半径を含む入力スケッチ。
statusfully-constrained, under-constrained, over-constrained, conflicting、 または failed.
dof残りの自由度。
free引き続き移動できるポイント ID と、半径を引き続き変更できる円 ID。
conflicts満たされなかった制約 ID が最悪のものから順に表示されます。
redundant冗長な方程式の数 (ランク不足)。
iterations, residual, messageソルバー診断。

不正な入力スロー

未知の点またはエンティティを参照するスケッチは、解決できないというよりもむしろ変形しています。 solveSketch を投げます SketchError。ループ内で解決する前に、インポートされたスケッチを検証します。

制約参照

すべての制約は、 type そしてオプションの id。長さはミリメートル、角度はラジアンです。パラメトリック履歴では、 value パラメータ式文字列である場合もあります。

タイプフィールドEffect
fixedpoint、オプション x, yオプションで明示的な座標に点を固定します。
coincidenta, b2 つの点が同じ位置を占めます。
horizontal / verticalline線は X / Y に平行です。
horizontalPoints / verticalPointsa, b2 つの点が Y/X 座標を共有します。
distancea, b, value2 点間のユークリッド距離。
distanceX / distanceYa, b, value署名付きの水平/垂直オフセット。
lengthline, value線の長さ。
parallel / perpendiculara, b2 つの線の間の関係。
equalLength / equalRadiusa, b線の長さと円または円弧の半径が等しい。
radius / diametercircle, value円または円弧のサイズ。
anglea, b, value線から反時計回りの角度 a ラインに b、ラジアン単位。
pointOnLine / pointOnCirclepoint そして line / circle接続。
midpointpoint, line点は線の中央に位置します。
symmetrica, b, line2 つの点が線を中心に互いに鏡像関係にあります。
tangentLineCircleline, circle線が円または円弧に接触します。
tangentCirclesa, b、オプション internalCircles touch externally (distance = r1 + r2) or internally (distance = |r1 − r2|).
concentrica, b円または円弧の共有中心。

円弧はから反時計回りに start まで end について center。円の半径はソルバー変数であるため、 radius, diameter, equalRadius、または接線拘束が表示されます。 free.

パラメトリック パーツを構築する

A History パラメータ テーブルと順序付き特徴リストを組み合わせたものです。パラメータは、他のパラメータの数値または式です。これらは依存関係の順序で解決され、サイクルはループに名前を付けるエラーです。フィーチャーは、任意のディメンション フィールド内のパラメータを名前で参照します。

パラメトリックプレート: 40 × 25 × 8 mm、Ø5 貫通穴付き ドラッグして周回します · スクロールしてズーム · 右ドラッグしてパンします
Result of the history example below: the sketch is solved, extruded by thick = 8 mm, and the hole (diameter = width / 8 = 5 mm) is subtracted. Exact replay of this history has a volume of 7,842.92 mm³ (8,000 − π·2.5²·8).
パラメトリック穴付きプレート
import { cad } from "@cadcamfun/core"

const history = {
  parameters: { width: 40, depth: 25, thick: 8, hole: "width / 8" },
  features: [
    // the rectangle sketch from the previous section, with dimension
    // values replaced by parameter names: value: "width", value: "depth"
    { id: "s1", type: "sketch", plane: "XY", sketch: rectangleSketch },
    { id: "e1", type: "extrude", sketch: "s1", depth: "thick", operation: "new" },
    { id: "h1", type: "hole", plane: "XY", offset: "thick",
      at: [20, 12.5], diameter: "hole", depth: "thick" },
  ],
}

const mesh = cad.rebuild(history)
mesh.parameters // { width: 40, depth: 25, thick: 8, hole: 5 }
mesh.bodies     // one mesh body, id "e1"
mesh.issues     // []

const exact = cad.rebuildExact(history, mesh)
exact.bodies[0].brep        // present: the history has an exact representation
exact.warnings              // []
cad.brep.massProperties(exact.bodies[0].brep).volume // 7842.92… mm³
cad.brep.validateBrep(exact.bodies[0].brep).valid    // true
rebuild 返品 bodies (三角形メッシュを作成したフィーチャによってキー設定された三角形メッシュ)、解決された parameters、各スケッチの平面、フレーム、および解析結果、シート メタル フィーチャのフラット パターン、および issues。構築できない機能が報告されています issues 機能 ID と重大度が含まれているため、スキップされます。これに依存しない機能は引き続きビルドされます。 rebuildExact(history, given?, options?) すでに持っているメッシュの再構築を再利用でき、 budgetMs 時間の予算。

ベースプレーンは右利きです。 XY u = X、v = Y、通常の +Z を持ちます。 YZ u = Y、v = Z、通常の +X を持ちます。 ZX u = Z、v = X、通常の +Y があります。スケッチ、穴、またはテキストを以前の ID に配置することもできます。 plane 機能付き、 offset 普通に沿って。

特徴主要なフィールドとデフォルト
sketchplane、オプション offset, sketch (エンティティ、制約、オプションのパラメトリック shapes: 長方形、円、多角形、楕円、スロット、ポリライン)。
extrudesketch, depth, direction up/down/symmetric, operation new/union/subtract/intersect、オプション targets (デフォルト: これまでのすべてのボディ)、 edge 端面の面取り/フィレット (ends デフォルト both), corner 治療、そして taper 度単位のドラフト。ループ内のループは穴 (偶数-奇数) です。
revolvesketch, axis (x, y、またはスケッチ線)、 angle 度単位 (デフォルト 360)、 operation.
holeplane, offset, at [u, v], diameter, depth; kind simple (デフォルト)、 counterbore、 または countersink と headDiameter, headDepth、 そして angle (デフォルトは 90°)。オプションの化粧品 thread メモ(例えば M4), tolerance、ISO 286 fit のような H7。装飾ねじによってジオメトリは変更されません。
pattern, mirror以前の機能のツールのコピー。同じ方法で適用されます。
sweep, loft, coilパスに沿った、セクション間、またはらせんに沿ったプロファイル。
shell, fillet, draft, pushpull面とエッジの編集。
move, scale, split, combine身体の操作。
rib, sheet, thread, textリブ、フラット パターンを備えた板金ボディ、モデル化されたねじ山、およびストローク フォントのテキスト。
plane, primitive, mate構築平面、プリミティブ ソリッド、およびアセンブリの嵌合。

本文ではなく履歴を編集する

パラメータを変更して再構築します。パラメータを使用するすべてのスケッチが再解決され、再実行された後のすべてのソリッドとブール値が再構築されます。生成されたメッシュを直接編集すると、次回の再構築時に失われます。

正確なプリミティブと配置

B-rep カーネルは、解析ソリッドを直接構築します。各コンストラクターはオプションの配置をとります Frame;何もない場合、ソリッドはワールド フレーム内に配置されます。

コンストラクタ引数ワールドの配置
makeBox(dx, dy, dz, placement?)エッジの長さ (mm)原点の最小コーナー。
makeCylinder(radius, height, placement?)半径と高さ等しい半径を持つ円錐。 Z に沿った軸。
makeCone(r1, r2, height, placement?)ベースとトップの半径Z に沿った軸。
makeSphere(radius, placement?)半径原点を中心に。
makeTorus(major, minor, placement?)リングとチューブの半径Z に沿った軸。
正確なプリミティブ ドラッグして周回します · スクロールしてズーム · 右ドラッグしてパンします
makeBox(40, 25, 8) with its corner at the origin, next to a cylinder of radius 6 and height 20 placed beside it. The axes show +X (red), +Y (green), and +Z (blue).

次元は正で有限である必要があります。それ以外の場合、コンストラクターは範囲エラーをスローします。走る validateBrep ボリュームやエクスポートの結果を信頼する前に、ブール値、スイープ、インポートから構築したものすべてに適用されます。コンストラクターから直接取得されたプリミティブは、構築によって有効になります。

確実に再構築するモデリング手法

  • 寸法を追加する前に、1 点を固定して方向を拘束します。拘束が不十分なスケッチは、すべての寸法を満たしていても、次の再構築時に移動する可能性があります。
  • ユーザー向けのすべてのディメンションに id したがって、紛争報告書では、人が認識しているものに名前が付けられます。
  • パラメーターと式を優先します ("width / 2 + 3", "max(a, b) * 2") リテラルの繰り返し。 1 回の編集でパート全体が動かされます。
  • 以前のフィーチャは、リストに存在した後でのみ ID で参照します。履歴を並べ替えると、有効な参照が問題になる可能性があります。
  • 使用 targets パーツに複数のボディがある場合のブール値。デフォルトでは、これまでに構築されたすべてのボディに操作が適用されます。
  • チェック issues 毎回の後に rebuild そしてボディごと brep 後の存在 rebuildExact 正確な質量特性や STEP エクスポートに依存する前に。
  • スケッチ内の単位はミリメートルとラジアンにしてください。度値フィールドは、そのように文書化されます (回転角度、テーパー、皿穴角度)。

デザインレシピ

cad.buildRecipe(name, input) は、いくつかのエンジニアリング入力を完全なパラメトリック履歴に変換し、さらに 1 行の概要、導出された数値、およびそれらを生成した設計ルールを追加します。 7 つのレシピが存在します。デフォルトのないパラメータを省略すると、他のパラメータから派生します。
名前タイトルパラメータ (デフォルト)
mounting_plate取付板width=100, depth=60, thickness=10, fastener=M8, fit=medium, counterbore=false, cornerRadius=0, edgeChamfer=0, edgeDistance
flangeボルト締めフランジouterDiameter=120, boreDiameter=40, thickness=14, boltCount=6, fastener=M10, fit=medium, boltCircleDiameter, hubDiameter=0, hubHeight=0, edgeChamfer=0
l_bracketL型ブラケットbaseLength=60, legHeight=50, thickness=5, width=40, fastener=M6, fit=medium, holesPerLeg=1, cornerRadius=0
stepped_shaft段付きシャフトセクション、面取り=1、keywaySection=-1、keyLength
pipe_bendパイプエルボouterDiameter=30, wall=3, legA=100, legB=100, bendAngle=90, bendRadius
duct_transitionダクト移行部shape=rect, width1=80, height1=50, width2=40, height2=40, length=120, wall=2
enclosure囲いlength=120, width=80, height=40, wall=3, floor, cornerRadius=6, fastener=M3, bosses=true
M8 ネジ用取り付けプレート
import { cad } from "@cadcamfun/core"

const recipe = cad.buildRecipe("mounting_plate", { width: 100, depth: 60, thickness: 10, fastener: "M8" })
recipe.summary  // "100 x 60 x 10 mm plate with four holes for M8 screws (Ø9 mm, medium fit)"
recipe.derived  // { holeDiameter: 9, edgeDistance: 18, holeSpacingX: 64, holeSpacingY: 24 }
recipe.rules    // ["hole diameter from ISO 273",
                //  "centre to edge >= 1.5 x hole diameter",
                //  "centre to centre >= 2.5 x hole diameter"]

recipe.history.parameters  // { width: 100, depth: 60, thick: 10, hole: 9, inset: 18 }
// features: sketch "outline", extrude "plate", holes hole_sw, hole_se, hole_ne, hole_nw
//           placed at ["inset","inset"], ["width - inset","inset"], …

const mesh = cad.rebuild(recipe.history)          // issues: []
const exact = cad.rebuildExact(recipe.history, mesh)
cad.brep.massProperties(exact.bodies[0].brep).volume  // 57455.31 mm³ = 60000 − 4·π·4.5²·10
取り付けプレートのレシピ、M8 ドラッグして周回します · スクロールしてズーム · 右ドラッグしてパンします
再構築レシピ: 100 × 60 × 10 mm、各端から 4 つの Ø9 穴 18 mm。穴の位置は幅とインセットの表現であるため、履歴内で幅を変更すると、それに伴って右側の穴も移動します。

履歴は普通のものです。エディタで開き、パラメータを変更して再構築できます。レシピでは妥当な数字のみを選択しました。

インボリュート歯車

モジュール 2、18 歯の平歯車
const spec = { moduleValue: 2, teeth: 18 }          // pressureAngle defaults to 20°
cad.gearDimensions(spec)
// { pitchRadius: 18, baseRadius: 16.914, tipRadius: 20, rootRadius: 15.5 }

const outline = cad.gearOutline(spec, 6)   // 324 points, 6 per flank
cad.gearOutline({ moduleValue: 2, teeth: 5 })
// throws: 'A gear needs a module > 0 and at least 6 whole teeth'
平歯車 m = 2、z = 18 ドラッグして周回します · スクロールしてズーム · 右ドラッグしてパンします
gearOutline extruded 8 mm with an Ø8 bore. Pitch radius = m·z/2 = 18 mm, tip radius = pitch + m = 20 mm, root radius = pitch − 1.25·m = 15.5 mm, base radius = pitch·cos 20° ≈ 16.91 mm.
寸法式m = 2, z = 18
ピッチ半径m·z / 218
先端半径ピッチ+m20
ルート半径ピッチ − 1.25·m15.5
ベース半径ピッチ・cosα16.914
MIN_GEAR_TEETH は 6 です。それより下では、側面が基礎円をアンダーカットし、隣接する歯が重なり合います。

ファスナーとフィットデータ

サイズピッチタップドリルすきま 細/中/粗ヘッド径×高さザグリ径×深さ皿穴径
M30.52.53.2 / 3.4 / 3.65.5 × 36.5 × 3.46
M50.84.25.3 / 5.5 / 5.88.5 × 510 × 5.710
M6—56.4 / 6.6 / 7———
M81.256.88.4 / 9 / 1013 × 815 × 916
M121.7510.213 / 13.5 / 14.518 × 1220 × 1324

価値観の由来は cad.metricThread(size), clearanceHole(size, fit) そして tapDrill(size); m6 行は 2 つのヘルパーのみを介してクエリされました。 M6 ネジとその Ø6.6 クリアランス ホールの実際の結果を含む関連ルール:

ヘルパー結果
threadEngagement("M6", material)スチール 6、アルミニウム 9、鋳造 12、プラスチック 12 mm
tappedHoleDepth("M6", 12)15.8 mm
minEdgeDistance(6.6) / (6.6, "plastic")9.9 / 13.2 mm
minHoleSpacing(6.6)16.5 mm(2.5 × 直径)
keywayFor(25)22以上、最大30: b 8、h 7、t1 4、t2 3。3
toleranceGrade(7, 25) / (6, 25)21 / 13 µm
フィット親切使用事例
H7/h6位置(スライド式)手作業で組み立てられ、正確に配置された部品、スライドスピゴット、ガイドブッシュ
H7/g6近いランニング可動部品、スピンドル、スライドバルブの正確なガイド
H7/f7走っている一般機械製造におけるすべり軸受、シャフト
H7/k6遷移軽いプレスでギア、プーリー、ベアリング内輪を駆動
H7/n6干渉(軽く押す)ブッシングとハブが圧入されています。小さなトルクではキーは必要ありません
H7/p6干渉(プレス)ハウジングへのブッシュの永久圧入