一种型腔通道最小尺寸计算方法与流程

文档序号:22242662发布日期:2020-09-15 19:57阅读:173来源:国知局
一种型腔通道最小尺寸计算方法与流程

本发明属于数控加工工艺规划领域,涉及一种型腔通道最小尺寸的计算方法。



背景技术:

部分型腔的加工工艺方案涉及通道的粗加工、半精加工以及精加工等一系列工序。通常在型腔的粗加工过程中,尽可能使用尺寸较大的刀具进行加工。相对于尺寸小的刀具,尺寸大的刀具刚度和强度较好,且使用尺寸大的刀具进行加工可以提高加工效率。对一个型腔中通道最小尺寸的计算对于加工刀具尺寸的选取具有重要的参考价值,同时也对工艺路径的规划具有重要的作用。

文献“基于几何特性的槽加工刀具选取算法,计算机辅助设计与图形学学报,2010,22(11):1984-1989+1997”中公开了一种通道最小尺寸计算方法。该方法首先通过使用voronoimountain方法对型腔底面外轮廓和内轮廓分别向内和向外45度拔模并形成拔模体;然后找出所有拔模体中非相邻轮廓形成的侧面在顶部聚集后形成的线;最后在这些线中找出距离底面最近的一条并计算出其距底面的距离,该距离即为通道最小尺寸。文献所述的方法需要进行拔模操作,导致该方法计算复杂度较高,尤其当底面轮廓中包含复杂曲线时,其拔模体生成会很困难;同时,该方法并没有解决具有底角的型腔通道最小尺寸的计算问题。



技术实现要素:

要解决的技术问题

为了避免现有技术的不足之处,本发明提出一种型腔通道最小尺寸计算方法。本发明所提供的计算方法能够精确地且较为快速地计算出复杂型腔中通道的最小尺寸,并为后续加工刀具的选择以及加工工艺的规划提供一定的依据。

技术方案

一种型腔通道最小尺寸计算方法,其特征在于步骤如下:

步骤1:提取型腔必要信息:一个型腔看作由一个底面和若个干轮廓面组成,从中提取出底面,并构建底面所包含的信息:

bottomface={facematterside,loops}

式中:bottomface表示底面所包含的属性信息;facematterside表示底面的材料侧,底面的材料侧指三维cad模型中模型材料与底面的位置关系;loops表示所有限定底面的环的集合,其中环是一组由顶点连接起来的边;每个底面的loops中包含一个外环以及若干个内环:

loops={outerloop,innerloop1,innerloop2,...,innerloopn}

其中outerloop表示外环,innerloopi表示第i个内环,其中0<i≤n;分别提取出外环和内环中的每一条边,并获取其中包含的信息:

edge={edgematterside,edgeconvexity,edgepointset,edgerevert}

式中:edge表示边中所包含的属性信息;edgematterside表示边的材料侧,边的材料侧表示底面中模型材料与边的位置关系;

凹边线簇是指在一个环内一组由若干个按顺序直接相连的凹边所组成的集合;凹边线簇信息构建如下:

concaveedges={edges,edgespointset,openpath,outerorinner}

式中:concaveedges表示凹边线簇的属性信息;edges表示组成凹边线簇的所有边的集合,edges={e1,e2,e3,...,en},ei表示组成凹边线簇的第i条边,其中0<i≤n;edgespointset表示将凹边线簇中每条边的离散化点集合并后按照一定顺序重新排列得到的新的有序点集,即凹边线簇的路径,edgespointset={p1,p2,p3,...,pn},pi表示第i个离散化点,其中0<i≤n;openpath为凹边线簇路径开闭的标识,当凹边线簇路径首尾不相连时即认为其是开放路径,反之,当凹边线簇路径首尾相连时即认为其是闭合路径;outerorinner表示该凹边线簇包含在外环中还是内环中;

