Saltar al contenido
CADCAMFUN
Documentos

Documentación

geometría CAD

Dibujar entidades, bocetos restringidos, historiales paramétricos, mallas y sólidos exactos en un núcleo de geometría compartido.

Traducido automáticamente del inglés. Ver el original en inglés

Entidades de dibujo

@cadcamfun/core exporta funciones CAD tanto directamente como bajo el cad espacio de nombres. Las entidades 2D de esquema primero utilizan un _tag discriminador: Línea, Círculo, Arco, Polilínea, Rectángulo, Elipse, Spline, Texto, Cota, Rayado y Bloque. Cada entidad tiene un identificador estable, una capa, una visibilidad y un estado de bloqueo; la selección pertenece al estado del editor.

La geometría de la entidad utiliza milímetros y radianes. Los ángulos de arco están normalizados a un giro completo y los ángulos iniciales y finales iguales representan un círculo completo. Una transformación de entidad local aplica escala, rotación y luego traslación; Affine2D admite transformaciones compuestas que pueden incluir corte. Los adaptadores de elementos de escena y de historial paramétrico tienen sus propios campos angulares documentados, incluida la ubicación con valores de grados y controles de funciones.

entitySchemaOf(tag) devuelve el esquema para un tipo de entidad. Decodifica los datos importados antes de llamar a funciones geométricas. Los límites, el teselado, las intersecciones, los desplazamientos y el ajuste son operaciones independientes; representar una curva teselada no reemplaza su entidad analítica.

Bocetos restringidos

El modelo de boceto contiene puntos con nombre, líneas entre puntos, círculos con centro y radio y arcos en sentido antihorario. Los identificadores de puntos compartidos expresan puntos finales compartidos. Las restricciones incluyen coincidencia, alineación horizontal y vertical, distancias, longitudes, líneas paralelas y perpendiculares, longitudes y radios iguales, tangencia, simetría e incidencia geométrica.

El solucionador numérico minimiza los residuos de restricciones con una iteración de Levenberg-Marquardt y un jacobiano de diferencia central. Informa grados de libertad, puntos libres, ecuaciones redundantes y restricciones en conflicto. Un resultado puede estar totalmente restringido, insuficientemente restringido, demasiado restringido, conflictivo o fallido. Una solución con restricciones insuficientes puede satisfacer todas las dimensiones y al mismo tiempo permitir el movimiento; quienes llaman deben preservar esa distinción.

Las restricciones del croquis reciben números. Los historiales paramétricos resuelven expresiones de parámetros antes de invocar el solucionador. Las restricciones de los ángulos del croquis son radianes; use la convención de entrada propia de la característica al convertir una dimensión ingresada por el usuario.

Historias paramétricas

Una pieza paramétrica almacena sus parámetros y el historial de funciones ordenadas. La reconstrucción evalúa expresiones y funciones en secuencia para que una función pueda hacer referencia a bocetos, planos, cuerpos o herramientas creados anteriormente. El núcleo incluye extrusiones, revoluciones, lofts y barridos, valores booleanos, agujeros, patrones, ediciones de caras, texto, hilos, características de chapa y controles de acoplamiento. La disponibilidad de una representación exacta depende de la secuencia de características particular.

rebuild produce cuerpos de malla y problemas de funciones. rebuildExact reproduce la historia a través del núcleo de representación de límites y registra por qué un cuerpo carece de una representación exacta. Mantenga el historial como fuente editable; Los cuerpos generados son resultados derivados. Una característica fallida o no compatible debe permanecer visible a través de su registro de problemas.

Leer el resultado de la repetición

La salida de malla puede existir cuando la reproducción exacta no puede representar una característica. Verifique el cuerpo y los registros de emisión antes de hacer afirmaciones sobre la geometría exacta, el volumen o la fidelidad de la exportación.

Geometría y colocación de la malla.

Las mallas utilizan geometría de triángulo indexado. La capa CAD proporciona construcción primitiva, valores booleanos de malla, ayudas de barrido y loft, topología y utilidades normales, y limpieza de geometría. El adaptador de modelo CAM convierte los elementos de escena admitidos en mallas, incluidos componentes anidados, de modo que el análisis y la generación de trayectorias puedan utilizar la misma geometría colocada.

