机械CAD的新时代

2021-06-16 00:50:49

6月6日,2021年第19卷,问题2 CAD(电脑辅助设计)自20世纪50年代以来一直存在。第一个称为Sketchpad的图形CAD程序出来了麻省理工学院[DesignWorldonline.com]。从那时起,CAD对设计和制造硬件产品至关重要。今天,有多种类型的CAD。该专栏侧重于机械CAD,用于机械工程。

挖掘计算机图形的历史,揭示了最雄心勃勃和臭名昭着的工程师之间的一些有趣的联系。 Ivan Sutherland于1988年赢得了Sketchpad的图灵奖,让Edwin Catmull为学生。 Catmull和Pat Hanrahan于2019年赢得了他们对计算机图形学的贡献的图灵奖。这包括他们在Pixar Building Renderman [Pixar.com]的工作,该公司被许可给其他电影制作者。这导致了硬件,软件和GPU中的创新。如果没有这些创新者,就没有机械CAD,而且动画电影也不会像今天一样复杂。甚至没有gpus。

建模几何形状随着时间的推移已经大大发展。首先通过其边缘,线曲线和顶点代表物体来设计为线框。这种使用面部,表面,边缘和顶点演变为表面表示。表面表示在机器人路径规划中是有价值的。线框和表面表示仅包含几何数据。如今,建模包括拓扑信息,以描述对象是界限和连接的如何,并描述其邻居。 (一个点的邻域由包含该点的一组点组成,其中一个点可以在任何方向远离该点的任何方向上移动一些距离而不离开集合。)

Opencascade,Parasolid和Acis都是边界代表(B-REP)内核。 B-REP模型由几何和拓扑信息组成。拓扑信息因使用的程序而异。 B-rep文件格式包括步骤(产品型号数据交换的标准),IGES(初始图形交换规范),NX' S PRT,Solid Edge' S par和Asm,Creo' PRT和ASM,SolidWorks' SLDPRT和SLDASM,INVENTOR' S IPT和IAM,AUTOCAD' S DWG。

视觉表示(VIS-REP)模型往往比B-REP模型更小。这是因为它们不包含尽可能多的结构或产品管理信息。 VIS-REP模型是几何形状的近似,并且由大量的扁平多边形组成。 VIS-rep文件格式包括OBJ,STL,3D XML,3D PDF,Collada和PLY。

CAD程序倾向于使用B-REP模型,而动画,游戏开发,增强现实和虚拟现实倾向于使用VIS-REP模型。然而,这两个经常互换。例如,如果您使用的是制造的B-REP模型,但想要将其加载到Apple'对于某些动画的Arkit,您将首先将其转换为Collada,VIS-REP文件格式。从删除所有CAD数据时,该文件应该已经有点较小,但如果您想要使其更小,则可以调整各个部分的每个网格上的多边形计数。

用于今天建造的工具都支持巨人队的肩膀,但可以做到很多,以使它们更好。在某些时候,机械CAD失去了其创新的一些根源。让'潜水到今天存在的CAD程序中的一些问题,看看如何更好地让它们变得更好。

由于大多数CAD内核在来自' 80年代的核心内构建,它们并不意味着现代系统。即使是最新的CPU或GPU Won' T做了很多帮助,因为大多数这些程序是单线程的,或者具有单线程的方面,并且没有意识到GPU。 OpenSCAD和基于CGAL(计算几何算法库)的一切都是单线程的。当然,自从' 80年代以来已经更新了这些内核中的一些,但他们的根源仍然与他们的前辈捆绑在一起。 (我确信从这些代码库中学习很多,而是作为看过许多旧码码的人,我知道这可以导致危险的道路。)

这并不意味着所有CAD内核都是完全单螺纹的。遮阳伞是多线程的,但仍然意味着如果您正在导入或导出到adarasolid以外的文件格式,则可能刚刚切换回单程过程。多线程内核的另一个例子是ImplicIticCAD [ImblicitCad.org],它是用Haskell编写的。

