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.
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
| Descubrimiento | Próxima inspección |
|---|---|
| El boceto sigue estando poco restringido | Lea 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 croquis | Utilice 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 escalar | Inspeccionar 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 texto | Compruebe 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.
fully-constrained con 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) 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ón | Por defecto | Significado |
|---|---|---|
maxIterations | 200 | El límite superior de las iteraciones de Levenberg-Marquardt antes de que la resolución se informe como failed. |
tolerance | 1e-9 | El residuo absoluto más grande aceptado como resuelto. |
| Campo de resultado | Contenido |
|---|---|
sketch | El boceto de entrada con coordenadas y radios resueltos. |
status | fully-constrained, under-constrained, over-constrained, conflicting, o failed. |
dof | Grados de libertad restantes. |
free | ID de puntos que aún pueden moverse e ID de círculos cuyo radio aún puede cambiar. |
conflicts | ID de restricciones que no se pudieron cumplir, las peores primero. |
redundant | Número de ecuaciones redundantes (deficiencia de rango). |
iterations, residual, message | Diagnó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.
| Tipo | Campos | Effect |
|---|---|---|
fixed | point, opcional x, y | Fija un punto, opcionalmente a coordenadas explícitas. |
coincident | a, b | Dos puntos ocupan la misma posición. |
horizontal / vertical | line | Una recta es paralela a X/Y. |
horizontalPoints / verticalPoints | a, b | Dos puntos comparten una coordenada Y/X. |
distance | a, b, value | Distancia euclidiana entre dos puntos. |
distanceX / distanceY | a, b, value | Desplazamiento horizontal/vertical firmado. |
length | line, value | Longitud de una línea. |
parallel / perpendicular | a, b | Relación entre dos líneas. |
equalLength / equalRadius | a, b | Longitudes de línea iguales/radios de círculo o arco. |
radius / diameter | circle, value | Tamaño de un círculo o arco. |
angle | a, b, value | Ángulo en sentido antihorario desde la línea a alinear b, en radianes. |
pointOnLine / pointOnCircle | point y line / circle | Incidencia. |
midpoint | point, line | Un punto se encuentra en el medio de una línea. |
symmetric | a, b, line | Dos puntos se reflejan entre sí respecto de una recta. |
tangentLineCircle | line, circle | Una línea toca un círculo o arco. |
tangentCircles | a, b, opcional internal | Circles touch externally (distance = r1 + r2) or internally (distance = |r1 − r2|). |
concentric | a, b | Centro 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.
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ística | Campos clave y valores predeterminados |
|---|---|
sketch | plane, opcional offset, sketch (entidades, restricciones, opciones paramétricas shapes: rectángulo, círculo, polígono, elipse, ranura, polilínea). |
extrude | sketch, 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). |
revolve | sketch, axis (x, y, o una línea de boceto), angle en grados (predeterminado 360), operation. |
hole | plane, 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, mirror | Copias de la herramienta de una función anterior, aplicadas de la misma manera. |
sweep, loft, coil | Perfiles a lo largo de un camino, entre secciones o a lo largo de una hélice. |
shell, fillet, draft, pushpull | Ediciones de caras y aristas. |
move, scale, split, combine | Operaciones corporales. |
rib, sheet, thread, text | Costillas, cuerpos de chapa con patrones planos, hilos modelados y texto con trazos. |
plane, primitive, mate | Planos 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.
| Constructor | Argumentos | Colocación mundial |
|---|---|---|
makeBox(dx, dy, dz, placement?) | Longitudes de borde en mm | Esquina mínima en el origen. |
makeCylinder(radius, height, placement?) | Radio y altura | Un cono con radios iguales; eje a lo largo de Z. |
makeCone(r1, r2, height, placement?) | Radios base y superior | Eje a lo largo de Z. |
makeSphere(radius, placement?) | Radio | Centrado en el origen. |
makeTorus(major, minor, placement?) | Radios de anillos y tubos | Eje a lo largo de Z. |
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
idpor 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
targetsen booleanos cuando una pieza tiene varios cuerpos. El valor predeterminado aplica la operación a todos los cuerpos construidos hasta el momento. - Controlar
issuesdespués de cadarebuildy el por cuerpobreppresencia despuésrebuildExactantes 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.
| Nombre | Título | Parámetros (predeterminados) |
|---|---|---|
mounting_plate | Placa de montaje | width=100, depth=60, thickness=10, fastener=M8, fit=medium, counterbore=false, cornerRadius=0, edgeChamfer=0, edgeDistance |
flange | Brida atornillada | outerDiameter=120, boreDiameter=40, thickness=14, boltCount=6, fastener=M10, fit=medium, boltCircleDiameter, hubDiameter=0, hubHeight=0, edgeChamfer=0 |
l_bracket | soporte en L | baseLength=60, legHeight=50, thickness=5, width=40, fastener=M6, fit=medium, holesPerLeg=1, cornerRadius=0 |
stepped_shaft | eje escalonado | secciones, chaflán=1, keywaySection=-1, keyLength |
pipe_bend | Codo de tubería | outerDiameter=30, wall=3, legA=100, legB=100, bendAngle=90, bendRadius |
duct_transition | Transición de conductos | shape=rect, width1=80, height1=50, width2=40, height2=40, length=120, wall=2 |
enclosure | Recinto | length=120, width=80, height=40, wall=3, floor, cornerRadius=6, fastener=M3, bosses=true |
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 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
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' | Dimensión | Fórmula | m = 2, z = 18 |
|---|---|---|
| Radio de paso | m·z / 2 | 18 |
| Radio de punta | tono + m | 20 |
| Radio de raíz | tono − 1.25·m | 15.5 |
| Radio base | tono · 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ño | Paso | taladro de grifo | Liquidación fina/media/gruesa | Cabeza Ø × h | Avellanado Ø × profundidad | Ø avellanador |
|---|---|---|---|---|---|---|
| M3 | 0.5 | 2.5 | 3.2 / 3.4 / 3.6 | 5.5 × 3 | 6.5 × 3.4 | 6 |
| M5 | 0.8 | 4.2 | 5.3 / 5.5 / 5.8 | 8.5 × 5 | 10 × 5.7 | 10 |
| M6 | — | 5 | 6.4 / 6.6 / 7 | — | — | — |
| M8 | 1.25 | 6.8 | 8.4 / 9 / 10 | 13 × 8 | 15 × 9 | 16 |
| M12 | 1.75 | 10.2 | 13 / 13.5 / 14.5 | 18 × 12 | 20 × 13 | 24 |
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:
| Ayudante | Resultado |
|---|---|
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 |
| Adaptar | Amable | Caso de uso |
|---|---|---|
| H7/h6 | ubicación (deslizante) | piezas ensambladas a mano y ubicadas con precisión, espigas deslizantes, casquillos guía |
| H7/g6 | correr cerca | guiado preciso de piezas móviles, husillos y válvulas de corredera. |
| H7/f7 | correr | cojinetes lisos, ejes en la construcción de maquinaria en general |
| H7/k6 | transición | engranajes, poleas y anillos interiores de rodamientos accionados con una ligera presión |
| H7/n6 | interferencia (prensa ligera) | casquillos y cubos prensados; no se necesita llave para torque pequeño |
| H7/p6 | interferencia (prensa) | ajuste a presión permanente de casquillos en carcasas. |