ruby3mf 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +13 -13
- data/.rspec +2 -2
- data/bin/batch.rb +3 -1
- 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.rb +26 -26
- data/lib/ruby3mf/3MFcoreSpec_1.1.xsd.template +188 -188
- data/lib/ruby3mf/content_types.rb +77 -73
- data/lib/ruby3mf/document.rb +242 -242
- data/lib/ruby3mf/edge_list.rb +60 -60
- data/lib/ruby3mf/errors.yml +188 -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 +117 -118
- 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 -74
- data/ruby3mf.gemspec +32 -32
- data/suite.011917.out +236 -236
- metadata +3 -9
- data/foo/2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model +0 -18747
- data/foo/3D/3dmodel.model +0 -40
- data/foo/3D/_rels/3dmodel.model.rels +0 -4
- data/foo/Thumbnails/ffffa6c3-ba74-4bea-a4d0-167a4211134d.model +0 -0
- data/foo/[Content_Types].xml +0 -7
- data/foo/_rels/.rels +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55092e1621883a6065add1327f2b2e6dd7a14467
|
4
|
+
data.tar.gz: ad8ca7226fab4ae7aecfeefbadb591f38609c793
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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"}
|
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>
|