Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions Examples/05 - VerySimpleFixedPVC2_with_electrical_layout.pvc2
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,10 @@
</pv:inverters>
<!-- List of AC combiners -->
<pv:combiners_ac>
<!-- combiner tag -->
<pv:combiner_ac id="CombinerModel1">
<!-- combiner_ac tag -->
<pv:combiner_ac id="CombinerACModel1">
<pv:manufacturer>Generic</pv:manufacturer>
<pv:name>Generic combiner</pv:name>
<pv:name>Generic AC combiner</pv:name>
<pv:input_count>3</pv:input_count>
</pv:combiner_ac>
</pv:combiners_ac>
Expand Down Expand Up @@ -166,7 +166,7 @@
<pv:cable_to_parent url="#ACCableModel1" length="5" id="cableInstance1" />
<pv:inputs>
<!-- instance_combiner_ac tag, the AC combiner that will combine the 3 strings -->
<pv:instance_combiner_ac url="#CombinerModel1" id="combinerInstance">
<pv:instance_combiner_ac url="#CombinerACModel1" id="combinerAcInstance">
<!-- Cable between the AC combiner and the transformer -->
<pv:cable_to_parent url="#ACCableModel1" length="10" id="cableInstance2" />
<!-- inputs tag => the 3 inverters strings -->
Expand Down Expand Up @@ -444,27 +444,27 @@
</technique>
</extra>
</geometry>
<!-- We define the 3D model for combiners (contains the geometry of the combiner) -->
<geometry id="Combiner3DModel">
<!-- We define the 3D model for AC combiners (contains the geometry of the AC combiner) -->
<geometry id="CombinerAC3DModel">
<mesh>
<source id="combiner_positions">
<float_array id="combiner_positions_array" count="24">
<source id="combiner_ac_positions">
<float_array id="combiner_ac_positions_array" count="24">
-100 -100 0 100 -100 0 100 100 0 -100 100 0
-100 -100 120 100 -100 120 100 100 120 -100 100 120
</float_array>
<technique_common>
<accessor source="#combiner_positions_array" count="8" stride="3">
<accessor source="#combiner_ac_positions_array" count="8" stride="3">
<param name="X" type="float" />
<param name="Y" type="float" />
<param name="Z" type="float" />
</accessor>
</technique_common>
</source>
<vertices id="combiner_vertices">
<input semantic="POSITION" source="#combiner_positions" />
<vertices id="combiner_ac_vertices">
<input semantic="POSITION" source="#combiner_ac_positions" />
</vertices>
<polygons count="6">
<input semantic="VERTEX" source="#combiner_vertices" offset="0" />
<input semantic="VERTEX" source="#combiner_ac_vertices" offset="0" />
<p>0 1 2 3</p>
<p>4 5 6 7</p>
<p>0 1 5 4</p>
Expand All @@ -475,8 +475,8 @@
</mesh>
<extra>
<technique profile="PVCollada-2.0">
<!-- combiner3d tag, references the combiner defined in components -->
<pv:combiner3d combiner_id="CombinerModel1" />
<!-- combiner_ac3d tag, references the combiner_ac defined in components -->
<pv:combiner_ac3d combiner_ac_id="CombinerACModel1" />
</technique>
</extra>
</geometry>
Expand Down Expand Up @@ -640,14 +640,14 @@
</extra>
</instance_geometry>
</node>
<!-- We instantiate the combiner -->
<node id="Combiner3DNode" name="Combiner3DNode" sid="Combiner3DNode">
<!-- We instantiate the AC combiner -->
<node id="CombinerAC3DNode" name="CombinerAC3DNode" sid="CombinerAC3DNode">
<translate>600 -900 0</translate>
<instance_geometry url="#Combiner3DModel">
<instance_geometry url="#CombinerAC3DModel">
<extra>
<technique profile="PVCollada-2.0">
<!-- instance_combiner3d tag, references the corresponding instance_combiner of the circuit -->
<pv:instance_combiner3d instance_combiner_id="combinerInstance" />
<!-- instance_combiner_ac3d tag, references the corresponding instance_combiner_ac of the circuit -->
<pv:instance_combiner_ac3d instance_combiner_ac_id="combinerAcInstance" />
</technique>
</extra>
</instance_geometry>
Expand Down
73 changes: 54 additions & 19 deletions schema/pvcollada_references_2.0.sch
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,27 @@
</rule>
</pattern>