La posición, rotación, escala y traslación del elemento afectan la pieza resultante. La ubicación exacta de la escena refleja la transformación de la ventana gráfica alrededor del centro del cuadro delimitador. El escalado no uniforme puede eliminar la ruta del modelo exacto de un elemento; La conversión de escena informa un motivo y puede utilizar una representación facetada durante la exportación.

Representación exacta de los límites

cad.brep expone geometría analítica y NURBS con topología de cara, bucle, uso de borde, borde y vértice. Sus módulos cubren primitivas, barridos, lofts, booleanos, ediciones de caras, mezclas, costura, teselación, clasificación, validación, propiedades de masa y lectura y escritura STEP. history-brep.ts y scene-step.ts conecte este núcleo a partes paramétricas y elementos de escena colocados.

POST /api/cad/exact/analyze devuelve problemas de validez por pieza, volumen, área, centroide, límites, recuentos de topología, recuentos de superficies, agujeros reconocidos y clasificación de mecanizado. También devuelve elementos omitidos con motivos y totales agregados. Un resultado de mecanizado prismático informa contornos, agujeros, cavidades y niveles superior/inferior; Las piezas no compatibles tienen una razón.

POST /api/cad/exact/assembly informa interferencias, superposiciones esperadas, pares indeterminados y en contacto, elementos de la lista de materiales, uniones y planos de sujetadores. La geometría indeterminada es un resultado informado, no una prueba de autorización. Estas rutas de análisis calculan los resultados sin alterar el dibujo.

Importar y exportar

El núcleo tiene DXF y ayudantes de importación de dibujos, una ruta de interpretación STEP prismática y un lector de repetición STEP B exacto. El recorrido prismático lee una huella y una altura de extrusión para placas, soportes y bridas adecuadas; informa características que un prisma no puede describir. Elija el lector exacto cuando se necesite una topología STEP compatible exacta e inspeccione los diagnósticos desde cualquiera de las rutas.

sceneToStep escribe una escena como PASO AP214. Los sólidos soportados exactamente conservan la geometría exacta; Los sólidos de solo malla se pueden emitir como sólidos facetados. Los elementos no sólidos se omiten por motivos. El faceted la opción controla ese retroceso. una respuesta sin step no contiene sólidos exportables.

Las rutas exactas HTTP aceptan elements o drawingId; los elementos explícitos tienen prioridad. Las matrices de instantáneas permiten 1–2,000 elementos y una selección opcional de hasta 200 identificadores. Con un dibujo almacenado, el sidecar lee la escena según las reglas de acceso al dibujo. Una fuente faltante, un dibujo vacío, un dibujo desconocido o un dibujo denegado producen la solicitud correspondiente o el error de acceso.

Dibujos técnicos

El drawing el espacio de nombres proporciona proyecciones, secciones, dimensiones, composición de hojas y resultados SVG de 3modelos D. Esta es una representación separada del dibujo de entidad 2D editable y de un programa de mecanizado. La geometría de la proyección y la sección se debe regenerar después de los cambios del modelo; una exportación de hoja captura el estado del modelo utilizado para construirlo.

Dónde extender la geometría

Empezar con packages/core/src/cad/index.ts para la superficie pública CAD. Las operaciones de la entidad viven al lado entities.ts; la resolución de restricciones está en sketch.ts; la historia de la malla está en history.ts; la repetición exacta está en history-brep.ts; la topología y el intercambio exactos están bajo brep/. packages/core/src/drawing/ posee la salida de hojas. Los módulos de soporte en la misma carpeta incluyen expr.ts (expresiones de parámetros como width / 2 + 3, resuelto en orden de dependencia con ciclos reportados como errores), tolerance.ts (el segmento cuerda-sagita cuenta para las curvas), gear.ts (ISO 53 contornos de engranaje recto involuto), thread.ts, sheet-metal.ts, fasteners.ts, recipes.ts (generadores que emiten historiales de características completos y totalmente restringidos), dfm.ts (hallazgos de diseño para fabricación con valores medidos y requeridos), y dxf.ts.

Las funciones de geometría operan con valores sin abrir el almacenamiento de la aplicación. Los servicios Sidecar manejan el acceso y la persistencia, y los adaptadores de escritorio manejan la interacción y la representación. Mantenga las conversiones explícitas en los límites para que una malla de visualización, un sólido exacto y un historial guardado conserven su significado distintivo.

Construya, valide y exporte un sólido

Este ejemplo básico completo construye un cuadro de 40 × 25 × 8 mm con una esquina en el origen mundial, verifica su topología, la mide y exporta texto STEP. Solo requiere el paquete principal del espacio de trabajo y no realiza escrituras en la aplicación.

Un cuadro exacto y su texto PASO
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

La marca de tiempo explícita hace que los resultados repetidos del intercambio sean reproducibles. Sin él, la escritura STEP utiliza la hora actual. massProperties también devuelve área, áreas por cara y un tensor de inercia alrededor del centroide en densidad unitaria; el volumen es mm³ y el área es mm². Convierta la densidad explícitamente al calcular una masa física.

Fuente: packages/core/src/cad/brep/primitives.ts, mass.ts, validate.ts, y step.ts.

Opciones de validación y conversión.

validateBrep regresa valid, registros de emisión, manifoldSolidy género/volumen opcional. manifoldSolid significa conchas cerradas con cada borde usado dos veces en sentidos opuestos. La tolerancia de distancia geométrica predeterminada se escala como 10⁻⁵ del tamaño del modelo con un piso de 10⁻⁶ mm. Una persona que llama puede proporcionar tol, omita la comprobación de volumen/orientación con skipVolume, o utilice un mosaico grueso para orientarse coarseVolume.

Las API de análisis exacto machining el valor predeterminado del indicador es verdadero. Exportación de escenas STEP faceted el valor predeterminado es verdadero y la planificación de sujetadores de ensamblaje washers la opción predeterminada es verdadera. Los ID de selección se refieren a elementos de la escena, incluidos los componentes secundarios resueltos mediante el recorrido de la escena. Estas opciones HTTP afectan el análisis/exportación, no el dibujo almacenado.

Devoluciones de exportación de escenas por parte exact, faces, validy una nota opcional. Verifique esos campos al lado skipped: un sólido facetado válido se puede exportar sin conservar superficies analíticas.

Fuente: packages/core/src/cad/brep/validate.ts, scene-analysis.ts, scene-step.ts, assembly-analysis.ts, y packages/api/src/cad-exact.ts.

Reparar una reconstrucción o exportación fallida

DescubrimientoPróxima inspección
El boceto sigue estando poco restringidoLea grados de libertad e identificaciones de puntos libres. Agregue las restricciones de posición/orientación que faltan; una línea acotada con un solo punto final fijo aún puede girar.
Conflicto de restricciones de croquisUtilice ID de conflicto con nombre y el residual para localizar dimensiones incompatibles. Repetir una ecuación compatible es redundancia; dos longitudes requeridas diferentes son un conflicto.
La característica histórica hace referencia a un cuerpo o avión desconocido.Verifique el orden de las funciones y los identificadores. Las dependencias deben existir antes en la reproducción, y la supresión/eliminación puede invalidar las referencias posteriores.
Modelo exacto no disponible después de escalarInspeccionar la escala no uniforme y el motivo informado del elemento. Utilice la ubicación uniforme admitida o acepte y etiquete una exportación facetada.
El resultado de STEP ha omitido elementos o no hay textoCompruebe si la selección contiene sólidos y si el respaldo facetado está habilitado. Las selecciones vacías o 2solo D no pueden producir un archivo STEP sólido.

Las dimensiones primitivas deben ser positivas y finitas. Las funciones de geometría directa pueden generar errores de rango para dimensiones no válidas; Las capas de transporte y servicio deben convertir esas fallas en sus propios resultados escritos. Los problemas de reconstrucción están vinculados a las ID de características, de modo que una falla pueda repararse en su origen en lugar de ocultarse conservando una malla anterior.

Fuente: packages/core/src/cad/sketch.test.ts, history.ts, scene-step.ts, y apps/sidecar/test/cad-exact.test.ts.

Resolver un boceto paso a paso.

Un boceto son datos simples: una serie de entities (puntos, líneas, círculos, arcos) y una serie de constraints. Las líneas, círculos y arcos se refieren a puntos por identificador, por lo que dos líneas que comparten un punto final comparten el mismo ID de punto. El solucionador mueve sólo coordenadas de puntos y radios de círculos; nunca agrega ni elimina entidades.

