用于格子结构的结点网格划分的制作方法

文档序号:13943537阅读:336来源:国知局

相关申请的交叉引用

本申请根据35u.s.c.§119(e)要求于2015年4月30日提交的美国专利申请no.62/155,348以及于2015年9月9日提交的美国专利申请no.62/215,958的权益,两者标题均为“用于格子结构的结点网格划分”(junctionmeshingforlatticestructures)。

本说明书涉及计算机辅助结构创建,诸如用于与增材制造或其他制造技术一起使用的三维(3d)建模程序的格子结构的生成。



背景技术:

计算机辅助设计(cad)软件已经被开发并用于生成对象的3d表示。这样的软件还包括软件工具,其可以使用各种尺寸、厚度和密度的格子和皮肤来增强3d部件。这样的工具允许快速重新设计3d部件使得重量更轻,同时仍保持期望的性能特征(例如刚性和柔性)。这样的软件工具已经使用了可用于生成可以被制造的内部格子结构的各种类型的格子拓扑。



技术实现要素:

本说明书描述涉及计算机辅助结构创建的技术,诸如用于与增材制造或其他制造方法一起使用的3d建模程序的格子结构的生成。

一般而言,本说明书中所描述的主题的一个或多个方面可以以一种或多种方法来实施,所述一种或多种方法包括:为会聚在格子中的结点处的不同尺寸的各对梁计算入射半径;针对每个梁基于与该梁的对的入射半径确定最大入射半径;比较最大入射半径以找到结点的全局半径;针对每个梁分别计算局部交点和全局交点,其中局部球体由该梁的最大入射半径限定,并且全局球体由结点的全局半径限定;使用局部交点和全局交点以采用用于结点处的梁的承座生成网格划分;以及将梁与结点处的承座连接以形成用于格子的机械坚固结构。

不同尺寸的梁中的每一个都可以是由轴线、第一端梁厚度值和第二端梁厚度值表示的锥形梁,并且可以使用梁厚度的变化和格子内的结点位置来生成格子。每个锥形梁还可以由对应于梁横截面轮廓的横截面二维(2d)形状表示,并且可以使用梁横截面轮廓的变化来生成格子。

计算结点处的梁对的入射半径可以包括:计算该对中的两个梁的梁轴线矢量的叉积,以找到定义其中梁轴线矢量位于结点处的2d平面的法向矢量,在该2d平面中;计算法向矢量与第一梁轴线矢量的叉积,以找到结点处的2d平面中的第一厚度矢量;计算法向矢量与第二梁轴线矢量的叉积,以找到结点处的2d平面中的第二厚度矢量;使用第一厚度矢量、第二厚度矢量和定义两个梁的边缘的数据来计算2d平面内的两个梁的边缘的边缘交点;以及从边缘交点和结点的中心点找到入射半径。

针对每个梁基于与该梁的对的入射半径确定最大入射半径可以包括:确定最大入射半径;以及向所确定的最大入射半径添加余量以产生最大入射半径。采用用于格子中的结点处的梁的承座生成网格划分可以包括:识别在格子中的结点处的三个或更多个梁中的最厚梁;使用参考最厚梁的轴线的立体投影将全局交点投影到垂直于最厚梁的轴线的2d平面;在垂直于最厚梁的轴线的2d平面中的投影点之间产生三角剖分;以及将三角剖分的连接映射到所述三个或更多个梁的局部交点以采用用于格子中的结点处的三个或更多个梁的承座形成网格划分。另外,生成三角剖分可以包括使用约束性delaunay三角剖分(cdt)。

采用用于格子中的结点处的梁的承座生成网格划分可以包括:通过将全局交点和结点处的梁的端点用作输入点计算3d凸包来在全局交点之间生成三角剖分;从三角剖分中移除承座三角形;以及将三角剖分的连接映射到梁的局部交点,以采用用于格子中的结点处的梁的承座形成网格划分。该方法还可以包括为格子中的多个结点执行该方法,其中多个结点具有不同数量的交叉梁,并且多个结点中的至少一个结点仅具有在所述至少一个结点处相遇的两个梁,并且多个结点中的至少一个其他结点具有在该其他结点处相遇的三个或更多个梁。