制作整个CAD程序多线程的一个问题是不同的文件格式。例如,逐步文件,其格式日期回到' 80s [iso.org],几乎要求需要单线程过程。 (另外,无法顺序读取步骤文件;它必须加载到内存中然后解决。)大多数参数CAD操作是单线程的;但是,使用NURBS(非均匀合理基础样条线)的开源项目索沃空间[Solvespace.com]具有一些并行操作。

在软件开发中,指针用于获取内存地址的内容。这允许用户在没有牺牲内容本身的情况下延续同样的内容。

使用CAD建造的一些产品可能永远不会重复他们的模型幸运!对于在他们的CAD设计中有多个类似部件的人来说,大多数CAD程序正在创建这些部件的非常昂贵的副本。

例如,想象一个服务器机架的模型。在SolidWorks中复制零件(使用副本和粘贴)以及许多其他InditionalWide CAD程序复制的默认方法是将子模型的整个内容复制到新模型。因此,如果在服务器机架中有32个SLIDS并在SolidWorks中使用默认复制方法,则您在单个副本中有32个完全相同的模型。这非常昂贵。每个雪橇里面都有更多的模型,然后那些模型也有儿童模型。这是指数增长内核上的工作负载以及在您的程序上首先加载模型,因为该程序不知道这些都是相同的。

从软件开发中课程,您真正想要的是一种指向模型的形式。在CAD世界中,这些被称为实例。然后,您可以存储一个存储的模型副本,并且所有其他实例实际上只是对原始副本的引用。这也将用户节省了一堆时间。想象一下,在滑雪更改的一部分时,必须在32个不同位置更新模型的部分。一个明智的人曾经说过,"疯狂的定义一遍又一遍地做同样的事情,但期待不同的结果。"

SolidWorks确实提供了另一种选择,更符合指针如何运行,但由于这不是默认值,大多数用户甚至没有意识到有更好的方法。默认路径应导致最少的疼痛。而不是有两种复制方法,产品应该只有一个。它们应该使默认方法更像是指针(或实例),直到副本(不是主)的几何,曲面或拓扑已经改变。在这种情况下,应该警告用户现在将像唯一的副本一样行动。或者用户可能会错误地将这些更改应用于所有副本,在这种情况下,应将更改应用于主副本。

这有另一个巨大的问题。每个CAD程序都有自己的实施方式和参考实例。如果将设计从一个CAD程序导出到另一个CAD程序,则可能仍然有32个单独的SLIDS而不是一个SLID,并且仅使用XYZ坐标更改的原始SLID和31引用。某些程序提供导入实例的方法,但它们都依赖于导入的文件格式以及它们是否具有该格式的支持。

即使您使用的实例,您仍然仍处于单线程内核的ercy,并且否则尚未呈现并行呈现。

对于习惯于使用git的软件团队,能够差异,修复合并冲突,并在同一文件上并行工作是一个巨大的节省时间。许多初创公司正致力于为机械CAD带来这种能力。

今天使用Git的那些使用Git的人来继续使用Git而不是重新发明的CAD版本,而不是将另一个工具添加到他们的工作流程中。今天,没有办法将CAD文件推向Git Repo,有几个人修改文件,并解决合并冲突。 (嗯,也许它可以完成,但它与乐趣相反。)对于努力解决机械CAD的版本控制的所有启动,这就是他们必须重新发明轮子的原因。

在一个内核可以充分利用现代CPU和GPU的世界中,您还不能使用人类可读的文件格式,并允许解决合并冲突?当你问,"什么是人类可读的,与git效果很好?"他第一次回答这个想法是一种编程语言。

来自使用编程语言的其他伟大赢得了:即使您使用或想要使用或想要使用Git,对于人类可读文件的版本控制有许多不同的选项。此外,可以使用WASM(WebasseMbly)支持扩展与GitHub和其他版本控制工具的集成,以便可以将Diffs可视为渲染。

思考服务器机架的示例。如果机架的一部分包含您在Mathematica等程序中计算的复杂数学,您必须在另一个程序中连续重新评估数学并在模型中更新。如果代替,您可以在CAD产品本身中编程,那么您可以在一个地方进行所有计算,如果方程式中的任何内容发生变化,模型将更新。

