这是一个通过c语言来把NX10.0画的直线等关键数据提取出来,可以通过电脑端显示,并可以通过CIMCO Edit8来验证;
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define STRLEN 60
#define DATASIZE sizeof(EntityData)
/*-----每个实体的结构-----*/
//你可在在此添加其它的实体
typedef struct tagSpLine{
float x, y, z;
int pole;//节点
int control;//控制点
float weight;//权重
float knots[100];
}LINE;
/*------------------------*/
typedef union specialData{
LINE spline;
}privateData;
typedef struct commonData{
char id[STRLEN]; /*实体标识字符串*/
char layer[STRLEN]; /*层名字符串*/
privateData data; /*特有数据块*/
struct commonData *next; /*用于构建链表*/
}EntityData;
/*----------函数声明部分-----------*/
void print(EntityData *entity);
/*---------------------------------*/
int main(int argc, char *argv[])
{
int code;
int k=0;
float value;
char codevalue[STRLEN];
FILE *dxf;
char filename[STRLEN];
EntityData *entity, *entity1, *entity2;
printf("请输入DXF文件名:");
dxf = fopen("E:\\yt.dxf", "r");
if (!dxf)
{
printf("打开文件出错!\n可能不存在此文件.\n");
printf("按任意键退出...");
getchar();
exit(0);
}
else
{
printf("正在读取文件...\n");
}
entity = entity2 = (EntityData *)malloc(DATASIZE);
while (!feof(dxf))
{
fscanf(dxf, "%d", &code);
fscanf(dxf, "%s", codevalue);
if (code == 2 && strcmp(codevalue, "ENTITIES") == 0)
{
while (strcmp(codevalue, "ENDSEC"))
{
fscanf(dxf, "%d", &code);
fscanf(dxf, "%s", codevalue);
if (code == 0 && strcmp(codevalue, "SPLINE") == 0)
{
entity1 = (EntityData *)malloc(DATASIZE);
strcpy(entity1->id, codevalue);
fscanf(dxf, "%d", &code);
while (code)
{
switch (code)
{
case 8:
fscanf(dxf, "%s", codevalue);
fscanf(dxf, "%d", &code);
strcpy(entity1->layer, codevalue);
break;
case 40:
fscanf(dxf, "%f", &value);
fscanf(dxf, "%d", &code);
entity1->data.spline.knots[k++] = value;//节点值
break;
case 41:
fscanf(dxf, "%f", &value);
fscanf(dxf, "%d", &code);
entity1->data.spline.weight = value;//权重
break;
case 10:
fscanf(dxf, "%f", &value);
fscanf(dxf, "%d", &code);
entity1->data.spline.x = value;
break;
case 20:
fscanf(dxf, "%f", &value);
fscanf(dxf, "%d", &code);
entity1->data.spline.y = value;
break;
case 30:
fscanf(dxf, "%f", &value);
fscanf(dxf, "%d", &code);
entity1->data.spline.z = value;
break;
case 72:
fscanf(dxf, "%f", &value);
fscanf(dxf, "%d", &code);
entity1->data.spline.pole = value;//节点数
break;
case 73:
fscanf(dxf, "%f", &value);
fscanf(dxf, "%d", &code);
entity1->data.spline.control = value;//控制点数
break;
default:
{
fscanf(dxf, "%s", codevalue);
fscanf(dxf, "%d", &code);
}
}
}
entity2->next = entity1;
entity2 = entity1;
}
}
entity2->next = NULL;
}
}
entity = entity->next; //第一个实体区为空,所以使头指针移向下一个实体
print(entity); //输出链表
printf("\nPress any key to halt...");
getchar();
return 0;
}
//输出链表
void print(EntityData *entity)
{
int i = 0;
int k = 0;
int j;
EntityData *pointer;
pointer = entity;
FILE *fpw = fopen("E:\\result.txt", "w");
if (pointer != NULL)
{
do{
i++;
pointer = pointer->next;
} while (pointer != NULL);
}
printf("\nOutput LinkList:");
printf("\nDXF文件中总共有%d条直线\n", i);
//i = 1;
pointer = entity;
/*直线*/
char buf[100] = { 0 };
if (pointer != NULL)
{
do{
//printf("第%d条直线:\n", i);
/*打印到桌面*/
//printf("权重%f\t节点值%f\t节点数%d\t控制点数%d\n", pointer->data.spline.weight, pointer->data.spline.knots[k++], pointer->data.spline.pole, pointer->data.spline.control);
//printf("X %f\tY %f\tZ %f\n", pointer->data.spline.x, pointer->data.spline.y, pointer->data.spline.z);
for (j = 0; j < pointer->data.spline.pole; j++)
{
printf("knots%.16f\n", pointer->data.spline.knots[k++]);
}
pointer = pointer->next;
i++;
} while (pointer != NULL);
}
fclose(fpw);
}
这是一个通过c语言来把NX10.0画的直线等关键数据提取出来,可以通过电脑端显示,并可以通过CIMCO Edit8来验证;相关推荐
- R语言为散点图添加凸包(convex hull):数据预处理(创建一个包含每组数据凸包边界的数据集)、ggplot2使用geom_polygon函数为可视化图像添加凸包(convex hull)
R语言为散点图添加凸包(convex hull):数据预处理(创建一个包含每组数据凸包边界的数据集).ggplot2使用geom_polygon函数为可视化图像添加凸包(convex hull) 目录
- Bitcoin.com开发人员正创建一个用Rust语言编写的BCH全节点
近日,Bitcoin.com开发人员Gabriel Cardona在推特表示,自己正创建一个用Rust语言编写的BCH全节点,目的是为了改变完整节点的范式,让BCH代码库更加安全.编程人员技术贡献更加 ...
- python 速度 memmap_从20秒到0.5秒:一个使用Rust语言来优化Python性能的案例
<从20秒到0.5秒:一个使用Rust语言来优化Python性能的案例>要点: 本文介绍了从20秒到0.5秒:一个使用Rust语言来优化Python性能的案例,希望对您有用.如果有疑问,可 ...
- 转 从20秒到0.5秒:一个使用Rust语言来优化Python性能的案例
注: 转自 微信公众号"高可用架构":从20秒到0.5秒:一个使用Rust语言来优化Python性能的案例 导读:Python 被很多互联网系统广泛使用,但在另外一方面,它也存在一 ...
- 大学c语言基本程序,一个大学C语言试题的简单实现--员工信息管理程序
一个大学C语言试题的简单实现,供参考. 题目: 员工信息管理程序 主要用结构体数组实现,用结构体表示每项记录,数据为:员工编号.姓名.性别.年龄.工龄.职务.部门.住址. 设计各个函数,分别实现以下功 ...
- c语言程序设计删除,C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句...
C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句,要正确处理带引号的字符串与字符常量,以C语言中,注释不允许嵌套. 本程序运行后,将要求用户输入一个当前目录下的C源码程序文件名,读取 ...
- 介绍一个使用 Go 语言开发的高性能可配置可扩展的日志库 logit
这是一个使用 Go 语言开发的高性能可配置可扩展的日志库,名字叫 logit. logit 是一个高性能的日志库,从测试结果来看,比主流日志库 zap.logrus 这些要快不少. logit 支持配 ...
- 编译原理课程实践——实现一个初等函数运算语言的解释器或编译器
编译原理课程实践--实现具有初等函数运算语言的解释器或编译器 作者:Sylvan Ding |转载请注明文章出处! 摘要:本文主要内容是设计词法分析器.语法分析器(LL(1).SLR(1))和语义分析 ...
- java开发的图片管理系统,一个使用Java语言编写的Web本地照片管理系统
jAlbum 这是一个使用Java语言编写的本地照片管理系统.使用BS架构.服务端采用Servlet提供RESTful风格接口和动态页面供浏览器直接访问,集成照片Exif信息处理.视频流信息处理和人像 ...
最新文章
- Web页面中png jpg gif webp svg的区别和使用
- 皮一皮:有这样的妈妈挺有趣的...
- python读取大文件内容_python 读取大文件
- 解决MySQL删除外键时报错Error Code: 1091. Can‘t DROP ‘XXX‘; check that column/key exists
- 电气工程师学python_Python 在电气工程及其自动化上有哪些应用?
- 三杯茶(一本令全世界为之动容的书)(Three cups of tea)
- java 控制jsp_JSP学习之Java Web中的安全控制实例详解
- c语言第1次作业答案,C语言第五次上机作业参考答案
- Jsvm2 与 prototype.js 组合 應用心得
- xcode6.1中 symbolicatecrash位置
- cass等距离等分线段的命令键_南方cass快捷命令
- 网站优化 SEO概念
- 计算机上怎么计算x的n次方,计算x的n次方(用函数)
- ubuntu服务器网站备份,备份云服务器ubuntu系统
- 在光与影中用对白塑造灵魂
- There appears to be a gap in the edit log. We expected txid 867311, but got txid 867402.
- 最小生成树(库鲁斯卡尔算法)
- 宣化科技职业学院计算机哪个校区,宣化科技职业学院宿舍怎么样
- 英语基础太差,到底能不能学好编程?
- 中台做不起来?是技术的问题,还是人的问题