该方法可以包括为每个梁承座点生成和使用局部半径。确定三个或更多个梁中的每一个的最大入射半径可以包括针对三个或更多个梁中的每个梁的三个或更多个角线中的每个角线基于该角线的梁与通过三角剖分跟该角线的承座点连接的梁的对的入射半径确定最大入射半径。此外,计算局部交点可以包括针对三个或更多个梁中的每个梁的三个或更多个角线计算局部交点,其中局部球体由每个各自梁的三个或更多个角线中的每个角线的最大入射半径限定。

该方法可以包括:使用多个点、边缘和三角形来细分承座之间的边缘;以及使用将边缘的两个承座点和梁角线的交点作为混合函数的三个控制点的混合函数来确定细分点的半径。采用用于格子中的结点处的梁的承座生成网格划分可以包括:使用全局交点生成三角剖分,三角剖分是不同梁的角线之间的边缘;细分不同梁的角线之间的边缘以形成细分点;以及使用混合函数为每个细分点确定新位置,每个新位置比该细分点的先前位置更接近结点的中心点。

根据另一方面,一种系统可以包括:具有存储在其上的三维(3d)建模程序的指令的非临时性存储介质;以及一个或多个数据处理装置,配置为运行3d建模程序的指令以执行该方法的各个操作。另外,该系统可以包括增材制造机器,其中所述一个或多个数据处理装置配置为运行3d建模程序的指令,以生成包括该格子的对象的3d模型并且将该3d模型输出到所述增材制造机器,用于对具有其中包括格子的结点的机械坚固结构的对象进行增材制造。

本说明书中描述的主题的特定实施例可以被实施以实现以下优点中的一个或多个。为了在待制造的对象的3d模型的部分中使用,可以为格子中的梁结点快速生成结点网格划分(例如,三角形网格)。所得到的格子结构可以是机械坚固的,并且就材料使用而言具有接近最佳(或最佳)的结点,而不需要过多的处理时间。用于为格子结构生成网格的算法可以处理结点处不同数量的梁,其中梁可以具有不同的尺寸和形状,并且可以以任意角度彼此连接。这可以允许将更多的可变性(例如,在格子内的梁和结点的多个方面的设计自由度)添加到格子结构,这可以增加所制造的结构的强度。另外,格子结构的可变性的增加可以用于实现结构的其他改进,例如,在格子内的梁和结点的多个方面的伪随机变化可以导致骨生长连接到可植入装置的格子结构中的增加的促进,而不会牺牲内部结构强度或可制造性,并且不会引入过于密集的计算过程。当格子结构中有数十万个梁时,这可能具有实质意义。对于任意角度和厚度的锥形梁之间的机械坚固的结点,可以实现三角网格的直接和快速生成,并且具有接近最佳的材料使用和受控数量的多边形。此外,可以通过细分机构以受控的方式增加多边形的数量和网格划分的准确性。

在本说明书中描述的主题的一个或多个实施例的细节在附图和下面的描述中阐述。从说明书、附图和权利要求书中,本发明的其它特征、方面和优点将变得显而易见。

附图说明

图1示出了可用于设计和制造梁尺寸和位置随机或任意变化的格子结构的系统的示例。

图2a示出了用于生成格子的梁的示例。

图2b示出了在结点网格划分之前的格子的一部分的示例,其中梁有变化。

图2c-2e示出了在结点处的三个梁及其连接的二维(2d)表示。

图3a示出了生成结点网格划分以连接3d格子中的梁的过程的示例。

图3b示出了从一组的四个梁找到两个梁的入射平面的示例。

图3c示出了找到两个梁的厚度矢量的示例。

图3d示出了与由半径限定的球体相交的梁的示例。

图4a示出了采用用于将梁连接到3d格子中的结点的承座计算结点网格划分的过程的示例。

图4b示出了使用立体投影将主梁的点投影到2d平面上的示例。

图4c和4d示出了使用约束性delaunay三角剖分(cdt)方法对2d平面上的梁承座的投影之间的区域进行三角剖分以用于对结点进行网格划分的示例。

