极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7349|回复: 5

Processing之旅-----【给鱼插上翅膀,Processing基础扩展库0】

[复制链接]
发表于 2013-6-19 20:36:49 | 显示全部楼层 |阅读模式
每一个被下载并解压的Processing都有那么几个自带的library,我们这部分就主要讲解ProcessingIDE自带library。
第一个库:dxf

简单介绍一下什么是DXF。
AutoCAD(Drawing Interchange Format或者Drawing Exchange Format) 绘图交换文件。DXF 是Autodesk公司开发的用于AutoCAD与其它软件之间进行CAD数据交换的CAD数据文件格式。DXF是一种开放的矢量数据格式,可以分为两类:ASCII格式和二进制格式;ASCII具有可读性好,但占有空间较大;二进制格式占有空间小、读取速度快。由于Autocad现在是最流行的cad系统,DXF也被广泛使用,成为事实上的标准。绝大多数CAD系统都能读入或输出DXF文件。
DXF文件是由很多的“代码”和“值”组成的“数据对”构造而成,这里的代码称为“组码”(group code),指定其后的值的类型和用途。每个组码和值必须为单独的一行的。
DXF文件被组织成为多个“段”(section),每个段以组码“0”和字符串“SECTION”开头,紧接着是组码“2”和表示段名的字符串(如HEADER)。段的中间,可以使用组码和值定义段中的元素。段的结尾使用组码“0”和字符串“ENDSEC”来定义。
DXF-Drawing Exchange File(图形交换文件), 这是一种ASCII文本文件,它包含对应的DWG文件的全部信息,不是ASCII码形式,可读性差,但用它形成图形速度快.不同类型的计算机(如PC及其兼容机与SUN工作站具体不同的CPU用总线)哪怕是用同一版本的文件,其DWG文件也是不可交换的. 为了克服这一缺点,AutoCAD提供了DXF类型文件,其内部为ASCII码,这样不同类型的计算机可通过交换DXF文件来达到交换图形的目的,由于DXF文件可读性好,用户可方便地对它进行修改,编程,达到从外部图形进行编辑,修改的目的。

DXF的文件格式:
ASCII 格式的 DXF 可以用文本编辑器进行查看。DXF 文件的基本组成如下所示:
●HEADER 部分 - 图的总体信息。每个参数都有一个变量名和相应的值。
●CLASSES 部分 - 包括应用程序定义的类的信息,这些实例将显示在 BLOCKS、ENTITIES 以及
OBJECTS 部分。通常不包括用于充分用于与其它应用程序交互的信息。
●TABLES 部分 - 这部分包括命名条目的定义。
Application ID (APPID) 表
Block Recod (BLOCK_RECORD) 表
Dimension Style (DIMSTYPE) 表
Layer (LAYER) 表
Linetype (LTYPE) 表
Text style (STYLE) 表
User Coordinate System (UCS) 表
View (VIEW)表
Viewport configuration (VPORT) 表
●BLOCKS 部分- 这部分包括 Block Definition 实体用于定义每个 Block 的组成。
●ENTITIES 部分 - 这部分是绘图实体,包括 Block References 在内。
●OBJECTS 部分 -- 包括非图形对象的数据,供 AutoLISP 以及 ObjectARX应用程序所使用。
●THUMBNAILIMAGE 部分 -- 包括 DXF 文件的预览图。
●END OF FILE


下面我们来分析一下自带的DXF例程:
  1. /**
  2. * Simple DXF Export
  3. * by Simon Greenwold.
  4. *
  5. * Press the 'R' key to export a DXF file.
  6. */


  7. import processing.dxf.*;//载入dxf库
  8. boolean record = false;

  9. void setup() {
  10.   size(400, 400, P3D);
  11.   noStroke();
  12.   sphereDetail(12);//这个函数可以理解成一个球体有多少个三角体组成。
  13. }

  14. void draw() {
  15.   if (record == true) {
  16.     beginRaw(DXF, "output.dxf"); // 开始构建
  17.   }
  18.   lights();
  19.   background(0);
  20.   translate(width / 3, height / 3, -200);
  21.   rotateZ(map(mouseY, 0, height, 0, PI));
  22.   rotateY(map(mouseX, 0, width, 0, HALF_PI));
  23.   for (int y = -2; y < 2; y++) {
  24.     for (int x = -2; x < 2; x++) {
  25.       for (int z = -2; z < 2; z++) {
  26.         pushMatrix();
  27.         translate(120*x, 120*y, -120*z);
  28.         sphere(30);//绘制球体
  29.         popMatrix();
  30.       }
  31.     }
  32.   }
  33.   if (record == true) {
  34.     endRaw();
  35.     record = false; //停止构建
  36.   }
  37. }

  38. void keyPressed() {
  39.   if (key == 'R' || key == 'r') { // 键入R保存为dxf文件
  40.     record = true;
  41.   }
  42. }
复制代码

如果用文本编辑器打开dxf文件会是这样的。
0
SECTION
2
ENTITIES
0
3DFACE
8
0
10
133.30138
20
-137.38913
30
-213.26093
11
130.96347
21
-142.94846
31
-208.26477
12
133.68564
22
-135.7313
32
-209.61975
13
133.68575
23
-135.73119
33
-209.61964
0
3DFACE
8
0
10
…………………………就此例程而言就有49万余行

那么本次就讲到这里。下课。
回复

使用道具 举报

发表于 2013-6-20 16:38:46 | 显示全部楼层
膜拜大神~~~~认真学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 14:25:39 | 显示全部楼层
迷你强 发表于 2013-6-20 16:38
膜拜大神~~~~认真学习

回复 支持 反对

使用道具 举报

发表于 2014-12-2 15:17:25 | 显示全部楼层
向大神们学习~~~~
回复 支持 反对

使用道具 举报

发表于 2014-12-10 13:23:42 | 显示全部楼层
认真阅读,受益,顶一下.
回复 支持 反对

使用道具 举报

发表于 2017-6-2 17:33:47 | 显示全部楼层
已经迷上Processing了!!!!!!!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )

GMT+8, 2019-8-25 16:16 , Processed in 0.045922 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表