<!-- Pattern: Validate instance_combiner3d references -->
<pattern id="instance_combiner3d_references">
<rule context="pv:instance_combiner3d">
<!-- Pattern: Validate instance_combiner_ac3d references -->
<pattern id="instance_combiner_ac3d_references">
<rule context="pv:instance_combiner_ac3d">
<let name="instance_geom" value="ancestor::collada:instance_geometry"/>
<let name="geom_url" value="substring-after($instance_geom/@url, '#')"/>
<let name="referenced_geom" value="//collada:geometry[@id=$geom_url]"/>
<assert test="$referenced_geom//pv:combiner3d">
instance_combiner3d must be in an instance_geometry that references a geometry containing a combiner3d element.
<assert test="$referenced_geom//pv:combiner_ac3d">
instance_combiner_ac3d must be in an instance_geometry that references a geometry containing a combiner_ac3d element.
Referenced geometry: <value-of select="$geom_url"/>
</assert>
</rule>
</pattern>

<!-- Pattern: Validate instance_combiner_dc3d references -->
<pattern id="instance_combiner_dc3d_references">
<rule context="pv:instance_combiner_dc3d">
<let name="instance_geom" value="ancestor::collada:instance_geometry"/>
<let name="geom_url" value="substring-after($instance_geom/@url, '#')"/>
<let name="referenced_geom" value="//collada:geometry[@id=$geom_url]"/>
<assert test="$referenced_geom//pv:combiner_dc3d">
instance_combiner_dc3d must be in an instance_geometry that references a geometry containing a combiner_dc3d element.
Referenced geometry: <value-of select="$geom_url"/>
</assert>
</rule>
Expand Down Expand Up @@ -145,13 +158,24 @@
</rule>
</pattern>

<!-- Pattern: Validate combiner3d component references -->
<pattern id="combiner3d_component_references">
<rule context="pv:combiner3d[@combiner_id]">
<let name="combiner_ref" value="@combiner_id"/>
<assert test="//pv:combiner_ac[@id=$combiner_ref] or //pv:combiner_dc[@id=$combiner_ref]">
combiner3d element references non-existent combiner '<value-of select="$combiner_ref"/>'.
Must reference a combiner_ac or combiner_dc defined in components.
<!-- Pattern: Validate combiner_ac3d component references -->
<pattern id="combiner_ac3d_component_references">
<rule context="pv:combiner_ac3d[@combiner_ac_id]">
<let name="combiner_ac_ref" value="@combiner_ac_id"/>
<assert test="//pv:combiner_ac[@id=$combiner_ac_ref]">
combiner_ac3d element references non-existent combiner_ac '<value-of select="$combiner_ac_ref"/>'.
Must reference a combiner_ac defined in components.
</assert>
</rule>
</pattern>

<!-- Pattern: Validate combiner_dc3d component references -->
<pattern id="combiner_dc3d_component_references">
<rule context="pv:combiner_dc3d[@combiner_dc_id]">
<let name="combiner_dc_ref" value="@combiner_dc_id"/>
<assert test="//pv:combiner_dc[@id=$combiner_dc_ref]">
combiner_dc3d element references non-existent combiner_dc '<value-of select="$combiner_dc_ref"/>'.
Must reference a combiner_dc defined in components.
</assert>
</rule>
</pattern>
Expand Down Expand Up @@ -189,13 +213,24 @@
</rule>
</pattern>