图4e和4f示出了结点的最后网格划分的示例。

图5a示出了采用用于将梁连接到3d格子中的结点的承座计算结点网格划分的过程的另一示例。

图5b示出了与结合图4a描述的方法相比,结合图5a描述的方法的潜在优点。

图6示出了计算承座点的局部半径的示例,示出了角线、承座点和承座点之间的三角剖分(边缘)。

图7a和7b示出了使用两个梁角线的交点作为混合函数的中间控制点的示例。

图8是数据处理系统的示意图。

各个附图中相同的附图标记和标号表示相同的元件。

具体实施方式

图1示出了可用于设计和制造梁尺寸和位置随机或任意变化的格子结构的系统100的示例。在所示的示例中,使用增材制造机器,但是本发明不限于与特定类型的制造系统一起使用。例如,本文描述的系统和技术可以与各种类型的增材制造(am)、三维(3d)印刷、减制造(sm)、熔模铸造等一起使用。

计算机110包括处理器112和存储器114,并且计算机110可以连接到网络140,网络140可以是专用网络、公共网络、虚拟专用网络等。处理器112可以是一个或多个硬件处理器,每个处理器可以包括多个处理器核心。存储器114可以包括易失性和非易失性存储器,诸如随机存取存储器(ram)和快闪ram。计算机110可以包括各种类型的计算机存储介质和设备,其可以包括存储器114,以存储在处理器112上运行的程序的指令。

这样的程序可以包括3d建模程序116,其可以本地地在计算机110上运行或者远程地在一个或多个远程计算机系统150的计算机上运行(例如,计算机110经由网络140可访问的一个或多个第三方提供者的一个或多个服务器系统)。3d建模程序116在计算机110的显示设备120上呈现可以使用计算机110的一个或多个输入设备118(例如,键盘和鼠标)来操作的用户界面(ui)122。注意,虽然在图1中示出为分开的设备,但是显示设备120和/或输入设备118也可以彼此集成和/或与计算机110集成,例如在平板电脑中。

用户190可以与3d建模程序116交互以创建3d模型132。这可以使用已知的图形用户界面工具完成。3d模型包括可以使用实体模型(例如体素)或表面模型(例如,b-rep(边界表示)、表面网格)来定义的部分134(其是传统3d模型组件)。另外,程序116的ui122可以允许用户190提供指定要在其中生成格子136的3d模型的一个或多个区域的输入。例如,在一些实施方式中,用户190可以定义b-rep并且指定在该b-rep的一侧上包括的一般类型的格子,然后计算机110可以自动生成完整格子136,包括将变化添加到格子136的内部结构。在一些情况下,变化可以是完全任意的,并且在其他情况下,变化可以由一个或多个因素控制,例如格子136的部分与3d模型132内的指定(一个或多个)位置或(一个或多个)表面多近或格子中的一些梁需要如何承受不同方向的负荷。在一些实施方式中,格子136可以随着梁形状和类型、长度、厚度、相对于结点的取向以及这些的组合的随机(或伪随机)变化来生成。

在所示的示例中,3d模型是髋臼杯,其是放置在髋臼中的髋关节置换植入物的一部分,因此添加格子136以改善髋骨生长到髋臼杯中且因此与之附接的能力。这只是可以使用格子结构设计和改进的许多可能的3d模型之一。例如,利用增材制造系统和技术,通过用格子结构替换零件的内部区域,有机会使零件更轻更强。另外,使用下面进一步描述的系统和技术,这样的格子结构可以通过改进的结点网格划分自动创建。

3d建模程序116还可以促进对3d模型132的操纵,其可以包括添加、删除或改变模型132的组件134,包括与格子136相交的组件,并且还包括改变格子的范围和包含(例如,通过定义格子结构136的包含包络)。一旦用户190对模型132及其格子136满意,则3d模型132及其格子136可被存储为文档130和/或用于生成模型(其中包括格子136)的另一表示(例如用于增材制造的.stl文件)。这可以根据用户190的请求或者根据用户对另一个动作的请求来完成,诸如将3d模型132发送到am机器170或可以直接连接或经由网络140连接到计算机110的其他制造机器,如图所示。这可涉及在本地计算机110或云服务上执行的后处理,以将3d模型132导出到要从中制造的电子文档。请注意,电子文档(为简洁起见将简称为文档)可以是文件,但不一定对应于文件。文档可以存储在保存其他文档的文件的一部分中、专用于所讨论的文档的单个文件中或多个协调的文件中。