对于没有底角的型腔,首先分别提取出型腔底面的外环和内环;之后,如果外环或者内环中包含凸边,则分别将这些凸边剔除并得到多个由凹边组成的集合;最后,对凹边集合中的边线按照一定顺序进行排列得到一个或多个凹边线簇;对于有底角的型腔,需要继续对获取到的凹边线簇进行处理:首先,分别获取凹边线簇中的每一条边所在的圆角面;之后,在该圆角面的轮廓上获取所有与该边不直接相邻且为凹边的边;然后,判断获取到的边是否与其对应在凹边线簇中的边方向一致,如果不一致,则翻转该边的方向;最后,将获取到的边对应在凹边线簇中的边除去edgepointset属性的其余属性均赋予该边,依次对凹边线簇中的边进行上述处理并得到一个新的凹边线簇;对这些凹边线簇中每一条边进行离散化处理并得到一系列点,将这些点投影到二维平面上并获取其坐标;在离散化过程中仅对曲边进行离散化,对于直线边,仅提取其起点和终点;

步骤2:对边的离散化点进行排序并得到每个凹边簇的原始路径;对步骤1从凹边线簇中获取到的点按照一定的顺序进行排列;对于一个包含n条边的凹边线簇,需要通过以下方法进行排序:首先获取凹边簇中的第一条边的离散化点集edgepointset1和第二条边的离散化点集edgepointset2,判断edgepointset1的起点是否与edgepointset2的起点或者终点重合,如果重合,则翻转edgepointset1中点的排列方向,并记该边的属性edgerevert=-1,反之,不执行翻转操作,并记edgerevert=1;然后分别计算出edgepointset1的终点到edgepointset2起点的距离d1和到edgepointset2终点的距离d2,若d1>d2,则翻转edgepointset2中点的排列方向,并记该边的属性edgerevert=-1,若d1<d2,不执行翻转操作,并记该边的属性edgerevert=1;最后,获取凹边线簇中第i条边的离散化点集edgepointseti,其中2<i≤n,分别计算出第i-1条边的点集edgepointseti-1的终点到edgepointseti起点的距离di1和到edgepointseti终点的距离di2,若di1>di2,则翻转edgepointseti中点的排列的方向,并记该边的属性edgerevert=-1,若di1<di2,不执行翻转操作,并记该边的属性edgerevert=1;通过上述方法分别对环中每个凹边线簇进行处理,最终每一个凹边线簇都会得到一组与之对应的有序点集合,即凹边线簇的原始路径edgespointset;

步骤3:对凹边线簇的原始路径使用clipper库中的偏置函数进行处理;对一个底面中包含的所有凹边线簇原始路径进行偏置,并给定偏置距离f;

情况一:对型腔中仅由凹边组成的环进行偏置;此时每个环中仅包含一个凹边线簇,且凹边线簇的原始路径属于闭合路径;对于外环,则使用clipper库中的偏置函数对该环的凹边线簇原始路径向内偏置f;对于内环,则向外偏置f;

情况二:对型腔中包含凸边的环进行偏置;当环中包含凸边时,则该环会包含一个或者多个凹边线簇;使用clipper库中的偏置函数对其中一个凹边线簇的原始路径edgespointset进行偏置得到新的路径c1,c1仍然为一系列有序点组成的集合;环中包含的凹边线簇均为开放路径,在使用clipper库对其进行偏置时,会向edgespointset的两侧同时偏置f的距离,但实际上只需要保留其在边线材料侧一面的偏置结果;通过判断偏置后生成的点与凹边线簇原始路径edgespointset的相对位置是否与边线材料侧相同来对这些点进行取舍,如果相同,则保留该点,如果不相同,则舍弃;具体而言:

1.边线的材料侧分为左侧或者右侧,因此,对偏置后生成的点位于凹边线簇原始路径edgespointset的左侧还是右侧进行判断;对于偏置后路径c1上的任意一点p(x,y,0),找到距离其最近的原始路径c0上的点p0(x0,y0,0),如果p0不是原始路径的终点,则在原始路径上找到与p0相邻的后一个点p1(x1,y1,0),定义向量如果p0是原始路径c0的终点,在原始路径上找到与p0相邻的前一个点p2(x2,y2,0),定义向量则当向量的z轴坐标值大于零时,认为p在原始路径c0的左侧,并给定一个标记sign=1;小于零时,认为p在原始路径c0的右侧,并给定一个标记sign=-1;等于零时,认为p在原始路径上,并给定一个标记sign=0;

