子丑乙卯 2017-10-09 07:31 采纳率: 11.1%
浏览 4357
已结题

如何将三维数据点转化为stl文件,求相关代码

我自己按照网上的结构编写的,但是还是不能够吧图正确画出来
struct Head
{
char fileName[80];
int faceNum;
};

//点,三个float类型的,大小为12字节
struct Point
{
double x;
double y;
double z;
};

//法线
struct Normal
{
double i;
double j;
double k;
};

//三角面,由一个法线,三个点,和一个两字节的保留项,一共50字节
struct Face
{
Normal normal;
Point p11;
Point p22;
Point p33;
char info[2];
};
Head head;
printf("请输入零件名:");
gets_s(head.fileName);
head.faceNum = O * 2;
Face face[O * 2];
int q = 0;
for (int i = 0; i <O; i++)//根据stl格式,将数据点归类
{
for (int j = 0; j < 2; j++)
{
face[q].normal = { norm[i][j][0], norm[i][j][1], norm[i][j][2] };
face[q].p11 = { p1[i][j][0], p1[i][j][1], p1[i][j][2] } ;
face[q].p22 = { p2[i][j][0], p2[i][j][1], p2[i][j][2] };
face[q].p33 = { p3[i][j][0], p3[i][j][1], p3[i][j][2] };
face[q].info[0] = 0;
face[q].info[1] = 0;
q++;
}
}
FILE *fp1;
errno_t err;
err = fopen_s(&fp1, "myStl.stl", "wb");
if (err == 0)
{
fwrite(&head, 84, 1, fp1);
for (int i = 0; i < (O * 2); i++)
{
fwrite(&face[i], 50, 1, fp1);
}
printf("生成文件成功!");
fclose(fp1);
}
else
{
printf("无法创建文件");
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-10-09 15:59
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大