﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="project" nillable="true" type="XMLProject" />
  <xs:complexType name="XMLProject">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="projectno" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="commission" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="variable" type="XMLVariable" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="positiongroup" type="XMLPositionGroup" />
      <xs:element minOccurs="0" maxOccurs="1" name="address" type="XMLAddress" />
      <xs:element minOccurs="0" maxOccurs="1" name="externalid" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="images" type="XmlImage" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XMLVariable">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="value" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="isuserfield" type="xs:boolean" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XMLPositionGroup">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="positiongroupno" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="positiongroup" type="XMLPositionGroup" />
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="isinternal" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="variable" type="XMLVariable" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="position" type="XMLPosition" />
      <xs:element minOccurs="0" maxOccurs="1" name="length" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="width" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="height" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="article" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="amount" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="externalid" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XMLPosition">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="positionno" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="variable" type="XMLVariable" />
      <xs:element minOccurs="0" maxOccurs="1" name="unit" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="amount" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="length" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="width" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="height" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="group" type="XMLGroup" />
      <xs:element minOccurs="0" maxOccurs="1" name="isstandardgroup" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="article" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="price" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="importprice" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="externalid" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="images" type="XmlImage" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XMLGroup">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="groupno" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="variable" type="XMLVariable" />
      <xs:element minOccurs="0" maxOccurs="1" name="amount" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="length" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="width" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="height" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="article" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="isinternal" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="part" type="XMLPart" />
      <xs:element minOccurs="0" maxOccurs="1" name="externalid" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XMLPart">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="amount" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="length" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="width" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="height" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="withoutoutcontour" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="variable" type="XMLVariable" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="macro" type="XMLMacro" />
      <xs:element minOccurs="0" maxOccurs="1" name="ucs" type="UcsXml" />
      <xs:element minOccurs="0" maxOccurs="1" name="material" type="MaterialXml" />
      <xs:element minOccurs="0" maxOccurs="1" name="contour" type="ContourXml" />
      <xs:element minOccurs="0" maxOccurs="1" name="matbase" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="matfacetop" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="matfinishtop" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="matfacetopangle" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="matfacebottom" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="matfinishbottom" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="matfacebottomangle" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="edge" type="EdgeSegment" />
      <xs:element minOccurs="0" maxOccurs="1" name="additionalpartform" type="AdditionalPartForm" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="profiling" type="ProfilingSegment" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="cut" type="Cut" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="subbody" type="SubBody" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="hole" type="Hole" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="logiclink" type="LogicLink" />
      <xs:element minOccurs="0" maxOccurs="1" name="istrade" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="1" name="lockautomatismus" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="1" name="addgroup" type="xs:boolean" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="nccfiles" type="NccFile" />
      <xs:element minOccurs="0" maxOccurs="1" name="externalbarcodeno" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="externalpartno" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="parttype" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="externalid" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="images" type="XmlImage" />
    </xs:sequence>
    <xs:attribute name="partno" type="xs:string" />
  </xs:complexType>
  <xs:complexType name="XMLMacro">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="insertpoint" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="variable" type="XMLVariable" />
      <xs:element minOccurs="0" maxOccurs="1" name="ucs" type="UcsXml" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="UcsXml">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="origin" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="x" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="y" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="z" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MaterialXml">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="base" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="uppersurface" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="lowersurface" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="uppersurface2" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="lowersurface2" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="edge" type="EdgeXml" />
      <xs:element minOccurs="0" maxOccurs="1" name="profiling" type="ProfilingXml" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EdgeXml">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="edgesegment" type="EdgeSegmentXml" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EdgeSegmentXml">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="segmentid" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="material" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="thickness" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="mode" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="corner" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ProfilingXml">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="profilingsegment" type="ProfilingSegmentXml" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ProfilingSegmentXml">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="segmentid" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="profilname" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ContourXml">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="layername" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="height" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="polygon" type="PolygonXml" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PolygonXml">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="point" type="XmlPoint" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XmlPoint">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="value" type="xs:string" />
    </xs:sequence>
    <xs:attribute name="id" type="xs:string" />
  </xs:complexType>
  <xs:complexType name="EdgeSegment">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="id" type="xs:int" />
      <xs:element minOccurs="0" maxOccurs="1" name="material" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="height" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="mode" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="corner" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AdditionalPartForm">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="edge" type="EdgeSegment" />
    </xs:sequence>
    <xs:attribute name="parttype" type="xs:int" use="required" />
  </xs:complexType>
  <xs:complexType name="ProfilingSegment">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="id" type="xs:int" />
      <xs:element minOccurs="0" maxOccurs="1" name="name" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Cut">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="id" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="angle" type="xs:double" />
      <xs:element minOccurs="0" maxOccurs="1" name="startpoint" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="endpoint" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SubBody">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="id" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="height" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="ucs" type="UcsXml" />
      <xs:element minOccurs="0" maxOccurs="1" name="contour" type="ContourXml" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="profiling" type="ProfilingSegment" />
      <xs:element minOccurs="0" maxOccurs="1" name="isroutingcontour" type="xs:boolean" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Hole">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="id" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="diameter" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="startpoint" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="endpoint" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="LogicLink">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="id" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="partno" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="NccFile">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="filename" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="content" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="filenamegcode" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="cncfilenames" type="CncFileName" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="CncFileName">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="filename" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="filetag" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="machine" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="sequence" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="variable" type="XMLVariable" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XmlImage">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="imagetype" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="image" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="imagefilename" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="tag" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XMLAddress">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="firstname" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="lastname" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="company" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="street" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="zipcode" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="city" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="salutation" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="phone1" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="phone2" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="fax" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="email" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="website" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="1" name="vattaxno" type="xs:string" />
      <xs:element minOccurs="0" maxOccurs="unbounded" name="addresscontact" type="XMLAddressContact" />
      <xs:element minOccurs="0" maxOccurs="1" name="Id" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="XMLAddressContact">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="address" type="XMLAddress" />
    </xs:sequence>
    <xs:attribute name="type" type="xs:string" />
  </xs:complexType>
</xs:schema>