2.依次判断偏置后的路径c1中每一个点与原始路径edgespointset的相对位置是否与原始路径edgespointset中每个点对应边线的材料侧一致;获取edgespointset中每个点对应边线的属性,如果edgerevert×edgematterside×facematterside=sign,认为该点位置与边线材料侧一致;如果edgerevert×edgematterside×facematterside≠sign,则认为该点位置与边线材料侧不一致;保留所有位置与边线材料侧一致的点得到一个新的点集s0;

3.找到点集s0中正确的起点和终点,并对s0中的点按照一定顺序重新进行排列后与原始路径edgespointset相连形成新的路径c4;具体而言,首先在s0中分别找到距离原始路径edgespointset的起点ps和终点pe距离在r1和r2之间的点,r1=f+a,r2=f-a,其中f为偏置距离,a为容错范围,a的取值为c1中距离最近的两点之间的距离值;之后,将通过上述方法获取到s0中所有可能的起点与终点并分别放入到起始点集合ps和终止点集合pe中,读取ps中的点pi,在pe中找与该点直接相邻的点pj,如果pj存在,则将pi作为起点,pj作为终点,如果pj不存在,则继续读取ps中的下一个点并重复上述步骤直至找到起始点和终止点;然后,将获取到点集s0的起点和终点分别放到的第一位和最后一位,并对s0中其余点按照之前的顺序进行排列得到新的路径c3;最后,分别计算出c3的终点到原始路径edgespointset起点的距离ds和到edgespointset终点的距离de,若ds>de,则对c3中的点以相反的方向重新进行排列,若ds<de,不进行任何操作,将路径c3与路径edgespointset相连得到一个闭合路径c4;此时完成对其中一个凹边线簇的偏置,然后使用同样的方法分别对其余的凹边线簇偏置f的距离;

对这些凹边线簇偏置完成后,判断偏置后的路径是否发生相交;经过偏置后的路径如果与其他路径相交或者出现自相交,则路径的数目会发生改变;待偏置原始路径的数目为n0,偏置后的路径数目为n1,如果n0=n1,即认为未出现相交;如果n0≠n1,认为出现相交;具体偏置过程如下:

给定初始偏置距离f1=d0,如果第一次偏置就发生相交,则令f1=f1/2,不断执行该操作,直至不再相交,则将此时的偏置距离当作初始偏置距离;令fi=fi-1+fa,其中fi表示第i次的偏置距离,fi-1表示第i-1次的偏置距离,fa表示每次偏置的距离,且i>1;经过i次偏置后出现相交时,令fa=fa/2,并重新执行该次偏置,如果仍然相交,则继续缩小fa直至无法相交;如果不再相交,则在改变fa的值后继续执行下一次偏置;不断地执行上述操作,直至fa<fm,其中fm为给定的一个边界值,此时的fi的二倍即为最终偏置距离;

首先分别对底面中包含的所有凹边线簇路径采用上述方法单独进行偏置,判断最终偏置距离在范围(0,limitoffset)内是否出现自相交,如果出现自相交则记录该偏置距离,完成所有凹边线簇路径的单独偏置后,找出其中的最小偏置距离offset1;然后,分别对外环凹边线簇同时进行偏置,并记录最终偏置距离offset2;之后,分别对每个内环中凹边线簇同时进行偏置,并记录最终偏置距离offset3;最后,同时对底面中包含的凹边线簇进行偏置,并记录最终偏置距离offset4;通道最小尺寸为offset1、offset2、offset3和offset4中最小值的二倍。

步骤1中所述的facematterside具体而言,当底面的法矢指向实体内部时,则认为底面的材料侧为左,并记facematterside=1,当底面的法矢指向实体外部时,则认为底面的材料侧为右,并记facematterside=-1。

步骤1中所述的edgematterside具体而言,沿着底面法矢方向站立,朝着边的方向行进,如果材料在左侧,则表示该边的材料侧为左,并记edgematterside=1,如果材料在右侧,则表示边的材料侧为右,并记edgematterside=-1;edgeconvexity表示边的凸凹性;edgepointset表示将边离散化后得到的一组离散化点组成的有序点集,其中点集里点的排列方向与边的方向一致;edgerevert为edgepointset中点的排列顺序是否需要翻转的标识,如果需要翻转,则记edgerevert=-1,反之,记edgerevert=1。

有益效果