<!-- Pattern: Validate instance_combiner3d circuit references -->
<pattern id="instance_combiner3d_circuit_references">
<rule context="pv:instance_combiner3d[@instance_combiner_id]">
<let name="instance_ref" value="@instance_combiner_id"/>
<assert test="//pv:instance_combiner_ac[@id=$instance_ref] or //pv:instance_combiner_dc[@id=$instance_ref]">
instance_combiner3d element references non-existent combiner instance '<value-of select="$instance_ref"/>'.
Must reference an instance_combiner_ac or instance_combiner_dc defined in the circuit.
<!-- Pattern: Validate instance_combiner_ac3d circuit references -->
<pattern id="instance_combiner_ac3d_circuit_references">
<rule context="pv:instance_combiner_ac3d[@instance_combiner_ac_id]">
<let name="instance_ref" value="@instance_combiner_ac_id"/>
<assert test="//pv:instance_combiner_ac[@id=$instance_ref]">
instance_combiner_ac3d element references non-existent combiner_ac instance '<value-of select="$instance_ref"/>'.
Must reference an instance_combiner_ac defined in the circuit.
</assert>
</rule>
</pattern>

<!-- Pattern: Validate instance_combiner_dc3d circuit references -->
<pattern id="instance_combiner_dc3d_circuit_references">
<rule context="pv:instance_combiner_dc3d[@instance_combiner_dc_id]">
<let name="instance_ref" value="@instance_combiner_dc_id"/>
<assert test="//pv:instance_combiner_dc[@id=$instance_ref]">
instance_combiner_dc3d element references non-existent combiner_dc instance '<value-of select="$instance_ref"/>'.
Must reference an instance_combiner_dc defined in the circuit.
</assert>
</rule>
</pattern>
Expand Down
45 changes: 36 additions & 9 deletions schema/pvcollada_schema_2.0.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -1161,29 +1161,56 @@ xmlns:collada="http://www.collada.org/2008/03/COLLADASchema">
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="combiner3d">
<xs:element name="combiner_ac3d">
<xs:annotation>
<xs:documentation>This tag should only appear in the extra/technique section of a Collada geometry tag to signal a 3D model
for a combiner.</xs:documentation>
for an AC combiner.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="combiner_id" type="xs:IDREF">
<xs:attribute name="combiner_ac_id" type="xs:IDREF">
<xs:annotation>
<xs:documentation>Id of the combiner defined in the components part</xs:documentation>
<xs:documentation>Id of the AC combiner defined in the components part</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="instance_combiner3d">
<xs:element name="instance_combiner_ac3d">
<xs:annotation>
<xs:documentation>This tag should only appear in the extra/technique section of a Collada instance_geometry tag to signal a
3D instance of a combiner. The attribute url of the instance_geometry must reference a Collada geometry that is a model for a
combiner3d (has an combiner3d tag in its extra/technique tag).</xs:documentation>
3D instance of an AC combiner. The attribute url of the instance_geometry must reference a Collada geometry that is a model
for a combiner_ac3d (has an combiner_ac3d tag in its extra/technique tag).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="instance_combiner_id" type="xs:IDREF">
<xs:attribute name="instance_combiner_ac_id" type="xs:IDREF">
<xs:annotation>
<xs:documentation>Id of the instance_combiner defined in the circuit part</xs:documentation>
<xs:documentation>Id of the instance_combiner_ac defined in the circuit part</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="combiner_dc3d">
<xs:annotation>
<xs:documentation>This tag should only appear in the extra/technique section of a Collada geometry tag to signal a 3D model
for an DC combiner.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="combiner_dc_id" type="xs:IDREF">
<xs:annotation>
<xs:documentation>Id of the DC combiner defined in the components part</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="instance_combiner_dc3d">
<xs:annotation>
<xs:documentation>This tag should only appear in the extra/technique section of a Collada instance_geometry tag to signal a
3D instance of an DC combiner. The attribute url of the instance_geometry must reference a Collada geometry that is a model
for a combiner_dc3d (has an combiner_dc3d tag in its extra/technique tag).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="instance_combiner_dc_id" type="xs:IDREF">
<xs:annotation>
<xs:documentation>Id of the instance_combiner_dc defined in the circuit part</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
Expand Down
Loading