Documentação
Geometria CAD
Entidades de desenho, esboços restritos, históricos paramétricos, malhas e sólidos exatos em um núcleo geométrico compartilhado.
Traduzido automaticamente do inglês. Ver o original em inglês
Entidades de desenho
@cadcamfun/core exporta funções CAD diretamente e sob o cad espaço para nome. Entidades D do esquema primeiro 2 usam um _tag discriminador: Linha, Círculo, Arco, Polilinha, Retângulo, Elipse, Spline, Texto, Dimensão, Hachura e Bloco. Cada entidade possui um identificador, camada, visibilidade e estado de bloqueio estáveis; a seleção pertence ao estado do editor.
A geometria da entidade usa milímetros e radianos. Os ângulos do arco são normalizados para uma volta completa e ângulos iniciais/finais iguais representam um círculo completo. Uma transformação de entidade local aplica escala, rotação e depois translação; Affine2D suporta transformações compostas que podem incluir cisalhamento. Os adaptadores de elemento de cena e histórico paramétrico têm seus próprios campos angulares documentados, incluindo posicionamento com valor de grau e controles de recursos.
entitySchemaOf(tag) retorna o esquema para um tipo de entidade. Decodifique os dados importados antes de chamar funções geométricas. Limites, mosaico, interseções, deslocamentos e encaixes são operações separadas; renderizar uma curva tesselada não substitui sua entidade analítica.
Esboços restritos
O modelo de esboço contém pontos nomeados, linhas entre pontos, círculos com centro e raio e arcos no sentido anti-horário. Os identificadores de pontos compartilhados expressam terminais compartilhados. As restrições incluem coincidência, alinhamento horizontal e vertical, distâncias, comprimentos, linhas paralelas e perpendiculares, comprimentos e raios iguais, tangência, simetria e incidência geométrica.
O solucionador numérico minimiza os resíduos de restrição com uma iteração Levenberg-Marquardt e um Jacobiano de diferença central. Relata graus de liberdade, pontos livres, equações redundantes e restrições conflitantes. Um resultado pode ser totalmente restringido, sub-restringido, excessivamente restringido, conflitante ou com falha. Uma solução sub-restrita pode satisfazer todas as dimensões e ainda permitir movimento; os chamadores devem preservar essa distinção.
As restrições do esboço recebem números. Os históricos paramétricos resolvem expressões de parâmetros antes de invocar o solucionador. As restrições de ângulo do esboço são radianos; use a convenção de entrada do próprio recurso ao converter uma dimensão inserida pelo usuário.
Histórias paramétricas
Uma peça paramétrica armazena seus parâmetros e histórico de recursos ordenados. A reconstrução avalia expressões e recursos em sequência para que um recurso possa fazer referência a esboços, planos, corpos ou ferramentas criados anteriormente. O núcleo inclui extrusões, revoluções, lofts e varreduras, booleanos, furos, padrões, edições de face, texto, roscas, recursos de chapa metálica e controles de posicionamento. A disponibilidade de uma representação exata depende da sequência de recursos específica.
rebuild produz corpos de malha e problemas de recursos. rebuildExact reproduz a história através do núcleo de representação de limites e registra por que um corpo carece de uma representação exata. Mantenha o histórico como fonte editável; corpos gerados são resultados derivados. Um recurso com falha ou sem suporte deve permanecer visível por meio de seu registro de problema.
Leia o resultado da repetição
A saída de malha pode existir quando a reprodução exata não pode representar um recurso. Verifique o corpo e emita os registros antes de fazer afirmações sobre geometria exata, volume ou fidelidade de exportação.
Geometria e posicionamento da malha
As malhas usam geometria triangular indexada. A camada CAD fornece construção primitiva, booleanos de malha, auxiliares de varredura e loft, topologia e utilitários normais e limpeza de geometria. O adaptador de modelo CAM converte elementos de cena suportados em malhas, incluindo componentes aninhados, para que a análise e a geração de percurso possam usar a mesma geometria posicionada.
A posição, rotação, escala e translação do elemento afetam a peça resultante. O posicionamento exato da cena espelha a transformação da janela de visualização em torno do centro da caixa delimitadora. O dimensionamento não uniforme pode remover o caminho exato do modelo de um elemento; a conversão de cena informa um motivo e pode usar uma representação facetada durante a exportação.
Representação exata dos limites
cad.brep expõe geometria analítica e NURBS com topologia de face, loop, uso de aresta, aresta e vértice. Seus módulos abrangem primitivas, varreduras, lofts, booleanos, edições de face, mesclagens, costura, mosaico, classificação, validação, propriedades de massa e leitura e escrita STEP. history-brep.ts e scene-step.ts conecte este kernel às partes paramétricas e coloque os elementos da cena.
POST /api/cad/exact/analyze retorna problemas de validade por peça, volume, área, centróide, limites, contagens de topologia, contagens de superfície, furos reconhecidos e classificação de usinagem. Ele também retorna elementos ignorados com motivos e totais agregados. Um resultado de usinagem prismática relata contornos, furos, bolsões e níveis superior/inferior; partes não suportadas carregam um motivo.
POST /api/cad/exact/assembly relata interferências, sobreposições esperadas, pares tocantes e indeterminados, itens da lista de materiais, juntas e planos de fixação. A geometria indeterminada é um resultado relatado, não uma prova de autorização. Essas rotas de análise calculam os resultados sem alterar o desenho.
Importar e exportar
O núcleo possui DXF e auxiliares de importação de desenhos, um caminho de interpretação STEP prismático e um leitor STEP B-rep exato. O caminho prismático lê a pegada e a altura de extrusão para placas, suportes e flanges adequados; ele relata características que um prisma não pode descrever. Escolha o leitor exato quando a topologia STEP suportada for necessária e inspecione os diagnósticos de qualquer caminho.
sceneToStep escreve uma cena como STEP AP214. Os sólidos suportados exatos mantêm a geometria exata; sólidos somente de malha podem ser emitidos como sólidos facetados. Elementos não sólidos são ignorados com motivos. O faceted opção controla esse substituto. Uma resposta sem step não contém sólido exportável.
As rotas exatas HTTP aceitam elements ou drawingId; elementos explícitos têm precedência. Matrizes de instantâneo permitem 1–2,000 elementos e uma seleção opcional de até 200 identificadores. Com um desenho armazenado, o sidecar lê a cena de acordo com as regras de acesso ao desenho. Uma fonte ausente, um desenho vazio, um desenho desconhecido ou um desenho negado produzem a solicitação ou erro de acesso correspondente.
Desenhos técnicos
O drawing namespace fornece projeções, seções, dimensões, composição de folhas e saída SVG de modelos 3D. Esta é uma representação separada do desenho da entidade 2D editável e de um programa de usinagem. A geometria da projeção e da seção deve ser regenerada após alterações no modelo; uma exportação de planilha captura o estado do modelo usado para construí-lo.
Onde estender a geometria
Comece com packages/core/src/cad/index.ts para a superfície CAD pública. As operações da entidade vivem ao lado entities.ts; a resolução de restrições está em sketch.ts; o histórico da malha está em history.ts; a reprodução exata está em history-brep.ts; topologia exata e troca estão sob brep/. packages/core/src/drawing/ possui a saída de folhas. Os módulos de suporte na mesma pasta incluem expr.ts (expressões de parâmetros como width / 2 + 3, resolvido em ordem de dependência com ciclos relatados como erros), tolerance.ts (o segmento acorde-sagitta conta para curvas), gear.ts (ISO 53 contornos envolventes da engrenagem reta), thread.ts, sheet-metal.ts, fasteners.ts, recipes.ts (geradores que emitem históricos de recursos completos e totalmente restritos), dfm.ts (descobertas de projeto para fabricação com valores medidos e exigidos), e dxf.ts.
As funções de geometria operam em valores sem abrir o armazenamento do aplicativo. Os serviços Sidecar cuidam do acesso e da persistência, e os adaptadores de desktop cuidam da interação e da renderização. Mantenha as conversões explícitas nos limites para que uma malha de exibição, um sólido exato e um histórico salvo mantenham seu significado distinto.
Construa, valide e exporte um sólido
Este exemplo principal completo constrói uma caixa 40 × 25 × 8 mm com um canto na origem mundial, verifica sua topologia, mede-a e exporta texto STEP. Ele requer apenas o pacote principal do espaço de trabalho e não executa gravações de aplicativos.
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 O carimbo de data/hora explícito torna a saída de troca repetida reproduzível. Sem ele, a escrita STEP usa a hora atual. massProperties também retorna área, áreas por face e um tensor de inércia em torno do centróide na densidade unitária; o volume é mm³ e a área é mm². Converta a densidade explicitamente ao calcular uma massa física.
Fonte: packages/core/src/cad/brep/primitives.ts, mass.ts, validate.ts, e step.ts.
Opções de validação e conversão
validateBrep retorna valid, emitir registros, manifoldSolide gênero/volume opcional. manifoldSolid significa cascas fechadas com cada aresta usada duas vezes em sentidos opostos. A tolerância de distância geométrica padrão é dimensionada como 10⁻⁵ do tamanho do modelo com um piso de 10⁻⁶ mm. Um chamador pode fornecer tol, pule a verificação de volume/orientação com skipVolume, ou use um mosaico grosseiro para orientação com coarseVolume.
As APIs de análise exata machining o sinalizador é padronizado como verdadeiro. Exportação de cena STEP faceted o padrão de fallback é verdadeiro e o planejamento do fixador de montagem washers a opção é padronizada como verdadeira. IDs de seleção referem-se a elementos de cena, incluindo componentes filhos resolvidos pela passagem de cena. Essas opções HTTP afetam a análise/exportação, não o desenho armazenado.
Retornos de exportação de cena por peça exact, faces, valide uma nota opcional. Verifique esses campos ao lado skipped: um sólido facetado válido pode ser exportado sem reter superfícies analíticas.
Fonte: packages/core/src/cad/brep/validate.ts, scene-analysis.ts, scene-step.ts, assembly-analysis.ts, e packages/api/src/cad-exact.ts.
Reparar uma reconstrução ou exportação com falha
| Encontrando | Próxima inspeção |
|---|---|
| O esboço permanece sub-restrito | Leia graus de liberdade e IDs de pontos livres. Adicione as restrições de posição/orientação ausentes; uma linha dimensionada com apenas um ponto final fixo ainda pode girar. |
| Conflito de restrições de esboço | Use IDs de conflito nomeados e os resíduos para localizar dimensões incompatíveis. Repetir uma equação compatível é redundância; dois comprimentos exigidos diferentes são um conflito. |
| O recurso histórico faz referência a um corpo ou plano desconhecido | Verifique a ordem dos recursos e os identificadores. As dependências devem existir anteriormente na reprodução e a supressão/exclusão pode invalidar referências posteriores. |
| Modelo exato indisponível após dimensionamento | Inspecione a escala não uniforme e o motivo relatado do elemento. Use posicionamento uniforme compatível ou aceite e rotule uma exportação facetada. |
| O resultado do STEP pulou itens ou não contém texto | Verifique se a seleção contém sólidos e se o fallback facetado está habilitado. As seleções vazias ou 2somente D não podem produzir um arquivo STEP sólido. |
As dimensões primitivas devem ser positivas e finitas. Funções de geometria direta podem gerar erros de intervalo para dimensões inválidas; as camadas de transporte e serviço devem converter essas falhas em seus próprios resultados digitados. Os problemas de reconstrução são codificados em IDs de recursos para que uma falha possa ser reparada em sua origem, em vez de ocultada pela retenção de uma malha anterior.
Fonte: packages/core/src/cad/sketch.test.ts, history.ts, scene-step.ts, e apps/sidecar/test/cad-exact.test.ts.
Resolva um esboço passo a passo
Um esboço são dados simples: uma matriz de entities (pontos, linhas, círculos, arcos) e uma série de constraints. Linhas, círculos e arcos referem-se a pontos por identificador, portanto, duas linhas que compartilham um ponto final compartilham o mesmo ID de ponto. O solucionador move apenas coordenadas de pontos e raios de círculo; nunca adiciona ou remove entidades.
fully-constrained com 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) Execute o mesmo esboço sem o fixed restrição e o resultado muda para under-constrained com dof = 2 e free = ["p1", "p2", "p3", "p4"]. O retângulo ainda tem o tamanho certo, mas pode deslizar em X e Y. Adicione um terceiro comprimento, { id: "w2", type: "length", line: "l3", value: 50 }, e o status se torna conflicting. conflicts então lista as restrições nomeadas que não podem ser satisfeitas juntas, a pior primeiro (por exemplo w2 e width). Nomeie as restrições com as quais você se preocupa id; restrições sem nome são relatadas com um rótulo gerado como vertical#4.
| Opção | Padrão | Significado |
|---|---|---|
maxIterations | 200 | O limite superior nas iterações de Levenberg-Marquardt antes da resolução é relatado como failed. |
tolerance | 1e-9 | O maior resíduo absoluto aceito como resolvido. |
| Campo de resultado | Contente |
|---|---|
sketch | O esboço de entrada com coordenadas e raios resolvidos. |
status | fully-constrained, under-constrained, over-constrained, conflicting, ou failed. |
dof | Restantes graus de liberdade. |
free | IDs de pontos que ainda podem se mover e IDs de círculos cujo raio ainda pode mudar. |
conflicts | IDs de restrição que não puderam ser satisfeitos, o pior primeiro. |
redundant | Número de equações redundantes (deficiência de classificação). |
iterations, residual, message | Diagnóstico do solucionador. |
Lançamentos de entrada malformados
Um esboço que se refere a um ponto ou entidade desconhecida é malformado e não insolúvel, e solveSketch lança um SketchError. Valide os esboços importados antes de resolvê-los em loop.
Referência de restrição
Toda restrição é um objeto com um type e um opcional id. Os comprimentos são milímetros e os ângulos são radianos. Em uma história paramétrica, qualquer value também pode ser uma string de expressão de parâmetro.
| Tipo | Campos | Effect |
|---|---|---|
fixed | point, opcional x, y | Fixa um ponto, opcionalmente em coordenadas explícitas. |
coincident | a, b | Dois pontos ocupam a mesma posição. |
horizontal / vertical | line | Uma linha é paralela a X / Y. |
horizontalPoints / verticalPoints | a, b | Dois pontos compartilham uma coordenada Y/X. |
distance | a, b, value | Distância euclidiana entre dois pontos. |
distanceX / distanceY | a, b, value | Deslocamento horizontal/vertical assinado. |
length | line, value | Comprimento de uma linha. |
parallel / perpendicular | a, b | Relação entre duas linhas. |
equalLength / equalRadius | a, b | Comprimentos de linha/círculo ou raios de arco iguais. |
radius / diameter | circle, value | Tamanho de um círculo ou arco. |
angle | a, b, value | Ângulo anti-horário da linha a alinhar b, em radianos. |
pointOnLine / pointOnCircle | point e line / circle | Incidência. |
midpoint | point, line | Um ponto fica no meio de uma linha. |
symmetric | a, b, line | Dois pontos se espelham em torno de uma linha. |
tangentLineCircle | line, circle | Uma linha toca um círculo ou arco. |
tangentCircles | a, b, opcional internal | Circles touch externally (distance = r1 + r2) or internally (distance = |r1 − r2|). |
concentric | a, b | Centro compartilhado de círculos ou arcos. |
Os arcos são no sentido anti-horário a partir start a end sobre center. O raio de um círculo é uma variável do solucionador, então um círculo sem radius, diameter, equalRadius, ou a restrição de tangência aparece em free.
Construir uma peça paramétrica
A History é uma tabela de parâmetros mais uma lista ordenada de recursos. Parâmetros são números ou expressões de outros parâmetros. Eles são resolvidos em ordem de dependência e um ciclo é um erro que nomeia o loop. Os recursos referem-se aos parâmetros por nome em qualquer campo de dimensão.
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 retorna bodies (malhas triangulares codificadas pelo recurso que as criou), o problema resolvido parameters, o plano, a estrutura e o resultado da resolução de cada esboço, os padrões planos dos recursos de chapa metálica e issues. Um recurso que não pode ser construído é relatado em issues com seu ID de recurso e gravidade e será ignorado. Recursos que não dependem dele ainda são criados. rebuildExact(history, given?, options?) pode reutilizar uma reconstrução de malha que você já possui e aceita um budgetMs orçamento de tempo.
Os aviões base são destros: XY tem u = X, v = Y, normal +Z; YZ tem u = Y, v = Z, normal +X; ZX tem você = Z, v = X, normal +Y. Um esboço, furo ou texto também pode ser colocado no ID de um plane característica, com um offset ao longo do normal.
| Recurso | Campos-chave e padrões |
|---|---|
sketch | plane, opcional offset, sketch (entidades, restrições, paramétricos opcionais shapes: retângulo, círculo, polígono, elipse, ranhura, polilinha). |
extrude | sketch, depth, direction up/down/symmetric, operation new/union/subtract/intersect, opcional targets (padrão: todos os corpos até agora), edge chanfro/filete de faces finais (ends padrão both), corner tratamento, e taper calado em graus. Loops dentro de loops são buracos (pares-ímpares). |
revolve | sketch, axis (x, y, ou uma linha de esboço), angle em graus (padrão 360), operation. |
hole | plane, offset, at [u, v], diameter, depth; kind simple (padrão), counterbore, ou countersink com headDiameter, headDepth, e angle (padrão 90°). Cosmético opcional thread nota (por exemplo M4), tolerancee ISO 286 fit como H7. Uma rosca cosmética não altera a geometria. |
pattern, mirror | Cópias de uma ferramenta de recurso anterior, aplicadas da mesma maneira. |
sweep, loft, coil | Perfis ao longo de um caminho, entre seções ou ao longo de uma hélice. |
shell, fillet, draft, pushpull | Edições de face e borda. |
move, scale, split, combine | Operações corporais. |
rib, sheet, thread, text | Nervuras, corpos de chapa metálica com padrões planos, linhas modeladas e texto em fonte traçada. |
plane, primitive, mate | Planos de construção, sólidos primitivos e posicionamento de montagem. |
Edite a história, não o corpo
Altere um parâmetro e reconstrua: todo esboço que o utiliza é resolvido e todo sólido e booleano após ser refeito. A edição direta de uma malha gerada será perdida na próxima reconstrução.
Primitivas exatas e posicionamento
O kernel B-rep constrói sólidos analíticos diretamente. Cada construtor ocupa um posicionamento opcional Frame; sem ele, o sólido é colocado na estrutura do mundo.
| Construtor | Argumentos | Colocação mundial |
|---|---|---|
makeBox(dx, dy, dz, placement?) | Comprimentos das bordas em mm | Canto mínimo na origem. |
makeCylinder(radius, height, placement?) | Raio e altura | Um cone com raios iguais; eixo ao longo de Z. |
makeCone(r1, r2, height, placement?) | Raios base e superior | Eixo ao longo de Z. |
makeSphere(radius, placement?) | Raio | Centrado na origem. |
makeTorus(major, minor, placement?) | Raios do anel e do tubo | Eixo ao longo de Z. |
As dimensões devem ser positivas e finitas; caso contrário, os construtores gerarão um erro de intervalo. Correr validateBrep em qualquer coisa que você crie a partir de booleanos, varreduras ou importações antes de confiar no volume ou nos resultados de exportação. Uma primitiva direta de um construtor é válida por construção.
Práticas de modelagem que reconstroem de forma confiável
- Fixe um ponto e restrinja a orientação antes de adicionar cotas. Um esboço sub-restrito pode satisfazer todas as dimensões e ainda se mover na próxima reconstrução.
- Dê a cada dimensão voltada para o usuário uma
idportanto, um relatório de conflito nomeia algo que uma pessoa reconhece. - Prefira parâmetros e expressões (
"width / 2 + 3","max(a, b) * 2") sobre literais repetidos; uma edição conduz toda a parte. - Faça referência aos recursos anteriores por ID somente depois que eles existirem na lista. Reordenar um histórico pode transformar uma referência válida em um problema.
- Usar
targetsem booleanos quando uma peça possui vários corpos. O padrão aplica a operação a todos os corpos construídos até agora. - Verificar
issuesdepois de cadarebuilde o por corpobreppresença depoisrebuildExactantes de confiar nas propriedades de massa exatas ou na exportação STEP. - Mantenha unidades em milímetros e radianos dentro dos esboços. Os campos com valor de grau são documentados como tal (ângulo de rotação, conicidade, ângulo de escareamento).
Receitas de design
cad.buildRecipe(name, input) transforma algumas entradas de engenharia em um histórico paramétrico completo, além de um resumo de uma linha, os números derivados e as regras de projeto que os produziram. Existem sete receitas; parâmetros sem padrão são derivados dos demais quando omitidos.
| Nome | Título | Parâmetros (padrões) |
|---|---|---|
mounting_plate | Placa de montagem | width=100, depth=60, thickness=10, fastener=M8, fit=medium, counterbore=false, cornerRadius=0, edgeChamfer=0, edgeDistance |
flange | Flange aparafusada | outerDiameter=120, boreDiameter=40, thickness=14, boltCount=6, fastener=M10, fit=medium, boltCircleDiameter, hubDiameter=0, hubHeight=0, edgeChamfer=0 |
l_bracket | Suporte L | baseLength=60, legHeight=50, thickness=5, width=40, fastener=M6, fit=medium, holesPerLeg=1, cornerRadius=0 |
stepped_shaft | Eixo escalonado | seções, chanfro=1, keywaySection=-1, keyLength |
pipe_bend | Cotovelo de tubo | outerDiameter=30, wall=3, legA=100, legB=100, bendAngle=90, bendRadius |
duct_transition | Transição de duto | shape=rect, width1=80, height1=50, width2=40, height2=40, length=120, wall=2 |
enclosure | Gabinete | 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 O histórico é comum: você pode abri-lo no editor, alterar um parâmetro e reconstruí-lo. A receita escolheu apenas números sensatos.
Engrenagens envolventes
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' | Dimensão | Fórmula | m = 2, z = 18 |
|---|---|---|
| Raio de inclinação | m·z / 2 | 18 |
| Raio da ponta | passo + m | 20 |
| Raio raiz | tom − 1.25·m | 15.5 |
| Raio base | pitch · cos α | 16.914 |
MIN_GEAR_TEETH é 6: abaixo disso, os flancos cortam o círculo base e os dentes vizinhos se sobrepõem.
Dados de fixação e ajuste
| Tamanho | Tom | Furadeira | Folga fina/média/grossa | Cabeça Ø × h | Rebaixamento Ø × profundidade | Escareador Ø |
|---|---|---|---|---|---|---|
| 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 |
Os valores vêm de cad.metricThread(size), clearanceHole(size, fit) e tapDrill(size); a linha M6 foi consultada apenas por meio dos dois auxiliares. Regras relacionadas, com resultados reais para um parafuso M6 e seu furo de folga Ø6.6:
| Ajudante | Resultado |
|---|---|
threadEngagement("M6", material) | aço 6, alumínio 9, fundido 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) | acima de 22 até 30: b 8, h 7, t1 4, t2 3.3 |
toleranceGrade(7, 25) / (6, 25) | 21 / 13 µm |
| Ajustar | Tipo | Caso de uso |
|---|---|---|
| H7/h6 | localização (deslizante) | peças montadas manualmente e localizadas com precisão, pontas deslizantes, buchas guia |
| H7/g6 | corrida próxima | orientação precisa de peças móveis, fusos, válvulas deslizantes |
| H7/f7 | correndo | rolamentos lisos, eixos na construção de máquinas em geral |
| H7/k6 | transição | engrenagens, polias e anéis internos dos rolamentos acionados com uma leve pressão |
| H7/n6 | interferência (pressão leve) | buchas e cubos pressionados; nenhuma chave necessária para pequeno torque |
| H7/p6 | interferência (imprensa) | ajuste de pressão permanente de buchas em alojamentos |