本发明提出的一种型腔通道最小尺寸计算方法,本发明将三维模型简化为二维模型进行处理,降低了型腔通道最小尺寸的计算复杂度,加快了计算的速度;通过控制边线离散化获取到点的数量以及偏置边界值的大小可以达到用户所需要的精度;解决了型腔通道最小尺寸计算的问题,对刀具尺寸的选取具有重要的参考价值,同时也对后续工艺路径的规划起到了重要的作用。

附图说明

图1是本发明型腔通道最小尺寸计算方法流程图。

图2为边线和凹边线簇的提取和离散化过程及其属性示意图。

图3为带有凸台的型腔通道最小尺寸计算过程示意图。

具体实施方式

现结合实施例、附图对本发明作进一步描述:

本发明首先从已有的型腔三维cad模型出发,获取模型中组成型腔的面,并从这些面中提取出中必要的边线,将其离散化为点后投影到二维平面中;将这些点按照一定顺序排列后使用clipper库中的偏置处理函数按照一定方向对其进行偏置;最后,不断地增加偏置距离直至偏置后的多边形出现相交,此时的偏置距离的二倍即为型腔通道的最小尺寸。

参照图1,为本发明的总体流程图,具体的技术方案为:

本发明所采用的技术方案是一种型腔通道最小尺寸计算方法,包括以下步骤:

步骤一:型腔必要信息提取。一个型腔看作由一个底面和若个干轮廓面组成。从中提取出底面,并构建底面所包含的信息:

bottomface={facematterside,loops}

式中:bottomface表示底面所包含的属性信息;facematterside表示底面的材料侧,底面的材料侧指三维cad模型中模型材料与底面的位置关系,即当底面的法矢指向实体内部时,则认为底面的材料侧为左,并记facematterside=1,当底面的法矢指向实体外部时,则认为底面的材料侧为右,并记facematterside=-1;loops表示所有限定底面的环的集合,其中环是一组由顶点连接起来的边。每个底面的loops中包含一个外环以及若干个内环:

loops={outerloop,innerloop1,innerloop2,...,innerloopn}

其中outerloop表示外环,innerloopi表示第i个内环,其中0<i≤n。分别提取出外环和内环中的每一条边,并获取其中包含的信息:

edge={edgematterside,edgeconvexity,edgepointset,edgerevert}

式中:edge表示边中所包含的属性信息;edgematterside表示边的材料侧,边的材料侧表示底面中模型材料与边的位置关系,具体而言,沿着底面法矢方向站立,朝着边的方向行进,如果材料在左侧,则表示该边的材料侧为左,并记edgematterside=1,如果材料在右侧,则表示边的材料侧为右,并记edgematterside=-1;edgeconvexity表示边的凸凹性;edgepointset表示将边离散化后得到的一组离散化点组成的有序点集,其中点集里点的排列方向与边的方向一致;edgerevert为edgepointset中点的排列顺序是否需要翻转的标识,如果需要翻转,则记edgerevert=-1,反之,记edgerevert=1。

凹边线簇是指在一个环内一组由若干个按顺序直接相连的凹边所组成的集合。凹边线簇信息构建如下:

concaveedges={edges,edgespointset,openpath,outerorinner}

式中:concaveedges表示凹边线簇的属性信息;edges表示组成凹边线簇的所有边的集合,edges={e1,e2,e3,…,en},ei表示组成凹边线簇的第i条边,其中0<i≤n;edgespointset表示将凹边线簇中每条边的离散化点集合并后按照一定顺序重新排列得到的新的有序点集,即凹边线簇的路径,edgespointset={p1,p2,p3,…,pn},pi表示第i个离散化点,其中0<i≤n;openpath为凹边线簇路径开闭的标识,当凹边线簇路径首尾不相连时即认为其是开放路径,反之,当凹边线簇路径首尾相连时即认为其是闭合路径;outerorinner表示该凹边线簇包含在外环中还是内环中。

对于没有底角的型腔,首先分别提取出型腔底面的外环和内环;之后,如果外环或者内环中包含凸边,则分别将这些凸边剔除并得到多个由凹边组成的集合;最后,对凹边集合中的边线按照一定顺序进行排列得到一个或多个凹边线簇。对于有底角的型腔,需要继续对获取到的凹边线簇进行处理:首先,分别获取凹边线簇中的每一条边所在的圆角面;之后,在该圆角面的轮廓上获取所有与该边不直接相邻且为凹边的边;然后,判断获取到的边是否与其对应在凹边线簇中的边方向一致,如果不一致,则翻转该边的方向;最后,将获取到的边对应在凹边线簇中的边除去edgepointset属性的其余属性均赋予该边,依次对凹边线簇中的边进行上述处理并得到一个新的凹边线簇。对这些凹边线簇中每一条边进行离散化处理并得到一系列点,将这些点投影到二维平面上并获取其坐标。在离散化过程中仅对曲边进行离散化,对于直线边,仅提取其起点和终点。