在任何情况下,3d建模程序116都可以创建(一个或多个)3d模型组件134和格子136的组合的准确表示,并且向制造机器170提供(适当格式的)文档160以创建完整的结构180,包括格子结构185。制造机器170可以采用一种或多种增材制造技术,诸如粒状技术(例如,选择性激光烧结(sls)和直接金属激光烧结(dmls))、挤出技术(例如熔融沉积模型化(fdm))或者减法或任何其他计算机辅助制造方法。另外,用户190可以保存或传送3d模型132(包括其格子136)以备后用。例如,3d建模程序116可以存储包括3d模型132及其格子136的文档130。

图2a示出了用于生成格子的梁200的示例。梁200具有限定梁200的轴线206的两个梁端点202、204。梁还具有形状(或类型)208,在这个示例中是方形的。其他形状也是可能的,如下面进一步详细描述的。梁200是具有方形横截面和两个不同的端部厚度214、216的锥形梁。要理解的是,存在多种不同的方式来在存储器中表示梁200。例如,梁200可以由端点202、204、形状/类型208和厚度214、216表示,并且从该存储的数据,可以很容易计算角(例如角210)和角线(例如角线212)。此外,在同一格子中可以使用许多不同类型的梁(无论是横截面形状还是尺寸允许的变化)。另外,格子中的梁可以使用梁厚度、梁侧面数量(横截面轮廓)和其相对于与格子内的其它梁的结点的取向的随机或任意变化来生成。

图2b示出了在结点网格划分之前的格子220的一部分的示例,其中梁有变化。如结点230处所示,格子220可以包括以任意角度彼此连接的许多不同类型的梁。不同类型的梁可以包括具有三角形、矩形、五边形或六边形横截面的梁。梁的尺寸可以沿着它们的长度变化,并且因此也在它们在结点处相遇的端点处变化。此外,在结点处相遇的梁的数量也可以在不同的格子上以及在相同的格子内变化。为具有这样的梁的格子结构生成网格可以是计算密集的过程,特别是当在格子结构中有数十万个梁时。

在格子的结点处生成网格的当前方法是基于使用对b-rep、多边形网格或梁的csg(构造实体几何)表示的布尔运算。对来自b-rep和csg方法的结果进行网格划分,以及对多边形网格进行布尔运算都是计算成本高昂的。此外,这样的方法可能产生具有需要填充、混合、切割和/或倒角的脆性锐角和空隙的退化结点。

例如,图2c示出了三个不同梁242、244、246在结点240处相遇的2d表示。梁242、244、246的端点全部在交叉中心248处相遇,并且如图所示,由于它们相对于彼此的不同尺寸以及它们相对于交叉中心248的不同取向,梁具有不同的重叠量。如图2d所示,当梁用传统的布尔操作方法连接时,所得到的结点250包括锐角252、254,其可以使格子结构中的连接变脆。另外,所得到的结点250可以包括空隙256,其可以显着降低结点的机械强度。

为了消除这种空隙和锐角,可以使用额外的处理操作来填充、混合、倒圆角、倒角等,以产生接近最佳的连接结点260,如图2e所示,其机械坚固、材料使用最佳。这些额外的操作可能需要使用传统方法的大量处理能力。但是这种方法可用于均匀的格子结构,因为结点可以被计算和划分网格一次,然后复制格子中的所有结点。然而,当梁的厚度、角度和格子拓扑结构在格子结构上不均匀时,例如可变的厚度、随机生成的格子等,这种方法通常不可行并且可扩展到数十万个梁的格子。

