Insight

La conception de pièces pour usinage à commande numérique

Votre masterclass en design produit et développement

 

Masterclass Protolabs’ Insight 

Notre série de vidéos Insight vous aidera à maîtriser la fabrication numérique.

En plus de nos conseils de conception mensuels, nous publions désormais régulièrement ces nouvelles vidéos : chacune d'entre elles vous donne un aperçu plus approfondi de la manière de concevoir de meilleures pièces. Nous aborderons des sujets spécifiques tels que le choix du bon matériau d'impression 3D, l'optimisation de votre conception pour l'usinage CNC, les finitions de surface pour les pièces moulées, et bien d'autres encore.

Alors, rejoignez-nous et ne manquez pas l'événement.

 

Insight: La conception de pièces pour usinage à commande numérique

21.02.2020

Bonjour et bienvenue dans cette édition de nos vidéos « INSIGHT » !

Aujourd’hui, nous allons aborder plusieurs manières d’optimiser la conception des pièces pour leur fabrication par usinage à commande numérique (CNC).

L’usinage CNC permet de produire des prototypes et des pièces de série rapidement en maîtrisant bien les coûts. Cependant, pour tirer le meilleur parti de ce procédé malgré ses limites, il convient de tenir compte de ses spécificités dès les premières étapes de conception. Par exemple, dès que vous commencez à préciser votre idée, il est important d’envisager la profondeur et le diamètre de tous les alésages de votre pièce.

En effet, de nombreux fournisseurs utilisent une fraise plate plutôt qu’un foret standard pour percer une pièce. Cela garantit une flexibilité accrue en matière de cotes d’alésages possibles pour un outil donné, tout en assurant une meilleure finition de surface qu’avec une perceuse. En outre, cela permet d’utiliser le même outil pour usiner des rainures ou des parties évidées, ce qui réduit le délai d’exécution et les coûts globaux pour vous.

Seul inconvénient de cette méthode : les alésages de plus de six diamètres de profondeur deviennent très difficiles à réaliser. La longueur de la fraise en bout reste limitée. Aménager une forme particulière au-delà de cet outil peut nécessiter d’usiner des deux côtés de la pièce. Cette opération a un coût et exige plus de temps. Le filetage doit également être anticipé.

Si de nombreux ateliers utilisent des tarauds pour créer des filetages internes, nous adoptons une approche plus moderne grâce à une fraise à fileter. Le filetage obtenu est très précis. Une seule fraise permet d’usiner tous les filetages qui ont le même pas, d’où un gain de temps lors de la production, mais également du réglage et de la préparation des machines.

Vous pourrez donc utiliser des filetages UNC et UNF de 2 à 12,7 mm, et des filetages métriques du M2 au M12 sans aucun souci. Abordons à présent les chiffres, les lettres et les logos. Vous pouvez avoir besoin de pièces comportant un numéro de référence, une description ou un logo usinés.

Dans ce cas, il faut vous assurer que ces inscriptions sont parfaitement compatibles avec le fraisage. Concrètement, cela implique que l’espacement entre les caractères et la course de l’outil doivent mesurer au moins un demi-millimètre. De plus, il est conseillé d’opter pour un texte en creux et non en relief.

Il est bien plus facile d’inscrire ces éléments sur la pièce que de retirer la matière qui entoure ces signes ! Dans l’idéal, il convient enfin de choisir du texte de 20 points au moins, avec une police simple sans empattements, comme Arial.

En dessinant la pièce, il est important de tenir compte de la hauteur des parois et des dimensions de vos marquages. Même les outils les plus résistants ont tendance à ployer légèrement, de même que les matières usinés. En conséquence, la hauteur des parois et la taille des marquages réalisables dépendent beaucoup de la géométrie de la pièce.

L’épaisseur minimale sur laquelle nous pouvons travailler chez Protolabs est d’un demi-millimètre et la profondeur maximale peut atteindre 51 millimètres. Cependant, cela ne garantit pas la faisabilité de toutes les pièces avec de telles cotes. Un radiateur nervuré, par exemple, serait simplement irréalisable.

Voilà à peu près tout ce qui est impossible, ou du moins à éviter. Parlons à présent des opérations avantageuses autorisées par les derniers outils d’usinage à commande numérique. Vous pouvez exploiter les avantages du tournage CNC avec porte-outils entraînés.

Les outils utilisés sur ces machines permettent d’obtenir des alésages déportés, des rainures, des épaulements ou des méplats et bien d’autres formes qui peuvent être usinés parallèlement ou perpendiculairement à l’axe « long » de la pièce tournée.

La différence réside ici dans la forme du matériau brut et non dans l’outillage lui-même. Les pièces tournées, comme les arbres et les pistons, sont usinées à partir d’un bloc cylindrique. Ce n’est généralement pas le cas pour les pièces fraisées (collecteurs, boîtiers d’instruments, couvercles de culasses...).

On emploie alors des blocs cubiques ou rectangulaires. Nous proposons maintenant en outre un fraisage indexé à cinq axes, ce qui permet de réaliser des formes très complexes.

En effet, pour le fraisage conventionnel à trois axes, la pièce est tenue par le bas du bloc de matière, tandis que les éléments de la pièce sont usinés par le haut. Chaque côté de la pièce exige donc une préparation séparée, et seuls le haut et le bas peuvent être usinés.

Grâce au fraisage indexé à cinq axes, la pièce peut pivoter sur les axes X et Y en restant indexée à 90 degrés pour tout angle donné, ainsi que pour tout angle multiple ou composé. Cela permet de positionner l’outil de manière très fine. Les opérations mathématiques et géométriques nécessaires pour usiner ces pièces sont éminemment complexes.

Merci de votre attention. Rendez-vous pour un prochain épisode !


Inscrivez-vous aux Masterclass "Insights"

Inscrivez-vous maintenant et ne manquez plus les Masterclass Protolabs' Insight.

Cliquez ici

Contenu associé

System.Web.HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'. ---> System.InvalidCastException: Specified cast is not valid.
   at Setter(Object , Object )
   at Our.Umbraco.Ditto.FastPropertyAccessor.SetValue(PropertyInfo property, Object instance, Object value)
   at Our.Umbraco.Ditto.PublishedContentExtensions.ConvertContent(IPublishedContent content, DittoTypeInfo config, CultureInfo culture, Object instance, Action`1 onConverting, Action`1 onConverted, DittoChainContext chainContext)
   at Our.Umbraco.Ditto.PublishedContentExtensions.As(IPublishedContent content, Type type, CultureInfo culture, Object instance, IEnumerable`1 processorContexts, Action`1 onConverting, Action`1 onConverted, DittoChainContext chainContext)
   at Our.Umbraco.Ditto.RecursiveDittoAttribute.ProcessValue()
   at Our.Umbraco.Ditto.DittoCacheableAttribute.GetCacheItem[TOuputType](DittoCacheContext cacheContext, Func`1 refresher)
   at Our.Umbraco.Ditto.PublishedContentExtensions.DoGetProcessedValue(IPublishedContent content, DittoTypePropertyInfo mappableProperty, DittoProcessorContext baseProcessorContext, DittoChainContext chainContext)
   at Our.Umbraco.Ditto.PublishedContentExtensions.GetProcessedValue(IPublishedContent content, CultureInfo culture, DittoTypeInfo config, DittoTypePropertyInfo mappableProperty, Object instance, DittoChainContext chainContext)
   at Our.Umbraco.Ditto.PublishedContentExtensions.ConvertContent(IPublishedContent content, DittoTypeInfo config, CultureInfo culture, Object instance, Action`1 onConverting, Action`1 onConverted, DittoChainContext chainContext)
   at Our.Umbraco.Ditto.PublishedContentExtensions.As(IPublishedContent content, Type type, CultureInfo culture, Object instance, IEnumerable`1 processorContexts, Action`1 onConverting, Action`1 onConverted, DittoChainContext chainContext)
   at Our.Umbraco.Ditto.PublishedContentExtensions.<>c__DisplayClass3_0.<As>b__0(IPublishedContent x)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.<CastIterator>d__97`1.MoveNext()
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at ASP._Page_Views_Partials_ContentRotatorMacro_cshtml.Execute() in E:\protolabsus\webs\protolabs\Views\Partials\ContentRotatorMacro.cshtml:line 7
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.<>c__DisplayClass5_0.<Wrap>b__0()
   at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func`1 func)
   at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride)
   at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride)
   at System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage)
   at System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm)
   at System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues, TextWriter textWriter)
   at System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues)
   at ASP._Page_Views_MacroPartials_Content_Rotator_cshtml.Execute() in E:\protolabsus\webs\protolabs\Views\MacroPartials\Content Rotator.cshtml:line 3
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer)
   at Umbraco.Web.Mvc.ControllerExtensions.RenderViewResultAsString(ControllerBase controller, ViewResultBase viewResult)
   at Umbraco.Web.Macros.PartialViewMacroEngine.Execute(MacroModel macro, IPublishedContent content)
   at umbraco.macro.LoadPartialViewMacro(MacroModel macro)
   at umbraco.macro.renderMacro(Hashtable pageElements, Int32 pageId)
   at Umbraco.Web.UmbracoComponentRenderer.RenderMacro(macro m, IDictionary`2 parameters, page umbracoPage)
   at ASP._Page_Views_Partials_grid_editors_macro_cshtml.Execute() in E:\protolabsus\webs\protolabs\Views\Partials\grid\editors\macro.cshtml:line 15
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer)
   at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
   at ASP._Page_Views_Partials_grid_editors_base_cshtml.Execute() in E:\protolabsus\webs\protolabs\Views\Partials\grid\editors\base.cshtml:line 20