p1 (fijo)p2p3p4 l1 · horizontall2 · vertical l3 · horizontall4 · vertical ancho = 40 profundidad = 25
El boceto utilizado en los ejemplos: cuatro puntos, cuatro líneas, un punto fijo, cuatro restricciones de orientación y dos dimensiones de longitud. Se eliminan todos los grados de libertad, por lo que el solucionador informa fully-constrained con dof = 0.
Resolver un rectángulo totalmente restringido
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)

Ejecute el mismo boceto sin el fixed restricción y el resultado cambia a under-constrained con dof = 2 y free = ["p1", "p2", "p3", "p4"]. El rectángulo todavía tiene el tamaño correcto, pero puede deslizarse en X e Y. Agregue una tercera longitud, { id: "w2", type: "length", line: "l3", value: 50 }, y el estado se vuelve conflicting. conflicts luego enumera las restricciones nombradas que no se pueden satisfacer juntas, la peor primero (por ejemplo w2 y width). Nombra las restricciones que te interesan id; las restricciones sin nombre se informan con una etiqueta generada como vertical#4.

OpciónPor defectoSignificado
maxIterations200El límite superior de las iteraciones de Levenberg-Marquardt antes de que la resolución se informe como failed.
tolerance1e-9El residuo absoluto más grande aceptado como resuelto.
Campo de resultadoContenido
sketchEl boceto de entrada con coordenadas y radios resueltos.
statusfully-constrained, under-constrained, over-constrained, conflicting, o failed.
dofGrados de libertad restantes.
freeID de puntos que aún pueden moverse e ID de círculos cuyo radio aún puede cambiar.
conflictsID de restricciones que no se pudieron cumplir, las peores primero.
redundantNúmero de ecuaciones redundantes (deficiencia de rango).
iterations, residual, messageDiagnóstico del solucionador.

Lanzamientos de entrada mal formados

Un boceto que se refiere a un punto o entidad desconocido está mal formado en lugar de ser irresoluble, y solveSketch lanza un SketchError. Valide los bocetos importados antes de resolverlos en bucle.

Referencia de restricción

Toda restricción es un objeto con una type y un opcional id. Las longitudes son milímetros y los ángulos son radianes. En una historia paramétrica, cualquier value también puede ser una cadena de expresión de parámetro.

TipoCamposEffect
fixedpoint, opcional x, yFija un punto, opcionalmente a coordenadas explícitas.
coincidenta, bDos puntos ocupan la misma posición.
horizontal / verticallineUna recta es paralela a X/Y.
horizontalPoints / verticalPointsa, bDos puntos comparten una coordenada Y/X.
distancea, b, valueDistancia euclidiana entre dos puntos.
distanceX / distanceYa, b, valueDesplazamiento horizontal/vertical firmado.
lengthline, valueLongitud de una línea.
parallel / perpendiculara, bRelación entre dos líneas.
equalLength / equalRadiusa, bLongitudes de línea iguales/radios de círculo o arco.
radius / diametercircle, valueTamaño de un círculo o arco.
anglea, b, valueÁngulo en sentido antihorario desde la línea a alinear b, en radianes.
pointOnLine / pointOnCirclepoint y line / circleIncidencia.
midpointpoint, lineUn punto se encuentra en el medio de una línea.
symmetrica, b, lineDos puntos se reflejan entre sí respecto de una recta.
tangentLineCircleline, circleUna línea toca un círculo o arco.
tangentCirclesa, b, opcional internalCircles touch externally (distance = r1 + r2) or internally (distance = |r1 − r2|).
concentrica, bCentro compartido de círculos o arcos.

Los arcos son en sentido antihorario desde start a end acerca de center. El radio de un círculo es una variable de solución, por lo que un círculo sin radius, diameter, equalRadius, o aparece una restricción de tangencia en free.

Construir una pieza paramétrica

A History es una tabla de parámetros más una lista ordenada de características. Los parámetros son números o expresiones de otros parámetros. Se resuelven en orden de dependencia y un ciclo es un error que nombra el bucle. Las funciones se refieren a los parámetros por nombre en cualquier campo de dimensión.