图3a示出了生成结点网格划分以连接3d格子中的梁的过程的示例。可以找到最大厚度的梁300,这被称为结点的主梁。如图2a所示,每个锥形梁200对于每个端部具有不同的厚度值214、216。由于每个结点都是通过在一端连接一组梁而形成的,并且每个结点都具有中心,即所有梁在该结点处会聚的轴线的入射点,所以直接在结点处找到具有最大厚度的梁,即该结点的主梁。即使当梁具有不同的形状时也是如此,因为每个梁的厚度可以以与其它类型的梁相当的方式测量。一般来说,该算法基本上适用于格子结构中的任何梁轮廓混合,并且虽然不需要明确选择最厚的梁,但选择最厚的梁可以为三角剖分提供更好的结果。在一些实施方式中,可以使用常规梁轮廓(例如,方形轮廓),并且可以定义具有相同横截面面积的理想圆形轮廓,其中该理想轮廓然后被离散成规则的多边形轮廓,3、4、5...边保持横截面积等于原始的方形轮廓。

还要注意的是,找到300主梁被示出和描述为结点的第一操作,但它不必是第一操作或明确的单独操作。例如,找到主梁可以作为给在格子中的结点处会聚的不同尺寸的各对梁计算入射半径的过程的一部分。此外,在一些实施方式中,根本不需要找到主梁。

另外,在此描述的用于给每个结点处的各对梁计算入射半径的过程可以处理会聚在结点处的任何数量的梁,包括只有两个梁在结点处会聚的情况。要理解的是,会聚在结点处的更多的梁意味着在结点处的更多的梁对,即两个梁导致一个对,三个梁导致三个对,四个梁导致六个对,五个梁导致十个对,六个梁导致十五个对等。通常,结点处的x个梁导致x!/(x-2)!/2个对。

对于要处理的下一个梁对,可以通过确定梁轴线矢量的叉积来找到302它们的轴线的2d平面,即所谓的入射平面。图3b示出了从一组的四个梁轴线332、334、336、338找到两个梁轴线336、338的入射平面340的示例。还示出了两个梁轴线336、338之间的角度342,以及平面340的法向矢量。通过定义,根据叉积,平面340包括两个梁轴线336、338中的每一个,并且垂直于两个梁轴线336、338中的每一个。

然后可以通过分别确定入射平面的法向矢量和每个梁的轴线矢量的叉积而在2d平面上找到304该对的每个梁的厚度矢量。此外,使用这些矢量、梁长度和梁端部处的厚度值,可以确定每个梁的相关角。图3c示出了使用轴线矢量360、362和垂直于图的平面并在结点的中心点350处从页面指向外的法向矢量来为两个梁找到厚度矢量352、354、356、358的示例。使用这些矢量,可以找到角点364、366、368、370,并且可以从连接角364、368和角366、370的梁的角线找到306交点372。

从该交点372的坐标可以计算308这对梁之间的入射半径。交点372与结点的中心点350之间的距离是这对梁的入射半径。当在结点处有更多可用的梁对310时,继续计算每个这样的梁对的入射半径的过程。

一旦已经确定了在结点处每个梁对的入射半径,就可以确定312结点处每个梁的最大入射半径。这包括对于每个梁来说检查哪个梁的入射半径是该梁的最大入射半径。请注意,对于包括梁的每个对,将有一个入射半径。在仅有两个梁的结点的情况下,将只有一个对,因此只有一个入射半径,但是找到最大值的过程也可以被编程来处理这种情况。

另外,可以为每个梁的所确定的最大入射半径添加余量以产生每个相应梁的最大入射半径。例如,确定的最大入射半径的长度可以增加5%或2mm。在各种实施方式中,其他百分比增加也是可能的,以及无论增加了余量的当前半径的长度而增加的恒定量也是可能的。在任何情况下,每个梁的得到的最大入射半径被称为该梁的局部半径。这在可以用来定义围绕结点中心点的球体的意义上是半径,而且在以下的意义上是局部的,即该梁与该特定结点处相遇的其他梁的所有局部交点将在这个球体上。

