ruby3mf 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +13 -13
- data/.rspec +2 -2
- data/bin/cli.rb +12 -12
- data/bin/console +14 -14
- data/bin/folder_test.sh +13 -13
- data/bin/suite_test.sh +41 -41
- data/lib/ruby3mf/3MFcoreSpec_1.1.xsd.template +188 -188
- data/lib/ruby3mf/content_types.rb +79 -77
- data/lib/ruby3mf/document.rb +242 -242
- data/lib/ruby3mf/edge_list.rb +60 -60
- data/lib/ruby3mf/errors.yml +191 -188
- data/lib/ruby3mf/log3mf.rb +135 -135
- data/lib/ruby3mf/mesh_analyzer.rb +80 -80
- data/lib/ruby3mf/mesh_normal_analyzer.rb +218 -218
- data/lib/ruby3mf/model3mf.rb +120 -117
- data/lib/ruby3mf/relationships.rb +50 -50
- data/lib/ruby3mf/schema_files.rb +26 -26
- data/lib/ruby3mf/texture3mf.rb +29 -29
- data/lib/ruby3mf/thumbnail3mf.rb +21 -21
- data/lib/ruby3mf/version.rb +3 -3
- data/lib/ruby3mf/xml.xsd +286 -286
- data/lib/ruby3mf/xml_val.rb +68 -68
- data/lib/ruby3mf.rb +26 -26
- data/ruby3mf.gemspec +32 -32
- metadata +3 -4
- data/suite.011917.out +0 -237
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 560dd08731ad8ca1bd20f9368086f8bd55cb175a
|
4
|
+
data.tar.gz: ee40d214929e604a7596032941c0bf872590f6f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59f57931ceaffec30387c9edcea8e79e95648350ce9b2dce71f2723037d3f854a20a8933209ba68b47a11befc41cf8b5113835628e46827ff655382a9b5fe802
|
7
|
+
data.tar.gz: f3c9aa7b5f78d9788801bc30513abf88b5b56643f79cb2ab2e76fcbdb1bd88d4baae76964c709550d701ba313aff775aa9b629f7c663cc2927543a528b3868d6
|
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/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
|
+
|
@@ -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>
|