Placa paramétrica: 40 × 25 × 8 mm con orificio pasante Ø5 Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
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).
Placa con agujero paramétrico
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 regresa bodies (mallas triangulares codificadas por la característica que las creó), las resueltas parameters, el plano, el marco y el resultado de resolución de cada boceto, los patrones planos de las operaciones de chapa metálica y issues. Una característica que no se puede crear se informa en issues con su ID de característica y gravedad, y se omite. Las características que no dependen de él aún se construyen. rebuildExact(history, given?, options?) puede reutilizar una reconstrucción de malla que ya tiene y acepta una budgetMs presupuesto de tiempo.

Los planos base son diestros: XY tiene u = X, v = Y, normal +Z; YZ tiene u = Y, v = Z, normal +X; ZX tiene u = Z, v = X, normal +Y. También se puede colocar un boceto, un agujero o un texto en el ID de un documento anterior. plane característica, con una offset a lo largo de lo normal.

CaracterísticaCampos clave y valores predeterminados
sketchplane, opcional offset, sketch (entidades, restricciones, opciones paramétricas shapes: rectángulo, círculo, polígono, elipse, ranura, polilínea).
extrudesketch, depth, direction up/down/symmetric, operation new/union/subtract/intersect, opcional targets (predeterminado: todos hasta ahora), edge chaflán/redondeo de caras extremas (ends por defecto both), corner tratamiento, y taper calado en grados. Los bucles dentro de los bucles son agujeros (par-impar).
revolvesketch, axis (x, y, o una línea de boceto), angle en grados (predeterminado 360), operation.
holeplane, offset, at [u, v], diameter, depth; kind simple (por defecto), counterbore, o countersink con headDiameter, headDepth, y angle (predeterminado 90°). Cosmético opcional thread nota (por ejemplo M4), tolerancey ISO 286 fit como H7. Un hilo cosmético no cambia la geometría.
pattern, mirrorCopias de la herramienta de una función anterior, aplicadas de la misma manera.
sweep, loft, coilPerfiles a lo largo de un camino, entre secciones o a lo largo de una hélice.
shell, fillet, draft, pushpullEdiciones de caras y aristas.
move, scale, split, combineOperaciones corporales.
rib, sheet, thread, textCostillas, cuerpos de chapa con patrones planos, hilos modelados y texto con trazos.
plane, primitive, matePlanos de construcción, sólidos primitivos y acoplamiento de ensamblajes.

Edita la historia, no el cuerpo.

Cambiar un parámetro y reconstruir: cada boceto que lo utiliza se vuelve a resolver y cada sólido y booleano posterior se rehace. La edición directa de una malla generada se pierde en la siguiente reconstrucción.

Primitivas exactas y ubicación.

El núcleo B-rep genera sólidos analíticos directamente. Cada constructor toma una ubicación opcional. Frame; sin uno, el sólido se coloca en el marco del mundo.

ConstructorArgumentosColocación mundial
makeBox(dx, dy, dz, placement?)Longitudes de borde en mmEsquina mínima en el origen.
makeCylinder(radius, height, placement?)Radio y alturaUn cono con radios iguales; eje a lo largo de Z.
makeCone(r1, r2, height, placement?)Radios base y superiorEje a lo largo de Z.
makeSphere(radius, placement?)RadioCentrado en el origen.
makeTorus(major, minor, placement?)Radios de anillos y tubosEje a lo largo de Z.
Primitivas exactas Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
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).

Las dimensiones deben ser positivas y finitas; de lo contrario, los constructores arrojan un error de rango. Correr validateBrep en cualquier cosa que cree a partir de booleanos, barridos o importaciones antes de confiar en el volumen o los resultados de exportación. Una primitiva directamente de un constructor es válida por construcción.

Prácticas de modelado que reconstruyen de manera confiable

  • Corrija un punto y restrinja la orientación antes de agregar dimensiones. Un boceto con restricciones insuficientes puede satisfacer todas las dimensiones y seguir moviéndose en la siguiente reconstrucción.
  • Ofrezca a cada dimensión orientada al usuario una id por eso un informe de conflicto nombra algo que una persona reconoce.
  • Prefiere parámetros y expresiones ("width / 2 + 3", "max(a, b) * 2") sobre literales repetidos; una edición luego impulsa toda la parte.
  • Haga referencia a funciones anteriores por ID solo después de que existan en la lista. Reordenar un historial puede convertir una referencia válida en un problema.
  • Usar targets en booleanos cuando una pieza tiene varios cuerpos. El valor predeterminado aplica la operación a todos los cuerpos construidos hasta el momento.
  • Controlar issues después de cada rebuild y el por cuerpo brep presencia después rebuildExact antes de confiar en las propiedades de masa exactas o en la exportación STEP.
  • Mantenga las unidades en milímetros y radianes dentro de los bocetos. Los campos con valores en grados se documentan como tales (ángulo de revolución, conicidad, ángulo de avellanado).