可以比较314结点处的各种梁的最大入射半径,以找到最大的,这被称为全局半径,即局部半径中的最大的被用作结点的全局半径。然后可以为结点处的每个梁计算316局部交点和全局交点。局部交点是3d空间中的点,其中给定的梁角线与该梁的局部球体相交,局部球体由该梁的局部半径限定。全局交点是3d空间中的点,其中给定的梁角线与结点的全局球体相交,全局球体由结点的全局半径定义。

图3d示出了与由半径限定的球体384相交的梁380的示例。球体384可以依次代表全局球体和各个局部球体的每一个。使用球体的半径和梁380的已知角线,可以确定梁交点382。相应球体的交点382可以用于采用用于结点处的梁的承座生成318网格划分。此外,梁可以与结点处的承座连接320以形成用于格子的机械坚固结构。可以使用各种方法来生成网格划分和连接梁,包括下面进一步描述的那些。虽然有额外的结点需要处理322,但该方法可以为下一个结点在300处继续。

图4a示出了采用用于将梁连接到3d格子中的结点的承座计算结点网格划分的过程的示例。如上所述,可以在这里或在之前的过程识别主梁(即,结点处最厚的梁)。结点和所有梁可以重新定向400,使得主梁在+z方向上离开结点。可替代地,可以采用新的参考系来实现相同的结果。

参考主梁的轴线,可以使用402立体投影来将全局交点投影到垂直于主梁的轴线的2d平面。图4b示出了使用立体投影将主梁的点投影到2d平面420上的示例。示出了主梁与全局球体412的交点410,其中主梁已经被定向为使其轴线与z方向对准。因此,2d平面420是x-y平面。立体投影用主梁的轴线与球体412的交点414上的光源将全局球体412(以结点中心为中心)的表面上的所有点(例如,点416)投射到在主梁轴线和球体的另一交点处垂直于主梁轴线的x-y2d平面420上,得到xy平面420上的投影点(例如,投影点418)。如图所示,点416是另一梁的角线与全局球体412的交点。因此,由于每个梁角线在某个位置处与全局球体412相交,所以可以使用投影来为每个梁与全局球体412的每个交点给出2d映射。

图4c示出了与全局球体的相交的六个梁到x-y2d平面420上的立体投影的示例。如图所示,因为主梁的交点位于全局球体的最顶部,并且考虑到立体投影的性质,所以主梁交点的投影422必然包含其余五个梁交点的投影424。请注意,这里示出的梁的特定投影形状仅仅是示例。如上所述,梁可以具有不同数量的边以及不同且甚至不规则的横截面形状。

在确定这些投影点的情况下,可以生成404垂直于主梁的轴线的2d平面420中的投影点之间的三角剖分。例如,这可能涉及使用约束性delaunay三角剖分(cdt)。图4d示出了使用cdt方法对2d平面上的梁投影之间的空间进行三角剖分的结果的示例。如图所示,已经在梁全局交点的2d平面中的投影之间建立了连接线426,并且这些连接线可以用于采用用于梁的承座为结点建立三角形网格。

三角剖分的连接可以被映射406到梁的局部交点以采用用于格子中的结点处的梁的承座为结点形成网格划分。请注意,连接线426表示在结点处各个梁的各个角线之间的关联。这些关联因此可以用于在梁的对应的局部交点(承座点)之间的原始3d空间中生成连接线。

然后与每个梁的右承座的结点网格划分准备好,并且可以通过将梁端点移动到梁承座点并将它们合并在一起(使用每个梁角线和每个局部交点之间的关联)来将梁端部简单地连接到其相关的承座。图4e和4f示出了分别具有正方形和八角形横截面形状的梁之间的结点的最终网格划分的两个示例430、440。

图5a示出了采用用于将梁连接到3d格子中的结点的承座计算结点网格划分的过程的另一示例。全局交点之间的三角剖分可以通过计算500全局交点的3d凸包来生成。这创建了结点处各个梁的各个角线之间的关联,而不使用2d投影映射。请注意,这种技术创建的三角形也将覆盖正在创建的承座,所以这些承座三角形可以被移除502。可以在三角剖分的连接被映射504到梁的局部交点之前或之后完成该移除502,以采用用于格子中的结点处的梁的承座形成网格划分。在一些实施方式中使用这种方法可以提高计算效率。

