CN117621440A - 一种3d打印校正方法及3d打印参数优化*** - Google Patents
一种3d打印校正方法及3d打印参数优化*** Download PDFInfo
- Publication number
- CN117621440A CN117621440A CN202311714878.7A CN202311714878A CN117621440A CN 117621440 A CN117621440 A CN 117621440A CN 202311714878 A CN202311714878 A CN 202311714878A CN 117621440 A CN117621440 A CN 117621440A
- Authority
- CN
- China
- Prior art keywords
- printing
- vector
- suspension
- trial
- workpiece
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012937 correction Methods 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000005457 optimization Methods 0.000 title claims abstract description 11
- 238000010146 3D printing Methods 0.000 title abstract description 24
- 239000013598 vector Substances 0.000 claims abstract description 329
- 238000007639 printing Methods 0.000 claims abstract description 231
- 239000000725 suspension Substances 0.000 claims abstract description 132
- 239000000463 material Substances 0.000 claims abstract description 53
- 238000000465 moulding Methods 0.000 claims description 15
- 238000013461 design Methods 0.000 claims description 12
- 238000005242 forging Methods 0.000 claims description 4
- 230000001172 regenerating effect Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 12
- 239000007921 spray Substances 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000002994 raw material Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 239000012530 fluid Substances 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000000586 desensitisation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001125 extrusion Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000003801 milling Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000005507 spraying Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Abstract
本发明公开一种3D打印校正方法及3D打印参数优化***,涉及立体打印技术领域。本发明包括,获取成型工件上的每一个材料点在工件打印路径上的偏移矢量作为工件上每一材料点的试打成型偏移矢量;获取设计打印空间模型内的每一个材料点在工件打印路径和打印喷头试打运动路径内的对应位置的位置差得到工件上每一材料点的打印悬空矢量;根据工件上每一材料点的试打成型偏移矢量以及对应的打印悬空矢量得到试打成型偏移矢量关于打印悬空矢量的对应关系;根据试打成型偏移矢量关于打印悬空矢量的对应关系对打印喷头试打运动路径进行校正得到打印喷头校正运动路径。本发明实现对打印喷头运动路径的校正。
Description
技术领域
本发明属于立体打印技术领域,特别是涉及一种3D打印校正方法及3D打印参数优化***。
背景技术
3D打印,也称为增材制造,是一种逐层制造的方法,它通过堆积材料来创建三维物体。然而,在实际3D打印过程中,由于打印材料本身具有粘性,会导致喷嘴在运动的过程中,其空间位置受到打印材料的牵引力作用而发生偏移。从而导致打印固化之后的工件结构和尺寸出现误差。
发明内容
本发明的目的在于提供一种3D打印校正方法及3D打印参数优化***,通过对试打印状态的下每个材料点的偏移状态进行分析,实现对打印喷头运动路径的校正。
为解决上述技术问题,本发明是通过以下技术方案实现的:
本发明提供一种3D打印校正方法,包括,
获取工件的设计打印空间模型;
根据所述工件的设计打印空间模型获取工件打印路径;
根据工件打印路径得到打印喷头试打运动路径;
获取工件的试打成型空间模型;
根据所述工件的所述设计打印空间模型以及所述试打成型空间模型之间的偏差获取成型工件上的每一个材料点在工件打印路径上的偏移矢量作为工件上每一材料点的试打成型偏移矢量;
获取所述设计打印空间模型内的每一个材料点在所述工件打印路径和所述打印喷头试打运动路径内的对应位置的位置差得到工件上每一材料点的打印悬空矢量;
根据工件上每一材料点的所述试打成型偏移矢量以及对应的所述打印悬空矢量得到所述试打成型偏移矢量关于所述打印悬空矢量的对应关系;
根据所述试打成型偏移矢量关于所述打印悬空矢量的对应关系对所述打印喷头试打运动路径进行校正得到打印喷头校正运动路径。
本发明还公开了一种3D打印校正方法,包括,
接收打印喷头校正运动路径;
控制打印喷头按照所述打印喷头校正运动路径进行打印加工。
本发明还公开了一种3D打印参数优化***,包括,
控制单元,用于获取工件的设计打印空间模型;
根据所述工件的设计打印空间模型获取工件打印路径;
预打印单元,用于根据工件打印路径得到打印喷头试打运动路径;
获取工件的试打成型空间模型;
根据所述工件的所述设计打印空间模型以及所述工件的所述试打成型空间模型的偏差获取成型工件上的每一个材料点在工件打印路径上的偏移矢量作为工件上每一材料点的试打成型偏移矢量;
校正单元,用于获取所述设计打印空间模型内的每一个材料点在所述工件打印路径和所述打印喷头试打运动路径内的对应位置的位置差得到工件上每一材料点的打印悬空矢量;
根据工件上每一材料点的所述试打成型偏移矢量以及对应的所述打印悬空矢量得到所述试打成型偏移矢量关于所述打印悬空矢量的对应关系;
根据所述试打成型偏移矢量关于所述打印悬空矢量的对应关系对所述打印喷头试打运动路径进行校正得到打印喷头校正运动路径;
根据所述打印喷头校正运动路径生成打印喷头运动控制参数;
打印控制单元,用于接收所述打印喷头校正运动路径;
控制打印喷头按照所述打印喷头校正运动路径进行打印加工。
本发明通过对试打印过程中的试打成型偏移矢量和打印喷头的打印悬空矢量进行关联匹配,得到打印喷头在不同悬空状态下对3D打印成型的量化影响关系。在根据此量化影响关系对打印喷头的运动路径进行校正,从而得到打印喷头校正运动路径的参数,实现更为精确的3D打印。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所述一种3D打印参数优化***于一实施例的功能模块和信息流向示意图;
图2为本发明所述控制单元、预打印单元以及校正单元于一实施例的步骤流程示意图;
图3为本发明所述打印控制单元于一实施例的步骤流程示意图;
图4为本发明所述步骤S4于一实施例的步骤流程示意图;
图5为本发明所述步骤S71于一实施例的步骤流程示意图;
图6为本发明所述步骤S72于一实施例的步骤流程示意图;
图7为本发明所述步骤S73于一实施例的步骤流程示意图;
图8为本发明所述步骤S731于一实施例的步骤流程示意图;
图9为本发明所述步骤S7312于一实施例的步骤流程示意图;
图10为本发明所述步骤S73121于一实施例的步骤流程示意图。
附图中,各标号所代表的部件列表如下:
1-控制单元,2-预打印单元,3-校正单元,4-打印控制单元。
实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
需要说明的是,本申请中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
3D打印(3D printing),也称为可加工制造、增材制造或快速成型,是一种通过逐层堆叠材料来创建三维物体的制造技术。它与传统的减材制造(如雕刻、铣削或切割)不同,它通过添加材料的方式构建物体,从而使得设计师和制造商能够以更加自由和灵活的方式创造复杂的结构和形状。在3D打印的过程中3D打印机会逐层堆叠材料,根据切片文件中的路径和参数逐步构建物体。这通常是将半流体状态的原材料沉积到构建平台上来实现的。但是由于原材料的半流体状态,打印喷头释放原材料过程中会导致偏移误差。为了对此误差进行修正,本发明提供以下方案。
请参阅图1至4所示,本发明提供了一种3D打印参数优化***,旨在于对打印喷头在打印过程中的运动路径进行校正优化。为了实现打印喷头的打印路径的校正和参数优化,首先需要控制单元1执行步骤S1获取工件的设计打印空间模型,设计打印空间模型可以使用计算机辅助设计(CAD)软件创建或获取工件的设计空间模型。确保模型是完整且符合要求的,包括正确的尺寸、几何形状和壁厚等。接下来可以执行步骤S2根据工件的设计打印空间模型获取工件打印路径。在此过程中可以将设计空间模型导入专门的切片软件。这些软件将模型切割成一系列薄片,生成每个切片的路径和打印参数。切片软件还允许您调整打印设置,如层高、填充密度、支撑结构等。然后使用切片软件生成工件的3D打印路径。软件会根据切片的几何形状和参数生成每一层的路径。这些路径指导打印头在每个层次上的运动,确定材料的堆叠方式和填充模式。
之后可以由预打印单元2执行步骤S3根据工件打印路径得到打印喷头试打运动路径。在此过程中首先,需要了解您使用的3D打印机的结构和工作原理。不同类型的打印机(如FFF/FDM、SLA、SLS等)可能具有不同的运动***和喷头结构,因此需要根据实际情况进行相应的调整。之后提取喷头运动指令,在解析软件中,提取与喷头运动相关的指令。这些指令通常包括直线移动、圆弧插补、打印头升降以及喷头挤出材料的控制等。接下来转换为喷头运动路径,也就是根据提取的运动指令,将其转换为喷头的实际运动路径。这可能涉及到坐标转换、速度控制、加速度控制等计算和转换过程。考虑喷头限制和约束:在生成喷头运动轨迹时,需要考虑喷头的运动限制和约束。例如,避免碰撞、最小半径限制、最大速度限制等。这确保了喷头在打印过程中的安全和有效运动。最后对喷头运动路径进行优化。这可能包括路径平滑、减少运动停顿、最小化移动次数等,以提高打印效率和质量,从而得到打印喷头试打运动路径。
在完成工件的试打印之后可以执行步骤S4获取工件的试打成型空间模型,接下来可以执行步骤S5根据工件的设计打印空间模型以及工件的试打成型空间模型的偏差获取成型工件上的每一个材料点在工件打印路径上的偏移矢量作为工件上每一材料点的试打成型偏移矢量。可以是通过激光空间扫描的方式获取。
接下来可以通过校正单元3执行步骤S6获取设计打印空间模型内的每一个材料点在工件打印路径和打印喷头试打运动路径内的对应位置的位置差得到工件上每一材料点的打印悬空矢量。接下来可以执行步骤S7根据工件上每一材料点的试打成型偏移矢量以及对应的打印悬空矢量得到试打成型偏移矢量关于打印悬空矢量的对应关系。接下来可以执行步骤S8根据试打成型偏移矢量关于打印悬空矢量的对应关系对打印喷头试打运动路径进行校正得到打印喷头校正运动路径。最后根据打印喷头校正运动路径生成打印喷头运动控制参数。
在完成运行路径校正和参数调整之后可以通过打印控制单元4执行步骤S01接收打印喷头校正运动路径。最后可以执行步骤S02控制打印喷头按照打印喷头校正运动路径进行打印加工。
请参阅图4所示,由于打印喷头在对半流体的原材料释放喷涂的过程中会产生塑形偏差,而且打印喷头与工件之间不同角度和距离的悬空状态会产生不尽相同的塑形偏差,也就是试打成型偏移矢量。为了对两者之间的相互关系进行量化描述,上述的步骤S7在具体实施的过程中首先可以执行步骤S71将工件上每一材料点的试打成型偏移矢量划分为若干个试打成型偏移矢量子集。接下来可以执行步骤S72将工件上每一材料点的打印悬空矢量划分为若干个打印悬空矢量子集。最后可以执行步骤S73将试打成型偏移矢量子集与打印悬空矢量子集进行匹配得到试打成型偏移矢量关于打印悬空矢量的对应关系。这是由于无论是打印悬空矢量和试打成型偏移矢量的形成和采集都会有偶然误差,因此通过归类划分出打印悬空矢量子集和试打成型偏移矢量子集之后再匹配的方式能够实现稳定的量化关系归纳。
请参阅图5所示,由于工件上的材料点数量非常多,如果归纳得到的试打成型偏移矢量关于打印悬空矢量过于复杂,会影响后续校正的修正响应速度。这就需要将众多的试打成型偏移矢量归纳为数量有限的若干个试打成型偏移矢量子集,为了让试打成型偏移矢量子集内多个试打成型偏移矢量具有相对的一致性,上述的步骤S71在实施的过程中首先可以执行步骤S711在工件上全部材料点的试打成型偏移矢量中选择若干个试打成型特征偏移矢量。接下来可以执行步骤S712获取每个试打成型特征偏移矢量与其它试打成型偏移矢量的矢量差模长。接下来可以执行步骤S713对于每个其它试打成型偏移矢量,将其与矢量差模长数值最小的试打成型特征偏移矢量编入同一个试打成型偏移矢量子集。接下来可以执行步骤S714计算获取每个试打成型偏移矢量子集中与其均值向量的矢量差模长最小的试打成型偏移矢量作为更新后的试打成型特征偏移矢量。接下来可以执行步骤S715判断更新后的试打成型特征偏移矢量是否发生变化。若是则接下来可以执行步骤S712至步骤S715重新生成试打成型偏移矢量子集以及试打成型特征偏移矢量,若否则最后可以执行步骤S716得到若干个试打成型偏移矢量子集。通过以上步骤能够将相对一致的多个试打成型偏移矢量分类到同一个试打成型偏移矢量子集内。
为了对上述的步骤S711至步骤S716的实施过程进行补充说明,提供部分功能模块的源代码,并在注释部分进行对照解释说明。为了避免涉及商业秘密的数据泄露,对不影响方案实施的部分数据进行脱敏处理,下同。
#include <vector>
#include <limits>
#include <cmath>
class Vector3D {
public:
double x, y, z;
Vector3D(double x = 0, double y = 0, double z = 0) : x(x), y(y),z(z) {}
// 计算矢量差模长
double distanceTo(const Vector3D& other) const {
return std::sqrt(std::pow(x - other.x, 2) + std::pow(y -other.y, 2) + std::pow(z - other.z, 2));
}
};
std::vector<std::vector<Vector3D>> kMeansClustering(const std::vector<Vector3D>& offsetVectors, int k) {
std::vector<Vector3D> centroids(k);
std::vector<std::vector<Vector3D>> clusters(k);
// 初始化:选择前k个偏移矢量作为初始的中心
for (int i = 0; i < k; ++i) {
centroids[i] = offsetVectors[i];
}
while (true) {
// 将每个偏移矢量分配到最近的中心
for (const auto& vector : offsetVectors) {
int closestCentroidIndex = 0;
double minDistance = std::numeric_limits<double>::max();
for (int i = 0; i < k; ++i) {
double distance = vector.distanceTo(centroids[i]);
if (distance < minDistance) {
minDistance = distance;
closestCentroidIndex = i;
}
}
clusters[closestCentroidIndex].push_back(vector);
}
// 计算新的中心
std::vector<Vector3D> newCentroids(k);
for (int i = 0; i < k; ++i) {
double sumX = 0, sumY = 0, sumZ = 0;
for (const auto& vector : clusters[i]) {
sumX += vector.x;
sumY += vector.y;
sumZ += vector.z;
}
newCentroids[i] = Vector3D(sumX / clusters[i].size(),sumY / clusters[i].size(), sumZ / clusters[i].size());
}
// 检查中心是否发生变化
bool centroidsChanged = false;
for (int i = 0; i < k; ++i) {
if (centroids[i].distanceTo(newCentroids[i]) > 0.00001){ // 使用一个小的阈值来判断是否发生变化
centroidsChanged = true;
break;
}
}
if (centroidsChanged) {
centroids = newCentroids;
clusters.clear();
clusters.resize(k);
} else {
break;
}
}
return clusters;
}
此代码首先定义了一个Vector3D类来表示3D空间中的点和矢量,并实现了计算矢量差模长的方法。然后将试打成型偏移矢量划分为k个子集。首先选择前k个偏移矢量作为初始的中心,然后将每个偏移矢量分配到最近的中心,再计算新的中心,如果中心没有发生变化,则算法结束,返回结果;否则,继续进行下一轮的分配和计算。
请参阅图6所示,同样是为了避免归纳得到的试打成型偏移矢量关于打印悬空矢量过于复杂影响后续校正的修正响应速度,需要将数量众多的打印悬空矢量归纳到数量有限的打印悬空矢量子集内。这就需要在执行步骤S72的过程中首先可以执行步骤S721在工件上全部材料点的打印悬空矢量中选择若干个打印特征悬空矢量。接下来可以执行步骤S722获取每个打印特征悬空矢量与其它打印悬空矢量的矢量差模长。接下来可以执行步骤S723对于每个其它打印悬空矢量,将其与矢量差模长数值最小的打印特征悬空矢量编入同一个打印悬空矢量子集。接下来可以执行步骤S724计算获取每个打印悬空矢量子集中与其均值向量的矢量差模长最小的打印悬空矢量作为更新后的打印特征悬空矢量。接下来可以执行步骤S725判断更新后的打印特征悬空矢量是否发生变化。若是则接下来可以执行步骤S722至步骤S725重新生成打印悬空矢量子集以及打印特征悬空矢量,若否则最后可以执行步骤S726得到若干个打印悬空矢量。
为了对上述的步骤S721至步骤S725的实施过程进行补充说明,提供部分功能模块的源代码,并在注释部分进行对照解释说明。
#include <vector>
#include <limits>
#include <cmath>
class Vector3D {
public:
double x, y, z;
Vector3D(double x = 0, double y = 0, double z = 0) : x(x), y(y),z(z) {}
// 计算矢量差模长
double distanceTo(const Vector3D& other) const {
return std::sqrt(std::pow(x - other.x, 2) + std::pow(y -other.y, 2) + std::pow(z - other.z, 2));
}
};
std::vector<std::vector<Vector3D>> kMeansClustering(const std::vector<Vector3D>& suspensionVectors, int k) {
std::vector<Vector3D> centroids(k);
std::vector<std::vector<Vector3D>> clusters(k);
// 初始化:选择前k个悬空矢量作为初始的中心
for (int i = 0; i < k; ++i) {
centroids[i] = suspensionVectors[i];
}
while (true) {
// 将每个悬空矢量分配到最近的中心
for (const auto& vector : suspensionVectors) {
int closestCentroidIndex = 0;
double minDistance = std::numeric_limits<double>::max();
for (int i = 0; i < k; ++i) {
double distance = vector.distanceTo(centroids[i]);
if (distance < minDistance) {
minDistance = distance;
closestCentroidIndex = i;
}
}
clusters[closestCentroidIndex].push_back(vector);
}
// 计算新的中心
std::vector<Vector3D> newCentroids(k);
for (int i = 0; i < k; ++i) {
double sumX = 0, sumY = 0, sumZ = 0;
for (const auto& vector : clusters[i]) {
sumX += vector.x;
sumY += vector.y;
sumZ += vector.z;
}
newCentroids[i] = Vector3D(sumX / clusters[i].size(),sumY / clusters[i].size(), sumZ / clusters[i].size());
}
// 检查中心是否发生变化
bool centroidsChanged = false;
for (int i = 0; i < k; ++i) {
if (centroids[i].distanceTo(newCentroids[i]) > 0.00001){ // 使用一个小的阈值来判断是否发生变化
centroidsChanged = true;
break;
}
}
if (centroidsChanged) {
centroids = newCentroids;
clusters.clear();
clusters.resize(k);
} else {
break;
}
}
return clusters;
}
此代码首先定义了一个Vector3D类来表示3D空间中的点和矢量,并实现了计算矢量差模长的方法。然后将打印悬空矢量划分为k个子集。首先选择前k个悬空矢量作为初始的中心,然后将每个悬空矢量分配到最近的中心,再计算新的中心,如果中心没有发生变化则算法结束,返回结果;否则继续进行下一轮的分配和计算。
请参阅图7所示,在后续对打印喷头试打运动路径进行校正的过程中,需要将每个打印悬空矢量对应一个明确的试打成型偏移矢量,因此需要将试打成型偏移矢量子集中的特征值与打印悬空矢量子集进行配对,这就需要首先执行步骤S731根据打印悬空矢量子集内每个打印悬空矢量得到每个打印悬空矢量子集的矢量范围。接下来可以执行步骤S732获取每个试打成型偏移矢量子集内试打成型特征偏移矢量在成型工件上的材料点对应的打印悬空矢量所在的打印悬空矢量子集。接下来可以执行步骤S733将试打成型特征偏移矢量关于打印悬空矢量子集的矢量范围内任一空间矢量的对应关系作为试打成型偏移矢量关于打印悬空矢量的对应关系。本方案中是在每个试打成型偏移矢量子集中选择一个试打成型特征偏移矢量,当然也可以随机选择一个试打成型偏移矢量。
请参阅图8所示,为了让从试打成型偏移矢量子集中挑选出来的试打成型偏移矢量具有充分的代表性,对于每个打印悬空矢量子集首先可以执行步骤S7311将打印悬空矢量子集内包含的每个打印悬空矢量的起点设置为原点后获取每个打印悬空矢量的终点,之后可以执行步骤S7312获取每个打印悬空矢量的终点所占的空间区域对应的空间矢量范围作为打印悬空矢量子集的矢量范围。终点所占的空间区域可以是多个终点的包络空间球形,也可以是最***的多个终点的内切空间球形。
请参阅图9所示,为了让打印悬空矢量子集对应的矢量范围更贴合子集内包含的打印悬空矢量,可以让打印悬空矢量子集的矢量范围对应打印悬空矢量子集每个打印悬空矢量的终点覆盖的空间范围。具体而言,上述的步骤S7312在具体实施的过程中首先可以执行步骤S73121根据每个打印悬空矢量的终点之间的相互距离得到基准距离。接下来可以执行步骤S73122将终点之间的距离小于基准距离的打印悬空矢量的终点进行连接得到全部打印悬空矢量的终点连接组成的空间多面体。最后可以执行步骤S73123将空间多面体以内的区域对应的空间矢量范围作为打印悬空矢量子集的矢量范围。
请参阅图10所示,为了让终点连接组成的空间多面体更加贴近终点覆盖的空间范围,需要确定哪些终点需要被连接,这就需要首先执行步骤S731211获取每个打印悬空矢量的终点与距离最近的其它终点之间的距离。接下来可以执行步骤S731212获取全部打印悬空矢量的终点与距离最近的其它终点之间的距离中的最小距离作为基准距离。
综合来说,以上的步骤S731至步骤S733以及其详细步骤在实施的过程中,是要对每个打印悬空矢量子集构造一个凸包(Convex Hull),然后将这个凸包内的区域作为打印悬空矢量子集的矢量范围。在三维空间中,构造凸包的算法有很多,比如快速凸包算法(QuickHull)。这里我们使用 CGAL(Computational Geometry Algorithms Library)库来实现这个需求,因为它包含了许多常用的几何计算算法,包括凸包。在运行过程中需要在项目中安装 CGAL 库。为了进行补充说明,提供部分功能模块的源代码,并在注释部分进行对照解释说明。
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/convex_hull_3.h>
#include <vector>
#include <list>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef K::Point_3 Point_3;
void constructConvexHullAndVectorRange(const std::vector<Vector3D>&suspensionVectors) {
// 将打印悬空矢量的终点转换为CGAL的点
std::list<Point_3> points;
for (auto& vector : suspensionVectors) {
points.push_back(Point_3(vector.x, vector.y, vector.z));
}
// 构造凸包
std::list<Point_3> result;
CGAL::convex_hull_3(points.begin(), points.end(), std::back_inserter(result));
// 获取凸包的矢量范围
double minX = std::numeric_limits<double>::max();
double maxX = std::numeric_limits<double>::lowest();
double minY = std::numeric_limits<double>::max();
double maxY = std::numeric_limits<double>::lowest();
double minZ = std::numeric_limits<double>::max();
double maxZ = std::numeric_limits<double>::lowest();
for (auto& point : result) {
minX = std::min(minX, point.x());
maxX = std::max(maxX, point.x());
minY = std::min(minY, point.y());
maxY = std::max(maxY, point.y());
minZ = std::min(minZ, point.z());
maxZ = std::max(maxZ, point.z());
}
Vector3D minVector(minX, minY, minZ); // 矢量范围的最小点
Vector3D maxVector(maxX, maxY, maxZ); // 矢量范围的最大点
}
这段代码首先将打印悬空矢量的终点转换为CGAL的点,然后使用CGAL的函数来构造凸包。凸包的结果是一个点的列表,这些点是凸包的顶点。最后代码遍历这些顶点,获取矢量范围的最小点和最大点。这个矢量范围就是凸包内的区域对应的矢量范围。
附图中的流程图和框图显示了根据本申请的多个实施例的装置、***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件,例如电路或ASIC(专用集成电路,Application Specific Integrated Circuit)来实现,或者可以用硬件和软件的组合,如固件等来实现。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种3D打印校正方法,其特征在于,包括,
获取工件的设计打印空间模型;
根据所述工件的设计打印空间模型获取工件打印路径;
根据工件打印路径得到打印喷头试打运动路径;
获取工件的试打成型空间模型;
根据所述工件的所述设计打印空间模型以及所述试打成型空间模型之间的偏差获取成型工件上的每一个材料点在工件打印路径上的偏移矢量作为工件上每一材料点的试打成型偏移矢量;
获取所述设计打印空间模型内的每一个材料点在所述工件打印路径和所述打印喷头试打运动路径内的对应位置的位置差得到工件上每一材料点的打印悬空矢量;
根据工件上每一材料点的所述试打成型偏移矢量以及对应的所述打印悬空矢量得到所述试打成型偏移矢量关于所述打印悬空矢量的对应关系;
根据所述试打成型偏移矢量关于所述打印悬空矢量的对应关系对所述打印喷头试打运动路径进行校正得到打印喷头校正运动路径。
2.根据权利要求1所述的方法,其特征在于,所述根据工件上每一材料点的所述试打成型偏移矢量以及对应的所述打印悬空矢量得到所述试打成型偏移矢量关于所述打印悬空矢量的对应关系的步骤,包括,
将工件上每一材料点的所述试打成型偏移矢量划分为若干个试打成型偏移矢量子集;
将工件上每一材料点的所述打印悬空矢量划分为若干个打印悬空矢量子集;
将所述试打成型偏移矢量子集与所述打印悬空矢量子集进行匹配得到所述试打成型偏移矢量关于所述打印悬空矢量的对应关系。
3.根据权利要求2所述的方法,其特征在于,所述将工件上每一材料点的所述试打成型偏移矢量划分为若干个试打成型偏移矢量子集的步骤,包括,
在工件上全部材料点的所述试打成型偏移矢量中选择若干个试打成型特征偏移矢量;
获取每个所述试打成型特征偏移矢量与其它所述试打成型偏移矢量的矢量差模长;
对于每个其它所述试打成型偏移矢量,将其与矢量差模长数值最小的所述试打成型特征偏移矢量编入同一个所述试打成型偏移矢量子集;
计算获取每个所述试打成型偏移矢量子集中与其均值向量的矢量差模长最小的所述试打成型偏移矢量作为更新后的所述试打成型特征偏移矢量;
判断更新后的所述试打成型特征偏移矢量是否发生变化;
若是,则重新生成所述试打成型偏移矢量子集以及所述试打成型特征偏移矢量;
若否,则得到若干个所述试打成型偏移矢量子集。
4.根据权利要求2所述的方法,其特征在于,所述将工件上每一材料点的所述打印悬空矢量划分为若干个打印悬空矢量子集的步骤,包括,
在工件上全部材料点的所述打印悬空矢量中选择若干个打印特征悬空矢量;
获取每个所述打印特征悬空矢量与其它所述打印悬空矢量的矢量差模长;
对于每个其它所述打印悬空矢量,将其与矢量差模长数值最小的所述打印特征悬空矢量编入同一个所述打印悬空矢量子集;
计算获取每个所述打印悬空矢量子集中与其均值向量的矢量差模长最小的所述打印悬空矢量作为更新后的所述打印特征悬空矢量;
判断更新后的所述打印特征悬空矢量是否发生变化;
若是,则重新生成所述打印悬空矢量子集以及所述打印特征悬空矢量;
若否,则得到若干个所述打印悬空矢量。
5.根据权利要求2至4任一项所述的方法,其特征在于,所述将所述试打成型偏移矢量子集与所述打印悬空矢量子集进行匹配得到所述试打成型偏移矢量关于所述打印悬空矢量的对应关系的步骤,包括,
根据所述打印悬空矢量子集内每个所述打印悬空矢量得到每个所述打印悬空矢量子集的矢量范围;
获取每个所述试打成型偏移矢量子集内试打成型特征偏移矢量在成型工件上的材料点对应的所述打印悬空矢量所在的所述打印悬空矢量子集;
将所述试打成型特征偏移矢量关于所述打印悬空矢量子集的矢量范围内任一空间矢量的对应关系作为所述试打成型偏移矢量关于所述打印悬空矢量的对应关系。
6.根据权利要求5所述的方法,其特征在于,所述根据所述打印悬空矢量子集内每个所述打印悬空矢量得到每个所述打印悬空矢量子集的矢量范围的步骤,包括,
对于每个所述打印悬空矢量子集,
将所述打印悬空矢量子集内包含的每个所述打印悬空矢量的起点设置为原点后获取每个所述打印悬空矢量的终点,
获取每个所述打印悬空矢量的终点所占的空间区域对应的空间矢量范围作为所述打印悬空矢量子集的矢量范围。
7.根据权利要求6所述的方法,其特征在于,所述获取每个所述打印悬空矢量的终点所占的空间区域对应的空间矢量范围作为所述打印悬空矢量子集的矢量范围的步骤,
根据每个所述打印悬空矢量的终点之间的相互距离得到基准距离;
将终点之间的距离小于所述基准距离的所述打印悬空矢量的终点进行连接得到全部所述打印悬空矢量的终点连接组成的空间多面体;
将所述空间多面体以内的区域对应的空间矢量范围作为所述打印悬空矢量子集的矢量范围。
8.根据权利要求7所述的方法,其特征在于,所述根据每个所述打印悬空矢量的终点之间的相互距离得到基准距离的步骤,包括,
获取每个所述打印悬空矢量的终点与距离最近的其它终点之间的距离;
获取全部所述打印悬空矢量的终点与距离最近的其它终点之间的距离中的最小距离作为基准距离。
9.一种3D打印校正方法,其特征在于,包括,
接收权利要求1至8任一项所述一种3D打印校正方法中的打印喷头校正运动路径;
控制打印喷头按照所述打印喷头校正运动路径进行打印加工。
10.一种3D打印参数优化***,其特征在于,包括,
控制单元,用于获取工件的设计打印空间模型;
根据所述工件的设计打印空间模型获取工件打印路径;
预打印单元,用于根据工件打印路径得到打印喷头试打运动路径;
获取工件的试打成型空间模型;
根据所述工件的所述设计打印空间模型以及所述工件的所述试打成型空间模型的偏差获取成型工件上的每一个材料点在工件打印路径上的偏移矢量作为工件上每一材料点的试打成型偏移矢量;
校正单元,用于获取所述设计打印空间模型内的每一个材料点在所述工件打印路径和所述打印喷头试打运动路径内的对应位置的位置差得到工件上每一材料点的打印悬空矢量;
根据工件上每一材料点的所述试打成型偏移矢量以及对应的所述打印悬空矢量得到所述试打成型偏移矢量关于所述打印悬空矢量的对应关系;
根据所述试打成型偏移矢量关于所述打印悬空矢量的对应关系对所述打印喷头试打运动路径进行校正得到打印喷头校正运动路径;
根据所述打印喷头校正运动路径生成打印喷头运动控制参数;
打印控制单元,用于接收所述打印喷头校正运动路径;
控制打印喷头按照所述打印喷头校正运动路径进行打印加工。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311714878.7A CN117621440A (zh) | 2023-12-13 | 2023-12-13 | 一种3d打印校正方法及3d打印参数优化*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311714878.7A CN117621440A (zh) | 2023-12-13 | 2023-12-13 | 一种3d打印校正方法及3d打印参数优化*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117621440A true CN117621440A (zh) | 2024-03-01 |
Family
ID=90037622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311714878.7A Pending CN117621440A (zh) | 2023-12-13 | 2023-12-13 | 一种3d打印校正方法及3d打印参数优化*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117621440A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105437543A (zh) * | 2014-09-03 | 2016-03-30 | 三纬国际立体列印科技股份有限公司 | 立体打印装置及其喷头的坐标偏差补偿方法 |
CN105666877A (zh) * | 2016-03-22 | 2016-06-15 | 中国工程物理研究院材料研究所 | 具有三维图形反馈***的3d打印机及其打印方法 |
US20160236414A1 (en) * | 2015-02-12 | 2016-08-18 | Arevo Inc. | Method to monitor additive manufacturing process for detection and in-situ correction of defects |
CN109822909A (zh) * | 2019-03-28 | 2019-05-31 | 哈尔滨理工大学 | 一种fdm3d打印机优化算法 |
US20210042455A1 (en) * | 2019-08-09 | 2021-02-11 | Palo Alto Research Center Incorporated | System and method for determining spatial distribution of variable deposition size in additive manufacturing |
CN113119450A (zh) * | 2021-03-26 | 2021-07-16 | 南京航空航天大学 | 面向五轴3d打印行切路径规划的ac转角优化方法 |
US20210302949A1 (en) * | 2018-11-05 | 2021-09-30 | Beijing University Of Technology | High intensity multi direction FDM 3D printing method for stereo vision monitoring |
WO2023138010A1 (zh) * | 2022-01-20 | 2023-07-27 | 中交第一公路勘察设计研究院有限公司 | 面向混凝土3d打印的平面路径拟合方法及*** |
CN117162492A (zh) * | 2023-09-13 | 2023-12-05 | 浙江绍兴康微机器人有限公司 | 一种基于机械臂的曲面3d打印路径规划方法 |
US20240009836A1 (en) * | 2020-12-02 | 2024-01-11 | Fanuc Corporation | 3d printer using robot and control apparatus for robot |
-
2023
- 2023-12-13 CN CN202311714878.7A patent/CN117621440A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105437543A (zh) * | 2014-09-03 | 2016-03-30 | 三纬国际立体列印科技股份有限公司 | 立体打印装置及其喷头的坐标偏差补偿方法 |
US20160236414A1 (en) * | 2015-02-12 | 2016-08-18 | Arevo Inc. | Method to monitor additive manufacturing process for detection and in-situ correction of defects |
CN105666877A (zh) * | 2016-03-22 | 2016-06-15 | 中国工程物理研究院材料研究所 | 具有三维图形反馈***的3d打印机及其打印方法 |
US20210302949A1 (en) * | 2018-11-05 | 2021-09-30 | Beijing University Of Technology | High intensity multi direction FDM 3D printing method for stereo vision monitoring |
CN109822909A (zh) * | 2019-03-28 | 2019-05-31 | 哈尔滨理工大学 | 一种fdm3d打印机优化算法 |
US20210042455A1 (en) * | 2019-08-09 | 2021-02-11 | Palo Alto Research Center Incorporated | System and method for determining spatial distribution of variable deposition size in additive manufacturing |
US20240009836A1 (en) * | 2020-12-02 | 2024-01-11 | Fanuc Corporation | 3d printer using robot and control apparatus for robot |
CN113119450A (zh) * | 2021-03-26 | 2021-07-16 | 南京航空航天大学 | 面向五轴3d打印行切路径规划的ac转角优化方法 |
WO2023138010A1 (zh) * | 2022-01-20 | 2023-07-27 | 中交第一公路勘察设计研究院有限公司 | 面向混凝土3d打印的平面路径拟合方法及*** |
CN117162492A (zh) * | 2023-09-13 | 2023-12-05 | 浙江绍兴康微机器人有限公司 | 一种基于机械臂的曲面3d打印路径规划方法 |
Non-Patent Citations (1)
Title |
---|
王军凯 等: ""快速成型中提高成型精度的曲面分层"", 《机械科学与技术》, vol. 42, no. 3, 31 March 2023 (2023-03-31), pages 439 - 445 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Masood | Intelligent rapid prototyping with fused deposition modelling | |
Bin Ishak et al. | Robot arm platform for additive manufacturing using multi-plane toolpaths | |
Moroni et al. | Towards early estimation of part accuracy in additive manufacturing | |
Xu et al. | Support-free layered process planning toward 3+ 2-axis additive manufacturing | |
US10838403B2 (en) | Simulation method for milling by use of dynamic position error | |
US6678571B1 (en) | Micro-slicing contour smoothing technique | |
Cerit et al. | A CAM-based path generation method for rapid prototyping applications | |
EP3028103A1 (en) | Device, system and methods for automatic development and optimization of positioning paths for multi-axis numerically controlled machining | |
EP1357449A1 (en) | Method for modeling complex, three dimensional tool paths through a workpiece | |
Micali et al. | Fully three-dimensional toolpath generation for point-based additive manufacturing systems | |
CN117621440A (zh) | 一种3d打印校正方法及3d打印参数优化*** | |
Ding et al. | The implementation of adaptive isoplanar tool path generation for the machining of free-form surfaces | |
CN115735167A (zh) | 后处理器、加工程序生成方法、cnc加工***以及加工程序生成用程序 | |
Komura et al. | Computer aided process planning for rough machining based on machine learning with certainty evaluation of inferred results | |
Dugas et al. | Development of a machining simulator considering machine behaviour | |
Gafurov | The importance of CAD/CAM/CAE application development | |
Yamamoto et al. | Development of accurate estimation method of machining time in consideration of characteristics of machine tool | |
Popov et al. | Model preparation algorithm for 3D printing with discrete rotation | |
Di Angelo et al. | A build time estimator for Additive Manufacturing | |
Guzik | Digital fabrication inspired design: Influence of fabrication parameters on a design process | |
Nishida et al. | Machining time reduction by tool path modification to eliminate air cutting motion for end milling operation | |
Epureanu et al. | Reconfigurable machine tool programming–a new approach | |
Zheng et al. | An optimal approach to manufacturing planning for complex prismatic parts with interacting feature | |
Yang et al. | Minimizing staircase errors in the orthogonal layered manufacturing system | |
Abdulghafour et al. | Automatic tool path generation based freeform features recognition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |