ruby3mf 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6ed7b5e499cd264c483fb07b8b64b2e87d66468
4
- data.tar.gz: 7e4d586f7171056fc27a30295fb778c278f0cda1
3
+ metadata.gz: 55092e1621883a6065add1327f2b2e6dd7a14467
4
+ data.tar.gz: ad8ca7226fab4ae7aecfeefbadb591f38609c793
5
5
  SHA512:
6
- metadata.gz: 65fea6f8723fd942bb26876ccc2fdb74877a0c441264979e1ee1d88f2416085a701b023553a40d5a2cc5ce51a5ff1ae62aae6f6c5968920ddf94a99938892640
7
- data.tar.gz: 5666f43cf880c92b2a2a583375c6eb4a64598e75b1ea3d4e182beddcaec4f07841027241bcf08ca194bc9a27d208b6b03eb2c66010b58da199df2d7ae338737d
6
+ metadata.gz: 061abfae6ba23f8f838c73f693b1842d3262382a8d8029fca9b6388451a7e1b448b846aabe998b7c09ea349dd1cefb30caa65138da20edc616e82fbfa7e6db9f
7
+ data.tar.gz: 8b9bed38285241dfd0aecd6bd6707567881c23b1839cd75a5e9f3bd182f423d6ac2f43064c73f3f5a6d9d41cd6969e8820e2ac333c62e40e847d4adc4105c37f
data/.gitignore CHANGED
@@ -1,14 +1,14 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- .idea
11
- /spec/ruby3mf-testfiles/
12
- /profile-run/
13
- .DS_Store
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .idea
11
+ /spec/ruby3mf-testfiles/
12
+ /profile-run/
13
+ .DS_Store
14
14
  suite_test.txt
data/.rspec CHANGED
@@ -1,2 +1,2 @@
1
- --color
2
- --require spec_helper
1
+ --color
2
+ --require spec_helper
data/bin/batch.rb CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  require_relative '../lib/ruby3mf'
4
4
 
5
- files = Dir["spec/ruby3mf-testfiles/#{ARGV[0] || "failing_cases"}/*.#{ARGV[1] || '3mf'}"]
5
+ files = Dir["spec/ruby3mf-testfiles/#{ARGV[0] || "failing_cases"}/#{ARGV[1] || '*.3mf'}"]
6
+
7
+ p files
6
8
 
7
9
  files.each do |file|
8
10
  begin
data/bin/cli.rb CHANGED
@@ -1,12 +1,12 @@
1
- #!/usr/bin/env ruby
2
-
3
- require_relative '../lib/ruby3mf'
4
-
5
- filename = ARGV.first
6
- doc = Document.read(filename)
7
-
8
- errors = Log3mf.entries(:error, :fatal_error)
9
- puts errors
10
-
11
- # set exit code for suite test usage
12
- exit errors.size == 0
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/ruby3mf'
4
+
5
+ filename = ARGV.first
6
+ doc = Document.read(filename)
7
+
8
+ errors = Log3mf.entries(:error, :fatal_error)
9
+ puts errors
10
+
11
+ # set exit code for suite test usage
12
+ exit errors.size == 0
data/bin/console CHANGED
@@ -1,14 +1,14 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "ruby3mf"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "ruby3mf"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/folder_test.sh CHANGED
@@ -1,13 +1,13 @@
1
- #!/bin/bash
2
-
3
- NAME=$1
4
- echo "input: ${NAME}"
5
- echo "Starting test on: ${NAME}"
6
- echo "Starting test on: ${NAME}" >> ${NAME}_test.json
7
-
8
- for filename in ${NAME}/*.3mf; do
9
- echo "Validating ${filename}"
10
- ~/src/ruby3mf/bin/cli.rb ${filename} >> ${NAME}_test.json
11
- done
12
-
13
- echo "All Done."
1
+ #!/bin/bash
2
+
3
+ NAME=$1
4
+ echo "input: ${NAME}"
5
+ echo "Starting test on: ${NAME}"
6
+ echo "Starting test on: ${NAME}" >> ${NAME}_test.json
7
+
8
+ for filename in ${NAME}/*.3mf; do
9
+ echo "Validating ${filename}"
10
+ ~/src/ruby3mf/bin/cli.rb ${filename} >> ${NAME}_test.json
11
+ done
12
+
13
+ echo "All Done."
data/bin/suite_test.sh CHANGED
@@ -1,41 +1,41 @@
1
- #!/bin/bash
2
-
3
- MATCH=$1
4
- OUTFILE=suite_test.txt
5
- GOOD_FILES=../3mf-test-suite/Positive/${MATCH}*.3mf
6
- BAD_FILES=../3mf-test-suite/Negative/${MATCH}*.3mf
7
-
8
- echo "Test Suite: filter: ${MATCH}"
9
- printf "\n\n==============================================================================="
10
- printf "\n\n Test Suite: filter: ${MATCH} - $(date)\n" >> ${OUTFILE}
11
- printf "\n\n==============================================================================="
12
-
13
- echo "Positive Files -------------"
14
- printf "\nPositive Files -------------\n" >> ${OUTFILE}
15
- for filename in ${GOOD_FILES}; do
16
- if [ -f ${filename} ]; then
17
- echo " Validating ${filename}"
18
- result=$(( ~/src/ruby3mf/bin/cli.rb ${filename} ) 2>&1)
19
- if [ $? -ne 0 ]; then
20
- echo " Failed!"
21
- printf " ${filename}\n $result\n" >> ${OUTFILE}
22
- fi
23
- fi
24
- done
25
-
26
- echo "Negative Files -------------"
27
- printf "\nNegative Files -------------\n" >> suite_test.txt
28
- for filename in ${BAD_FILES}; do
29
- if [ -f ${filename} ]; then
30
- echo " Validating ${filename}"
31
- result=$(( ~/src/ruby3mf/bin/cli.rb ${filename} ) 2>&1)
32
- if [ $? -eq 0 ]; then
33
- echo " Passed!"
34
- printf " ${filename} - No Errors found!\n" >> ${OUTFILE}
35
- fi
36
- fi
37
- done
38
-
39
- echo "All Done."
40
- printf "\nCompleted -- $(date)\n\n" >> ${OUTFILE}
41
-
1
+ #!/bin/bash
2
+
3
+ MATCH=$1
4
+ OUTFILE=suite_test.txt
5
+ GOOD_FILES=../3mf-test-suite/Positive/${MATCH}*.3mf
6
+ BAD_FILES=../3mf-test-suite/Negative/${MATCH}*.3mf
7
+
8
+ echo "Test Suite: filter: ${MATCH}"
9
+ printf "\n\n==============================================================================="
10
+ printf "\n\n Test Suite: filter: ${MATCH} - $(date)\n" >> ${OUTFILE}
11
+ printf "\n\n==============================================================================="
12
+
13
+ echo "Positive Files -------------"
14
+ printf "\nPositive Files -------------\n" >> ${OUTFILE}
15
+ for filename in ${GOOD_FILES}; do
16
+ if [ -f ${filename} ]; then
17
+ echo " Validating ${filename}"
18
+ result=$(( ~/src/ruby3mf/bin/cli.rb ${filename} ) 2>&1)
19
+ if [ $? -ne 0 ]; then
20
+ echo " Failed!"
21
+ printf " ${filename}\n $result\n" >> ${OUTFILE}
22
+ fi
23
+ fi
24
+ done
25
+
26
+ echo "Negative Files -------------"
27
+ printf "\nNegative Files -------------\n" >> suite_test.txt
28
+ for filename in ${BAD_FILES}; do
29
+ if [ -f ${filename} ]; then
30
+ echo " Validating ${filename}"
31
+ result=$(( ~/src/ruby3mf/bin/cli.rb ${filename} ) 2>&1)
32
+ if [ $? -eq 0 ]; then
33
+ echo " Passed!"
34
+ printf " ${filename} - No Errors found!\n" >> ${OUTFILE}
35
+ fi
36
+ fi
37
+ done
38
+
39
+ echo "All Done."
40
+ printf "\nCompleted -- $(date)\n\n" >> ${OUTFILE}
41
+
data/lib/ruby3mf.rb CHANGED
@@ -1,26 +1,26 @@
1
- require_relative "ruby3mf/version"
2
- require_relative "ruby3mf/interpolation"
3
- require_relative "ruby3mf/schema_files"
4
- require_relative "ruby3mf/log3mf"
5
- require_relative "ruby3mf/document"
6
- require_relative "ruby3mf/content_types"
7
- require_relative "ruby3mf/model3mf"
8
- require_relative "ruby3mf/relationships"
9
- require_relative "ruby3mf/thumbnail3mf"
10
- require_relative "ruby3mf/texture3mf"
11
- require_relative "ruby3mf/xml_val"
12
- require_relative "ruby3mf/edge_list"
13
- require_relative "ruby3mf/mesh_analyzer"
14
- require_relative "ruby3mf/mesh_normal_analyzer"
15
-
16
- require 'zip'
17
- require 'nokogiri'
18
- require 'json'
19
- require 'mimemagic'
20
- require 'uri'
21
- require 'yaml'
22
- require "addressable/uri"
23
-
24
- module Ruby3mf
25
- # Your code goes here...
26
- end
1
+ require_relative "ruby3mf/version"
2
+ require_relative "ruby3mf/interpolation"
3
+ require_relative "ruby3mf/schema_files"
4
+ require_relative "ruby3mf/log3mf"
5
+ require_relative "ruby3mf/document"
6
+ require_relative "ruby3mf/content_types"
7
+ require_relative "ruby3mf/model3mf"
8
+ require_relative "ruby3mf/relationships"
9
+ require_relative "ruby3mf/thumbnail3mf"
10
+ require_relative "ruby3mf/texture3mf"
11
+ require_relative "ruby3mf/xml_val"
12
+ require_relative "ruby3mf/edge_list"
13
+ require_relative "ruby3mf/mesh_analyzer"
14
+ require_relative "ruby3mf/mesh_normal_analyzer"
15
+
16
+ require 'zip'
17
+ require 'nokogiri'
18
+ require 'json'
19
+ require 'mimemagic'
20
+ require 'uri'
21
+ require 'yaml'
22
+ require "addressable/uri"
23
+
24
+ module Ruby3mf
25
+ # Your code goes here...
26
+ end
@@ -1,188 +1,188 @@
1
- <xs:schema xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02" xmlns:xs="http://www.w3.org/2001/XMLSchema"
2
- xmlns:xml="http://www.w3.org/XML/1998/namespace"
3
- targetNamespace="http://schemas.microsoft.com/3dmanufacturing/core/2015/02" elementFormDefault="unqualified"
4
- attributeFormDefault="unqualified" blockDefault="#all">
5
- <xs:import namespace="http://www.w3.org/XML/1998/namespace"
6
- schemaLocation= "<%= SchemaFiles::SchemaLocation %>" />
7
- <xs:annotation>
8
- <xs:documentation><![CDATA[
9
- Schema notes:
10
- Items within this schema follow a simple naming convention of appending a prefix indicating the type of element for references:
11
- Unprefixed: Element names
12
- CT_: Complex types
13
- ST_: Simple types
14
- ]]></xs:documentation>
15
- </xs:annotation>
16
- <!-- Complex Types -->
17
- <xs:complexType name="CT_Model">
18
- <xs:sequence>
19
- <xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded"/>
20
- <xs:element ref="resources"/>
21
- <xs:element ref="build"/>
22
- <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
23
- </xs:sequence>
24
- <xs:attribute name="unit" type="ST_Unit" default="millimeter"/>
25
- <xs:attribute ref="xml:lang"/>
26
- <xs:attribute name="requiredextensions" type="xs:string"/>
27
- <xs:anyAttribute namespace="##other" processContents="lax"/>
28
- </xs:complexType>
29
- <xs:complexType name="CT_Resources">
30
- <xs:sequence>
31
- <xs:element ref="basematerials" minOccurs="0" maxOccurs="unbounded"/>
32
- <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
33
- <xs:element ref="object" minOccurs="0" maxOccurs="unbounded"/>
34
- </xs:sequence>
35
- <xs:anyAttribute namespace="##other" processContents="lax"/>
36
- </xs:complexType>
37
- <xs:complexType name="CT_Build">
38
- <xs:sequence>
39
- <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
40
- </xs:sequence>
41
- <xs:anyAttribute namespace="##other" processContents="lax"/>
42
- </xs:complexType>
43
- <xs:complexType name="CT_BaseMaterials">
44
- <xs:sequence>
45
- <xs:element ref="base" maxOccurs="unbounded"/>
46
- </xs:sequence>
47
- <xs:attribute name="id" type="ST_ResourceID" use="required"/>
48
- </xs:complexType>
49
- <xs:complexType name="CT_Base">
50
- <xs:attribute name="name" type="xs:string" use="required"/>
51
- <xs:attribute name="displaycolor" type="ST_ColorValue" use="required"/>
52
- <xs:anyAttribute namespace="##other" processContents="lax"/>
53
- </xs:complexType>
54
- <xs:complexType name="CT_Object">
55
- <xs:choice>
56
- <xs:element ref="mesh"/>
57
- <xs:element ref="components"/>
58
- </xs:choice>
59
- <xs:attribute name="id" type="ST_ResourceID" use="required"/>
60
- <xs:attribute name="type" type="ST_ObjectType" default="model"/>
61
- <xs:attribute name="matid" type="ST_ResourceID"/>
62
- <xs:attribute name="matindex" type="ST_ResourceIndex"/>
63
- <xs:attribute name="partnumber" type="xs:string"/>
64
- <xs:attribute name="name" type="xs:string"/>
65
- <xs:attribute name="pid" type="ST_ResourceID"/>
66
- <xs:attribute name="pindex" type="ST_ResourceIndex"/>
67
- <xs:attribute name="thumbnail" type="ST_UriReference" />
68
- <xs:anyAttribute namespace="##other" processContents="lax"/>
69
- </xs:complexType>
70
- <xs:complexType name="CT_Mesh">
71
- <xs:sequence>
72
- <xs:element ref="vertices"/>
73
- <xs:element ref="triangles"/>
74
- <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
75
- </xs:sequence>
76
- </xs:complexType>
77
- <xs:complexType name="CT_Vertices">
78
- <xs:sequence>
79
- <xs:element ref="vertex" minOccurs="3" maxOccurs="unbounded"/>
80
- </xs:sequence>
81
- </xs:complexType>
82
- <xs:complexType name="CT_Vertex">
83
- <xs:attribute name="x" type="ST_Number" use="required"/>
84
- <xs:attribute name="y" type="ST_Number" use="required"/>
85
- <xs:attribute name="z" type="ST_Number" use="required"/>
86
- <xs:anyAttribute namespace="##other" processContents="lax"/>
87
- </xs:complexType>
88
- <xs:complexType name="CT_Triangles">
89
- <xs:sequence>
90
- <xs:element ref="triangle" minOccurs="1" maxOccurs="unbounded"/>
91
- </xs:sequence>
92
- </xs:complexType>
93
- <xs:complexType name="CT_Triangle">
94
- <xs:attribute name="v1" type="ST_ResourceIndex" use="required"/>
95
- <xs:attribute name="v2" type="ST_ResourceIndex" use="required"/>
96
- <xs:attribute name="v3" type="ST_ResourceIndex" use="required"/>
97
- <xs:attribute name="p1" type="ST_ResourceIndex"/>
98
- <xs:attribute name="p2" type="ST_ResourceIndex"/>
99
- <xs:attribute name="p3" type="ST_ResourceIndex"/>
100
- <xs:attribute name="pid" type="ST_ResourceID"/>
101
- <xs:anyAttribute namespace="##other" processContents="lax"/>
102
- </xs:complexType>
103
- <xs:complexType name="CT_Components">
104
- <xs:sequence>
105
- <xs:element ref="component" maxOccurs="unbounded"/>
106
- </xs:sequence>
107
- </xs:complexType>
108
- <xs:complexType name="CT_Component">
109
- <xs:attribute name="objectid" type="ST_ResourceID" use="required"/>
110
- <xs:attribute name="transform" type="ST_Matrix3D"/>
111
- <xs:anyAttribute namespace="##other" processContents="lax"/>
112
- </xs:complexType>
113
- <xs:complexType name="CT_Metadata" mixed="true">
114
- <xs:attribute name="name" type="xs:QName" use="required"/>
115
- </xs:complexType>
116
- <xs:complexType name="CT_Item">
117
- <xs:attribute name="objectid" type="ST_ResourceID" use="required"/>
118
- <xs:attribute name="transform" type="ST_Matrix3D"/>
119
- <xs:attribute name="itemref" type="xs:ID"/>
120
- <xs:anyAttribute namespace="##other" processContents="lax"/>
121
- </xs:complexType>
122
- <!-- Simple Types -->
123
- <xs:simpleType name="ST_Unit">
124
- <xs:restriction base="xs:string">
125
- <xs:enumeration value="micron"/>
126
- <xs:enumeration value="millimeter"/>
127
- <xs:enumeration value="centimeter"/>
128
- <xs:enumeration value="inch"/>
129
- <xs:enumeration value="foot"/>
130
- <xs:enumeration value="meter"/>
131
- </xs:restriction>
132
- </xs:simpleType>
133
- <xs:simpleType name="ST_ColorValue">
134
- <xs:restriction base="xs:string">
135
- <xs:pattern value="#[0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f]([0-9|A-F|a-f][0-9|A-F|a-f])?"/>
136
- </xs:restriction>
137
- </xs:simpleType>
138
- <xs:simpleType name="ST_UriReference">
139
- <xs:restriction base="xs:anyURI">
140
- <xs:pattern value="/.*"/>
141
- </xs:restriction>
142
- </xs:simpleType>
143
- <xs:simpleType name="ST_Matrix3D">
144
- <xs:restriction base="xs:string">
145
- <xs:pattern value="((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?)"/>
146
- </xs:restriction>
147
- </xs:simpleType>
148
- <xs:simpleType name="ST_Number">
149
- <xs:restriction base="xs:double">
150
- <xs:whiteSpace value="collapse"/>
151
- <xs:pattern value="((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?)"/>
152
- </xs:restriction>
153
- </xs:simpleType>
154
- <xs:simpleType name="ST_ResourceID">
155
- <xs:restriction base="xs:positiveInteger">
156
- <xs:maxExclusive value="2147483648"/>
157
- </xs:restriction>
158
- </xs:simpleType>
159
- <xs:simpleType name="ST_ResourceIndex">
160
- <xs:restriction base="xs:nonNegativeInteger">
161
- <xs:maxExclusive value="2147483648"/>
162
- </xs:restriction>
163
- </xs:simpleType>
164
- <xs:simpleType name="ST_ObjectType">
165
- <xs:restriction base="xs:string">
166
- <xs:enumeration value="model"/>
167
- <xs:enumeration value="solidsupport"/>
168
- <xs:enumeration value="support"/>
169
- <xs:enumeration value="other"/>
170
- </xs:restriction>
171
- </xs:simpleType>
172
- <!-- Elements -->
173
- <xs:element name="model" type="CT_Model"/>
174
- <xs:element name="resources" type="CT_Resources"/>
175
- <xs:element name="build" type="CT_Build"/>
176
- <xs:element name="basematerials" type="CT_BaseMaterials"/>
177
- <xs:element name="base" type="CT_Base"/>
178
- <xs:element name="object" type="CT_Object"/>
179
- <xs:element name="mesh" type="CT_Mesh"/>
180
- <xs:element name="vertices" type="CT_Vertices"/>
181
- <xs:element name="vertex" type="CT_Vertex"/>
182
- <xs:element name="triangles" type="CT_Triangles"/>
183
- <xs:element name="triangle" type="CT_Triangle"/>
184
- <xs:element name="components" type="CT_Components"/>
185
- <xs:element name="component" type="CT_Component"/>
186
- <xs:element name="metadata" type="CT_Metadata"/>
187
- <xs:element name="item" type="CT_Item"/>
188
- </xs:schema>
1
+ <xs:schema xmlns="http://schemas.microsoft.com/3dmanufacturing/core/2015/02" xmlns:xs="http://www.w3.org/2001/XMLSchema"
2
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"
3
+ targetNamespace="http://schemas.microsoft.com/3dmanufacturing/core/2015/02" elementFormDefault="unqualified"
4
+ attributeFormDefault="unqualified" blockDefault="#all">
5
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
6
+ schemaLocation= "<%= SchemaFiles::SchemaLocation %>" />
7
+ <xs:annotation>
8
+ <xs:documentation><![CDATA[
9
+ Schema notes:
10
+ Items within this schema follow a simple naming convention of appending a prefix indicating the type of element for references:
11
+ Unprefixed: Element names
12
+ CT_: Complex types
13
+ ST_: Simple types
14
+ ]]></xs:documentation>
15
+ </xs:annotation>
16
+ <!-- Complex Types -->
17
+ <xs:complexType name="CT_Model">
18
+ <xs:sequence>
19
+ <xs:element ref="metadata" minOccurs="0" maxOccurs="unbounded"/>
20
+ <xs:element ref="resources"/>
21
+ <xs:element ref="build"/>
22
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
23
+ </xs:sequence>
24
+ <xs:attribute name="unit" type="ST_Unit" default="millimeter"/>
25
+ <xs:attribute ref="xml:lang"/>
26
+ <xs:attribute name="requiredextensions" type="xs:string"/>
27
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
28
+ </xs:complexType>
29
+ <xs:complexType name="CT_Resources">
30
+ <xs:sequence>
31
+ <xs:element ref="basematerials" minOccurs="0" maxOccurs="unbounded"/>
32
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
33
+ <xs:element ref="object" minOccurs="0" maxOccurs="unbounded"/>
34
+ </xs:sequence>
35
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
36
+ </xs:complexType>
37
+ <xs:complexType name="CT_Build">
38
+ <xs:sequence>
39
+ <xs:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
40
+ </xs:sequence>
41
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
42
+ </xs:complexType>
43
+ <xs:complexType name="CT_BaseMaterials">
44
+ <xs:sequence>
45
+ <xs:element ref="base" maxOccurs="unbounded"/>
46
+ </xs:sequence>
47
+ <xs:attribute name="id" type="ST_ResourceID" use="required"/>
48
+ </xs:complexType>
49
+ <xs:complexType name="CT_Base">
50
+ <xs:attribute name="name" type="xs:string" use="required"/>
51
+ <xs:attribute name="displaycolor" type="ST_ColorValue" use="required"/>
52
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
53
+ </xs:complexType>
54
+ <xs:complexType name="CT_Object">
55
+ <xs:choice>
56
+ <xs:element ref="mesh"/>
57
+ <xs:element ref="components"/>
58
+ </xs:choice>
59
+ <xs:attribute name="id" type="ST_ResourceID" use="required"/>
60
+ <xs:attribute name="type" type="ST_ObjectType" default="model"/>
61
+ <xs:attribute name="matid" type="ST_ResourceID"/>
62
+ <xs:attribute name="matindex" type="ST_ResourceIndex"/>
63
+ <xs:attribute name="partnumber" type="xs:string"/>
64
+ <xs:attribute name="name" type="xs:string"/>
65
+ <xs:attribute name="pid" type="ST_ResourceID"/>
66
+ <xs:attribute name="pindex" type="ST_ResourceIndex"/>
67
+ <xs:attribute name="thumbnail" type="ST_UriReference" />
68
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
69
+ </xs:complexType>
70
+ <xs:complexType name="CT_Mesh">
71
+ <xs:sequence>
72
+ <xs:element ref="vertices"/>
73
+ <xs:element ref="triangles"/>
74
+ <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
75
+ </xs:sequence>
76
+ </xs:complexType>
77
+ <xs:complexType name="CT_Vertices">
78
+ <xs:sequence>
79
+ <xs:element ref="vertex" minOccurs="3" maxOccurs="unbounded"/>
80
+ </xs:sequence>
81
+ </xs:complexType>
82
+ <xs:complexType name="CT_Vertex">
83
+ <xs:attribute name="x" type="ST_Number" use="required"/>
84
+ <xs:attribute name="y" type="ST_Number" use="required"/>
85
+ <xs:attribute name="z" type="ST_Number" use="required"/>
86
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
87
+ </xs:complexType>
88
+ <xs:complexType name="CT_Triangles">
89
+ <xs:sequence>
90
+ <xs:element ref="triangle" minOccurs="1" maxOccurs="unbounded"/>
91
+ </xs:sequence>
92
+ </xs:complexType>
93
+ <xs:complexType name="CT_Triangle">
94
+ <xs:attribute name="v1" type="ST_ResourceIndex" use="required"/>
95
+ <xs:attribute name="v2" type="ST_ResourceIndex" use="required"/>
96
+ <xs:attribute name="v3" type="ST_ResourceIndex" use="required"/>
97
+ <xs:attribute name="p1" type="ST_ResourceIndex"/>
98
+ <xs:attribute name="p2" type="ST_ResourceIndex"/>
99
+ <xs:attribute name="p3" type="ST_ResourceIndex"/>
100
+ <xs:attribute name="pid" type="ST_ResourceID"/>
101
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
102
+ </xs:complexType>
103
+ <xs:complexType name="CT_Components">
104
+ <xs:sequence>
105
+ <xs:element ref="component" maxOccurs="unbounded"/>
106
+ </xs:sequence>
107
+ </xs:complexType>
108
+ <xs:complexType name="CT_Component">
109
+ <xs:attribute name="objectid" type="ST_ResourceID" use="required"/>
110
+ <xs:attribute name="transform" type="ST_Matrix3D"/>
111
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
112
+ </xs:complexType>
113
+ <xs:complexType name="CT_Metadata" mixed="true">
114
+ <xs:attribute name="name" type="xs:QName" use="required"/>
115
+ </xs:complexType>
116
+ <xs:complexType name="CT_Item">
117
+ <xs:attribute name="objectid" type="ST_ResourceID" use="required"/>
118
+ <xs:attribute name="transform" type="ST_Matrix3D"/>
119
+ <xs:attribute name="itemref" type="xs:ID"/>
120
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
121
+ </xs:complexType>
122
+ <!-- Simple Types -->
123
+ <xs:simpleType name="ST_Unit">
124
+ <xs:restriction base="xs:string">
125
+ <xs:enumeration value="micron"/>
126
+ <xs:enumeration value="millimeter"/>
127
+ <xs:enumeration value="centimeter"/>
128
+ <xs:enumeration value="inch"/>
129
+ <xs:enumeration value="foot"/>
130
+ <xs:enumeration value="meter"/>
131
+ </xs:restriction>
132
+ </xs:simpleType>
133
+ <xs:simpleType name="ST_ColorValue">
134
+ <xs:restriction base="xs:string">
135
+ <xs:pattern value="#[0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f][0-9|A-F|a-f]([0-9|A-F|a-f][0-9|A-F|a-f])?"/>
136
+ </xs:restriction>
137
+ </xs:simpleType>
138
+ <xs:simpleType name="ST_UriReference">
139
+ <xs:restriction base="xs:anyURI">
140
+ <xs:pattern value="/.*"/>
141
+ </xs:restriction>
142
+ </xs:simpleType>
143
+ <xs:simpleType name="ST_Matrix3D">
144
+ <xs:restriction base="xs:string">
145
+ <xs:pattern value="((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?) ((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?)"/>
146
+ </xs:restriction>
147
+ </xs:simpleType>
148
+ <xs:simpleType name="ST_Number">
149
+ <xs:restriction base="xs:double">
150
+ <xs:whiteSpace value="collapse"/>
151
+ <xs:pattern value="((\-|\+)?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))((e|E)(\-|\+)?[0-9]+)?)"/>
152
+ </xs:restriction>
153
+ </xs:simpleType>
154
+ <xs:simpleType name="ST_ResourceID">
155
+ <xs:restriction base="xs:positiveInteger">
156
+ <xs:maxExclusive value="2147483648"/>
157
+ </xs:restriction>
158
+ </xs:simpleType>
159
+ <xs:simpleType name="ST_ResourceIndex">
160
+ <xs:restriction base="xs:nonNegativeInteger">
161
+ <xs:maxExclusive value="2147483648"/>
162
+ </xs:restriction>
163
+ </xs:simpleType>
164
+ <xs:simpleType name="ST_ObjectType">
165
+ <xs:restriction base="xs:string">
166
+ <xs:enumeration value="model"/>
167
+ <xs:enumeration value="solidsupport"/>
168
+ <xs:enumeration value="support"/>
169
+ <xs:enumeration value="other"/>
170
+ </xs:restriction>
171
+ </xs:simpleType>
172
+ <!-- Elements -->
173
+ <xs:element name="model" type="CT_Model"/>
174
+ <xs:element name="resources" type="CT_Resources"/>
175
+ <xs:element name="build" type="CT_Build"/>
176
+ <xs:element name="basematerials" type="CT_BaseMaterials"/>
177
+ <xs:element name="base" type="CT_Base"/>
178
+ <xs:element name="object" type="CT_Object"/>
179
+ <xs:element name="mesh" type="CT_Mesh"/>
180
+ <xs:element name="vertices" type="CT_Vertices"/>
181
+ <xs:element name="vertex" type="CT_Vertex"/>
182
+ <xs:element name="triangles" type="CT_Triangles"/>
183
+ <xs:element name="triangle" type="CT_Triangle"/>
184
+ <xs:element name="components" type="CT_Components"/>
185
+ <xs:element name="component" type="CT_Component"/>
186
+ <xs:element name="metadata" type="CT_Metadata"/>
187
+ <xs:element name="item" type="CT_Item"/>
188
+ </xs:schema>