步骤二:对边的离散化点进行排序并得到每个凹边簇的原始路径。对上述从凹边线簇中获取到的点按照一定的顺序进行排列。对于一个包含n条边的凹边线簇,需要通过以下方法进行排序:首先获取凹边簇中的第一条边的离散化点集edgepointset1和第二条边的离散化点集edgepointset2,判断edgepointset1的起点是否与edgepointset2的起点或者终点重合,如果重合,则翻转edgepointset1中点的排列方向,并记该边的属性edgerevert=-1,反之,不执行翻转操作,并记edgerevert=1;然后分别计算出edgepointset1的终点到edgepointset2起点的距离d1和到edgepointset2终点的距离d2,若d1>d2,则翻转edgepointset2中点的排列方向,并记该边的属性edgerevert=-1,若d1<d2,不执行翻转操作,并记该边的属性edgerevert=1;最后,获取凹边线簇中第i条边的离散化点集edgepointseti,其中2<i≤n,分别计算出第i-1条边的点集edgepointseti-1的终点到edgepointseti起点的距离di1和到edgepointseti终点的距离di2,若di1>di2,则翻转edgepointseti中点的排列的方向,并记该边的属性edgerevert=-1,若di1<di2,不执行翻转操作,并记该边的属性edgerevert=1。通过上述方法分别对环中每个凹边线簇进行处理,最终每一个凹边线簇都会得到一组与之对应的有序点集合,即凹边线簇的原始路径edgespointset。

步骤三:对凹边线簇的原始路径使用clipper库中的偏置函数进行处理。对一个底面中包含的所有凹边线簇原始路径进行偏置,并给定偏置距离f。

情况一:对型腔中仅由凹边组成的环进行偏置。此时每个环中仅包含一个凹边线簇,且凹边线簇的原始路径属于闭合路径。对于外环,则使用clipper库中的偏置函数对该环的凹边线簇原始路径向内偏置f;对于内环,则向外偏置f。

情况二:对型腔中包含凸边的环进行偏置。当环中包含凸边时,则该环会包含一个或者多个凹边线簇。使用clipper库中的偏置函数对其中一个凹边线簇的原始路径edgespointset进行偏置得到新的路径c1,c1仍然为一系列有序点组成的集合。环中包含的凹边线簇均为开放路径,在使用clipper库对其进行偏置时,会向edgespointset的两侧同时偏置f的距离,但实际上只需要保留其在边线材料侧一面的偏置结果。通过判断偏置后生成的点与凹边线簇原始路径edgespointset的相对位置是否与边线材料侧相同来对这些点进行取舍,如果相同,则保留该点,如果不相同,则舍弃。具体而言:

1.边线的材料侧分为左侧或者右侧,因此,对偏置后生成的点位于凹边线簇原始路径edgespointset的左侧还是右侧进行判断。对于偏置后路径c1上的任意一点p(x,y,0),找到距离其最近的原始路径c0上的点p0(x0,y0,0),如果p0不是原始路径的终点,则在原始路径上找到与p0相邻的后一个点p1(x1,y1,0),定义向量如果p0是原始路径c0的终点,在原始路径上找到与p0相邻的前一个点p2(x2,y2,0),定义向量则当向量的z轴坐标值大于零时,认为p在原始路径c0的左侧,并给定一个标记sign=1;小于零时,认为p在原始路径c0的右侧,并给定一个标记sign=-1;等于零时,认为p在原始路径上,并给定一个标记sign=0。

2.依次判断偏置后的路径c1中每一个点与原始路径edgespointset的相对位置是否与原始路径edgespointset中每个点对应边线的材料侧一致。获取edgespointset中每个点对应边线的属性,如果edgerevert×edgematterside×facematterside=sign,认为该点位置与边线材料侧一致;如果edgerevert×edgematterside×facematterside≠sign,则认为该点位置与边线材料侧不一致。保留所有位置与边线材料侧一致的点得到一个新的点集s0。