另外,在一些实施方式中,结点处的梁的端点和全局交点可以被用作凸包3d计算的输入。计算结点网格划分的这种方法允许在步骤500中将通常位于结点内的梁端角点添加到凸包中,以便在可以找到穿过结点中心的平面(所有梁在该平面的同一侧)的情况下生成合理的结点形状。图5b示出了与结合图4a所描述的可以生成具有两个梁的输出520的方法(或者不添加梁端角点)相比,结合图5a描述的可以产生具有两个梁的输出530方法中添加梁端角点的潜在优点。

此外,无论使用哪种方法来计算结点网格划分,在一些实施方式中,每个梁承座点可以具有其自身的局部半径。为了计算梁承座点的局部半径,可以在此承座点与这些梁的承座点之间存在边缘(在三角剖分中)的所有梁生成列表。然后,可以将该梁的入射半径与该列表中的每个梁比较以找到最大值。梁承座点的局部半径等于所有这些入射半径的最大值。

图6示出了角线、承座点、和承座点之间的三角剖分(边缘)的示例,以及承座点的局部半径的计算。梁630的承座点605与梁620和640的承座点具有边缘。一般的规则是承座点的局部半径可以是该梁与所有梁(该承座点与所述所有梁具有边缘)的入射半径的最大值。因此,承座点605的局部半径是梁630和620的入射半径与梁630和640的入射半径之间的较大值。类似地,对于仅与一个其他梁(620)具有边缘的梁630的承座点610,该梁承座点的局部半径是梁620和梁630的入射半径。在所示的特例中,因为承座点仅与一个其他梁具有边缘,所以最大值等于该梁620和梁630的单个入射半径。另外,每个承座点可以沿着相应的梁角线移动到距离结点中心的该半径距离。这可以提高结点的材料效率(体积)。

另外,可以使用多个细分点(图7a中的点划线圆,诸如细分点715)来细分承座之间的边缘(因此三角形)(图7a中的点划线),并且可以使用诸如贝塞尔曲线等混合函数来确定每个细分点的半径(距结点的中心的距离)。混合函数的端控制点可以是每个原始边缘的两个承座点,例如图7a中的点720和710,它们也在图7b中示出。中间控制点可以是两个梁角的交点,例如图7b中的点730。

图7b示出了使用两个梁角线(与局部球体表面)的交点作为混合函数的端控制点的示例。两个梁的角线的交点730被定义为两个角线之间的最短距离的中点。混合函数在3d空间中给出曲线740,并且承座点710和720之间的原始边缘750上的细分点715的新位置725可以通过该曲线使用细分点距承座点的比例距离来确定。这允许在梁承座之间的边缘的细分重复多于一次导致许多细分点的情况下指定边缘之间的任何数目的细分点的新位置。

图8是包括数据处理装置800的数据处理系统的示意图,数据处理装置800可以被编程为客户端或服务器。数据处理装置800通过网络880与一个或多个计算机890连接。尽管在图8中仅示出了一台计算机作为数据处理装置800,但可以使用多台计算机。数据处理装置800包括各种软件模块,其可以分布在应用层和操作系统之间。这些可以包括可执行的和/或可解释的软件程序或库,包括3d建模程序804的工具和服务,如上所述。所使用的软件模块的数量可以在不同实施方式中彼此不同。此外,软件模块可以分布在由一个或多个计算机网络或其他合适的通信网络连接的一个或多个数据处理装置上。

数据处理装置800还包括硬件或固件设备,包括一个或多个处理器812、一个或多个附加设备814、计算机可读介质816、通信接口818和一个或多个用户接口设备820。每个处理器812能够处理用于在数据处理装置800内执行的指令。在一些实施方式中,处理器812是单线程或多线程处理器。每个处理器812能够处理存储在计算机可读介质816上或诸如附加设备814中的一个的存储设备上的指令。数据处理装置800使用其通信接口818例如通过网络880而与一个或多个计算机890进行通信。用户接口设备820的示例包括显示器、相机、扬声器、麦克风、触觉反馈设备、键盘和鼠标。数据处理装置800可以存储实施与上述模块相关的操作的指令,例如在计算机可读介质816或者一个或多个附加设备814上(例如软盘设备、硬盘设备、光盘设备、磁带设备和固态存储设备中的一个或多个)。