Recetas de diseño

cad.buildRecipe(name, input) convierte algunas entradas de ingeniería en una historia paramétrica completa, además de un resumen de una línea, los números derivados y las reglas de diseño que los produjeron. Existen siete recetas; Los parámetros sin un valor predeterminado se derivan de los demás cuando se omiten.
NombreTítuloParámetros (predeterminados)
mounting_platePlaca de montajewidth=100, depth=60, thickness=10, fastener=M8, fit=medium, counterbore=false, cornerRadius=0, edgeChamfer=0, edgeDistance
flangeBrida atornilladaouterDiameter=120, boreDiameter=40, thickness=14, boltCount=6, fastener=M10, fit=medium, boltCircleDiameter, hubDiameter=0, hubHeight=0, edgeChamfer=0
l_bracketsoporte en LbaseLength=60, legHeight=50, thickness=5, width=40, fastener=M6, fit=medium, holesPerLeg=1, cornerRadius=0
stepped_shafteje escalonadosecciones, chaflán=1, keywaySection=-1, keyLength
pipe_bendCodo de tuberíaouterDiameter=30, wall=3, legA=100, legB=100, bendAngle=90, bendRadius
duct_transitionTransición de conductosshape=rect, width1=80, height1=50, width2=40, height2=40, length=120, wall=2
enclosureRecintolength=120, width=80, height=40, wall=3, floor, cornerRadius=6, fastener=M3, bosses=true
Placa de montaje para tornillos 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
receta de placa de montaje, M8 Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
La receta reconstruida: 100 × 60 × 10 mm con cuatro orificios de Ø9 18 mm de cada borde. Debido a que las posiciones de los agujeros son expresiones de ancho e inserción, cambiar el ancho en el historial mueve los agujeros de la derecha con él.

El historial es normal: puedes abrirlo en el editor, cambiar un parámetro y reconstruirlo. La receta sólo eligió números sensatos.

engranajes involutos

Un engranaje recto de módulo 2, 18 dientes
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'
Engranaje recto m = 2, z = 18 Arrastrar para orbitar · desplazarse para hacer zoom · arrastrar con el botón derecho para desplazarse
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.
DimensiónFórmulam = 2, z = 18
Radio de pasom·z / 218
Radio de puntatono + m20
Radio de raíztono − 1.25·m15.5
Radio basetono · cos α16.914
MIN_GEAR_TEETH es 6: debajo de eso, los flancos socavan el círculo base y los dientes vecinos se superponen.

Datos de sujeción y ajuste

TamañoPasotaladro de grifoLiquidación fina/media/gruesaCabeza Ø × hAvellanado Ø × profundidadØ avellanador
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

Los valores provienen de cad.metricThread(size), clearanceHole(size, fit) y tapDrill(size); la fila M6 se consultó únicamente a través de los dos ayudantes. Reglas relacionadas, con resultados reales para un tornillo M6 y su orificio de paso Ø6.6:

AyudanteResultado
threadEngagement("M6", material)acero 6, aluminio 9, fundición 12, plástico 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 × diámetro)
keywayFor(25)más de 22 hasta 30: b 8, h 7, t1 4, t2 3.3
toleranceGrade(7, 25) / (6, 25)21 / 13 µm
AdaptarAmableCaso de uso
H7/h6ubicación (deslizante)piezas ensambladas a mano y ubicadas con precisión, espigas deslizantes, casquillos guía
H7/g6correr cercaguiado preciso de piezas móviles, husillos y válvulas de corredera.
H7/f7corrercojinetes lisos, ejes en la construcción de maquinaria en general
H7/k6transiciónengranajes, poleas y anillos interiores de rodamientos accionados con una ligera presión
H7/n6interferencia (prensa ligera)casquillos y cubos prensados; no se necesita llave para torque pequeño
H7/p6interferencia (prensa)ajuste a presión permanente de casquillos en carcasas.