在服务器机架中的每个雪橇都有网络电缆连接到雪橇背面。使用GUI,您将难以使这些与雪橇上的连接器完美齐合。有人必须坐在模型中一小时左右,只是调整每个电缆完全对齐 - 浪费时间巨大。相反,如果您可以编程电缆的对齐,可以确保每个都与连接器完全对齐。

如果您想做网格或拓扑优化,则需要对编程的需求变得更加敏锐。不幸的是,大多数优化通过GUI单击接口实现,并赋予他们的复杂性来定义,通常可以比他们的价值更麻烦。今天,某些程序允许脚本,但它们的API是基于COM(组件对象模型),如您所能想象的,内置于​​' 90s。然而,它'但是,他们甚至提供了这一点。 (谢谢AutoCAD,是我曾经使用过的第一个CAD命令行界面。)

对于现代世界来说,在每种语言中为CAD程序生成SDK客户端,就会产生API客户端的CAD程序。这将允许任何人以任何语言编程。自从学习新的语言是不需要的,它将降低入门障碍。这将允许在CAD程序本身中完成复杂的数学,而不是使用Mathematica,Matlab或Wolfram Alpha。

今天存在一些可编写的CAD程序,并为此过渡铺平道路:ImplicicCAD [ImplicitCad.org],Libfive Studio [LibFive.com],OpenSCAD [OpenScad.org],Cadquery [Github.com],Freecad [FreecadWeb.org [ruckus [github.com]。 Blender [Blender.org]有一个很棒的控制台界面。 Three.js [threejs.org],虽然不是cad定向,也是3D编程语言的另一个伟大典范。 Jonathan Blow' s Jai [Oxide.com电脑]用于编写系统级代码和创建语言思考性能的重要示例。 (这还没有向公众开放,但他已经广泛谈过它。)

大多数机械工程界都与GUI相关联,因此需要从GUI交互产生代码。这与HTML点击GUI非常类似于在后端生成代码的GUI。这允许希望脚本脚本的人员以及想要点击的其他人单击。这两个世界都可以在左侧的快乐代码,右侧呈现,就像一个标记编辑器。

如果CAD程序和底层内核有一个SDK客户端,您可以想象一个丰富的插件和工具兴起的生态系统,就像围绕vscode,vim和emacs的生态系统一样。用于产品的大多数CAD编辑器都关闭,不要允许这种基于社区的开发和共享。可以为任何用例编写插件:例如,网格/拓扑优化和供应链系统集成。这包括用于查找部件的功能,创建BOM(材料账单),以及模型部分的计算交付时间。今天,这通常是在单独的程序甚至电子表格中完成的。

欢迎支持命令+ P功能的插件。在大多数程序中,当您想打印某些内容时,您将命中命令+ p。 (Creo可能对此功能最接近的事情,但缺乏开放的生态系统。)对于机械CAD,当您想打印模型时,底层计划应发现本地网络上的所有3D打印机和机器(或直接插入机器)并发送与要打印的每台机器兼容的模型的部件。这甚至可以进一步参加一个完全自动化的工厂,其中包含机器人,该程序应设置并启动模型和所有部件的组装。

说到3D打印,让' s查看STL文件格式。这种格式在1987年定义,其同名来自立体化,第一种添加剂制造方法。 STL文件表示一系列三角形表面的几何图形。由于STL是VIS-rep格式,因此它不会保留有关内部结构,颜色,纹理或任何其他CAD数据的数据,即B-rep格式将包含的任何其他CAD数据。现代3D打印机创新了STL格式的简单性。例如,要打印全色模型,用户需要VRML(虚拟现实建模语言)文件,或与纹理关联的STL文件,以便打印机将颜色和纹理添加到对象。插件可以确保打印机获得要打印的特定模型的正确数据,而不会转换疼痛,确保没有丢弃材料或纹理。

CAD模型的测试流程通常包括运行模拟。让' s用气流和热量作为例子。

在软件世界中,在推动代码更新后,通常会在更改中运行CI(持续集成),让您和您的队友知道您是否已打破任何或者您的代码是否安全地合并。 CAD应该以同样的方式工作。如果您对模型进行了更改,则您的模拟应该在CI中运行,以便您的队友知道您的代码是否安全合并。大多数这些模拟都是计算密集型的,因此能够将模拟卸载到云或远程服务器也是理想的。

与vscode和其他编辑器有很多用于卸载测试到其他计算机的漂亮插件,现代CAD程序应该具有相同的。

在尝试许多不同的行业CAD程序之后,我发现大多数人都有一个共同的特征:一个看起来它来自' 90s的用户界面。对于机械设计的工具,它是一个讽刺意味的是,用于机械设计的工具没有考虑其用户界面的设计和经验。大多数CAD程序都需要改造,尽管有几个界面设计井的异常值:ShapR3D [ShapR3D.com],iPad应用程序,具有很好的设计和直观的界面; Sketchup [Sketchup.com]有直觉而美丽的设计。

此外,CAD应用程序需要在MacOS,Linux和Windows上是本地性的。为其特定平台构建的本机应用程序比使用电子等构建的更好。 (所说的,vscode是一个很好的电子应用程序。)特别是对于作为CAD的图形的程序,使用底层操作系统图形机制有助于实现最佳性能。如今,CAD程序只能用于该特定程序支持的操作系统。此外,大多数都使用真正展示他们年龄的古老GUI框架。

onshape [onshape.com]通过提供SaaS(软件 - AS-Service)CAD程序来改变模具。这允许昂贵的计算过程轻松卸载到云。这是一个真正的革命性想法,但它限制了用户的能力下线。相比之下,本机应用程序可以脱机工作,但也能够在连接到网络时将工作负载卸载到云。

如果CAD程序可以专注于直观的设计,而不会陷入复杂性的陷阱,这两个用户和专业人士都应该富有成效。正如我将使用Vim为侧面项目以及专业工作,我希望我的CAD工具也可以工作,因为它适用于复杂的项目。许多这种功能通过插件来实现界面设计和可扩展性。

新的CAD计划的开发人员需要通过这些方面思考。没有现有的CAD计划解决了所有这些问题。

世界归功于计算机图形学的惊人创新,为伊万·萨特兰,帕塔哈汉,埃德·帕特梅尔,约翰卡克拉克等许多其他人。我只希望有些真正的革命性变化是以计算机辅助设计的方式领导的,同样的方式是计算机图形公司铺平了渲染,动画和虚拟现实的方式。

硬件行业绝望是一种现代做机械设计的方法。为现代世界创建的一个新的CAD计划将降低建筑硬件的障碍,减少发展时间,并在建筑的新时代。

Jessie Frazelle是氧化物计算机公司的Cofounder和首席产品。在此之前,她在Linux的各个部分工作,包括集装箱,以及去编程语言。

最初在队列卷发布。 19,没有。 2-在ACM数字库中查看此项目

相关:Arvind Narayanan,Arunesh Mathur,Marshini Chetty,Mihir Kshirsagar - 黑暗模式:过去,礼物和未来的黑暗模式是滥用设计师握在手中的巨大力量。随着对黑暗模式的公众意识增长,潜在的辐射也是如此。记者和学者一直在仔细审查黑暗图案,这些暴露的反射可以破坏品牌声誉,并将公司带到监管机构的镜片下。设计是电力。在过去的十年中,软件工程师必须面对他们所持有的权力对用户和社会的责任来说。在这十年中,设计师也要学习这一课的时候了。

Kari Pulli,Anatoly Baksheev,Kirill Kornyakov,Victor Eruhimov - 具有OpenCV电脑愿景的实时计算机视觉是一个迅速增长的领域,致力于分析,修改和高级别了解图像。其目标是确定在相机前发生的事情,并使用该理解来控制计算机或机器人系统,或者为人们提供比原始摄像机图像更丰富或美观令人愉悦的新图像。计算机视觉技术的应用领域包括视频监控,生物识别,汽车,摄影,电影制作,网络搜索,医学,增强现实游戏,新用户界面等。

Julian Harty - 理想地发现自动化测试的可用性错误,所有软件都应该易于使用,可供各种各样的人使用;但是,似乎似乎是现代和直观的软件往往缺乏最基本的可用性和可访问性目标。为什么会发生这种情况?一个原因是有时我们的设计厕所

......