本说明书中描述的主题和功能操作的实施例可以以数字电子电路或计算机软件、固件或硬件来实现,包括本说明书中公开的结构及其结构等同物,或它们中的一个或多个的组合。本说明书中描述的主题的实施例可以通过使用在计算机可读介质上编码的计算机程序指令的一个或多个模块来实现,以便由数据处理装置执行或者控制数据处理装置的操作。计算机可读介质可以是制造的产品,诸如计算机系统中的硬盘驱动器或通过零售渠道销售的光盘,或嵌入式系统。计算机可读介质可以被分开地获取,并且随后被计算机程序指令的一个或多个模块编码,诸如通过在有线或无线网络上递送计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、或者它们中的一个或多个的组合。

术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机、或多个处理器或计算机。除了硬件以外,该装置还可以包括为所涉及的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、运行时间环境或者它们中的一个或多个的组合的代码。另外,该装置可以采用各种不同的计算模型基础结构,诸如网络服务、分布式计算和网格计算基础结构。

计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言、声明性或过程语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或适用于计算环境的其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,专用于所讨论的程序的单个文件中,或者存储在多个协调文件中(例如,存储一个或多个模块、子程序或部分代码的文件)。计算机程序可以部署以在一台计算机上或多台计算机上执行,这些计算机位于一个站点或跨多个站点分布并通过通信网络互连。

本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并产生输出来执行功能。过程和逻辑流程也可以由专用逻辑电路执行,且该装置也可以实施为其,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。

适用于执行计算机程序的处理器例如包括通用和专用微处理器以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本要素是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),或可操作地联接以从其接收数据或向其传输数据,或二者兼有。然而,计算机不需要这样的设备。此外,可以将计算机嵌入到另一设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏机、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪存驱动器),仅举几例。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器件,包括例如半导体存储器件,例如eprom(可擦除可编程只读存储器)、eeprom(电可擦除可编程只读存储器)和闪速存储器件;磁盘,例如内部硬盘或可移动盘;磁光盘;以及cdrom和dvd-rom磁盘。处理器和存储器可由专用逻辑电路补充或并入其中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有显示装置的计算机上实现,例如用于向用户显示信息的crt(阴极射线管)或lcd(液晶显示器)监视器,以及键盘和指示设备,例如鼠标或轨迹球,用户可以通过该设备向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器之间的关系是通过在各个计算机上的计算机程序运行并且彼此具有客户端-服务器关系而产生的,。本说明书中描述的主题的实施例可以在包括后端组件(例如作为数据服务器)或包括中间件组件(例如应用服务器)或包括前端组件(例如,具有图形用户界面或web浏览器的客户端计算机,用户可以通过其与本说明书所描述的主题的实施方式交互)或者一个或多个这样的后端、中间件或前端组件的任何组合的计算系统中实现。系统的组件可以通过数字数据通信的任何形式或介质(例如通信网络)互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、网间网络(例如因特网)和对等网络(例如,自组对等网络)。

虽然本说明书包含许多实施细节,但是这些不应该被解释为对本发明的范围或可以要求保护的范围的限制,而是作为对本发明的特定实施例特有的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各个特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,虽然特征可以在上面描述为以某些组合起作用并且甚至最初要求如此,但是来自所要求保护的组合的一个或多个特征可以在一些情况下从该组合中删除,并且所要求保护的组合可以针对子组合或变型的子组合。

类似地,虽然以特定顺序在附图中描绘操作,但是这不应被理解为要求以所示的特定顺序或按顺序执行此类操作,或者执行所有所示的操作以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中要求这样的分离,并且应当理解,所描述的程序组件和系统通常可以集成在单个软件产品中或被打包到多个软件产品中。

因此,已经描述了本发明的特定实施例。其他实施例在所附权利要求的范围内。另外,权利要求中列举的动作可以以不同的顺序执行,并且仍然实现期望的结果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1