3.找到点集s0中正确的起点和终点,并对s0中的点按照一定顺序重新进行排列后与原始路径edgespointset相连形成新的路径c4。具体而言,首先在s0中分别找到距离原始路径edgespointset的起点ps和终点pe距离在r1和r2之间的点,r1=f+a,r2=f-a,其中f为偏置距离,a为容错范围,a的取值为c1中距离最近的两点之间的距离值;之后,将通过上述方法获取到s0中所有可能的起点与终点并分别放入到起始点集合ps和终止点集合pe中,读取ps中的点pi,在pe中找与该点直接相邻的点pj,如果pj存在,则将pi作为起点,pj作为终点,如果pj不存在,则继续读取ps中的下一个点并重复上述步骤直至找到起始点和终止点;然后,将获取到点集s0的起点和终点分别放到的第一位和最后一位,并对s0中其余点按照之前的顺序进行排列得到新的路径c3;最后,分别计算出c3的终点到原始路径edgespointset起点的距离ds和到edgespointset终点的距离de,若ds>de,则对c3中的点以相反的方向重新进行排列,若ds<de,不进行任何操作,将路径c3与路径edgespointset相连得到一个闭合路径c4。此时完成对其中一个凹边线簇的偏置,然后使用同样的方法分别对其余的凹边线簇偏置f的距离。

对这些凹边线簇偏置完成后,判断偏置后的路径是否发生相交。经过偏置后的路径如果与其他路径相交或者出现自相交,则路径的数目会发生改变。待偏置原始路径的数目为n0,偏置后的路径数目为n1,如果n0=n1,即认为未出现相交;如果n0≠n1,认为出现相交。具体偏置过程如下:

给定初始偏置距离f1=d0,如果第一次偏置就发生相交,则令f1=f1/2,不断执行该操作,直至不再相交,则将此时的偏置距离当作初始偏置距离。令fi=fi-1+fa,其中fi表示第i次的偏置距离,fi-1表示第i-1次的偏置距离,fa表示每次偏置的距离,且i>1。经过i次偏置后出现相交时,令fa=fa/2,并重新执行该次偏置,如果仍然相交,则继续缩小fa直至无法相交;如果不再相交,则在改变fa的值后继续执行下一次偏置。不断地执行上述操作,直至fa<fm,其中fm为给定的一个边界值,此时的fi的二倍即为最终偏置距离。

首先分别对底面中包含的所有凹边线簇路径采用上述方法单独进行偏置,判断最终偏置距离在范围(0,limitoffset)内是否出现自相交,如果出现自相交则记录该偏置距离,完成所有凹边线簇路径的单独偏置后,找出其中的最小偏置距离offset1;然后,分别对外环凹边线簇同时进行偏置,并记录最终偏置距离offset2;之后,分别对每个内环中凹边线簇同时进行偏置,并记录最终偏置距离offset3;最后,同时对底面中包含的凹边线簇进行偏置,并记录最终偏置距离offset4。通道最小尺寸为offset1、offset2、offset3和offset4中最小值的二倍。

实施例1,它包括以下步骤:

步骤一.提取型腔中必要的边线并对其进行离散化处理。参照图2,获取三维cad模型中组成型腔的面,并提取出型腔中的凹边线簇,共提取到两个凹边线簇。其中边线l1、l2、l3、l4、l5、l6和l7组成一个凹边线簇,另外对于带有底角的部位,提取出边线l11和l12组成另一个凹边线簇。分别对这两个凹边线簇中的边线进行离散化处理并得到对应的离散化点集合,然后将这些点投影至二维平面上。

步骤二.对提取到的点进行排序。分别对提取到的两个凹边线簇中的点进行排序,并得到一个闭合的凹边线簇原始路径和一个开放的凹边线簇原始路径。

步骤三.对凹边线簇原始路径使用clipper库中的偏置函数进行处理。给定初始偏置距离f1=1mm、每次偏置的距离fa=1mm以及边界值fm=0.001mm。对该型腔中所有凹边线簇的原始路径不断地进行偏置直至出现相交,得到最终的偏置距离为9.863mm。图3可视化了偏置的过程。

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