Compare commits

...

9 Commits

Author SHA1 Message Date
scorpio810
a90ef4c581 Tag version 0.6 RC3
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/tags/0.6rc3@5041 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-09-20 09:44:34 +00:00
scorpio810
5612121df2 Update displayed Version to 0.60-RC3
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@5040 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-09-20 09:38:50 +00:00
blacksun
517c7db05e Remove the second color of conductor.
Add double click on the handler, open the conducteur properties dialog 


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@5034 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-08-27 19:08:02 +00:00
scorpio810
9b4b317d7f Merge commits "r4999, r500, r5001" to branch 0.60
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@5033 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-08-27 13:55:10 +00:00
scorpio810
fad7ba8347 Update Dutch translation, thank Dik
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@5026 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-08-23 11:05:10 +00:00
scorpio810
82fd0fd181 Fix typo
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@5020 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-08-15 01:43:45 +00:00
scorpio810
603fa81cb7 Minor
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@5018 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-08-11 00:48:54 +00:00
scorpio810
65d87814b6 Merge commits r5007, r5013, r5014, r5015
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@5017 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-08-10 23:19:04 +00:00
scorpio810
eeaecfa40e Creation de la branche 0.60
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/branches/0.60@4998 bfdf4180-ca20-0410-9c96-a3a8aa849046
2017-08-01 13:41:26 +00:00
83 changed files with 4790 additions and 1919 deletions

View File

@@ -21,6 +21,3 @@ part terminal + 1106
part text + 1107 part text + 1107
part text field + 1108 part text field + 1108
part rectangle + 1109 part rectangle + 1109
###QetGraphicsHandlerItem###
QetGraphicsHandlerItem = 1200

View File

@@ -0,0 +1,36 @@
<definition link_type="master" width="80" height="50" hotspot_x="51" orientation="dyyy" version="0.60" type="element" hotspot_y="24">
<uuid uuid="{a2740e69-3632-4ab0-8bd1-0591adc0b909}"/>
<names>
<name lang="fr">Interrupteur sectionneur triphasé</name>
</names>
<kindInformations>
<kindInformation show="1" name="type">protection</kindInformation>
</kindInformations>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<polygon antialias="true" y3="20" closed="false" x2="0" x1="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="10" y1="-10" x3="0"/>
<circle y="10" antialias="true" x="-42" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="4"/>
<circle y="-12" antialias="true" x="18" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="4"/>
<circle y="-12" antialias="true" x="-22" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="4"/>
<circle y="-12" antialias="true" x="-2" style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="4"/>
<polygon antialias="true" y3="20" closed="false" x2="0" x1="-5" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="10" y1="-10" x3="0"/>
<polygon antialias="true" y3="20" closed="false" x2="20" x1="15" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="10" y1="-10" x3="20"/>
<polygon antialias="true" y3="20" closed="false" x2="-20" x1="-25" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="10" y1="-10" x3="-20"/>
<input y="3" x="22.75" size="9" text="_" tagg="label"/>
<line length1="1.5" antialias="false" length2="1.5" end1="none" end2="none" x2="0" x1="0" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-12" y1="-20"/>
<line length1="1.5" antialias="false" length2="1.5" end1="none" end2="none" x2="-2" x1="2" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-12" y1="-12"/>
<line length1="1.5" antialias="false" length2="1.5" end1="none" end2="none" x2="-20" x1="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-12" y1="-20"/>
<line length1="1.5" antialias="false" length2="1.5" end1="none" end2="none" x2="-22" x1="-18" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-12" y1="-12"/>
<line length1="1.5" antialias="false" length2="1.5" end1="none" end2="none" x2="20" x1="20" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-12" y1="-20"/>
<line length1="1.5" antialias="false" length2="1.5" end1="none" end2="none" x2="18" x1="22" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-12" y1="-12"/>
<line length1="1.5" antialias="false" length2="1.5" end1="none" end2="none" x2="-40" x1="15" style="line-style:dashed;line-weight:normal;filling:none;color:black" y2="0" y1="0"/>
<line length1="1.5" antialias="false" length2="1.5" end1="none" end2="none" x2="-45" x1="-40" style="line-style:normal;line-weight:normal;filling:none;color:black" y2="-10" y1="10"/>
<terminal y="-20" x="0" orientation="n"/>
<terminal y="20" x="0" orientation="s"/>
<terminal y="-20" x="20" orientation="n"/>
<terminal y="20" x="20" orientation="s"/>
<terminal y="-20" x="-20" orientation="n"/>
<terminal y="20" x="-20" orientation="s"/>
</description>
</definition>

View File

@@ -0,0 +1,26 @@
<definition type="element" hotspot_y="44" version="0.60" hotspot_x="43" link_type="slave" orientation="dyyy" width="60" height="60">
<uuid uuid="{9f95f940-7ebe-43df-9f35-c4c07eb2e047}"/>
<names>
<name lang="fr">Contact NF disjoncteur magnéto-thermique GV</name>
</names>
<kindInformations>
<kindInformation name="number" show="1">1</kindInformation>
<kindInformation name="state" show="1">NC</kindInformation>
<kindInformation name="type" show="1">simple</kindInformation>
</kindInformations>
<informations></informations>
<description>
<polygon x3="-22" x6="-27" y4="-26" y2="-20" closed="false" x5="-27" y5="-26" y6="-30" x7="-27" x4="-22" x2="-27" y3="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="true" y1="-16" x1="-27" y7="-30"/>
<rect y="-30" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-37" width="20" height="28"/>
<text y="-5" text="I>" size="9" x="-34"/>
<input y="-13.5" text="_" size="8" tagg="label" rotate="true" x="4"/>
<line length1="1.5" length2="1.5" y2="-16" end2="none" x2="-17" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="-16" x1="-37"/>
<line length1="1.5" length2="1.5" y2="-40" end2="none" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="-25" x1="0"/>
<line length1="1.5" length2="1.5" y2="-25" end2="none" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="-5" x1="0"/>
<line length1="1.5" length2="1.5" y2="-5" end2="none" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="10" x1="0"/>
<line length1="1.5" length2="1.5" y2="-15" end2="none" x2="0" end1="none" style="line-style:normal;line-weight:thin;filling:none;color:black" antialias="false" y1="-15" x1="-15"/>
<line length1="1.5" length2="1.5" y2="-25" end2="none" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="-25" x1="0"/>
<terminal y="10" orientation="s" x="0"/>
<terminal y="-40" orientation="n" x="0"/>
</description>
</definition>

View File

@@ -0,0 +1,25 @@
<definition type="element" hotspot_y="44" version="0.60" hotspot_x="42" link_type="slave" orientation="dyyy" width="50" height="60">
<uuid uuid="{ad62e994-1c20-42c4-8a2f-40519cc56f5c}"/>
<names>
<name lang="fr">Contact NO disjoncteur magnéto-thermique GV</name>
</names>
<kindInformations>
<kindInformation name="number" show="1">1</kindInformation>
<kindInformation name="state" show="1">NC</kindInformation>
<kindInformation name="type" show="1">simple</kindInformation>
</kindInformations>
<informations></informations>
<description>
<polygon x3="-22" x6="-27" y4="-26" y2="-20" closed="false" x5="-27" y5="-26" y6="-30" x7="-27" x4="-22" x2="-27" y3="-20" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="true" y1="-16" x1="-27" y7="-30"/>
<rect y="-30" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" x="-37" width="20" height="28"/>
<text y="-5" text="I>" size="9" x="-34"/>
<input y="-13.5" text="_" size="8" tagg="label" rotate="true" x="4"/>
<line length1="1.5" length2="1.5" y2="-16" end2="none" x2="-17" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="-16" x1="-37"/>
<line length1="1.5" length2="1.5" y2="-40" end2="none" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="-25" x1="0"/>
<line length1="1.5" length2="1.5" y2="-25" end2="none" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="-5" x1="0"/>
<line length1="1.5" length2="1.5" y2="-5" end2="none" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black" antialias="false" y1="10" x1="0"/>
<line length1="1.5" length2="1.5" y2="-15" end2="none" x2="-7" end1="none" style="line-style:normal;line-weight:thin;filling:none;color:black" antialias="false" y1="-15" x1="-15"/>
<terminal y="-40" orientation="n" x="0"/>
<terminal y="10" orientation="s" x="0"/>
</description>
</definition>

View File

@@ -0,0 +1,47 @@
<definition width="70" orientation="dyyy" version="0.5" height="60" type="element" hotspot_y="27" link_type="simple" hotspot_x="44">
<uuid uuid="{90f11615-a2f2-4324-8d2c-c2a9b7377dfa}"/>
<names>
<name lang="it">Motore trifase PE + BRAKE</name>
<name lang="en">Three-phase engine PE + BRAKE</name>
<name lang="ru">Трёхфазный эл. мотор PE + BRAKE</name>
<name lang="cs">Trojfázový motor PE + BRAKE</name>
<name lang="es">Motor trifásico PE + BRAKE</name>
<name lang="pl">Silnik trójfazowy PE + BRAKE</name>
<name lang="de">Drehstrom Motor PE + BRAKE</name>
<name lang="pt">Motor trifásico PE + BRAKE</name>
<name lang="fr">Moteur triphasé PE + BRAKE</name>
</names>
<informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<text text="W1" rotation="270" x="8" y="-9" size="5"/>
<text text="V1" rotation="270" x="-2" y="-11" size="5"/>
<text text="PE" rotation="270" x="18" y="-11" size="5"/>
<text text="M" x="-10.25" y="18" size="18"/>
<circle diameter="30" antialias="true" x="-15" y="-5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input text="M_" tagg="label" x="-21" y="41" size="9"/>
<line x1="0" y2="-5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="-1.5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-1.5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="10" length1="1.5" y1="-16" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<arc start="30" angle="-70" width="35" height="35" antialias="true" x="-17.5" y="-7.5" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="12" length1="1.5" y1="10" end2="none" length2="1.5" antialias="false" x2="18" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" y2="20" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="-20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" y2="2" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="-23" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" y2="18" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="-23" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-23" y2="18" length1="1.5" y1="2" end2="none" length2="1.5" antialias="false" x2="-23" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="10" height="8" antialias="false" x="-35" y="6" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-25" y2="10" length1="1.5" y1="10" end2="none" length2="1.5" antialias="false" x2="-24" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-30" y2="-17" length1="1.5" y1="6" end2="none" length2="1.5" antialias="false" x2="-30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-30" y2="20" length1="1.5" y1="14" end2="none" length2="1.5" antialias="false" x2="-30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-30" y2="20" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="-40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-40" y2="-17" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="-40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="U1" rotation="270" x="-12" y="-10" size="5"/>
<terminal orientation="n" x="-40" y="-21"/>
<terminal orientation="n" x="0" y="-21"/>
<terminal orientation="n" x="10" y="-21"/>
<terminal orientation="n" x="-10" y="-21"/>
<terminal orientation="n" x="-30" y="-21"/>
<terminal orientation="n" x="20" y="-21"/>
</description>
</definition>

View File

@@ -0,0 +1,47 @@
<definition width="70" orientation="dyyy" version="0.5" height="60" type="element" hotspot_y="27" link_type="simple" hotspot_x="24">
<uuid uuid="{dbafa441-1b92-4540-a129-d9d07100d4ad}"/>
<names>
<name lang="it">Motore trifase PE + TERM</name>
<name lang="en">Three-phase engine PE + TERM</name>
<name lang="ru">Трёхфазный эл. мотор PE + TERM</name>
<name lang="cs">Trojfázový motor PE + TERM</name>
<name lang="es">Motor trifásico PE + TERM</name>
<name lang="pl">Silnik trójfazowy PE + TERM</name>
<name lang="de">Drehstrom Motor PE + TERM</name>
<name lang="pt">Motor trifásico PE + TERM</name>
<name lang="fr">Moteur triphasé PE + TERM</name>
</names>
<informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<text text="PE" rotation="270" x="18" y="-11" size="5"/>
<text text="W1" rotation="270" x="8" y="-9" size="5"/>
<text text="V1" rotation="270" x="-2" y="-11" size="5"/>
<text text="M" x="-10.25" y="18" size="18"/>
<circle diameter="30" antialias="true" x="-15" y="-5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input text="M_" tagg="label" x="-2" y="41" size="9"/>
<line x1="0" y2="-5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="-1.5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-1.5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="10" length1="1.5" y1="-16" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<arc start="30" angle="-70" width="35" height="35" antialias="true" x="-17.5" y="-7.5" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="12" length1="1.5" y1="10" end2="none" length2="1.5" antialias="false" x2="18" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="26" y2="7" length1="1.5" y1="14" end2="none" length2="1.5" antialias="false" x2="35" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="35" y2="5" length1="1.5" y1="7" end2="none" length2="1.5" antialias="false" x2="35" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="-15" length1="1.5" y1="2" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="-16" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="20" length1="1.5" y1="17" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="20" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="4" height="14" antialias="false" x="28" y="3" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="30" y2="17" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="30" y2="-17" length1="1.5" y1="3" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="3" length1="1.5" y1="17" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="U1" rotation="270" x="-12" y="-10" size="5"/>
<terminal orientation="n" x="40" y="-21"/>
<terminal orientation="n" x="30" y="-21"/>
<terminal orientation="n" x="10" y="-21"/>
<terminal orientation="n" x="20" y="-21"/>
<terminal orientation="n" x="-10" y="-21"/>
<terminal orientation="n" x="0" y="-21"/>
</description>
</definition>

View File

@@ -0,0 +1,59 @@
<definition width="90" orientation="dyyy" version="0.5" height="60" type="element" hotspot_y="27" link_type="simple" hotspot_x="44">
<uuid uuid="{97c46158-96c8-42e0-b198-96bdc6bdaee7}"/>
<names>
<name lang="it">Motore trifase PE + TERM + BRAKE</name>
<name lang="ru">Трёхфазный эл. мотор PE + TERM + BRAKE</name>
<name lang="en">Three-phase engine PE + TERM + BRAKE</name>
<name lang="cs">Trojfázový motor PE + TERM + BRAKE</name>
<name lang="pl">Silnik trójfazowy PE + TERM + BRAKE</name>
<name lang="es">Motor trifásico PE + TERM + BRAKE</name>
<name lang="de">Drehstrom Motor PE + TERM + BRAKE</name>
<name lang="pt">Motor trifásico PE + TERM + BRAKE</name>
<name lang="fr">Moteur triphasé PE + TERM + BRAKE</name>
</names>
<informations>Author: The QElectroTech team&#xd;
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<text text="W1" rotation="270" x="8" y="-9" size="5"/>
<text text="V1" rotation="270" x="-2" y="-11" size="5"/>
<text text="PE" rotation="270" x="18" y="-11" size="5"/>
<text text="M" x="-10.25" y="18" size="18"/>
<circle diameter="30" antialias="true" x="-15" y="-5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input text="M_" tagg="label" x="-13" y="41" size="9"/>
<line x1="0" y2="-5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="-1.5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-1.5" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="10" length1="1.5" y1="-16" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<arc start="30" angle="-70" width="35" height="35" antialias="true" x="-17.5" y="-7.5" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="12" length1="1.5" y1="10" end2="none" length2="1.5" antialias="false" x2="18" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="26" y2="7" length1="1.5" y1="14" end2="none" length2="1.5" antialias="false" x2="35" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="35" y2="5" length1="1.5" y1="7" end2="none" length2="1.5" antialias="false" x2="35" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="-15" length1="1.5" y1="2" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="-16" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="20" length1="1.5" y1="17" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="20" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="4" height="14" antialias="false" x="28" y="3" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="30" y2="17" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="30" y2="-17" length1="1.5" y1="3" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="3" length1="1.5" y1="17" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" y2="20" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="-20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" y2="2" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="-23" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-20" y2="18" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="-23" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-23" y2="18" length1="1.5" y1="2" end2="none" length2="1.5" antialias="false" x2="-23" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="10" height="8" antialias="false" x="-35" y="6" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-25" y2="10" length1="1.5" y1="10" end2="none" length2="1.5" antialias="false" x2="-24" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-30" y2="-17" length1="1.5" y1="6" end2="none" length2="1.5" antialias="false" x2="-30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-30" y2="20" length1="1.5" y1="14" end2="none" length2="1.5" antialias="false" x2="-30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-30" y2="20" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="-40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-40" y2="-17" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="-40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="U1" rotation="270" x="-12" y="-10" size="5"/>
<terminal orientation="n" x="-40" y="-21"/>
<terminal orientation="n" x="-30" y="-21"/>
<terminal orientation="n" x="40" y="-21"/>
<terminal orientation="n" x="30" y="-21"/>
<terminal orientation="n" x="10" y="-21"/>
<terminal orientation="n" x="20" y="-21"/>
<terminal orientation="n" x="-10" y="-21"/>
<terminal orientation="n" x="0" y="-21"/>
</description>
</definition>

View File

@@ -0,0 +1,33 @@
<definition width="120" orientation="dyyy" link_type="simple" type="element" hotspot_x="46" height="70" hotspot_y="35" version="0.5">
<uuid uuid="{7f4e4eca-1462-466c-80b6-bd2398c357c4}"/>
<names>
<name lang="fr">Servo Moteur</name>
</names>
<informations></informations>
<description>
<rect style="line-style:normal;line-weight:normal;filling:none;color:black" width="60" antialias="false" height="60" x="-30" y="-30"/>
<rect style="line-style:normal;line-weight:normal;filling:none;color:black" width="20" antialias="false" height="20" x="-30" y="-30"/>
<rect style="line-style:normal;line-weight:normal;filling:none;color:black" width="20" antialias="false" height="20" x="-30" y="-10"/>
<rect style="line-style:normal;line-weight:normal;filling:none;color:black" width="20" antialias="false" height="20" x="-30" y="10"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" y1="-20" y2="20" x1="0" x2="0" length1="1.5" antialias="false" end1="none" length2="1.5" end2="none"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" y1="-20" y2="-10" x1="0" x2="60" length1="1.5" antialias="true" end1="none" length2="1.5" end2="none"/>
<arc style="line-style:normal;line-weight:normal;filling:none;color:black" start="0" width="20" angle="90" antialias="true" height="20" x="50" y="-10"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" y1="10" y2="20" x1="60" x2="0" length1="1.5" antialias="true" end1="none" length2="1.5" end2="none"/>
<arc style="line-style:normal;line-weight:normal;filling:none;color:black" start="270" width="20" angle="90" antialias="true" height="20" x="50" y="-10"/>
<text text="M" x="10" y="2" size="9"/>
<circle style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="20" antialias="false" x="5" y="-10"/>
<text text="+" x="-24" y="-17" size="9"/>
<text text="Out" x="-27" y="6" size="7"/>
<text text="-" x="-22" y="24" size="9"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" y1="-20" y2="-20" x1="-30" x2="-40" length1="1.5" antialias="false" end1="none" length2="1.5" end2="none"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" y1="0" y2="0" x1="-30" x2="-40" length1="1.5" antialias="false" end1="none" length2="1.5" end2="none"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" y1="20" y2="20" x1="-30" x2="-40" length1="1.5" antialias="false" end1="none" length2="1.5" end2="none"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" y1="4" y2="4" x1="13" x2="17" length1="1.5" antialias="false" end1="none" length2="1.5" end2="none"/>
<line style="line-style:normal;line-weight:normal;filling:none;color:black" y1="6" y2="6" x1="13" x2="17" length1="1.5" antialias="false" end1="none" length2="1.5" end2="none"/>
<circle style="line-style:normal;line-weight:normal;filling:none;color:black" diameter="10" antialias="false" x="55" y="-5"/>
<input text="M__" tagg="label" rotate="true" x="-14" y="-42" size="9"/>
<terminal orientation="w" x="-40" y="-20"/>
<terminal orientation="w" x="-40" y="0"/>
<terminal orientation="w" x="-40" y="20"/>
</description>
</definition>

View File

@@ -0,0 +1,94 @@
<definition width="250" orientation="dyyy" version="0.5" height="100" type="element" hotspot_y="34" link_type="simple" hotspot_x="15">
<uuid uuid="{55dd9654-4b51-4054-a3b5-271c373515a8}"/>
<names>
<name lang="it">8200 vector base module</name>
<name lang="en">8200 vector base module</name>
<name lang="cs">8200 vector base module</name>
<name lang="pl">8200 vector base module</name>
<name lang="ar">8200 vector base module</name>
<name lang="fr">8200 vector base module</name>
</names>
<informations></informations>
<description>
<input rotate="true" text="L3 / N" tagg="none" rotation="270" x="100" y="8" size="7"/>
<input rotate="true" text="-UG" tagg="none" rotation="270" x="160" y="-1" size="7"/>
<input rotate="true" text="+UG" tagg="none" rotation="270" x="130" y="3" size="7"/>
<input rotate="true" text="BR1" tagg="none" rotation="270" x="90" y="56" size="7"/>
<input rotate="true" text="BR2" tagg="none" rotation="270" x="110" y="56" size="7"/>
<input rotate="true" text="K12" tagg="none" rotation="270" x="210" y="56" size="7"/>
<input rotate="true" text="T1" tagg="none" rotation="270" x="130" y="56" size="7"/>
<input rotate="true" text="K14" tagg="none" rotation="270" x="170" y="56" size="7"/>
<input rotate="true" text="K11" tagg="none" rotation="270" x="190" y="56" size="7"/>
<circle diameter="5" antialias="true" x="97.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="T2" tagg="none" rotation="270" x="150" y="56" size="7"/>
<circle diameter="5" antialias="true" x="207.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="157.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="230" y2="57" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="230" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="187.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="L2 / N" tagg="none" rotation="270" x="70" y="8" size="7"/>
<line x1="73" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="57" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="153" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="8" y2="42" length1="1.5" y1="42" end2="none" length2="1.5" antialias="false" x2="12" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="W" tagg="none" rotation="270" x="70" y="56" size="7"/>
<circle diameter="5" antialias="true" x="27.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="9" y2="40" length1="1.5" y1="40" end2="none" length2="1.5" antialias="false" x2="11" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="U" tagg="none" rotation="270" x="30" y="56" size="7"/>
<line x1="113" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="44" length1="1.5" y1="44" end2="none" length2="1.5" antialias="false" x2="14" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="V" tagg="none" rotation="270" x="50" y="56" size="7"/>
<circle diameter="5" antialias="true" x="67.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="44" length1="1.5" y1="54" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="L1" tagg="none" rotation="270" x="40" y="-8" size="7"/>
<line x1="53" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="37.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="8200 vector" tagg="none" x="7" y="15" size="9"/>
<line x1="8" y2="-12" length1="1.5" y1="-12" end2="none" length2="1.5" antialias="false" x2="12" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="9" y2="-10" length1="1.5" y1="-10" end2="none" length2="1.5" antialias="false" x2="11" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="-14" length1="1.5" y1="-14" end2="none" length2="1.5" antialias="false" x2="14" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="-24" length1="1.5" y1="-14" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="207" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="193" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="37" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="43" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="213" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="230" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="97" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="103" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="157" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="163" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="230" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?" tagg="label" x="-32" y="-19" size="9"/>
<terminal orientation="n" x="10" y="-30"/>
<terminal orientation="n" x="40" y="-30"/>
<terminal orientation="s" x="10" y="60"/>
<terminal orientation="s" x="30" y="60"/>
<terminal orientation="s" x="50" y="60"/>
<terminal orientation="s" x="70" y="60"/>
<terminal orientation="n" x="70" y="-30"/>
<terminal orientation="n" x="100" y="-30"/>
<terminal orientation="n" x="130" y="-30"/>
<terminal orientation="n" x="160" y="-30"/>
<terminal orientation="s" x="90" y="60"/>
<terminal orientation="s" x="110" y="60"/>
<terminal orientation="s" x="130" y="60"/>
<terminal orientation="s" x="150" y="60"/>
<terminal orientation="s" x="170" y="60"/>
<terminal orientation="s" x="190" y="60"/>
<terminal orientation="s" x="210" y="60"/>
</description>
</definition>

View File

@@ -0,0 +1,77 @@
<definition width="310" orientation="dyyy" version="0.5" height="100" type="element" hotspot_y="32" link_type="simple" hotspot_x="14">
<uuid uuid="{611d0ab4-56c9-4bc7-abd8-6b19ca06d6b4}"/>
<names>
<name lang="it">8200 vector CAN module E82ZAFCC001</name>
<name lang="en">8200 vector CAN module E82ZAFCC001</name>
<name lang="cs">8200 vector CAN module E82ZAFCC001</name>
<name lang="pl">8200 vector CAN module E82ZAFCC001</name>
<name lang="ar">8200 vector CAN module E82ZAFCC001</name>
<name lang="fr">8200 vector CAN module E82ZAFCC001</name>
</names>
<informations></informations>
<description>
<input rotate="true" text="39" tagg="none" x="41" y="49" size="7"/>
<input rotate="true" text="HI" tagg="none" x="182" y="49" size="7"/>
<input rotate="true" text="7" tagg="none" x="224" y="49" size="7"/>
<input rotate="true" text="20" tagg="none" x="261" y="49" size="7"/>
<input rotate="true" text="LO" tagg="none" x="100" y="49" size="7"/>
<input rotate="true" text="28" tagg="none" x="22" y="49" size="7"/>
<input rotate="true" text="28" tagg="none" x="61" y="49" size="7"/>
<input rotate="true" text="7" tagg="none" x="144" y="49" size="7"/>
<line x1="93" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="20" tagg="none" x="241" y="49" size="7"/>
<input rotate="true" text="7" tagg="none" x="204" y="49" size="7"/>
<circle diameter="5" antialias="true" x="267.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="7" tagg="none" x="84" y="49" size="7"/>
<input rotate="true" text="LO" tagg="none" x="161" y="49" size="7"/>
<input rotate="true" text="HI" tagg="none" x="122" y="49" size="7"/>
<circle diameter="5" antialias="true" x="227.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="187.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="207.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="247.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="39" tagg="none" x="0" y="49" size="7"/>
<circle diameter="5" antialias="true" x="67.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="E82ZAFCC&#xa;CAN" tagg="none" x="4" y="12.5" size="9"/>
<line x1="7" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-9" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-27" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="224" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="273" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="290" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="225" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="290" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="291" y2="57" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="291" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="153" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="193" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="207" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="213" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="227" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="233" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="247" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="253" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="267" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="_" tagg="label" x="302" y="-5" size="9"/>
<terminal orientation="s" x="250" y="60"/>
<terminal orientation="s" x="270" y="60"/>
<terminal orientation="s" x="190" y="60"/>
<terminal orientation="s" x="210" y="60"/>
<terminal orientation="s" x="230" y="60"/>
<terminal orientation="s" x="130" y="60"/>
<terminal orientation="s" x="150" y="60"/>
<terminal orientation="s" x="170" y="60"/>
<terminal orientation="s" x="70" y="60"/>
<terminal orientation="s" x="90" y="60"/>
<terminal orientation="s" x="110" y="60"/>
<terminal orientation="s" x="10" y="60"/>
<terminal orientation="s" x="30" y="60"/>
<terminal orientation="s" x="50" y="60"/>
</description>
</definition>

View File

@@ -0,0 +1,77 @@
<definition width="310" orientation="dyyy" version="0.5" height="100" type="element" hotspot_y="32" link_type="simple" hotspot_x="14">
<uuid uuid="{36e18720-020d-4787-9ce1-cd1e2b5bcfd9}"/>
<names>
<name lang="it">8200 vector standard i/o module E82ZAFSC</name>
<name lang="en">8200 vector standard i/o module E82ZAFSC</name>
<name lang="cs">8200 vector standard i/o module E82ZAFSC</name>
<name lang="pl">8200 vector standard i/o module E82ZAFSC</name>
<name lang="ar">8200 vector standard i/o module E82ZAFSC</name>
<name lang="fr">8200 vector standard i/o module E82ZAFSC</name>
</names>
<informations></informations>
<description>
<input rotate="true" text="8" tagg="none" x="44" y="49" size="7"/>
<input rotate="true" text="E3" tagg="none" x="181" y="49" size="7"/>
<input rotate="true" text="39" tagg="none" x="221" y="49" size="7"/>
<input rotate="true" text="59" tagg="none" x="261" y="49" size="7"/>
<input rotate="true" text="20" tagg="none" x="101" y="49" size="7"/>
<input rotate="true" text="7" tagg="none" x="24" y="49" size="7"/>
<input rotate="true" text="9" tagg="none" x="63" y="49" size="7"/>
<input rotate="true" text="E1" tagg="none" x="141" y="49" size="7"/>
<line x1="93" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="A1" tagg="none" x="241" y="49" size="7"/>
<input rotate="true" text="E4" tagg="none" x="201" y="49" size="7"/>
<circle diameter="5" antialias="true" x="267.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="7" tagg="none" x="84" y="49" size="7"/>
<input rotate="true" text="E2" tagg="none" x="161" y="49" size="7"/>
<input rotate="true" text="28" tagg="none" x="121" y="49" size="7"/>
<circle diameter="5" antialias="true" x="227.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="187.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="207.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="247.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="62" tagg="none" x="0" y="49" size="7"/>
<circle diameter="5" antialias="true" x="67.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="E82ZAFSC" tagg="none" x="4" y="12.5" size="9"/>
<line x1="7" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-9" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-27" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="224" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="273" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="290" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="225" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="290" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="291" y2="57" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="291" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="153" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="193" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="207" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="213" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="227" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="233" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="247" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="253" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="267" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="_" tagg="label" x="302" y="-6" size="9"/>
<terminal orientation="s" x="70" y="60"/>
<terminal orientation="s" x="190" y="60"/>
<terminal orientation="s" x="210" y="60"/>
<terminal orientation="s" x="30" y="60"/>
<terminal orientation="s" x="50" y="60"/>
<terminal orientation="s" x="150" y="60"/>
<terminal orientation="s" x="170" y="60"/>
<terminal orientation="s" x="10" y="60"/>
<terminal orientation="s" x="270" y="60"/>
<terminal orientation="s" x="90" y="60"/>
<terminal orientation="s" x="250" y="60"/>
<terminal orientation="s" x="230" y="60"/>
<terminal orientation="s" x="110" y="60"/>
<terminal orientation="s" x="130" y="60"/>
</description>
</definition>

View File

@@ -0,0 +1,6 @@
<qet-directory>
<names>
<name lang="en">Lenze</name>
<name lang="cs">Lenze</name>
</names>
</qet-directory>

View File

@@ -0,0 +1,67 @@
<definition width="230" orientation="dyyy" version="0.5" height="110" type="element" hotspot_y="39" link_type="simple" hotspot_x="66">
<uuid uuid="{b1feb40e-e154-497b-b4d6-6228e7b6c560}"/>
<names>
<name lang="en">PNOZ e1p</name>
<name lang="cs">PNOZ e1p</name>
<name lang="pl">PNOZ e1p</name>
<name lang="ar">PNOZ e1p</name>
<name lang="fr">PNOZ e1p</name>
</names>
<informations></informations>
<description>
<input rotate="true" text="Y32" tagg="none" rotation="270" x="140" y="3" size="7"/>
<line x1="-17" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-3" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="S11" tagg="none" rotation="270" x="-20" y="-2" size="7"/>
<circle diameter="5" antialias="true" x="-22.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="83" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="97" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-37" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-23" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="57.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="158" y2="58" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="158" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="143" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="157" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="PNOZ e1p" tagg="none" x="-55" y="14.5" size="9"/>
<line x1="123" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="137" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="63" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="77" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="103" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="117" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-60" y2="58" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="S34" tagg="none" rotation="270" x="80" y="-1" size="7"/>
<input rotate="true" text="S12" tagg="none" rotation="270" x="0" y="-1" size="7"/>
<line x1="-60" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="-43" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="77.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="117.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="Y5" tagg="none" rotation="270" x="119" y="-3" size="7"/>
<line x1="43" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="57" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="A2" tagg="none" rotation="270" x="-40" y="54" size="7"/>
<input rotate="true" text="Y4" tagg="none" rotation="270" x="99" y="-4" size="7"/>
<circle diameter="5" antialias="true" x="-2.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="S22" tagg="none" rotation="270" x="60" y="-1" size="7"/>
<circle diameter="5" antialias="true" x="-42.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="24" tagg="none" rotation="270" x="120" y="52" size="7"/>
<circle diameter="5" antialias="true" x="117.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="S21" tagg="none" rotation="270" x="40" y="-1" size="7"/>
<circle diameter="5" antialias="true" x="137.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="97.5001" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-60" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-43" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="57.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="37.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="A1" tagg="none" rotation="270" x="-40" y="-6" size="7"/>
<circle diameter="5" antialias="true" x="-42.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="14" tagg="none" rotation="270" x="60" y="54" size="7"/>
<line x1="3" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="37" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-37" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="57" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="63" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="117" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="123" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="157" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="_" tagg="label" x="165" y="48.5" size="9"/>
<terminal orientation="s" x="-40" y="61"/>
<terminal orientation="n" x="-40" y="-31"/>
<terminal orientation="n" x="40" y="-31"/>
<terminal orientation="n" x="60" y="-31"/>
<terminal orientation="n" x="0" y="-31"/>
<terminal orientation="n" x="100" y="-31"/>
<terminal orientation="n" x="80" y="-31"/>
<terminal orientation="n" x="120" y="-31"/>
<terminal orientation="n" x="140" y="-31"/>
<terminal orientation="s" x="120" y="61"/>
<terminal orientation="s" x="60" y="61"/>
<terminal orientation="n" x="-20" y="-31"/>
</description>
</definition>

View File

@@ -0,0 +1,62 @@
<definition width="210" orientation="dyyy" version="0.5" height="210" type="element" hotspot_y="37" link_type="simple" hotspot_x="15">
<uuid uuid="{7de60078-956d-4e74-a01f-5a2a39b83d6a}"/>
<names>
<name lang="en">PM 1207 6EP1332-1SH71</name>
<name lang="cs">PM 1207 6EP1332-1SH71</name>
<name lang="pl">PM 1207 6EP1332-1SH71</name>
<name lang="ar">PM 1207 6EP1332-1SH71</name>
<name lang="pt">PM 1207 6EP1332-1SH71</name>
<name lang="fr">PM 1207 6EP1332-1SH71</name>
</names>
<informations></informations>
<description>
<text text="L+" x="107" y="-15" size="6"/>
<text text="120/230VAC" x="9" y="-3" size="6"/>
<text text="M" x="167" y="-15" size="6"/>
<text text="L" x="7" y="-15" size="6"/>
<text text="L+" x="126" y="-15" size="6"/>
<text text="PM1207" x="2" y="65" size="6"/>
<text text="24VDC" x="127" y="-3" size="6"/>
<text text="N" x="26" y="-15" size="6"/>
<text text="M" x="147" y="-15" size="6"/>
<line x1="13" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="190" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="190" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="102" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="102" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="60" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="179" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="179" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="153" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="128" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="108" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="48" y2="-13" length1="1.5" y1="-13" end2="none" length2="1.5" antialias="false" x2="52" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.4999" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="49" y2="-11" length1="1.5" y1="-11" end2="none" length2="1.5" antialias="false" x2="51" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="46" y2="-15" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="54" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="50" y2="-25" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="50" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="108" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="190" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="167" length1="1.5" y1="167" end2="none" length2="1.5" antialias="false" x2="189" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="189" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="189" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="_" tagg="label" x="53" y="175.5" size="9"/>
<line x1="2" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="102" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="178" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<terminal orientation="n" x="10" y="-31"/>
<terminal orientation="n" x="30" y="-31"/>
<terminal orientation="n" x="50" y="-31"/>
<terminal orientation="n" x="150" y="-31"/>
<terminal orientation="n" x="170" y="-31"/>
<terminal orientation="n" x="110.5" y="-31"/>
<terminal orientation="n" x="130.5" y="-31"/>
</description>
</definition>

View File

@@ -0,0 +1,121 @@
<definition width="410" orientation="dyyy" version="0.5" height="210" type="element" hotspot_y="14" link_type="simple" hotspot_x="15">
<uuid uuid="{f2add6aa-9939-4165-921d-e40a9bcd4b1a}"/>
<names>
<name lang="en">SM1234 6ES7234-4HE32-0XB0</name>
<name lang="cs">SM1234 6ES7234-4HE32-0XB0</name>
<name lang="pl">SM1234 6ES7234-4HE32-0XB0</name>
<name lang="ar">SM1234 6ES7234-4HE32-0XB0</name>
<name lang="pt">SM1234 6ES7234-4HE32-0XB0</name>
<name lang="fr">SM1234 6ES7234-4HE32-0XB0</name>
</names>
<informations></informations>
<description>
<line x1="362.5" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="379.5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="ANALOG INPUTS" x="180" y="66" size="8"/>
<line x1="282.5" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="299.5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="60" y2="20" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="202.5" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="219.5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="153.5" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="170.5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="IW____" tagg="none" x="233" y="39" size="9"/>
<input rotate="true" text="IW____" tagg="none" x="153" y="39" size="9"/>
<input rotate="true" text="IW____" tagg="none" x="314" y="38" size="9"/>
<line x1="122.5" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="139.5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="0+" x="78" y="7" size="6"/>
<text text="2+" x="238" y="7" size="6"/>
<text text="1+" x="158" y="7" size="6"/>
<text text="3+" x="318" y="7" size="6"/>
<text text="1-" x="198" y="7" size="6"/>
<text text="0-" x="118" y="7" size="6"/>
<text text="2-" x="278" y="7" size="6"/>
<text text="3-" x="358" y="7" size="6"/>
<circle diameter="5" antialias="true" x="357.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="197.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="277.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="117.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73.5" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="90.5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="237.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="317.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="90.5" y2="186" length1="1.5" y1="159" end2="none" length2="1.5" antialias="false" x2="90.5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="157.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="77.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="300" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="317" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="60" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="77" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="220" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="237" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="140" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="157" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="323" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="357" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="83" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="117" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="163" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="197" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170.5" y2="186" length1="1.5" y1="159" end2="none" length2="1.5" antialias="false" x2="170.5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="243" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="277" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="300" y2="20" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="300" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="380" y2="20" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="380" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="220" y2="20" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="1M" x="104" y="180" size="6"/>
<text text="1" x="148" y="180" size="6"/>
<circle diameter="5" antialias="true" x="147.5" y="184.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="184.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="0M" x="24" y="180" size="6"/>
<text text="L+" x="5" y="6" size="6"/>
<line x1="90" y2="159" length1="1.5" y1="159" end2="none" length2="1.5" antialias="false" x2="170" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="QW____" tagg="none" x="90" y="146.5" size="9"/>
<text text="SM1234 4AI 2AO" x="12" y="92" size="8"/>
<text text="24VDC" x="7" y="31" size="6"/>
<text text="ANALOG OUTPUTS" x="45" y="124" size="8"/>
<line x1="90" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="0" x="68" y="180" size="6"/>
<text text="M" x="26" y="6" size="6"/>
<line x1="13" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="186" length1="1.5" y1="159" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="21" length1="1.5" y1="21" end2="none" length2="1.5" antialias="false" x2="37" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<polygon y1="11" y3="15" antialias="true" closed="false" y4="17" x1="19" y6="15" y7="11" x8="19" y9="12" y8="11" x2="19" x9="19" x3="17" style="line-style:normal;line-weight:normal;filling:none;color:black" y5="15" x6="21" x7="21" y2="15" x4="20" x5="23"/>
<line x1="38" y2="21" length1="1.5" y1="-6" end2="none" length2="1.5" antialias="false" x2="38" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="21" length1="1.5" y1="-6" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="112" length1="1.5" y1="-6" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="184.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="48" y2="8" length1="1.5" y1="8" end2="none" length2="1.5" antialias="false" x2="52" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.4999" y="-9.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="49" y2="10" length1="1.5" y1="10" end2="none" length2="1.5" antialias="false" x2="51" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="46" y2="6" length1="1.5" y1="6" end2="none" length2="1.5" antialias="false" x2="54" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="50" y2="-4" length1="1.5" y1="6" end2="none" length2="1.5" antialias="false" x2="50" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="184.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="159" length1="1.5" y1="159" end2="none" length2="1.5" antialias="false" x2="90" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="72" length1="1.5" y1="72" end2="none" length2="1.5" antialias="false" x2="89" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="112" length1="1.5" y1="112" end2="none" length2="1.5" antialias="false" x2="89" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="-49" y="94" size="9"/>
<input rotate="true" text="QW____" tagg="none" x="10" y="146.5" size="9"/>
<line x1="10" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="89" y2="72" length1="1.5" y1="72" end2="none" length2="1.5" antialias="false" x2="390" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="90" y2="112" length1="1.5" y1="112" end2="none" length2="1.5" antialias="false" x2="390" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="140" y2="20" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="140" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="60" y2="20" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="380" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="IW____" tagg="none" x="73" y="40" size="9"/>
<line x1="-10" y2="187" length1="1.5" y1="110" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="380" y2="-7" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="390" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="390" y2="186" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="390" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="187" y2="187" length1="1.5" y1="187" end2="none" length2="1.5" antialias="false" x2="390" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<terminal orientation="n" x="10" y="-10"/>
<terminal orientation="n" x="30" y="-10"/>
<terminal orientation="n" x="50" y="-10"/>
<terminal orientation="s" x="30" y="190"/>
<terminal orientation="s" x="70" y="190"/>
<terminal orientation="s" x="110" y="190"/>
<terminal orientation="s" x="150" y="190"/>
<terminal orientation="n" x="360" y="-10"/>
<terminal orientation="n" x="120" y="-10"/>
<terminal orientation="n" x="80" y="-10"/>
<terminal orientation="n" x="280" y="-10"/>
<terminal orientation="n" x="240" y="-10"/>
<terminal orientation="n" x="160" y="-10"/>
<terminal orientation="n" x="200" y="-10"/>
<terminal orientation="n" x="320" y="-10"/>
</description>
</definition>

View File

@@ -0,0 +1,69 @@
<definition width="130" orientation="dyyy" version="0.5" height="220" type="element" hotspot_y="39" link_type="simple" hotspot_x="14">
<uuid uuid="{39a95119-2325-4a8f-a227-12e860cd609d}"/>
<names>
<name lang="en">CPU 1214C 6ES7214-1AG31-0XB0 PART1</name>
<name lang="cs">CPU 1214C 6ES7214-1AG31-0XB0 PART1</name>
<name lang="pl">CPU 1214C 6ES7214-1AG31-0XB0 PART1</name>
<name lang="ar">CPU 1214C 6ES7214-1AG31-0XB0 PART1</name>
<name lang="pt">CPU 1214C 6ES7214-1AG31-0XB0 PART1</name>
<name lang="fr">CPU 1214C 6ES7214-1AG31-0XB0 PART1</name>
</names>
<informations></informations>
<description>
<text text="PART 1/5" x="61" y="79" size="6"/>
<input rotate="true" text="__-__-__-__-__-__" tagg="none" x="-2" y="158.5" size="6"/>
<text text=" MAC ADDRESS" x="4" y="152.5" size="6"/>
<text text="DC/DC/DC" x="-2" y="79" size="6"/>
<text text="PROFINET (LAN)" x="2" y="142.5" size="6"/>
<text text="L+" x="5" y="-15" size="6"/>
<text text="L+" x="66" y="-15" size="6"/>
<text text="CPU 1214C" x="-2" y="69" size="6"/>
<text text="X1 P1" x="29" y="125" size="6"/>
<text text="24VDC" x="7" y="10" size="6"/>
<text text="24VDC" x="67" y="10" size="6"/>
<text text="M" x="26" y="-15" size="6"/>
<text text="M" x="87" y="-15" size="6"/>
<line x1="-4" y2="130" length1="1.5" y1="130" end2="none" length2="1.5" antialias="false" x2="94" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="15" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="59" height="3" antialias="false" x="16" y="166" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-4" y2="131" length1="1.5" y1="167" end2="none" length2="1.5" antialias="false" x2="-4" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="94" y2="130" length1="1.5" y1="167" end2="none" length2="1.5" antialias="false" x2="94" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="110" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="110" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="37" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="62" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="98" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<polygon y1="-4" y3="-8" antialias="true" closed="false" y4="-8" x1="79" y6="-8" y7="-8" x8="79" y9="-4" x10="79" y8="-8" x2="81" x9="79" x3="81" style="line-style:normal;line-weight:normal;filling:none;color:black" y5="-10" x6="77" x7="78" y2="-4" x4="83" x5="80" y10="-4"/>
<line x1="93" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<polygon y1="-10" y3="-6" antialias="true" closed="false" y4="-4" x1="19" y6="-6" y7="-10" x8="19" y9="-9" y8="-10" x2="19" x9="19" x3="17" style="line-style:normal;line-weight:normal;filling:none;color:black" y5="-6" x6="21" x7="21" y2="-6" x4="20" x5="23"/>
<line x1="38" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="38" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="98" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="98" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="62" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="62" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="88" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.9999" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="48" y2="-13" length1="1.5" y1="-13" end2="none" length2="1.5" antialias="false" x2="52" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.4999" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="49" y2="-11" length1="1.5" y1="-11" end2="none" length2="1.5" antialias="false" x2="51" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="46" y2="-15" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="54" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="50" y2="-25" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="50" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="76" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="109" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="107" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="109" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="110" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="111" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="77" y="182.5" size="9"/>
<terminal orientation="n" x="10" y="-31"/>
<terminal orientation="n" x="30" y="-31"/>
<terminal orientation="n" x="50" y="-31"/>
<terminal orientation="n" x="70.5" y="-31"/>
<terminal orientation="n" x="90.5" y="-31"/>
<terminal orientation="s" x="40" y="171"/>
</description>
</definition>

View File

@@ -0,0 +1,64 @@
<definition width="210" orientation="dyyy" version="0.5" height="130" type="element" hotspot_y="16" link_type="simple" hotspot_x="15">
<uuid uuid="{9dc79fd5-ba11-45a3-b53c-47ab22ecc215}"/>
<names>
<name lang="en">CPU 1214C 6ES7214-1AG31-0XB0 PART2</name>
<name lang="cs">CPU 1214C 6ES7214-1AG31-0XB0 PART2</name>
<name lang="pl">CPU 1214C 6ES7214-1AG31-0XB0 PART2</name>
<name lang="ar">CPU 1214C 6ES7214-1AG31-0XB0 PART2</name>
<name lang="pt">CPU 1214C 6ES7214-1AG31-0XB0 PART2</name>
<name lang="fr">CPU 1214C 6ES7214-1AG31-0XB0 PART2</name>
</names>
<informations></informations>
<description>
<text text="PART 2/5" x="136.741" y="98.2447" size="6"/>
<line x1="0" y2="20" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="DC/DC/DC" x="-1" y="99" size="6"/>
<text text="1M" x="3" y="6" size="6"/>
<text text="DIa" x="24" y="16" size="6"/>
<text text=".0" x="27" y="5" size="6"/>
<text text="CPU 1214C" x="-1" y="89" size="6"/>
<text text="24VDC INPUTS" x="52" y="32" size="6"/>
<text text=".7" x="167" y="5" size="6"/>
<text text=".4" x="107" y="5" size="6"/>
<text text=".3" x="87" y="5" size="6"/>
<text text=".2" x="67" y="5" size="6"/>
<text text=".1" x="47" y="5" size="6"/>
<text text=".6" x="147" y="5" size="6"/>
<text text=".5" x="127" y="5" size="6"/>
<line x1="180" y2="20" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="180" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="110" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="153" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="190" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="0" y2="20" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="180" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="70" length1="1.5" y1="70" end2="none" length2="1.5" antialias="false" x2="189" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="190" y2="109" length1="1.5" y1="-7" end2="none" length2="1.5" antialias="false" x2="190" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="110" length1="1.5" y1="110" end2="none" length2="1.5" antialias="false" x2="190" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="156.741" y="122.745" size="9"/>
<terminal orientation="n" x="10" y="-11"/>
<terminal orientation="n" x="30" y="-11"/>
<terminal orientation="n" x="50" y="-11"/>
<terminal orientation="n" x="70" y="-11"/>
<terminal orientation="n" x="90" y="-11"/>
<terminal orientation="n" x="110" y="-11"/>
<terminal orientation="n" x="130" y="-11"/>
<terminal orientation="n" x="150" y="-11"/>
<terminal orientation="n" x="170" y="-11"/>
</description>
</definition>

View File

@@ -0,0 +1,56 @@
<definition width="170" orientation="dyyy" version="0.5" height="130" type="element" hotspot_y="16" link_type="simple" hotspot_x="15">
<uuid uuid="{631abbd8-1471-40ce-a963-eee0921920dc}"/>
<names>
<name lang="en">CPU 1214C 6ES7214-1AG31-0XB0 PART3</name>
<name lang="cs">CPU 1214C 6ES7214-1AG31-0XB0 PART3</name>
<name lang="pl">CPU 1214C 6ES7214-1AG31-0XB0 PART3</name>
<name lang="ar">CPU 1214C 6ES7214-1AG31-0XB0 PART3</name>
<name lang="pt">CPU 1214C 6ES7214-1AG31-0XB0 PART3</name>
<name lang="fr">CPU 1214C 6ES7214-1AG31-0XB0 PART3</name>
</names>
<informations></informations>
<description>
<line x1="0" y2="20" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="PART 3/5" x="96" y="98" size="6"/>
<text text="DC/DC/DC" x="-1" y="98" size="6"/>
<text text="DIb" x="25" y="17" size="6"/>
<text text=".0" x="27" y="5" size="6"/>
<text text="1M" x="4" y="5" size="6"/>
<text text="CPU 1214C" x="-1" y="88" size="6"/>
<text text="24VDC INPUTS" x="34" y="31" size="6"/>
<text text=".4" x="107" y="5" size="6"/>
<text text=".3" x="87" y="5" size="6"/>
<text text=".2" x="67" y="5" size="6"/>
<text text=".1" x="47" y="5" size="6"/>
<text text=".5" x="127" y="5" size="6"/>
<line x1="140" y2="20" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="140" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="-10.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="-8" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="150" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="1" y2="20" length1="1.5" y1="20" end2="none" length2="1.5" antialias="false" x2="140" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="109" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="110" length1="1.5" y1="110" end2="none" length2="1.5" antialias="false" x2="150" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="150" y2="110" length1="1.5" y1="-8" end2="none" length2="1.5" antialias="false" x2="150" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="70" length1="1.5" y1="70" end2="none" length2="1.5" antialias="false" x2="150" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="117" y="123.5" size="9"/>
<terminal orientation="n" x="10" y="-11"/>
<terminal orientation="n" x="30" y="-11"/>
<terminal orientation="n" x="50" y="-11"/>
<terminal orientation="n" x="70" y="-11"/>
<terminal orientation="n" x="90" y="-11"/>
<terminal orientation="n" x="110" y="-11"/>
<terminal orientation="n" x="130" y="-11"/>
</description>
</definition>

View File

@@ -0,0 +1,41 @@
<definition width="100" orientation="dyyy" version="0.5" height="130" type="element" hotspot_y="45" link_type="simple" hotspot_x="15">
<uuid uuid="{0bb6efba-bc9e-40f3-b451-2de11b859ecb}"/>
<names>
<name lang="en">CPU 1214C 6ES7214-1AG31-0XB0 PART4</name>
<name lang="cs">CPU 1214C 6ES7214-1AG31-0XB0 PART4</name>
<name lang="pl">CPU 1214C 6ES7214-1AG31-0XB0 PART4</name>
<name lang="ar">CPU 1214C 6ES7214-1AG31-0XB0 PART4</name>
<name lang="pt">CPU 1214C 6ES7214-1AG31-0XB0 PART4</name>
<name lang="fr">CPU 1214C 6ES7214-1AG31-0XB0 PART4</name>
</names>
<informations></informations>
<description>
<text text="PART 4/5" x="-4" y="74" size="6"/>
<text text="INPUTS" x="14" y="14" size="6"/>
<text text="DC/DC/DC" x="-4" y="64" size="6"/>
<text text="0" x="28" y="-23" size="6"/>
<text text="AI" x="25" y="-11" size="6"/>
<text text="CPU 1214C" x="-4" y="54" size="6"/>
<text text="2M" x="5" y="-23" size="6"/>
<text text="1" x="48" y="-23" size="6"/>
<line x1="2" y2="-9" length1="1.5" y1="-9" end2="none" length2="1.5" antialias="false" x2="58" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="ANALOG" x="13" y="1" size="6"/>
<line x1="2" y2="-10" length1="1.5" y1="-37" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="58" y2="-10" length1="1.5" y1="-37" end2="none" length2="1.5" antialias="false" x2="58" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-37" length1="1.5" y1="-37" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="-37" length1="1.5" y1="-37" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-39.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-39.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="-39.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-37" length1="1.5" y1="-37" end2="none" length2="1.5" antialias="false" x2="80" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="-37" length1="1.5" y1="-37" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="81" length1="1.5" y1="-37" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="80" y2="81" length1="1.5" y1="-37" end2="none" length2="1.5" antialias="false" x2="80" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="80" y2="81" length1="1.5" y1="81" end2="none" length2="1.5" antialias="false" x2="-9" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="80" y2="41" length1="1.5" y1="41" end2="none" length2="1.5" antialias="false" x2="-9" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="46" y="93.5" size="9"/>
<terminal orientation="n" x="10" y="-40"/>
<terminal orientation="n" x="30" y="-40"/>
<terminal orientation="n" x="50" y="-40"/>
</description>
</definition>

View File

@@ -0,0 +1,77 @@
<definition width="270" orientation="dyyy" version="0.5" height="130" type="element" hotspot_y="63" link_type="simple" hotspot_x="135">
<uuid uuid="{03c6ef2b-460b-433b-bdeb-edcd78c7aabc}"/>
<names>
<name lang="en">CPU 1214C 6ES7214-1AG31-0XB0 PART5</name>
<name lang="cs">CPU 1214C 6ES7214-1AG31-0XB0 PART5</name>
<name lang="pl">CPU 1214C 6ES7214-1AG31-0XB0 PART5</name>
<name lang="ar">CPU 1214C 6ES7214-1AG31-0XB0 PART5</name>
<name lang="pt">CPU 1214C 6ES7214-1AG31-0XB0 PART5</name>
<name lang="fr">CPU 1214C 6ES7214-1AG31-0XB0 PART5</name>
</names>
<informations></informations>
<description>
<text text="PART 5/5" x="76" y="-30" size="6"/>
<text text="DC/DC/DC" x="-121" y="-30" size="6"/>
<text text=".0" x="-71" y="52" size="6"/>
<text text="DQb" x="83" y="41" size="6"/>
<text text="DQa" x="-76" y="40" size="6"/>
<text text="CPU 1214C" x="-121" y="-40" size="6"/>
<text text="24VDC OUTPUTS" x="-44" y="28" size="6"/>
<text text="3L+" x="-116" y="52" size="6"/>
<text text="3M" x="-95" y="52" size="6"/>
<text text=".7" x="67" y="52" size="6"/>
<text text=".0" x="87" y="52" size="6"/>
<text text=".4" x="7" y="52" size="6"/>
<text text=".3" x="-13" y="52" size="6"/>
<text text=".2" x="-33" y="52" size="6"/>
<text text=".1" x="-53" y="52" size="6"/>
<text text=".6" x="47" y="52" size="6"/>
<text text=".1" x="107" y="52" size="6"/>
<text text=".5" x="27" y="52" size="6"/>
<line x1="-118" y2="57" length1="1.5" y1="30" end2="none" length2="1.5" antialias="false" x2="-118" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="117" y2="30" length1="1.5" y1="30" end2="none" length2="1.5" antialias="false" x2="-117" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="117" y2="30" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="117" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-47" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="-33" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-52.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-7" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-27" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="-13" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-67" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="-53" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-87" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="-73" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-107" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="-93" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-12.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-112.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-32.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-72.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-92.5" y="55.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="112" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="130" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-113" y2="58" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="-130" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-130" y2="-60" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="-130" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="130" y2="-60" length1="1.5" y1="58" end2="none" length2="1.5" antialias="false" x2="130" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-130" y2="-20" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="129" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-130" y2="-60" length1="1.5" y1="-60" end2="none" length2="1.5" antialias="false" x2="130" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="-131" y="-71.5" size="9"/>
<terminal orientation="s" x="-110" y="61"/>
<terminal orientation="s" x="-90" y="61"/>
<terminal orientation="s" x="-70" y="61"/>
<terminal orientation="s" x="-30" y="61"/>
<terminal orientation="s" x="-10" y="61"/>
<terminal orientation="s" x="10" y="61"/>
<terminal orientation="s" x="30" y="61"/>
<terminal orientation="s" x="50" y="61"/>
<terminal orientation="s" x="70" y="61"/>
<terminal orientation="s" x="90" y="61"/>
<terminal orientation="s" x="110" y="61"/>
<terminal orientation="s" x="-50" y="61"/>
</description>
</definition>

View File

@@ -0,0 +1,202 @@
<definition width="450" orientation="dyyy" version="0.5" height="220" type="element" hotspot_y="39" link_type="simple" hotspot_x="15">
<uuid uuid="{b198607c-63b2-4325-a77a-1e93e887c0a8}"/>
<names>
<name lang="en">6ES7223-1BL30-0XB0</name>
<name lang="cs">6ES7223-1BL30-0XB0</name>
<name lang="pl">6ES7223-1BL30-0XB0</name>
<name lang="ar">6ES7223-1BL30-0XB0</name>
<name lang="pt">6ES7223-1BL30-0XB0</name>
<name lang="fr">6ES7223-1BL30-0XB0</name>
</names>
<informations></informations>
<description>
<line x1="240" y2="167" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="240" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="2M" x="245" y="-15" size="6"/>
<text text=".0" x="247" y="161" size="6"/>
<text text="DQb" x="248" y="150" size="6"/>
<text text=".0" x="267" y="-14" size="6"/>
<text text=".7" x="387" y="161" size="6"/>
<text text=".7" x="407" y="-14" size="6"/>
<text text=".4" x="347" y="-14" size="6"/>
<text text="DC/DC" x="375" y="79" size="6"/>
<text text=".4" x="327" y="161" size="6"/>
<text text=".3" x="307" y="161" size="6"/>
<text text=".3" x="327" y="-14" size="6"/>
<text text=".2" x="287" y="161" size="6"/>
<text text=".2" x="307" y="-14" size="6"/>
<text text=".0" x="87" y="161" size="6"/>
<text text=".1" x="267" y="161" size="6"/>
<text text=".1" x="287" y="-14" size="6"/>
<text text="DQa" x="88" y="150" size="6"/>
<text text=".6" x="387" y="-14" size="6"/>
<text text=".6" x="367" y="161" size="6"/>
<text text=".5" x="367" y="-14" size="6"/>
<text text="L+" x="5" y="-15" size="6"/>
<text text=".5" x="347" y="161" size="6"/>
<line x1="400" y2="167" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="400" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="420" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="420" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="313" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="327" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="233" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="247" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="413" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="427" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="393" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="407" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="DIb" x="245" y="-2" size="6"/>
<line x1="393" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="407" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="267.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="373" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="387" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="373" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="387" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="1M" x="65" y="-15" size="6"/>
<line x1="353" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="367" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="353" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="367" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="333" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="347" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="333" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="347" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="DIa" x="85" y="-2" size="6"/>
<text text=".0" x="87" y="-14" size="6"/>
<line x1="313" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="327" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="293" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="307" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="293" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="307" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="273" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="287" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="SM1223" x="375" y="69" size="6"/>
<circle diameter="5" antialias="true" x="367.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="387.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="24VDC" x="7" y="10" size="6"/>
<circle diameter="5" antialias="true" x="267.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="253" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="267" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="367.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="347.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="247.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="24VDC OUTPUTS" x="212" y="128" size="6"/>
<circle diameter="5" antialias="true" x="347.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="327.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="253" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="267" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="387.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="307.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="287.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="327.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text=".7" x="227" y="161" size="6"/>
<circle diameter="5" antialias="true" x="247.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="307.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="273" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="287" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text=".4" x="167" y="161" size="6"/>
<text text=".3" x="147" y="161" size="6"/>
<circle diameter="5" antialias="true" x="407.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="287.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text=".2" x="127" y="161" size="6"/>
<text text=".1" x="107" y="161" size="6"/>
<text text="24VDC INPUTS" x="209" y="14" size="6"/>
<text text="M" x="26" y="-15" size="6"/>
<text text=".7" x="227" y="-14" size="6"/>
<text text=".6" x="207" y="161" size="6"/>
<text text=".4" x="167" y="-14" size="6"/>
<text text=".5" x="187" y="161" size="6"/>
<line x1="15" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text=".3" x="147" y="-14" size="6"/>
<text text=".2" x="127" y="-14" size="6"/>
<text text=".1" x="107" y="-14" size="6"/>
<text text=".6" x="207" y="-14" size="6"/>
<text text=".5" x="187" y="-14" size="6"/>
<line x1="13" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="80" y2="167" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="80" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="430" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="430" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="37" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="240" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="240" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="62" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="62" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<polygon y1="-10" y3="-6" antialias="true" closed="false" y4="-4" x1="19" y6="-6" y7="-10" x8="19" y9="-9" y8="-10" x2="19" x9="19" x3="17" style="line-style:normal;line-weight:normal;filling:none;color:black" y5="-6" x6="21" x7="21" y2="-6" x4="20" x5="23"/>
<line x1="38" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="38" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="153" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="233" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="247" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="213" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="227" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="193" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="207" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="153" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="213" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="227" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="193" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="207" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="187.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="207.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="227.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="207.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="227.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="187.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="48" y2="-13" length1="1.5" y1="-13" end2="none" length2="1.5" antialias="false" x2="52" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.4999" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="49" y2="-11" length1="1.5" y1="-11" end2="none" length2="1.5" antialias="false" x2="51" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="46" y2="-15" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="54" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="50" y2="-25" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="50" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="62" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="240" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="240" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="420" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="81" y2="140" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="239" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="241" y2="140" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="400" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="408" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="430" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="427" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="430" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="239" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="239" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="15" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="86" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="86" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="239" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="430" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="239" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="429" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="405" y="188" size="9"/>
<terminal orientation="n" x="30" y="-31"/>
<terminal orientation="n" x="10" y="-31"/>
<terminal orientation="n" x="50" y="-31"/>
<terminal orientation="n" x="70" y="-31"/>
<terminal orientation="n" x="90" y="-31"/>
<terminal orientation="n" x="110" y="-31"/>
<terminal orientation="n" x="130" y="-31"/>
<terminal orientation="n" x="150" y="-31"/>
<terminal orientation="n" x="170" y="-31"/>
<terminal orientation="n" x="190" y="-31"/>
<terminal orientation="n" x="210" y="-31"/>
<terminal orientation="n" x="230" y="-31"/>
<terminal orientation="s" x="90" y="171"/>
<terminal orientation="s" x="130" y="171"/>
<terminal orientation="s" x="150" y="171"/>
<terminal orientation="s" x="170" y="171"/>
<terminal orientation="s" x="190" y="171"/>
<terminal orientation="s" x="210" y="171"/>
<terminal orientation="s" x="230" y="171"/>
<terminal orientation="s" x="110" y="171"/>
<terminal orientation="n" x="250" y="-31"/>
<terminal orientation="n" x="270" y="-31"/>
<terminal orientation="n" x="290" y="-31"/>
<terminal orientation="n" x="310" y="-31"/>
<terminal orientation="n" x="330" y="-31"/>
<terminal orientation="n" x="350" y="-31"/>
<terminal orientation="n" x="370" y="-31"/>
<terminal orientation="n" x="390" y="-31"/>
<terminal orientation="n" x="410" y="-31"/>
<terminal orientation="s" x="250" y="171"/>
<terminal orientation="s" x="290" y="171"/>
<terminal orientation="s" x="310" y="171"/>
<terminal orientation="s" x="330" y="171"/>
<terminal orientation="s" x="350" y="171"/>
<terminal orientation="s" x="370" y="171"/>
<terminal orientation="s" x="390" y="171"/>
<terminal orientation="s" x="270" y="171"/>
</description>
</definition>

View File

@@ -0,0 +1,126 @@
<definition width="450" orientation="dyyy" version="0.5" height="130" type="element" hotspot_y="36" link_type="simple" hotspot_x="15">
<uuid uuid="{aaae32f5-3bb2-4150-8da1-a2a5ccd56128}"/>
<names>
<name lang="en">SM1223 6ES7223-1BL30-0XB0 PART1</name>
<name lang="cs">SM1223 6ES7223-1BL30-0XB0 PART1</name>
<name lang="pl">SM1223 6ES7223-1BL30-0XB0 PART1</name>
<name lang="ar">SM1223 6ES7223-1BL30-0XB0 PART1</name>
<name lang="pt">SM1223 6ES7223-1BL30-0XB0 PART1</name>
<name lang="fr">SM1223 6ES7223-1BL30-0XB0 PART1</name>
</names>
<informations></informations>
<description>
<text text="PART1/2" x="380" y="77" size="6"/>
<text text="2M" x="245" y="-15" size="6"/>
<text text=".0" x="267" y="-14" size="6"/>
<text text=".7" x="407" y="-14" size="6"/>
<text text=".4" x="347" y="-14" size="6"/>
<text text="DC/DC" x="3" y="78" size="6"/>
<text text=".3" x="327" y="-14" size="6"/>
<text text=".2" x="307" y="-14" size="6"/>
<text text=".1" x="287" y="-14" size="6"/>
<text text=".6" x="387" y="-14" size="6"/>
<text text=".5" x="367" y="-14" size="6"/>
<text text="L+" x="5" y="-15" size="6"/>
<line x1="420" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="420" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="233" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="247" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="413" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="427" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="DIb" x="245" y="-2" size="6"/>
<line x1="393" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="407" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="373" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="387" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="1M" x="65" y="-15" size="6"/>
<line x1="353" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="367" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="333" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="347" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="DIa" x="85" y="-2" size="6"/>
<text text=".0" x="87" y="-14" size="6"/>
<line x1="313" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="327" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="293" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="307" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="SM1223" x="3" y="68" size="6"/>
<circle diameter="5" antialias="true" x="367.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="24VDC" x="7" y="10" size="6"/>
<circle diameter="5" antialias="true" x="267.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="347.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="247.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="253" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="267" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="387.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="327.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="307.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="273" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="287" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="407.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="287.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="24VDC INPUTS" x="209" y="14" size="6"/>
<text text="M" x="26" y="-15" size="6"/>
<text text=".7" x="227" y="-14" size="6"/>
<text text=".4" x="167" y="-14" size="6"/>
<text text=".3" x="147" y="-14" size="6"/>
<text text=".2" x="127" y="-14" size="6"/>
<text text=".1" x="107" y="-14" size="6"/>
<text text=".6" x="207" y="-14" size="6"/>
<text text=".5" x="187" y="-14" size="6"/>
<line x1="13" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="37" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="240" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="240" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="62" y2="0" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="62" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<polygon y1="-10" y3="-6" antialias="true" closed="false" y4="-4" x1="19" y6="-6" y7="-10" x8="19" y9="-9" y8="-10" x2="19" x9="19" x3="17" style="line-style:normal;line-weight:normal;filling:none;color:black" y5="-6" x6="21" x7="21" y2="-6" x4="20" x5="23"/>
<line x1="38" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="38" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="213" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="227" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="193" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="207" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="153" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="187.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="207.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="227.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="48" y2="-13" length1="1.5" y1="-13" end2="none" length2="1.5" antialias="false" x2="52" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.4999" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="49" y2="-11" length1="1.5" y1="-11" end2="none" length2="1.5" antialias="false" x2="51" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="46" y2="-15" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="54" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="50" y2="-25" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="50" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="62" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="240" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="240" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="420" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="427" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="430" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="239" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="239" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="430" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="239" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="429" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="238" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="430" y2="-28" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="430" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="396" y="100.5" size="9"/>
<terminal orientation="n" x="10" y="-31"/>
<terminal orientation="n" x="30" y="-31"/>
<terminal orientation="n" x="50" y="-31"/>
<terminal orientation="n" x="70" y="-31"/>
<terminal orientation="n" x="90" y="-31"/>
<terminal orientation="n" x="110" y="-31"/>
<terminal orientation="n" x="130" y="-31"/>
<terminal orientation="n" x="150" y="-31"/>
<terminal orientation="n" x="170" y="-31"/>
<terminal orientation="n" x="190" y="-31"/>
<terminal orientation="n" x="210" y="-31"/>
<terminal orientation="n" x="230" y="-31"/>
<terminal orientation="n" x="250" y="-31"/>
<terminal orientation="n" x="270" y="-31"/>
<terminal orientation="n" x="290" y="-31"/>
<terminal orientation="n" x="310" y="-31"/>
<terminal orientation="n" x="330" y="-31"/>
<terminal orientation="n" x="350" y="-31"/>
<terminal orientation="n" x="370" y="-31"/>
<terminal orientation="n" x="390" y="-31"/>
<terminal orientation="n" x="410" y="-31"/>
</description>
</definition>

View File

@@ -0,0 +1,113 @@
<definition width="450" orientation="dyyy" version="0.5" height="130" type="element" hotspot_y="64" link_type="simple" hotspot_x="225">
<uuid uuid="{6bcd95ca-4421-4e82-a2b9-11b9462d4626}"/>
<names>
<name lang="en">SM1223 6ES7223-1BL30-0XB0 PART2</name>
<name lang="cs">SM1223 6ES7223-1BL30-0XB0 PART2</name>
<name lang="pl">SM1223 6ES7223-1BL30-0XB0 PART2</name>
<name lang="ar">SM1223 6ES7223-1BL30-0XB0 PART2</name>
<name lang="pt">SM1223 6ES7223-1BL30-0XB0 PART2</name>
<name lang="fr">SM1223 6ES7223-1BL30-0XB0 PART2</name>
</names>
<informations></informations>
<description>
<text text="PART2/2" x="172" y="-33" size="6"/>
<line x1="30" y2="56" length1="1.5" y1="29" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text=".0" x="37" y="50" size="6"/>
<text text="DQb" x="38" y="39" size="6"/>
<text text=".7" x="177" y="50" size="6"/>
<text text="DC/DC" x="-210" y="-32" size="6"/>
<text text=".4" x="117" y="50" size="6"/>
<text text=".3" x="97" y="50" size="6"/>
<text text=".2" x="77" y="50" size="6"/>
<text text=".0" x="-123" y="50" size="6"/>
<text text=".1" x="57" y="50" size="6"/>
<text text="DQa" x="-122" y="39" size="6"/>
<text text=".6" x="157" y="50" size="6"/>
<text text="L+" x="-195" y="50" size="6"/>
<text text=".5" x="137" y="50" size="6"/>
<line x1="190" y2="56" length1="1.5" y1="29" end2="none" length2="1.5" antialias="false" x2="190" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="103" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="117" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="183" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="197" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="57.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="163" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="177" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="143" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="157" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="123" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="137" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="83" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="97" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="63" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="77" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="SM1223" x="-210" y="-42" size="6"/>
<circle diameter="5" antialias="true" x="177.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="24VDC" x="-197" y="39" size="6"/>
<line x1="43" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="57" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="157.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="24VDC OUTPUTS" x="2" y="17" size="6"/>
<circle diameter="5" antialias="true" x="137.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="117.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="97.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="77.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text=".7" x="17" y="50" size="6"/>
<circle diameter="5" antialias="true" x="37.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text=".4" x="-43" y="50" size="6"/>
<text text=".3" x="-63" y="50" size="6"/>
<text text=".2" x="-83" y="50" size="6"/>
<text text=".1" x="-103" y="50" size="6"/>
<text text="M" x="-174" y="50" size="6"/>
<text text=".6" x="-3" y="50" size="6"/>
<text text=".5" x="-23" y="50" size="6"/>
<line x1="-195" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-187" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-173" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-130" y2="56" length1="1.5" y1="29" end2="none" length2="1.5" antialias="false" x2="-130" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-220" y2="56" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="-220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-198" y2="29" length1="1.5" y1="29" end2="none" length2="1.5" antialias="false" x2="-163" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-162" y2="56" length1="1.5" y1="29" end2="none" length2="1.5" antialias="false" x2="-162" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-198" y2="56" length1="1.5" y1="29" end2="none" length2="1.5" antialias="false" x2="-198" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-57" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-43" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="23" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="37" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-102.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="3" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="17" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-17" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-3" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-37" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-23" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-77" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-63" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-97" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-83" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-117" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-103" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-172.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-22.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-42.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-192.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-62.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-82.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-122.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-129" y2="29" length1="1.5" y1="29" end2="none" length2="1.5" antialias="false" x2="29" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="31" y2="29" length1="1.5" y1="29" end2="none" length2="1.5" antialias="false" x2="190" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="198" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="29" y2="-21" length1="1.5" y1="-21" end2="none" length2="1.5" antialias="false" x2="-220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="29" y2="-61" length1="1.5" y1="-61" end2="none" length2="1.5" antialias="false" x2="-220" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="-124" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-123" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="29" y2="-21" length1="1.5" y1="-21" end2="none" length2="1.5" antialias="false" x2="220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="29" y2="-61" length1="1.5" y1="-61" end2="none" length2="1.5" antialias="false" x2="219" end1="none" style="line-style:dashed;line-weight:normal;filling:none;color:black"/>
<line x1="-195" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-193" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-167" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="-125" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="220" y2="-61" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-220" y2="-60" length1="1.5" y1="-20" end2="none" length2="1.5" antialias="false" x2="-220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="185" y="-74.5" size="9"/>
<terminal orientation="s" x="-190" y="59"/>
<terminal orientation="s" x="-170" y="59"/>
<terminal orientation="s" x="-120" y="60"/>
<terminal orientation="s" x="-80" y="60"/>
<terminal orientation="s" x="-60" y="60"/>
<terminal orientation="s" x="-40" y="60"/>
<terminal orientation="s" x="-20" y="60"/>
<terminal orientation="s" x="0" y="60"/>
<terminal orientation="s" x="20" y="60"/>
<terminal orientation="s" x="-100" y="60"/>
<terminal orientation="s" x="40" y="60"/>
<terminal orientation="s" x="80" y="60"/>
<terminal orientation="s" x="100" y="60"/>
<terminal orientation="s" x="120" y="60"/>
<terminal orientation="s" x="140" y="60"/>
<terminal orientation="s" x="160" y="60"/>
<terminal orientation="s" x="180" y="60"/>
<terminal orientation="s" x="60" y="60"/>
</description>
</definition>

View File

@@ -0,0 +1,58 @@
<definition width="110" orientation="dyyy" version="0.5" height="210" type="element" hotspot_y="35" link_type="simple" hotspot_x="15">
<uuid uuid="{96d2097e-5f1c-445f-8b52-fccda10ca9c3}"/>
<names>
<name lang="en">ETHERNET SWITCH CSM 1277 6GK7277-1AA10-0AA0</name>
<name lang="cs">ETHERNET SWITCH CSM 1277 6GK7277-1AA10-0AA0</name>
<name lang="pl">ETHERNET SWITCH CSM 1277 6GK7277-1AA10-0AA0</name>
<name lang="ar">ETHERNET SWITCH CSM 1277 6GK7277-1AA10-0AA0</name>
<name lang="pt">ETHERNET SWITCH CSM 1277 6GK7277-1AA10-0AA0</name>
<name lang="fr">ETHERNET SWITCH CSM 1277 6GK7277-1AA10-0AA0</name>
</names>
<informations></informations>
<description>
<text text="P3" x="44" y="154" size="7"/>
<text text="P4" x="65" y="154" size="7"/>
<text text="L+" x="5" y="-15" size="6"/>
<text text="CSM 1277" x="-4" y="64" size="6"/>
<text text="X1" x="1" y="128" size="6"/>
<text text="24VDC" x="17" y="-2" size="6"/>
<text text="M" x="26" y="-15" size="6"/>
<line x1="13" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="90" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="90" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="60" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="48" y2="-13" length1="1.5" y1="-13" end2="none" length2="1.5" antialias="false" x2="52" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.4999" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="49" y2="-11" length1="1.5" y1="-11" end2="none" length2="1.5" antialias="false" x2="51" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="46" y2="-15" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="54" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="50" y2="-25" length1="1.5" y1="-15" end2="none" length2="1.5" antialias="false" x2="50" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="P1" x="4" y="154" size="7"/>
<text text="P2" x="24" y="154" size="7"/>
<line x1="-10" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="83" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="167" length1="1.5" y1="132" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="40" y2="167" length1="1.5" y1="131" end2="none" length2="1.5" antialias="false" x2="40" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="60" y2="168" length1="1.5" y1="131" end2="none" length2="1.5" antialias="false" x2="60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="80" y2="168" length1="1.5" y1="131" end2="none" length2="1.5" antialias="false" x2="80" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="0" y2="131" length1="1.5" y1="131" end2="none" length2="1.5" antialias="false" x2="79" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="0" y2="167" length1="1.5" y1="131" end2="none" length2="1.5" antialias="false" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="83" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="90" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="90" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="-9" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="90" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="89" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="59" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="U?" tagg="label" x="66" y="181.5" size="9"/>
<terminal orientation="n" x="10" y="-31"/>
<terminal orientation="n" x="30" y="-31"/>
<terminal orientation="n" x="50" y="-31"/>
<terminal orientation="s" x="10" y="169"/>
<terminal orientation="s" x="30" y="169"/>
<terminal orientation="s" x="50" y="169"/>
<terminal orientation="s" x="70" y="169"/>
</description>
</definition>

View File

@@ -0,0 +1,65 @@
<definition width="190" orientation="dyyy" version="0.5" height="90" type="element" hotspot_y="36" link_type="simple" hotspot_x="15">
<uuid uuid="{3ba82e93-be0f-4f56-8af2-0a0d8012ac08}"/>
<names>
<name lang="en">ET200S 8DI 6ES7131-4BF00-0AA0</name>
<name lang="cs">ET200S 8DI 6ES7131-4BF00-0AA0</name>
<name lang="pl">ET200S 8DI 6ES7131-4BF00-0AA0</name>
<name lang="ar">ET200S 8DI 6ES7131-4BF00-0AA0</name>
<name lang="pt">ET200S 8DI 6ES7131-4BF00-0AA0</name>
<name lang="fr">ET200S 8DI 6ES7131-4BF00-0AA0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<text text="x.6" x="64" y="-3" size="6"/>
<text text="x.5" x="124" y="-3" size="6"/>
<text text="x.7" x="144" y="-3" size="6"/>
<text text="x.4" x="44" y="-3" size="6"/>
<text text="x.2" x="24" y="-3" size="6"/>
<text text="x.1" x="84" y="-3" size="6"/>
<text text="x.3" x="104" y="-3" size="6"/>
<text text="8DI DC" x="65" y="38" size="6"/>
<text text="x.0" x="4" y="-3" size="6"/>
<text text="1" x="8" y="-14" size="6"/>
<text text="ET200S" x="65" y="28" size="6"/>
<text text="8" x="147" y="-14" size="6"/>
<text text="5" x="87" y="-14" size="6"/>
<text text="4" x="67" y="-14" size="6"/>
<text text="3" x="47" y="-14" size="6"/>
<text text="2" x="27" y="-14" size="6"/>
<text text="7" x="127" y="-14" size="6"/>
<text text="6" x="107" y="-14" size="6"/>
<line x1="13" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="153" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="I:" x="-5" y="-3" size="6"/>
<line x1="170" y2="49" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="170" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="143" y="61.5" size="9"/>
<input rotate="true" text="I???.x" tagg="none" x="59" y="10" size="9"/>
<terminal orientation="n" x="10" y="-30"/>
<terminal orientation="n" x="30" y="-30"/>
<terminal orientation="n" x="50" y="-30"/>
<terminal orientation="n" x="70" y="-30"/>
<terminal orientation="n" x="90" y="-30"/>
<terminal orientation="n" x="110" y="-30"/>
<terminal orientation="n" x="130" y="-30"/>
<terminal orientation="n" x="150" y="-30"/>
</description>
</definition>

View File

@@ -0,0 +1,51 @@
<definition width="50" orientation="dyyy" version="0.5" height="200" type="element" hotspot_y="30" link_type="simple" hotspot_x="15">
<uuid uuid="{5abfc982-b5cd-4e30-8974-b56fec8bb786}"/>
<names>
<name lang="en">ET200S 8DI FACE 6ES7131-4BF00-0AA0</name>
<name lang="cs">ET200S 8DI FACE 6ES7131-4BF00-0AA0</name>
<name lang="pl">ET200S 8DI FACE 6ES7131-4BF00-0AA0</name>
<name lang="ar">ET200S 8DI FACE 6ES7131-4BF00-0AA0</name>
<name lang="pt">ET200S 8DI FACE 6ES7131-4BF00-0AA0</name>
<name lang="fr">ET200S 8DI FACE 6ES7131-4BF00-0AA0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<circle diameter="5" antialias="true" x="17.5" y="137.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="117.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="157.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="137.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="97.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="97.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="2" x="-7" y="117" size="6"/>
<text text="6" x="14" y="117" size="6"/>
<text text="5" x="13" y="97" size="6"/>
<text text="4" x="-6" y="156" size="6"/>
<text text="1" x="-7" y="97" size="6"/>
<text text="8" x="14" y="156" size="6"/>
<circle diameter="5" antialias="true" x="-2.5" y="117.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="7" x="13" y="136" size="6"/>
<text text="8DI" x="4" y="23" size="6"/>
<text text="3" x="-7" y="135" size="6"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="157.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="30" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="3" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="29" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="-6" y="179.5" size="9"/>
<terminal orientation="s" x="0" y="102"/>
<terminal orientation="s" x="20" y="122"/>
<terminal orientation="s" x="20" y="142"/>
<terminal orientation="s" x="0" y="142"/>
<terminal orientation="s" x="0" y="162"/>
<terminal orientation="s" x="20" y="162"/>
<terminal orientation="s" x="20" y="102"/>
<terminal orientation="s" x="0" y="122"/>
</description>
</definition>

View File

@@ -0,0 +1,65 @@
<definition width="190" orientation="dyyy" version="0.5" height="90" type="element" hotspot_y="32" link_type="simple" hotspot_x="15">
<uuid uuid="{8d7c23c8-81e7-4c9c-8a19-c352e84f9a3d}"/>
<names>
<name lang="en">ET200S 8DO 6ES7132-4BF00-0AA0</name>
<name lang="cs">ET200S 8DO 6ES7132-4BF00-0AA0</name>
<name lang="pl">ET200S 8DO 6ES7132-4BF00-0AA0</name>
<name lang="ar">ET200S 8DO 6ES7132-4BF00-0AA0</name>
<name lang="pt">ET200S 8DO 6ES7132-4BF00-0AA0</name>
<name lang="fr">ET200S 8DO 6ES7132-4BF00-0AA0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<text text="x.6" x="64" y="32" size="6"/>
<text text="x.5" x="124" y="32" size="6"/>
<text text="x.7" x="144" y="32" size="6"/>
<text text="x.4" x="44" y="32" size="6"/>
<text text="x.2" x="24" y="32" size="6"/>
<text text="x.1" x="84" y="32" size="6"/>
<text text="x.3" x="104" y="32" size="6"/>
<text text="8DO DC" x="64" y="-3" size="6"/>
<text text="x.0" x="4" y="32" size="6"/>
<text text="1" x="8" y="43" size="6"/>
<text text="ET200S" x="65" y="-12" size="6"/>
<text text="8" x="147" y="43" size="6"/>
<text text="5" x="87" y="43" size="6"/>
<text text="4" x="67" y="43" size="6"/>
<text text="3" x="47" y="43" size="6"/>
<text text="2" x="27" y="43" size="6"/>
<text text="7" x="127" y="43" size="6"/>
<text text="6" x="107" y="43" size="6"/>
<line x1="13" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="47.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="47.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="47.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="47.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="47.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="47.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="47.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="47.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="153" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="Q:" x="-7" y="32" size="6"/>
<line x1="170" y2="49" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="170" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="-10" y="-40.5" size="9"/>
<input rotate="true" text="Q???.x" tagg="none" x="57" y="11" size="9"/>
<terminal orientation="s" x="10" y="52"/>
<terminal orientation="s" x="30" y="52"/>
<terminal orientation="s" x="50" y="52"/>
<terminal orientation="s" x="70" y="52"/>
<terminal orientation="s" x="90" y="52"/>
<terminal orientation="s" x="110" y="52"/>
<terminal orientation="s" x="130" y="52"/>
<terminal orientation="s" x="150" y="52"/>
</description>
</definition>

View File

@@ -0,0 +1,51 @@
<definition width="50" orientation="dyyy" version="0.5" height="200" type="element" hotspot_y="30" link_type="simple" hotspot_x="15">
<uuid uuid="{4b7576bf-ea58-4cc1-875b-741a794b2bbd}"/>
<names>
<name lang="en">ET200S 8DO FACE 6ES7132-4BF00-0AA0</name>
<name lang="cs">ET200S 8DO FACE 6ES7132-4BF00-0AA0</name>
<name lang="pl">ET200S 8DO FACE 6ES7132-4BF00-0AA0</name>
<name lang="ar">ET200S 8DO FACE 6ES7132-4BF00-0AA0</name>
<name lang="pt">ET200S 8DO FACE 6ES7132-4BF00-0AA0</name>
<name lang="fr">ET200S 8DO FACE 6ES7132-4BF00-0AA0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<circle diameter="5" antialias="true" x="17.5" y="137.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="117.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="157.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="137.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="97.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="97.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="2" x="-7" y="117" size="6"/>
<text text="6" x="14" y="117" size="6"/>
<text text="5" x="13" y="97" size="6"/>
<text text="4" x="-6" y="156" size="6"/>
<text text="1" x="-7" y="97" size="6"/>
<text text="8" x="14" y="156" size="6"/>
<circle diameter="5" antialias="true" x="-2.5" y="117.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="7" x="13" y="136" size="6"/>
<text text="8DO" x="2" y="23" size="6"/>
<text text="3" x="-7" y="135" size="6"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="157.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="30" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="3" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="29" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="-4" y="181.5" size="9"/>
<terminal orientation="s" x="0" y="162"/>
<terminal orientation="s" x="0" y="142"/>
<terminal orientation="s" x="0" y="122"/>
<terminal orientation="s" x="20" y="142"/>
<terminal orientation="s" x="20" y="102"/>
<terminal orientation="s" x="20" y="122"/>
<terminal orientation="s" x="20" y="162"/>
<terminal orientation="s" x="0" y="102"/>
</description>
</definition>

View File

@@ -0,0 +1,63 @@
<definition width="190" orientation="dyyy" version="0.5" height="90" type="element" hotspot_y="36" link_type="simple" hotspot_x="15">
<uuid uuid="{c360b250-9281-46fc-aded-fc970ad0dceb}"/>
<names>
<name lang="en">ET 200S 2AI 6ES7134-4GB01-0AB0</name>
<name lang="cs">ET 200S 2AI 6ES7134-4GB01-0AB0</name>
<name lang="pl">ET 200S 2AI 6ES7134-4GB01-0AB0</name>
<name lang="ar">ET 200S 2AI 6ES7134-4GB01-0AB0</name>
<name lang="pt">ET 200S 2AI 6ES7134-4GB01-0AB0</name>
<name lang="fr">ET 200S 2AI 6ES7134-4GB01-0AB0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<text text="NC" x="64" y="-4" size="6"/>
<text text="NC" x="124" y="-4" size="6"/>
<text text="NC" x="44" y="-4" size="6"/>
<text text="NC" x="144" y="-4" size="6"/>
<text text="M1+" rotation="270" x="93" y="8" size="6"/>
<text text="M1 -" rotation="270" x="113" y="8" size="6"/>
<text text="M0 -" rotation="270" x="33" y="7" size="6"/>
<text text="2AI " x="99" y="32" size="6"/>
<text text="M0+" rotation="270" x="13" y="7" size="6"/>
<text text="1" x="8" y="-15" size="6"/>
<text text="ET200S" x="40" y="32" size="6"/>
<text text="8" x="148" y="-15" size="6"/>
<text text="5" x="87" y="-15" size="6"/>
<text text="4" x="67" y="-15" size="6"/>
<text text="3" x="47" y="-15" size="6"/>
<text text="2" x="27" y="-15" size="6"/>
<text text="7" x="127" y="-15" size="6"/>
<text text="6" x="107" y="-15" size="6"/>
<line x1="13" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="133" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="147" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="113" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="127" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="107.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="87.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="127.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="93" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="107" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="147.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="153" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170" y2="49" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="170" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="170" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="135" y="60.5" size="9"/>
<terminal orientation="n" x="10" y="-31"/>
<terminal orientation="n" x="30" y="-31"/>
<terminal orientation="n" x="50" y="-31"/>
<terminal orientation="n" x="70" y="-31"/>
<terminal orientation="n" x="90" y="-31"/>
<terminal orientation="n" x="110" y="-31"/>
<terminal orientation="n" x="130" y="-31"/>
<terminal orientation="n" x="150" y="-31"/>
</description>
</definition>

View File

@@ -0,0 +1,51 @@
<definition width="50" orientation="dyyy" version="0.5" height="200" type="element" hotspot_y="30" link_type="simple" hotspot_x="15">
<uuid uuid="{0347f74c-d7f6-4cef-a107-bce672035f35}"/>
<names>
<name lang="en">ET 200S 2AI FACE 6ES7134-4GB01-0AB0</name>
<name lang="cs">ET 200S 2AI FACE 6ES7134-4GB01-0AB0</name>
<name lang="pl">ET 200S 2AI FACE 6ES7134-4GB01-0AB0</name>
<name lang="ar">ET 200S 2AI FACE 6ES7134-4GB01-0AB0</name>
<name lang="pt">ET 200S 2AI FACE 6ES7134-4GB01-0AB0</name>
<name lang="fr">ET 200S 2AI FACE 6ES7134-4GB01-0AB0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<circle diameter="5" antialias="true" x="17.5" y="137.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="117.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="157.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="137.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="97.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="97.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="2" x="-7" y="117" size="6"/>
<text text="6" x="14" y="117" size="6"/>
<text text="5" x="13" y="97" size="6"/>
<text text="4" x="-6" y="156" size="6"/>
<text text="1" x="-7" y="97" size="6"/>
<text text="8" x="14" y="156" size="6"/>
<circle diameter="5" antialias="true" x="-2.5" y="117.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="7" x="13" y="136" size="6"/>
<text text="2AI" x="4" y="23" size="6"/>
<text text="3" x="-7" y="135" size="6"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="157.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="30" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="3" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="29" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="0" y="181.5" size="9"/>
<terminal orientation="s" x="20" y="102"/>
<terminal orientation="s" x="20" y="122"/>
<terminal orientation="s" x="0" y="162"/>
<terminal orientation="s" x="0" y="102"/>
<terminal orientation="s" x="0" y="142"/>
<terminal orientation="s" x="20" y="142"/>
<terminal orientation="s" x="0" y="122"/>
<terminal orientation="s" x="20" y="162"/>
</description>
</definition>

View File

@@ -0,0 +1,43 @@
<definition width="110" orientation="dyyy" version="0.5" height="90" type="element" hotspot_y="36" link_type="simple" hotspot_x="15">
<uuid uuid="{27c46472-c062-4df3-8247-e606bbda0014}"/>
<names>
<name lang="en">ET200S PM-E-DC24V 6ES7 138-4CA01-0AA0</name>
<name lang="cs">ET200S PM-E-DC24V 6ES7 138-4CA01-0AA0</name>
<name lang="pl">ET200S PM-E-DC24V 6ES7 138-4CA01-0AA0</name>
<name lang="ar">ET200S PM-E-DC24V 6ES7 138-4CA01-0AA0</name>
<name lang="pt">ET200S PM-E-DC24V 6ES7 138-4CA01-0AA0</name>
<name lang="fr">ET200S PM-E-DC24V 6ES7 138-4CA01-0AA0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<text text="M" x="27" y="-3" size="6"/>
<text text="M" x="67" y="-3" size="6"/>
<text text="L+" x="47" y="-3" size="6"/>
<text text="PM-E DC24V" x="9" y="33" size="6"/>
<text text="L+" x="7" y="-3" size="6"/>
<text text="ET200S" x="9" y="18" size="6"/>
<text text="3" x="28" y="-15" size="6"/>
<text text="2" x="8" y="-15" size="6"/>
<text text="7" x="68" y="-15" size="6"/>
<text text="6" x="48" y="-15" size="6"/>
<line x1="13" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-30.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="90" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="73" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="90" y2="49" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="90" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="21" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="90" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="63" y="61.5" size="9"/>
<terminal orientation="n" x="10" y="-31"/>
<terminal orientation="n" x="30" y="-31"/>
<terminal orientation="n" x="50" y="-31"/>
<terminal orientation="n" x="70" y="-31"/>
</description>
</definition>

View File

@@ -0,0 +1,39 @@
<definition width="50" orientation="dyyy" version="0.5" height="200" type="element" hotspot_y="30" link_type="simple" hotspot_x="15">
<uuid uuid="{4222c0d2-0482-4b13-aede-98225a49a304}"/>
<names>
<name lang="en">ET200S PM-E-DC24V FACE 6ES7 138-4CA01-0AA0</name>
<name lang="cs">ET200S PM-E-DC24V FACE 6ES7 138-4CA01-0AA0</name>
<name lang="pl">ET200S PM-E-DC24V FACE 6ES7 138-4CA01-0AA0</name>
<name lang="ar">ET200S PM-E-DC24V FACE 6ES7 138-4CA01-0AA0</name>
<name lang="pt">ET200S PM-E-DC24V FACE 6ES7 138-4CA01-0AA0</name>
<name lang="fr">ET200S PM-E-DC24V FACE 6ES7 138-4CA01-0AA0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<circle diameter="5" antialias="true" x="17.5" y="157.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="137.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="17.5" y="137.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="3" x="-6" y="156" size="6"/>
<text text="7" x="14" y="156" size="6"/>
<text text="6" x="13" y="136" size="6"/>
<text text="PM-E-DC24V" rotation="270" x="13" y="35" size="6"/>
<text text="2" x="-7" y="135" size="6"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="-2.5" y="157.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="30" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="3" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="30" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="29" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="-1" y="181.5" size="9"/>
<terminal orientation="s" x="0" y="163"/>
<terminal orientation="s" x="20" y="143"/>
<terminal orientation="s" x="0" y="143"/>
<terminal orientation="s" x="20" y="163"/>
</description>
</definition>

View File

@@ -0,0 +1,71 @@
<definition width="110" orientation="dyyy" version="0.5" height="210" type="element" hotspot_y="33" link_type="simple" hotspot_x="15">
<uuid uuid="{69782805-b318-4b95-9d23-a360ca8cc952}"/>
<names>
<name lang="en">6ES7151-3AA23-0AB0</name>
<name lang="cs">6ES7151-3AA23-0AB0</name>
<name lang="pl">6ES7151-3AA23-0AB0</name>
<name lang="ar">6ES7151-3AA23-0AB0</name>
<name lang="pt">6ES7151-3AA23-0AB0</name>
<name lang="fr">6ES7151-3AA23-0AB0</name>
</names>
<informations>Author: The QElectroTech team
License: see http://qelectrotech.org/wiki/doc/elements_license</informations>
<description>
<text text="X1" x="36" y="19" size="6"/>
<text text="P2" x="55" y="-7" size="6"/>
<line x1="80" y2="167" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="80" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="P1" x="15" y="-7" size="6"/>
<line x1="42" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="77" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="2L+" x="44" y="161" size="6"/>
<line x1="78" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="78" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="2M" x="64" y="161" size="6"/>
<line x1="42" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="42" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="67.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="42" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="78" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="45" y2="-24" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="45" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="45" y2="-24" length1="1.5" y1="-24" end2="none" length2="1.5" antialias="false" x2="75" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="75" y2="-28" length1="1.5" y1="-25" end2="none" length2="1.5" antialias="false" x2="75" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="1L+" x="4" y="161" size="6"/>
<text text="IM151-3 PN" x="2" y="73" size="6"/>
<text text="PROFINET" x="21" y="30" size="6"/>
<text text="1M" x="24" y="161" size="6"/>
<line x1="0" y2="167" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="0" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="37" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="38" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="38" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="0" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="87" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="53" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="87" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="90" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="0" y2="140" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="80" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="89" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="89" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="87" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="89" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="2" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="2" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="38" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="5" y2="-24" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="5" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="5" y2="-24" length1="1.5" y1="-24" end2="none" length2="1.5" antialias="false" x2="35" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="35" y2="-28" length1="1.5" y1="-25" end2="none" length2="1.5" antialias="false" x2="35" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="10" length1="1.5" y1="2" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="10" length1="1.5" y1="10" end2="none" length2="1.5" antialias="false" x2="60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="60" y2="2" length1="1.5" y1="9" end2="none" length2="1.5" antialias="false" x2="60" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="78" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="86" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="90" y2="168" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="90" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="38" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="42" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="63" y="180.5" size="9"/>
<terminal orientation="n" x="20" y="-29"/>
<terminal orientation="s" x="10" y="171"/>
<terminal orientation="s" x="30" y="171"/>
<terminal orientation="s" x="50" y="171"/>
<terminal orientation="s" x="70" y="171"/>
<terminal orientation="n" x="60" y="-29"/>
</description>
</definition>

View File

@@ -0,0 +1,44 @@
<definition width="240" orientation="dyyy" version="0.5" height="210" type="element" hotspot_y="32" link_type="simple" hotspot_x="15">
<uuid uuid="{f546bbb2-058e-4b4d-9f4c-cb7509c42a85}"/>
<names>
<name lang="en">6AV6647-0AB11-3AX0</name>
<name lang="cs">6AV6647-0AB11-3AX0</name>
<name lang="pl">6AV6647-0AB11-3AX0</name>
<name lang="ar">6AV6647-0AB11-3AX0</name>
<name lang="pt">6AV6647-0AB11-3AX0</name>
<name lang="fr">6AV6647-0AB11-3AX0</name>
</names>
<informations></informations>
<description>
<text text="P1" x="28" y="150" size="6"/>
<text text="PROFINET" x="6" y="136" size="6"/>
<text text="L+" x="166" y="160" size="6"/>
<text text="X1" x="14" y="150" size="6"/>
<text text="KTP600 BASIC MONO" x="-6" y="-17" size="6"/>
<text text="24VDC" x="168" y="150" size="6"/>
<text text="M" x="187" y="160" size="6"/>
<line x1="15" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="167" length1="1.5" y1="91" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="90" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="187.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="173" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="167.5" y="165.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="15" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="86" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="166" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="30" height="28" antialias="false" x="10" y="140" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="160" y2="140" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="160" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="161" y2="140" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="200" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="200" y2="168" length1="1.5" y1="140" end2="none" length2="1.5" antialias="false" x2="200" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="193" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="199" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-9" y2="-28" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="220" y2="167" length1="1.5" y1="-28" end2="none" length2="1.5" antialias="false" x2="220" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="220" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="200" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="86" y2="168" length1="1.5" y1="168" end2="none" length2="1.5" antialias="false" x2="166" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="191" height="130" antialias="false" x="10" y="-10" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="26" height="3" antialias="false" x="12" y="165" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="192" y="181.5" size="9"/>
<terminal orientation="s" x="25" y="169"/>
<terminal orientation="s" x="190" y="171"/>
<terminal orientation="s" x="170" y="171"/>
</description>
</definition>

View File

@@ -0,0 +1,104 @@
<definition width="330" orientation="dyyy" version="0.5" height="100" type="element" hotspot_y="34" link_type="simple" hotspot_x="15">
<uuid uuid="{1c3687c5-a859-4a66-a3b5-f3a8133860f7}"/>
<names>
<name lang="it">SINAMICS G110 6SL3211</name>
<name lang="en">SINAMICS G110 6SL3211</name>
<name lang="cs">SINAMICS G110 6SL3211</name>
<name lang="pl">SINAMICS G110 6SL3211</name>
<name lang="ar">SINAMICS G110 6SL3211</name>
<name lang="fr">SINAMICS G110 6SL3211</name>
</names>
<informations></informations>
<description>
<text text="10" x="294" y="-20" size="5"/>
<input rotate="true" text="ADC1" tagg="none" rotation="270" x="270" y="9" size="7"/>
<line x1="310" y2="57" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="310" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="0V" tagg="none" rotation="270" x="291" y="-3" size="7"/>
<input rotate="true" text="N" tagg="none" rotation="270" x="50" y="-7" size="7"/>
<input rotate="true" text="GND" tagg="none" rotation="270" x="230" y="6" size="7"/>
<input rotate="true" text="DIN1" tagg="none" rotation="270" x="170" y="6" size="7"/>
<line x1="153" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="167" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="57" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="253" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="267" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="213" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="227" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="DIN0" tagg="none" rotation="270" x="150" y="6" size="7"/>
<line x1="173" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="187" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="DOUT-" tagg="none" rotation="270" x="173" y="56" size="7"/>
<input rotate="true" text="+10V" tagg="none" rotation="270" x="251" y="10" size="7"/>
<line x1="33" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="24V" tagg="none" rotation="270" x="210" y="4" size="7"/>
<text text="4" x="175" y="-20" size="5"/>
<circle diameter="5" antialias="true" x="167.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="7.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="233" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="247" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="3" x="155" y="-20" size="5"/>
<circle diameter="5" antialias="true" x="147.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="8" y2="42" length1="1.5" y1="42" end2="none" length2="1.5" antialias="false" x2="12" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="9" x="274" y="-20" size="5"/>
<input rotate="true" text="DIN2" tagg="none" rotation="270" x="190" y="6" size="7"/>
<input rotate="true" text="W" tagg="none" rotation="270" x="70" y="55" size="7"/>
<circle diameter="5" antialias="true" x="267.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="7" x="235" y="-20" size="5"/>
<text text="8" x="254" y="-20" size="5"/>
<circle diameter="5" antialias="true" x="227.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="247.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="6" x="215" y="-20" size="5"/>
<line x1="9" y2="40" length1="1.5" y1="40" end2="none" length2="1.5" antialias="false" x2="11" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="207.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="U" tagg="none" rotation="270" x="30" y="55" size="7"/>
<line x1="193" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="207" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="47.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="187.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="44" length1="1.5" y1="44" end2="none" length2="1.5" antialias="false" x2="14" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="5" x="195" y="-20" size="5"/>
<input rotate="true" text="V" tagg="none" rotation="270" x="50" y="55" size="7"/>
<circle diameter="5" antialias="true" x="67.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="44" length1="1.5" y1="54" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="L1" tagg="none" rotation="270" x="30" y="-7" size="7"/>
<line x1="53" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="67" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="33" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="47" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="27.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="13" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="27" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="190.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="DOUT+" tagg="none" rotation="270" x="193" y="56" size="7"/>
<circle diameter="5" antialias="true" x="170.5" y="54.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="2" x="199" y="53" size="5"/>
<text text="1" x="178" y="53" size="5"/>
<circle diameter="5" antialias="true" x="7.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="G110" tagg="none" x="-5" y="14.5" size="9"/>
<line x1="8" y2="-12" length1="1.5" y1="-12" end2="none" length2="1.5" antialias="false" x2="12" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="9" y2="-10" length1="1.5" y1="-10" end2="none" length2="1.5" antialias="false" x2="11" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="6" y2="-14" length1="1.5" y1="-14" end2="none" length2="1.5" antialias="false" x2="14" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="-24" length1="1.5" y1="-14" end2="none" length2="1.5" antialias="false" x2="10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="5" antialias="true" x="287.5" y="-29.5" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="310" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="293" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="287" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="273" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="147" y2="-27" length1="1.5" y1="-27" end2="none" length2="1.5" antialias="false" x2="53" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="73" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="170" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="176" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="190" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="196" y2="57" length1="1.5" y1="57" end2="none" length2="1.5" antialias="false" x2="310" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input rotate="true" text="?U?" tagg="label" x="320" y="40" size="9"/>
<terminal orientation="n" x="10" y="-30"/>
<terminal orientation="s" x="193" y="59"/>
<terminal orientation="s" x="173" y="59"/>
<terminal orientation="n" x="30" y="-30"/>
<terminal orientation="s" x="10" y="60"/>
<terminal orientation="s" x="30" y="60"/>
<terminal orientation="s" x="50" y="60"/>
<terminal orientation="s" x="70" y="60"/>
<terminal orientation="n" x="170" y="-30"/>
<terminal orientation="n" x="150" y="-30"/>
<terminal orientation="n" x="190" y="-30"/>
<terminal orientation="n" x="230" y="-30"/>
<terminal orientation="n" x="210" y="-30"/>
<terminal orientation="n" x="50" y="-30"/>
<terminal orientation="n" x="270" y="-30"/>
<terminal orientation="n" x="250" y="-30"/>
<terminal orientation="n" x="290" y="-30"/>
</description>
</definition>

View File

@@ -0,0 +1,75 @@
<definition width="110" orientation="dyyy" version="0.5" height="170" type="element" hotspot_y="44" link_type="simple" hotspot_x="69">
<uuid uuid="{123e1ee3-a38d-448f-8b4d-a4a9945100ad}"/>
<names>
<name lang="en">Surge suppression module wago 230 AC 286-842</name>
<name lang="pl">Ogranicznik przepięć wago 230 AC 286-842</name>
</names>
<informations>EN 60617: 07-22-03</informations>
<description>
<rect width="101" height="150" antialias="false" x="-65" y="-35" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="10" height="4" antialias="false" x="-25" y="58" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="4" antialias="true" x="-52" y="88" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<text text="N" rotation="270" x="-14" y="108" size="5"/>
<rect width="10" height="4" antialias="false" x="-29" y="43" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="10" height="4" antialias="false" x="0" y="43" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-27.8452" y2="80" length1="1.5" y1="80" end2="none" length2="1.5" antialias="false" x2="-13.1677" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-50.05" y2="115.95" length1="1.5" y1="-36.05" end2="none" length2="1.5" antialias="false" x2="-50.05" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="N" rotation="270" x="-15" y="-23" size="5"/>
<text text="L out" rotation="270" x="16" y="113" size="5"/>
<text text="L in" rotation="270" x="16" y="-19" size="5"/>
<rect width="4" height="10" antialias="false" x="18" y="20" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="19" y="88" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="-12" y="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="-12" y="78" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="-52" y="58" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="-52" y="43" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="-52" y="78" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="-12" y="58" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="7" y2="-10" length1="1.5" y1="-10" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="7" y2="-5.792" length1="1.5" y1="-14.192" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="4" antialias="true" x="18" y="-12" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="-12" y="-12" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<circle diameter="4" antialias="true" x="18" y="43" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="7" y2="94.208" length1="1.5" y1="85.808" end2="none" length2="1.5" antialias="false" x2="7" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-28" y2="84.208" length1="1.5" y1="75.808" end2="none" length2="1.5" antialias="false" x2="-28" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="PE" rotation="270" x="-55" y="110" size="5"/>
<line x1="-29.2435" y2="45" length1="1.5" y1="45" end2="none" length2="1.5" antialias="false" x2="-50.006" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="10" height="4" antialias="false" x="-45" y="58" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="9" y2="50" length1="1.5" y1="40" end2="none" length2="1.5" antialias="false" x2="1" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-16" y2="65" length1="1.5" y1="55" end2="none" length2="1.5" antialias="false" x2="-24" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-49.6012" y2="90" length1="1.5" y1="90" end2="none" length2="1.5" antialias="false" x2="2.31791" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-49.6129" y2="80" length1="1.5" y1="80" end2="none" length2="1.5" antialias="false" x2="-32.4194" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<polygon x3="-19" x1="-22" y2="43" y1="45" x4="-22" closed="false" antialias="false" y4="45" x2="-19" y3="47" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="-2" y2="50" length1="1.5" y1="50" end2="none" length2="1.5" antialias="false" x2="1" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<input text="_" tagg="label" x="43" y="95.5" size="9"/>
<line x1="3" y2="94.208" length1="1.5" y1="85.808" end2="none" length2="1.5" antialias="false" x2="3" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-32" y2="84.208" length1="1.5" y1="75.808" end2="none" length2="1.5" antialias="false" x2="-32" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-27" y2="65" length1="1.5" y1="65" end2="none" length2="1.5" antialias="false" x2="-24" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-18.4549" y2="45" length1="1.5" y1="45" end2="none" length2="1.5" antialias="false" x2="-0.673911" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-45.9907" y2="60" length1="1.5" y1="60" end2="none" length2="1.5" antialias="false" x2="-49.9316" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="45" length1="1.5" y1="45" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-14.7318" y2="60" length1="1.5" y1="60" end2="none" length2="1.5" antialias="false" x2="-10.2072" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<polygon x3="-35" x1="-38" y2="58" y1="60" x4="-38" closed="false" antialias="false" y4="60" x2="-35" y3="62" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<rect width="10" height="4" antialias="false" x="0" y="3" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="9" y2="10" length1="1.5" y1="0" end2="none" length2="1.5" antialias="false" x2="1" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-2" y2="10" length1="1.5" y1="10" end2="none" length2="1.5" antialias="false" x2="1" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="0" y2="5" length1="1.5" y1="5" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="10" y2="5" length1="1.5" y1="5" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="-10" y2="-10" length1="1.5" y1="-10" end2="none" length2="1.5" antialias="false" x2="3" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="3" y2="-5.792" length1="1.5" y1="-14.192" end2="none" length2="1.5" antialias="false" x2="3" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<circle diameter="18" antialias="true" x="-4" y="16" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<rect width="4" height="10" antialias="false" x="-12" y="20" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="-33.8737" y2="60" length1="1.5" y1="60" end2="none" length2="1.5" antialias="false" x2="-26.1368" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<text text="PE" rotation="270" x="-55" y="-20" size="5"/>
<circle diameter="4" antialias="true" x="18" y="3" style="line-style:normal;line-weight:normal;filling:black;color:black"/>
<line x1="-10" y2="116" length1="1.5" y1="-36" end2="none" length2="1.5" antialias="false" x2="-10" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<line x1="20" y2="116" length1="1.5" y1="-35" end2="none" length2="1.5" antialias="false" x2="20" end1="none" style="line-style:normal;line-weight:normal;filling:none;color:black"/>
<terminal orientation="n" x="-50" y="-40"/>
<terminal orientation="n" x="20" y="-40"/>
<terminal orientation="n" x="-10" y="-40"/>
<terminal orientation="s" x="20" y="120"/>
<terminal orientation="s" x="-10" y="120"/>
<terminal orientation="s" x="-50" y="120"/>
</description>
</definition>

Binary file not shown.

View File

@@ -545,7 +545,7 @@ Noot: Geen van deze opties bepalen het wel of niet automatisch nummeren, alleen
<message> <message>
<location filename="../sources/ui/conductorpropertiesdialog.ui" line="20"/> <location filename="../sources/ui/conductorpropertiesdialog.ui" line="20"/>
<source>Appliquer les propriétés à l&apos;ensemble des conducteurs de ce potentiel</source> <source>Appliquer les propriétés à l&apos;ensemble des conducteurs de ce potentiel</source>
<translation type="unfinished">Eigenschappen toepassen op alle geleiders van hetzelfde potentiaal</translation> <translation type="unfinished">Eigenschappen toepassen op alle geleiders met hetzelfde potentiaal</translation>
</message> </message>
<message> <message>
<location filename="../sources/ui/conductorpropertiesdialog.cpp" line="72"/> <location filename="../sources/ui/conductorpropertiesdialog.cpp" line="72"/>
@@ -673,7 +673,7 @@ Noot: Geen van deze opties bepalen het wel of niet automatisch nummeren, alleen
<message> <message>
<location filename="../sources/ui/conductorpropertieswidget.ui" line="81"/> <location filename="../sources/ui/conductorpropertieswidget.ui" line="81"/>
<source>Afficher un texte de potentiel par folio. </source> <source>Afficher un texte de potentiel par folio. </source>
<translation type="unfinished">Toon tekst per pagina.</translation> <translation type="unfinished">Toon tekst per pagina. </translation>
</message> </message>
<message> <message>
<location filename="../sources/ui/conductorpropertieswidget.ui" line="151"/> <location filename="../sources/ui/conductorpropertieswidget.ui" line="151"/>
@@ -866,7 +866,7 @@ Noot: Geen van deze opties bepalen het wel of niet automatisch nummeren, alleen
<location filename="../sources/ui/diagrampropertiesdialog.cpp" line="48"/> <location filename="../sources/ui/diagrampropertiesdialog.cpp" line="48"/>
<source>Propriétés du folio</source> <source>Propriétés du folio</source>
<comment>window title</comment> <comment>window title</comment>
<translation type="unfinished">Paginaeigenschappen</translation> <translation type="unfinished">Pagina-eigenschappen</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -1401,7 +1401,7 @@ Noot: Geen van deze opties bepalen het wel of niet automatisch nummeren, alleen
</message> </message>
<message> <message>
<source>N° fil : </source> <source>N° fil : </source>
<translation type="unfinished">Draadnummer :</translation> <translation type="unfinished">Draadnummer : </translation>
</message> </message>
<message> <message>
<source>Sans titre</source> <source>Sans titre</source>
@@ -1593,7 +1593,8 @@ Noot: Geen van deze opties bepalen het wel of niet automatisch nummeren, alleen
<source>Êtes-vous sûr de vouloir supprimer cet élément ? <source>Êtes-vous sûr de vouloir supprimer cet élément ?
</source> </source>
<comment>message box content</comment> <comment>message box content</comment>
<translation type="unfinished">Wilt u dit element werkelijk verwijderen ?</translation> <translation type="unfinished">Wilt u dit element werkelijk verwijderen ?
</translation>
</message> </message>
<message> <message>
<location filename="../sources/ElementsCollection/elementscollectionwidget.cpp" line="344"/> <location filename="../sources/ElementsCollection/elementscollectionwidget.cpp" line="344"/>
@@ -1680,7 +1681,7 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés.</
<location filename="../sources/elementspanel.cpp" line="153"/> <location filename="../sources/elementspanel.cpp" line="153"/>
<source>Double-cliquez pour réduire ou développer cette collection de cartouches embarquée</source> <source>Double-cliquez pour réduire ou développer cette collection de cartouches embarquée</source>
<comment>Status tip</comment> <comment>Status tip</comment>
<translation type="unfinished">Dubbelklik voor in- of uitvouwen van deze titelblokverzameling</translation> <translation type="unfinished">Dubbelklik voor in- of uitvouwen van deze titelblokcollectie</translation>
</message> </message>
<message> <message>
<location filename="../sources/elementspanel.cpp" line="162"/> <location filename="../sources/elementspanel.cpp" line="162"/>
@@ -1698,32 +1699,32 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés.</
<location filename="../sources/elementspanel.cpp" line="199"/> <location filename="../sources/elementspanel.cpp" line="199"/>
<source>Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech</source> <source>Double-cliquez pour réduire ou développer la collection de cartouches QElectroTech</source>
<comment>Status tip</comment> <comment>Status tip</comment>
<translation type="unfinished">Dubbelklik voor in- of uitvouwen van QET titelblokken</translation> <translation type="unfinished">Dubbelklik voor in- of uitvouwen van QET titelbloksjablonen</translation>
</message> </message>
<message> <message>
<location filename="../sources/elementspanel.cpp" line="200"/> <location filename="../sources/elementspanel.cpp" line="200"/>
<source>Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser.</source> <source>Ceci est la collection de cartouches fournie avec QElectroTech. Installée en tant que composant système, vous ne pouvez normalement pas la personnaliser.</source>
<comment>&quot;What&apos;s this&quot; tip</comment> <comment>&quot;What&apos;s this&quot; tip</comment>
<translation type="unfinished">Dit is de titelblokverzameling van QET. Deze zijn niet te wijzigen, wel te kopieren.</translation> <translation type="unfinished">Dit is de titelbloksjablonencollectie van QET. Deze zijn niet te wijzigen, wel te kopieren.</translation>
</message> </message>
<message> <message>
<location filename="../sources/elementspanel.cpp" line="207"/> <location filename="../sources/elementspanel.cpp" line="207"/>
<source>Double-cliquez pour réduire ou développer votre collection personnelle de cartouches</source> <source>Double-cliquez pour réduire ou développer votre collection personnelle de cartouches</source>
<comment>Status tip</comment> <comment>Status tip</comment>
<translation type="unfinished">Dubbelklik voor in- of uitvouwen van titelblokverzameling</translation> <translation type="unfinished">Dubbelklik voor in- of uitvouwen van uw persoonlijke titelblokcollectie</translation>
</message> </message>
<message> <message>
<location filename="../sources/elementspanel.cpp" line="208"/> <location filename="../sources/elementspanel.cpp" line="208"/>
<source>Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches.</source> <source>Ceci est votre collection personnelle de cartouches -- utilisez-la pour créer, stocker et éditer vos propres cartouches.</source>
<comment>&quot;What&apos;s this&quot; tip</comment> <comment>&quot;What&apos;s this&quot; tip</comment>
<translation type="unfinished">Dit is een gebruikerverzameling van titelblokken; gebruik deze voor het toevoegen,verwijderen en wijzigen van uw eigen titelblokken.</translation> <translation type="unfinished">Dit is de gebruikercollectie van titelbloksjablonen; gebruik deze voor het toevoegen,verwijderen en wijzigen van uw eigen titelbloksjablonen.</translation>
</message> </message>
</context> </context>
<context> <context>
<name>ElementsPanelWidget</name> <name>ElementsPanelWidget</name>
<message> <message>
<source>Recharger les collections</source> <source>Recharger les collections</source>
<translation type="unfinished">Herlaad verzamelingen</translation> <translation type="unfinished">Herlaad collecties</translation>
</message> </message>
<message> <message>
<location filename="../sources/elementspanelwidget.cpp" line="46"/> <location filename="../sources/elementspanelwidget.cpp" line="46"/>
@@ -1763,7 +1764,7 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés.</
<message> <message>
<location filename="../sources/elementspanelwidget.cpp" line="51"/> <location filename="../sources/elementspanelwidget.cpp" line="51"/>
<source>Propriétés du folio</source> <source>Propriétés du folio</source>
<translation type="unfinished">Paginaeigenschappen</translation> <translation type="unfinished">Pagina-eigenschappen</translation>
</message> </message>
<message> <message>
<location filename="../sources/elementspanelwidget.cpp" line="52"/> <location filename="../sources/elementspanelwidget.cpp" line="52"/>
@@ -2055,7 +2056,7 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés.</
<message> <message>
<location filename="../sources/autoNum/ui/folioautonumbering.ui" line="107"/> <location filename="../sources/autoNum/ui/folioautonumbering.ui" line="107"/>
<source> Options de numérotation</source> <source> Options de numérotation</source>
<translation type="unfinished">Opties voor nummering</translation> <translation type="unfinished"> Opties voor nummering</translation>
</message> </message>
<message> <message>
<location filename="../sources/autoNum/ui/folioautonumbering.ui" line="132"/> <location filename="../sources/autoNum/ui/folioautonumbering.ui" line="132"/>
@@ -2090,7 +2091,7 @@ Tout les éléments et les dossier contenus dans ce dossier seront supprimés.</
<message> <message>
<location filename="../sources/autoNum/ui/folioautonumbering.ui" line="40"/> <location filename="../sources/autoNum/ui/folioautonumbering.ui" line="40"/>
<source>Numérotation automatique de Folio :</source> <source>Numérotation automatique de Folio :</source>
<translation type="unfinished">Autonummering van pagina&apos;s</translation> <translation type="unfinished">Autonummering van pagina&apos;s :</translation>
</message> </message>
<message> <message>
<location filename="../sources/autoNum/ui/folioautonumbering.cpp" line="173"/> <location filename="../sources/autoNum/ui/folioautonumbering.cpp" line="173"/>
@@ -2124,7 +2125,8 @@ Le champs &quot;Incrémentation&quot; n&apos;est pas utilisé.
Als er in het veld &quot;Waarde&quot; een getal wordt ingevuld met minder decimalen dan het gekozen type wordt dit getal aangevuld met ervoor geplaatste nullen. Als er in het veld &quot;Waarde&quot; een getal wordt ingevuld met minder decimalen dan het gekozen type wordt dit getal aangevuld met ervoor geplaatste nullen.
-Het type &quot;Tekst&quot; staat voor een vaste tekst. -Het type &quot;Tekst&quot; staat voor een vaste tekst.
Het veld &quot;Increment&quot; is nu niet van belang.</translation> Het veld &quot;Increment&quot; is nu niet van belang.
</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -2215,7 +2217,7 @@ Teksten en nummers zijn ook beschikbaar.</translation>
<message> <message>
<location filename="../sources/configpages.cpp" line="250"/> <location filename="../sources/configpages.cpp" line="250"/>
<source>Utiliser les labels de folio à la place de leurs ID</source> <source>Utiliser les labels de folio à la place de leurs ID</source>
<translation type="unfinished">Gebruik paginalabels op de plaats van hun ID</translation> <translation type="unfinished">Gebruik paginalabels in plaats van hun ID</translation>
</message> </message>
<message> <message>
<location filename="../sources/configpages.cpp" line="254"/> <location filename="../sources/configpages.cpp" line="254"/>
@@ -3492,7 +3494,7 @@ Wilt u de wijzigingen opslaan?</translation>
<message> <message>
<location filename="../sources/PropertiesEditor/propertieseditordockwidget.ui" line="14"/> <location filename="../sources/PropertiesEditor/propertieseditordockwidget.ui" line="14"/>
<source>Propriété de la séléction</source> <source>Propriété de la séléction</source>
<translation type="unfinished">Eigenschappen van selectie</translation> <translation type="unfinished">Eigenschappen</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -3619,14 +3621,15 @@ Wilt u de wijzigingen opslaan?</translation>
<location filename="../sources/qetapp.cpp" line="1602"/> <location filename="../sources/qetapp.cpp" line="1602"/>
<source> --common-elements-dir=DIR Definir le dossier de la collection d&apos;elements <source> --common-elements-dir=DIR Definir le dossier de la collection d&apos;elements
</source> </source>
<translation type="unfinished"> --common-elements-dir=DIR Definieer de map voor de elementenverzameling <translation type="unfinished"> --common-elements-dir=DIR Definieer de map voor de elementencollectie
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../sources/qetapp.cpp" line="1605"/> <location filename="../sources/qetapp.cpp" line="1605"/>
<source> --common-tbt-dir=DIR Definir le dossier de la collection de modeles de cartouches <source> --common-tbt-dir=DIR Definir le dossier de la collection de modeles de cartouches
</source> </source>
<translation type="unfinished"> --common-tbt-dir=DIR Definieer de map voor titelbloksjablonenverzameling</translation> <translation type="unfinished"> --common-tbt-dir=DIR Definieer de map voor de titelbloksjablonen
</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetapp.cpp" line="1608"/> <location filename="../sources/qetapp.cpp" line="1608"/>
@@ -3639,13 +3642,14 @@ Wilt u de wijzigingen opslaan?</translation>
<location filename="../sources/qetapp.cpp" line="1610"/> <location filename="../sources/qetapp.cpp" line="1610"/>
<source> --lang-dir=DIR Definir le dossier contenant les fichiers de langue <source> --lang-dir=DIR Definir le dossier contenant les fichiers de langue
</source> </source>
<translation type="unfinished"> --lang-dir=DIR Definieer de taalbestandenmap</translation> <translation type="unfinished"> --lang-dir=DIR Definieer de taalbestandenmap
</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetapp.cpp" line="102"/> <location filename="../sources/qetapp.cpp" line="102"/>
<source>Chargement... Initialisation du cache des collections d&apos;éléments</source> <source>Chargement... Initialisation du cache des collections d&apos;éléments</source>
<comment>splash screen caption</comment> <comment>splash screen caption</comment>
<translation type="unfinished">Laden... Initialisatie van de elementenverzameling-cache </translation> <translation type="unfinished">Laden... Initialisatie van de cache van de elementencollectie</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetapp.cpp" line="111"/> <location filename="../sources/qetapp.cpp" line="111"/>
@@ -3699,13 +3703,13 @@ Wilt u de wijzigingen opslaan?</translation>
<location filename="../sources/qetapp.cpp" line="332"/> <location filename="../sources/qetapp.cpp" line="332"/>
<source>Cartouches QET</source> <source>Cartouches QET</source>
<comment>title of the title block templates collection provided by QElectroTech</comment> <comment>title of the title block templates collection provided by QElectroTech</comment>
<translation type="unfinished">QET titelblokken</translation> <translation type="unfinished">QET titelbloksjablonen</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetapp.cpp" line="346"/> <location filename="../sources/qetapp.cpp" line="346"/>
<source>Cartouches utilisateur</source> <source>Cartouches utilisateur</source>
<comment>title of the user&apos;s title block templates collection</comment> <comment>title of the user&apos;s title block templates collection</comment>
<translation type="unfinished">Gebruiker titelblokken</translation> <translation type="unfinished">Gebruiker titelbloksjablonen</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetapp.cpp" line="809"/> <location filename="../sources/qetapp.cpp" line="809"/>
@@ -3772,7 +3776,9 @@ Wilt u de wijzigingen opslaan?</translation>
<source> [options] [fichier]... <source> [options] [fichier]...
</source> </source>
<translation type="unfinished">[opties] [bestanden].....</translation> <translation type="unfinished"> [opties] [bestanden].....
</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetapp.cpp" line="1596"/> <location filename="../sources/qetapp.cpp" line="1596"/>
@@ -3892,7 +3898,7 @@ Opties :
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="313"/> <location filename="../sources/qetdiagrameditor.cpp" line="313"/>
<source>&amp;Fermer</source> <source>&amp;Fermer</source>
<translation type="unfinished">&amp;Afsluiten</translation> <translation type="unfinished">&amp;Sluiten</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="565"/> <location filename="../sources/qetdiagrameditor.cpp" line="565"/>
@@ -3945,22 +3951,22 @@ Opties :
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="290"/> <location filename="../sources/qetdiagrameditor.cpp" line="290"/>
<source>Propriétés du folio</source> <source>Propriétés du folio</source>
<translation type="unfinished">Paginaeigenschappen</translation> <translation type="unfinished">Pagina-eigenschappen</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="293"/> <location filename="../sources/qetdiagrameditor.cpp" line="293"/>
<source>Ajouter un folio</source> <source>Ajouter un folio</source>
<translation type="unfinished">Voeg een pagina toe</translation> <translation type="unfinished">Pagina toevoegen</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="294"/> <location filename="../sources/qetdiagrameditor.cpp" line="294"/>
<source>Supprimer le folio</source> <source>Supprimer le folio</source>
<translation type="unfinished">Verwijder de pagina</translation> <translation type="unfinished">Pagina verwijderen</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="298"/> <location filename="../sources/qetdiagrameditor.cpp" line="298"/>
<source>Lancer le plugin de creation de bornier</source> <source>Lancer le plugin de creation de bornier</source>
<translation type="unfinished">Start de terminal-plugin om een terminal te maken</translation> <translation type="unfinished">Start de terminal-plugin voor het maken van een terminal</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="302"/> <location filename="../sources/qetdiagrameditor.cpp" line="302"/>
@@ -4127,7 +4133,7 @@ Opties :
<location filename="../sources/qetdiagrameditor.cpp" line="456"/> <location filename="../sources/qetdiagrameditor.cpp" line="456"/>
<source>Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...)</source> <source>Édite les propriétés du folio (dimensions, informations du cartouche, propriétés des conducteurs...)</source>
<comment>status bar tip</comment> <comment>status bar tip</comment>
<translation type="unfinished">Bewerk de paginaeigenschappen (afmetingen, titelblokinformatie, geleidereigenschappen...)</translation> <translation type="unfinished">Bewerk de pagina-eigenschappen (afmetingen, titelblokinformatie, geleidereigenschappen...)</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="462"/> <location filename="../sources/qetdiagrameditor.cpp" line="462"/>
@@ -4243,7 +4249,7 @@ Opties :
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="423"/> <location filename="../sources/qetdiagrameditor.cpp" line="423"/>
<source>Ajouter un champ de texte</source> <source>Ajouter un champ de texte</source>
<translation>Toevoegen van een tekstveld</translation> <translation type="unfinished">Tekstveld toevoegen</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="183"/> <location filename="../sources/qetdiagrameditor.cpp" line="183"/>
@@ -4296,7 +4302,7 @@ Opties :
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="902"/> <location filename="../sources/qetdiagrameditor.cpp" line="902"/>
<source>Il semblerait que le fichier que vous essayez d&apos;ouvrir ne soit pas accessible en lecture. Il est donc impossible de l&apos;ouvrir. Veuillez vérifier les permissions du fichier.</source> <source>Il semblerait que le fichier que vous essayez d&apos;ouvrir ne soit pas accessible en lecture. Il est donc impossible de l&apos;ouvrir. Veuillez vérifier les permissions du fichier.</source>
<translation type="unfinished">Bestand openen mislukt. Heeft u de juiste machtigingen?</translation> <translation type="unfinished">Bestand openen mislukt. Controleer of u de juiste machtigingen heeft.</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="916"/> <location filename="../sources/qetdiagrameditor.cpp" line="916"/>
@@ -4356,7 +4362,7 @@ Opties :
<location filename="../sources/qetdiagrameditor.cpp" line="187"/> <location filename="../sources/qetdiagrameditor.cpp" line="187"/>
<source>Annulations</source> <source>Annulations</source>
<comment>dock title</comment> <comment>dock title</comment>
<translation type="unfinished">Ongedaan maken</translation> <translation type="unfinished">Geschiedenis</translation>
</message> </message>
<message> <message>
<location filename="../sources/qetdiagrameditor.cpp" line="184"/> <location filename="../sources/qetdiagrameditor.cpp" line="184"/>
@@ -4971,7 +4977,7 @@ Opties :
<location filename="../sources/editor/qetelementeditor.cpp" line="520"/> <location filename="../sources/editor/qetelementeditor.cpp" line="520"/>
<source>Annulations</source> <source>Annulations</source>
<comment>dock title</comment> <comment>dock title</comment>
<translation>Annuleer</translation> <translation type="unfinished">Geschiedenis</translation>
</message> </message>
<message> <message>
<location filename="../sources/editor/qetelementeditor.cpp" line="538"/> <location filename="../sources/editor/qetelementeditor.cpp" line="538"/>
@@ -5028,7 +5034,7 @@ Opties :
<message> <message>
<location filename="../sources/editor/qetelementeditor.cpp" line="739"/> <location filename="../sources/editor/qetelementeditor.cpp" line="739"/>
<source> et</source> <source> et</source>
<translation type="unfinished">en</translation> <translation type="unfinished"> en</translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../sources/editor/qetelementeditor.cpp" line="741"/> <location filename="../sources/editor/qetelementeditor.cpp" line="741"/>
@@ -5858,7 +5864,7 @@ Que désirez vous faire ?</source>
<location filename="../sources/titleblock/qettemplateeditor.cpp" line="483"/> <location filename="../sources/titleblock/qettemplateeditor.cpp" line="483"/>
<source>Annulations</source> <source>Annulations</source>
<comment>dock title</comment> <comment>dock title</comment>
<translation>Annuleer</translation> <translation type="unfinished">Geschiedenis</translation>
</message> </message>
<message> <message>
<location filename="../sources/titleblock/qettemplateeditor.cpp" line="502"/> <location filename="../sources/titleblock/qettemplateeditor.cpp" line="502"/>
@@ -6357,7 +6363,7 @@ Que désirez vous faire ?</source>
<location filename="../sources/titleblock/templatecommands.cpp" line="763"/> <location filename="../sources/titleblock/templatecommands.cpp" line="763"/>
<source>Séparation d&apos;une cellule en %1</source> <source>Séparation d&apos;une cellule en %1</source>
<comment>label used in the title block template editor undo list; %1 is the number of cells after the split</comment> <comment>label used in the title block template editor undo list; %1 is the number of cells after the split</comment>
<translation type="unfinished">Splitsen van één cel naar %1 </translation> <translation type="unfinished">Splitsen van één cel naar %1</translation>
</message> </message>
<message> <message>
<location filename="../sources/titleblock/templatecommands.cpp" line="855"/> <location filename="../sources/titleblock/templatecommands.cpp" line="855"/>
@@ -6497,7 +6503,7 @@ Que désirez vous faire ?</source>
<message> <message>
<location filename="../sources/diagramcommands.h" line="51"/> <location filename="../sources/diagramcommands.h" line="51"/>
<source>Ajouter </source> <source>Ajouter </source>
<translation type="unfinished">Voeg toe</translation> <translation type="unfinished">Toevoegen </translation>
</message> </message>
<message> <message>
<location filename="../sources/editor/esevent/eseventaddarc.cpp" line="70"/> <location filename="../sources/editor/esevent/eseventaddarc.cpp" line="70"/>
@@ -6580,7 +6586,7 @@ Que désirez vous faire ?</source>
<message> <message>
<location filename="../sources/nomenclature.cpp" line="55"/> <location filename="../sources/nomenclature.cpp" line="55"/>
<source>Enregister sous... </source> <source>Enregister sous... </source>
<translation type="unfinished">Opslaan als ...</translation> <translation type="unfinished">Opslaan als ... </translation>
</message> </message>
<message> <message>
<location filename="../sources/nomenclature.cpp" line="55"/> <location filename="../sources/nomenclature.cpp" line="55"/>
@@ -6593,12 +6599,13 @@ Que désirez vous faire ?</source>
</source> </source>
<translation type="unfinished">Kan bestand niet vervangen! <translation type="unfinished">Kan bestand niet vervangen!
</translation> </translation>
</message> </message>
<message> <message>
<location filename="../sources/nomenclature.cpp" line="86"/> <location filename="../sources/nomenclature.cpp" line="86"/>
<source>NOMENCLATURE : </source> <source>NOMENCLATURE : </source>
<translation type="unfinished">NAAMGEVING:</translation> <translation type="unfinished">NAAMGEVING : </translation>
</message> </message>
<message> <message>
<location filename="../sources/nomenclature.cpp" line="87"/> <location filename="../sources/nomenclature.cpp" line="87"/>
@@ -6764,17 +6771,17 @@ Que désirez vous faire ?</source>
<message> <message>
<location filename="../sources/editor/rectangleeditor.cpp" line="50"/> <location filename="../sources/editor/rectangleeditor.cpp" line="50"/>
<source>Coin supérieur gauche : </source> <source>Coin supérieur gauche : </source>
<translation type="unfinished">Linkerbovenhoek</translation> <translation type="unfinished">Linkerbovenhoek : </translation>
</message> </message>
<message> <message>
<location filename="../sources/editor/rectangleeditor.cpp" line="55"/> <location filename="../sources/editor/rectangleeditor.cpp" line="55"/>
<source>Dimensions : </source> <source>Dimensions : </source>
<translation type="unfinished">Afmetingen :</translation> <translation type="unfinished">Afmetingen : </translation>
</message> </message>
<message> <message>
<location filename="../sources/editor/rectangleeditor.cpp" line="56"/> <location filename="../sources/editor/rectangleeditor.cpp" line="56"/>
<source>Largeur :</source> <source>Largeur :</source>
<translation type="unfinished">Breedte:</translation> <translation type="unfinished">Breedte :</translation>
</message> </message>
<message> <message>
<location filename="../sources/editor/rectangleeditor.cpp" line="58"/> <location filename="../sources/editor/rectangleeditor.cpp" line="58"/>
@@ -7794,7 +7801,7 @@ De andere velden zijn nu niet van belang.</translation>
<message> <message>
<location filename="../sources/ui/titleblockpropertieswidget.ui" line="68"/> <location filename="../sources/ui/titleblockpropertieswidget.ui" line="68"/>
<source>à droite </source> <source>à droite </source>
<translation type="unfinished">rechts</translation> <translation type="unfinished">rechts </translation>
</message> </message>
<message> <message>
<location filename="../sources/ui/titleblockpropertieswidget.ui" line="237"/> <location filename="../sources/ui/titleblockpropertieswidget.ui" line="237"/>
@@ -8557,7 +8564,7 @@ Maximale afmeting : %2px</translation>
<message> <message>
<location filename="../sources/ui/xrefpropertieswidget.cpp" line="99"/> <location filename="../sources/ui/xrefpropertieswidget.cpp" line="99"/>
<source>Sous le label de l&apos;élément</source> <source>Sous le label de l&apos;élément</source>
<translation type="unfinished">Onder het labelelement</translation> <translation type="unfinished">Onder het elementlabel</translation>
</message> </message>
</context> </context>
<context> <context>

View File

@@ -1,5 +1,7 @@
HEADERS += \ HEADERS += \
$$PWD/qetgraphicshandlerutility.h $$PWD/qetgraphicshandlerutility.h \
$$PWD/qetgraphicshandleritem.h
SOURCES += \ SOURCES += \
$$PWD/qetgraphicshandlerutility.cpp $$PWD/qetgraphicshandlerutility.cpp \
$$PWD/qetgraphicshandleritem.cpp

View File

@@ -0,0 +1,99 @@
/*
Copyright 2006-2017 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "qetgraphicshandleritem.h"
#include <QPainter>
#include <QDebug>
/**
* @brief QetGraphicsHandlerItem::QetGraphicsHandlerItem
* @param size, the size of the handler
*/
QetGraphicsHandlerItem::QetGraphicsHandlerItem(qreal size) :
m_size(size)
{}
/**
* @brief QetGraphicsHandlerItem::boundingRect
* @return
*/
QRectF QetGraphicsHandlerItem::boundingRect() const
{
qreal rect_size = m_size * m_previous_zoom_factor;
QRectF rect(0-rect_size/2, 0-rect_size/2, rect_size, rect_size);
rect.adjust(-2, -2, 2, 2);
return rect;
}
/**
* @brief QetGraphicsHandlerItem::setColor
* @param color, set the color of the handler
*/
void QetGraphicsHandlerItem::setColor(QColor color)
{
m_color = color;
update();
}
/**
* @brief QetGraphicsHandlerItem::paint
* @param painter
* @param option
* @param widget
*/
void QetGraphicsHandlerItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
qreal zoom_factor = 1.0/painter->transform().m11();
if(zoom_factor != m_previous_zoom_factor)
{
prepareGeometryChange();
m_previous_zoom_factor = zoom_factor;
}
qreal rect_size = m_size * m_previous_zoom_factor;
QRectF rect(0-rect_size/2, 0-rect_size/2, rect_size, rect_size);
painter->save();
painter->setBrush(QBrush(m_color));
QPen pen(QBrush(m_color), 2, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin);
pen.setCosmetic(true);
painter->setPen(pen);
painter->setRenderHint(QPainter::Antialiasing, true);
painter->drawEllipse(rect);
painter->restore();
}
/**
* @brief QetGraphicsHandlerItem::handlerForPoint
* @param points
* @return A list of handler with pos at point
*/
QVector<QetGraphicsHandlerItem *> QetGraphicsHandlerItem::handlerForPoint(const QVector<QPointF> &points, int size)
{
QVector <QetGraphicsHandlerItem *> list_;
for (QPointF point : points)
{
QetGraphicsHandlerItem *qghi = new QetGraphicsHandlerItem(size);
qghi->setPos(point);
list_ << qghi;
}
return list_;
}

View File

@@ -0,0 +1,53 @@
/*
Copyright 2006-2017 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
QElectroTech is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef QETGRAPHICSHANDLERITEM_H
#define QETGRAPHICSHANDLERITEM_H
#include <QGraphicsItem>
/**
* @brief The QetGraphicsHandlerItem class
* This graphics item represents a point, destined to be used as an handler,
* for modifie the geometrie of a another graphics item (like shapes).
* The graphics item to be modified, must call "installSceneEventFilter" of this item with itself for argument,.
* The ghraphics item to be modified, need to reimplement "sceneEventFilter" for create the modification behavior.
*/
class QetGraphicsHandlerItem : public QGraphicsItem
{
public:
QetGraphicsHandlerItem(qreal size = 15);
virtual QRectF boundingRect() const;
enum { Type = UserType + 1200};
virtual int type() const {return Type;}
void setColor(QColor color);
protected:
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
private:
qreal m_size,
m_previous_zoom_factor = 1;
QColor m_color;
public:
static QVector<QetGraphicsHandlerItem *> handlerForPoint(const QVector<QPointF> &points, int size = 15);
};
#endif // QETGRAPHICSHANDLERITEM_H

View File

@@ -16,111 +16,10 @@
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>. along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "qetgraphicshandlerutility.h" #include "qetgraphicshandlerutility.h"
#include <QPainter> //#include <QVector>
//#include <QPointF>
#include <QPainterPath>
/**
* @brief QetGraphicsHandlerUtility::QetGraphicsHandlerUtility
* Constructor
* @param size : the size of the handler
*/
QetGraphicsHandlerUtility::QetGraphicsHandlerUtility(qreal size) :
m_size (size)
{}
/**
* @brief QetGraphicsHandlerUtility::drawHandler
* Draw the handler at pos @point, using the QPainter @painter.
* @param painter : painter to use for drawing the handler
* @param point : point to draw the handler
*/
void QetGraphicsHandlerUtility::drawHandler(QPainter *painter, const QPointF &point)
{
//Setup the zoom factor to draw the handler in the same size at screen,
//no matter the zoom of the QPainter
m_zoom_factor = 1.0/painter->transform().m11();
painter->save();
painter->setBrush(QBrush(m_inner_color));
QPen square_pen(QBrush(m_outer_color), 2, Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin);
square_pen.setCosmetic(true);
painter->setPen(square_pen);
painter->drawRect(getRect(point));
painter->restore();
}
/**
* @brief QetGraphicsHandlerUtility::drawHandler
* Conveniance method for void QetGraphicsHandlerUtility::drawHandler(QPainter *painter, const QPointF &point)
* @param painter
* @param points
* @param color2
*/
void QetGraphicsHandlerUtility::drawHandler(QPainter *painter, const QVector<QPointF> &points) {
foreach(QPointF point, points)
drawHandler(painter, point);
}
/**
* @brief QetGraphicsHandlerUtility::pointIsInHandler
* @param point : point to compare
* @param key_point : point at the center of handler (the point to modify, for exemple the corner of a rectangle)
* @return true if point is in a handler. else false
*/
bool QetGraphicsHandlerUtility::pointIsInHandler(const QPointF &point, const QPointF &key_point) const {
return (getRect(key_point).contains(point));
}
/**
* @brief QetGraphicsHandlerUtility::pointIsHoverHandler
* @param point : point to compare
* @param vector : vector of key_point (the point to modify, for exemple the corners of a rectangle)
* @return if point is hover an handler, return the index of the hovered key_point in the vector, else return -1
*/
int QetGraphicsHandlerUtility::pointIsHoverHandler(const QPointF &point, const QVector<QPointF> &vector) const
{
foreach (QPointF key_point, vector)
if (pointIsInHandler(point, key_point))
return vector.indexOf(key_point);
return -1;
}
/**
* @brief QetGraphicsHandlerUtility::handlerRect
* Return the rect of the handler for all key_point in vector (the point to modify, for exemple the corners of a rectangle)
* The order of rect in the returned vector is the same as the given vector.
* @param vector
* @return
*/
QVector<QRectF> QetGraphicsHandlerUtility::handlerRect(const QVector<QPointF> &vector) const
{
QVector <QRectF> rect_vector;
foreach(QPointF point, vector)
rect_vector << getRect(point);
return rect_vector;
}
void QetGraphicsHandlerUtility::setInnerColor(QColor color) {
m_inner_color = color;
}
void QetGraphicsHandlerUtility::setOuterColor(QColor color) {
m_outer_color = color;
}
/**
* @brief QetGraphicsHandlerUtility::getRect
* @param point
* @return
*/
QRectF QetGraphicsHandlerUtility::getRect(const QPointF &point) const
{
qreal rect_size = m_size * m_zoom_factor;
QRectF rect(point.x() - rect_size/2, point.y() - rect_size/2, rect_size, rect_size);
return rect;
}
/** /**
* @brief QetGraphicsHandlerUtility::pointsForRect * @brief QetGraphicsHandlerUtility::pointsForRect
@@ -169,7 +68,6 @@ QVector<QPointF> QetGraphicsHandlerUtility::pointsForLine(const QLineF &line) {
return (QVector<QPointF> {line.p1(), line.p2()}); return (QVector<QPointF> {line.p1(), line.p2()});
} }
#include <QDebug>
/** /**
* @brief QetGraphicsHandlerUtility::pointsForArc * @brief QetGraphicsHandlerUtility::pointsForArc
* Return the points for the given arc. * Return the points for the given arc.

View File

@@ -32,25 +32,6 @@ class QPainter;
*/ */
class QetGraphicsHandlerUtility class QetGraphicsHandlerUtility
{ {
public:
QetGraphicsHandlerUtility (qreal size = 1);
void setSize(qreal size) {m_size = size;}
void drawHandler (QPainter *painter, const QPointF & point);
void drawHandler(QPainter *painter, const QVector<QPointF> &points);
QPointF posForHandler(const QPointF &point) const;
bool pointIsInHandler (const QPointF &point, const QPointF &key_point) const;
int pointIsHoverHandler (const QPointF &point, const QVector<QPointF> &vector) const;
QVector<QRectF> handlerRect (const QVector<QPointF> &vector) const;
void setInnerColor (QColor color);
void setOuterColor (QColor color);
private:
QRectF getRect (const QPointF &point) const;
qreal m_size;
qreal m_zoom_factor = 1;
QColor m_inner_color = Qt::white,
m_outer_color = Qt::blue;
public: public:
static QVector <QPointF> pointsForRect (const QRectF &rect); static QVector <QPointF> pointsForRect (const QRectF &rect);
static QVector <QPointF> pointsForLine (const QLineF &line); static QVector <QPointF> pointsForLine (const QLineF &line);

View File

@@ -250,6 +250,7 @@ void ConductorProperties::toXml(QDomElement &e) const
if (color != QColor(Qt::black)) if (color != QColor(Qt::black))
e.setAttribute("color", color.name()); e.setAttribute("color", color.name());
if (type == Single) if (type == Single)
singleLineProperties.toXml(e); singleLineProperties.toXml(e);
@@ -388,12 +389,14 @@ void ConductorProperties::setText(QString text) {
*/ */
void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> list) void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> list)
{ {
if (list.isEmpty()) const QList<ConductorProperties> clist = list;
if (clist.isEmpty())
return; return;
if (list.size() == 1) if (clist.size() == 1)
{ {
ConductorProperties cp = list.first(); ConductorProperties cp = clist.first();
color = cp.color; color = cp.color;
text = cp.text; text = cp.text;
m_formula = cp.m_formula; m_formula = cp.m_formula;
@@ -410,9 +413,15 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
} }
bool equal = true; bool equal = true;
QColor c_value;
bool b_value;
QString s_value;
int i_value;
double d_value;
//Color //Color
QColor c_value = list.first().color; c_value = clist.first().color;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.color != c_value) if (cp.color != c_value)
equal = false; equal = false;
@@ -422,8 +431,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//text //text
QString s_value = list.first().text; s_value = clist.first().text;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.text != s_value) if (cp.text != s_value)
equal = false; equal = false;
@@ -433,8 +442,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//formula //formula
s_value = list.first().m_formula; s_value = clist.first().m_formula;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.m_formula != s_value) if (cp.m_formula != s_value)
equal = false; equal = false;
@@ -444,8 +453,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//function //function
s_value = list.first().m_function; s_value = clist.first().m_function;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.m_function != s_value) if (cp.m_function != s_value)
equal = false; equal = false;
@@ -455,8 +464,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//Tension protocol //Tension protocol
s_value = list.first().m_tension_protocol; s_value = clist.first().m_tension_protocol;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.m_tension_protocol != s_value) if (cp.m_tension_protocol != s_value)
equal = false; equal = false;
@@ -466,8 +475,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//text size //text size
int i_value = list.first().text_size; i_value = clist.first().text_size;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.text_size != i_value) if (cp.text_size != i_value)
equal = false; equal = false;
@@ -477,8 +486,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//conductor size //conductor size
double d_value = list.first().cond_size; d_value = clist.first().cond_size;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.cond_size != d_value) if (cp.cond_size != d_value)
equal = false; equal = false;
@@ -488,8 +497,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//show text //show text
bool b_value = list.first().m_show_text; b_value = clist.first().m_show_text;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.m_show_text != b_value) if (cp.m_show_text != b_value)
equal = false; equal = false;
@@ -499,8 +508,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//One text per folio //One text per folio
b_value = list.first().m_one_text_per_folio; b_value = clist.first().m_one_text_per_folio;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.m_one_text_per_folio != b_value) if (cp.m_one_text_per_folio != b_value)
equal = false; equal = false;
@@ -510,8 +519,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//Text rotation for vertical conducor //Text rotation for vertical conducor
d_value = list.first().verti_rotate_text; d_value = clist.first().verti_rotate_text;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.verti_rotate_text != d_value) if (cp.verti_rotate_text != d_value)
equal = false; equal = false;
@@ -521,8 +530,8 @@ void ConductorProperties::applyForEqualAttributes(QList<ConductorProperties> lis
equal = true; equal = true;
//Text rotation for horizontal conducor //Text rotation for horizontal conducor
d_value = list.first().horiz_rotate_text; d_value = clist.first().horiz_rotate_text;
foreach(ConductorProperties cp, list) for(ConductorProperties cp : clist)
{ {
if (cp.horiz_rotate_text != d_value) if (cp.horiz_rotate_text != d_value)
equal = false; equal = false;

View File

@@ -77,18 +77,25 @@ class ConductorProperties
//Attributes //Attributes
ConductorType type; ConductorType type;
QColor color;
QColor color;
QString text, QString text,
m_function, m_function,
m_tension_protocol, m_tension_protocol,
m_formula; m_formula;
int text_size; int text_size;
double cond_size;
double verti_rotate_text; double cond_size,
double horiz_rotate_text; verti_rotate_text,
bool m_show_text; horiz_rotate_text;
bool m_one_text_per_folio;
bool m_show_text,
m_one_text_per_folio;
Qt::PenStyle style; Qt::PenStyle style;
SingleLineProperties singleLineProperties; SingleLineProperties singleLineProperties;
// methods // methods

View File

@@ -91,30 +91,31 @@ Diagram::Diagram(QETProject *project) :
* @brief Diagram::~Diagram * @brief Diagram::~Diagram
* Destructor * Destructor
*/ */
Diagram::~Diagram() Diagram::~Diagram() {
{ // clear undo stack to prevent errors, because contains pointers to this diagram and is elements.
//First clear every selection to close an hypothetical editor
clearSelection();
// clear undo stack to prevent errors, because contains pointers to this diagram and is elements.
undoStack().clear(); undoStack().clear();
//delete of QGIManager, every elements he knows are removed //delete of QGIManager, every elements he knows are removed
delete qgi_manager_; delete qgi_manager_;
// remove of conductor setter // remove of conductor setter
delete conductor_setter_; delete conductor_setter_;
// delete of object for manage movement // delete of object for manage movement
delete elements_mover_; delete elements_mover_;
delete element_texts_mover_; delete element_texts_mover_;
if (m_event_interface) if (m_event_interface) delete m_event_interface;
delete m_event_interface;
// list removable items // list removable items
QList<QGraphicsItem *> deletable_items; QList<QGraphicsItem *> deletable_items;
for(QGraphicsItem *qgi : items()) for(QGraphicsItem *qgi : items())
{ {
if (qgi -> parentItem()) continue; if (qgi->parentItem())
if (qgraphicsitem_cast<Conductor *>(qgi)) continue; continue;
if (qgi->type() == Conductor::Type)
continue;
if (qgi->type() == QetGraphicsHandlerItem::Type)
continue;
deletable_items << qgi; deletable_items << qgi;
} }
@@ -377,6 +378,8 @@ void Diagram::keyReleaseEvent(QKeyEvent *e)
* Diagram become the ownership of event_interface * Diagram become the ownership of event_interface
* If there is a previous interface, they will be delete before * If there is a previous interface, they will be delete before
* and call init() to the new interface. * and call init() to the new interface.
* The derivated class of DiagramEventInterface need to emit the signal "finish" when the job is done,
* diagram use this signal to delete the interface. If the signal isn't send, the interface will never be deleted.
* @param event_interface * @param event_interface
*/ */
void Diagram::setEventInterface(DiagramEventInterface *event_interface) void Diagram::setEventInterface(DiagramEventInterface *event_interface)

View File

@@ -24,23 +24,24 @@
#include <QGraphicsSceneHoverEvent> #include <QGraphicsSceneHoverEvent>
#include <QStyleOptionGraphicsItem> #include <QStyleOptionGraphicsItem>
#include <QGraphicsScene> #include <QGraphicsScene>
#include "QetGraphicsItemModeler/qetgraphicshandleritem.h"
/** /**
Constructor Constructor
@param parent Parent QGraphicsItem @param parent Parent QGraphicsItem
*/ */
ElementPrimitiveDecorator::ElementPrimitiveDecorator(QGraphicsItem *parent): ElementPrimitiveDecorator::ElementPrimitiveDecorator(QGraphicsItem *parent):
QGraphicsObject(parent), QGraphicsObject(parent)
m_handler(10)
{ {
init(); init();
m_handler.setOuterColor(Qt::darkGreen);
} }
/** /**
Destructor Destructor
*/ */
ElementPrimitiveDecorator::~ElementPrimitiveDecorator() { ElementPrimitiveDecorator::~ElementPrimitiveDecorator()
{
removeHandler();
} }
/** /**
@@ -68,12 +69,7 @@ QRectF ElementPrimitiveDecorator::internalBoundingRect() const {
*/ */
QRectF ElementPrimitiveDecorator::boundingRect() const QRectF ElementPrimitiveDecorator::boundingRect() const
{ {
QVector<QRectF> rect_vector = m_handler.handlerRect(getResizingsPoints()); return effective_bounding_rect_;
QRectF rect = effective_bounding_rect_;
rect |= rect_vector.first();
rect |= rect_vector.last();
return(rect);
} }
/** /**
@@ -97,9 +93,6 @@ void ElementPrimitiveDecorator::paint(QPainter *painter, const QStyleOptionGraph
painter -> setPen(pen); painter -> setPen(pen);
painter -> drawRect(modified_bounding_rect_); painter -> drawRect(modified_bounding_rect_);
//Draw the handlers
m_handler.drawHandler(painter, getResizingsPoints());
// uncomment to draw the real bouding rect (=adjusted internal bounding rect) // uncomment to draw the real bouding rect (=adjusted internal bounding rect)
// painter -> setBrush(QBrush(QColor(240, 0, 0, 127))); // painter -> setBrush(QBrush(QColor(240, 0, 0, 127)));
// painter -> drawRect(boundingRect()); // painter -> drawRect(boundingRect());
@@ -109,45 +102,28 @@ void ElementPrimitiveDecorator::paint(QPainter *painter, const QStyleOptionGraph
/** /**
@param items the new list of items this decorator is suposed to manipulate. @param items the new list of items this decorator is suposed to manipulate.
*/ */
void ElementPrimitiveDecorator::setItems(const QList<CustomElementPart *> &items) { void ElementPrimitiveDecorator::setItems(const QList<CustomElementPart *> &items)
if (CustomElementPart *single_item = singleItem()) { {
if (items.count() == 1 && items.first() == single_item) {
// no actual change
goto end_setItems;
}
// break any connection between the former single selected item (if any) and
// the decorator
single_item -> setDecorator(0);
if (QGraphicsObject *single_object = dynamic_cast<QGraphicsObject *>(single_item)) {
disconnect(single_object, 0, this, 0);
}
}
decorated_items_ = items; decorated_items_ = items;
// when only a single primitive is selected, the decorator behaves specially
// to enable extra features, such as text edition, internal points movements,
// etc.
if (CustomElementPart *single_item = singleItem()) {
single_item -> setDecorator(this);
}
end_setItems:
adjust(); adjust();
show(); show();
if (focusItem() != this) { if (focusItem() != this) {
setFocus(); setFocus();
} }
adjusteHandlerPos();
} }
/** /**
@param items the new list of items this decorator is suposed to manipulate. @param items the new list of items this decorator is suposed to manipulate.
*/ */
void ElementPrimitiveDecorator::setItems(const QList<QGraphicsItem *> &items) { void ElementPrimitiveDecorator::setItems(const QList<QGraphicsItem *> &items)
{
QList<CustomElementPart *> primitives; QList<CustomElementPart *> primitives;
foreach (QGraphicsItem *item, items) { for(QGraphicsItem *item : items)
if (CustomElementPart *part_item = dynamic_cast<CustomElementPart *>(item)) { {
if (CustomElementPart *part_item = dynamic_cast<CustomElementPart *>(item))
{
primitives << part_item; primitives << part_item;
} }
} }
@@ -178,96 +154,31 @@ QList<QGraphicsItem *> ElementPrimitiveDecorator::graphicsItems() const {
Adjust the visual decorator according to the currently assigned items. Adjust the visual decorator according to the currently assigned items.
It is notably called by setItems(). It is notably called by setItems().
*/ */
void ElementPrimitiveDecorator::adjust() { void ElementPrimitiveDecorator::adjust()
{
saveOriginalBoundingRect(); saveOriginalBoundingRect();
modified_bounding_rect_ = original_bounding_rect_; modified_bounding_rect_ = original_bounding_rect_;
adjustEffectiveBoundingRect(); adjustEffectiveBoundingRect();
} }
/**
Handle events generated when the mouse hovers over the decorator.
@param event Object describing the hover event.
*/
void ElementPrimitiveDecorator::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
int p = m_handler.pointIsHoverHandler(event->pos(), getResizingsPoints());
if (p == 0 || p == 7)
setCursor(Qt::SizeFDiagCursor);
else if (p == 2 || p == 5)
setCursor(Qt::SizeBDiagCursor);
else if (p == 1 || p ==6)
setCursor(Qt::SizeVerCursor);
else if (p == 3 || p == 4)
setCursor(Qt::SizeHorCursor);
else if (p == -1 && modified_bounding_rect_.normalized().contains(event->pos()))
setCursor(Qt::SizeAllCursor);
else
setCursor(Qt::ArrowCursor);
}
/** /**
Handle event generated when mouse buttons are pressed. Handle event generated when mouse buttons are pressed.
@param event Object describing the mouse event @param event Object describing the mouse event
*/ */
void ElementPrimitiveDecorator::mousePressEvent(QGraphicsSceneMouseEvent *event) void ElementPrimitiveDecorator::mousePressEvent(QGraphicsSceneMouseEvent *event)
{ {
QPointF pos = event -> pos(); if (internalBoundingRect().contains(event->pos()))
QVector <QPointF> points = getResizingsPoints();
current_operation_square_ = m_handler.pointIsHoverHandler(pos, points);
bool accept = false;
if (current_operation_square_ != QET::NoOperation)
accept = true;
else
{ {
if (internalBoundingRect().contains(pos)) current_operation_square_ = QET::MoveArea;
{
if (CustomElementPart *single_item = singleItem())
{
bool event_accepted = single_item -> singleItemPressEvent(this, event);
if (event_accepted)
{
event -> ignore();
return;
}
}
current_operation_square_ = QET::MoveArea;
accept = true;
}
}
if (accept) first_pos_ = decorated_items_.at(0) -> toItem() -> scenePos();
{ latest_pos_ = event -> scenePos();
if (current_operation_square_ > QET::NoOperation) mouse_offset_ = event -> scenePos() - first_pos_;
first_pos_ = latest_pos_ = mapToScene(points.at(current_operation_square_));
else
{
first_pos_ = decorated_items_.at(0) -> toItem() -> scenePos();
latest_pos_ = event -> scenePos();
mouse_offset_ = event -> scenePos() - first_pos_;
}
startMovement(); startMovement();
event -> accept(); event->accept();
} }
else else
event -> ignore(); event->ignore();
}
/**
Handle events generated when mouse buttons are double clicked.
@param event Object describing the mouse event
*/
void ElementPrimitiveDecorator::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) {
//QGraphicsObject::mouseDoubleClickEvent(event);
if (CustomElementPart *single_item = singleItem()) {
bool event_accepted = single_item -> singleItemDoubleClickEvent(this, event);
if (event_accepted) {
event -> ignore();
return;
}
}
} }
/** /**
@@ -280,70 +191,25 @@ void ElementPrimitiveDecorator::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
QPointF scene_pos = event -> scenePos(); QPointF scene_pos = event -> scenePos();
QPointF movement = scene_pos - latest_pos_; QPointF movement = scene_pos - latest_pos_;
if (current_operation_square_ > QET::NoOperation) { if (current_operation_square_ == QET::MoveArea)
// This is a scaling operation. {
// For convenience purposes, we may need to adjust mouse movements.
QET::ScalingMethod scaling_method = scalingMethod(event);
if (scaling_method > QET::FreeScaling) {
// real, non-rounded movement from the mouse press event
QPointF global_movement = scene_pos - first_pos_;
QPointF rounded_global_movement;
if (scaling_method == QET::SnapScalingPointToGrid) {
// real, rounded movement from the mouse press event
rounded_global_movement = snapConstPointToGrid(global_movement);
}
else {
QRectF new_bounding_rect = original_bounding_rect_;
applyMovementToRect(current_operation_square_, global_movement, new_bounding_rect);
const qreal scale_epsilon = 20.0; // rounds to 0.05
QPointF delta = deltaForRoundScaling(original_bounding_rect_, new_bounding_rect, scale_epsilon);
// real, rounded movement from the mouse press event
rounded_global_movement = global_movement + delta;
}
// rounded position of the current mouse move event
QPointF rounded_scene_pos = first_pos_ + rounded_global_movement;
// when scaling the selection, consider the center of the currently dragged resizing rectangle
QPointF current_position = mapToScene(getResizingsPoints().at(current_operation_square_));
// determine the final, effective movement
movement = rounded_scene_pos - current_position;
}
}
else if (current_operation_square_ == QET::MoveArea) {
// When moving the selection, consider the position of the first selected item // When moving the selection, consider the position of the first selected item
QPointF current_position = scene_pos - mouse_offset_; QPointF current_position = scene_pos - mouse_offset_;
QPointF rounded_current_position = snapConstPointToGrid(current_position); QPointF rounded_current_position = snapConstPointToGrid(current_position);
movement = rounded_current_position - decorated_items_.at(0) -> toItem() -> scenePos(); movement = rounded_current_position - decorated_items_.at(0) -> toItem() -> scenePos();
}
else { QRectF bounding_rect = modified_bounding_rect_;
// Neither a movement nor a scaling operation -- perhaps the underlying item applyMovementToRect(current_operation_square_, movement, modified_bounding_rect_);
// is interested in the mouse event for custom operations? if (modified_bounding_rect_ != bounding_rect) {
if (CustomElementPart *single_item = singleItem()) { adjustEffectiveBoundingRect();
bool event_accepted = single_item -> singleItemMoveEvent(this, event);
if (event_accepted) {
event -> ignore();
return;
}
} }
} latest_pos_ = event -> scenePos();
QRectF bounding_rect = modified_bounding_rect_;
applyMovementToRect(current_operation_square_, movement, modified_bounding_rect_);
if (modified_bounding_rect_ != bounding_rect) {
adjustEffectiveBoundingRect();
}
latest_pos_ = event -> scenePos();
if (current_operation_square_ == QET::MoveArea) {
translateItems(movement); translateItems(movement);
} else {
scaleItems(original_bounding_rect_, modified_bounding_rect_);
} }
} }
/** /**
@@ -352,39 +218,25 @@ void ElementPrimitiveDecorator::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
@param event Object describing the mouse event @param event Object describing the mouse event
@see QGraphicsScene::mouseGrabberItem() @see QGraphicsScene::mouseGrabberItem()
*/ */
void ElementPrimitiveDecorator::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { void ElementPrimitiveDecorator::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event) Q_UNUSED(event)
ElementEditionCommand *command = 0; ElementEditionCommand *command = 0;
if (current_operation_square_ > QET::NoOperation) {
ScalePartsCommand *scale_command = new ScalePartsCommand(); if (current_operation_square_ == QET::MoveArea)
scale_command -> setScaledPrimitives(items()); {
scale_command -> setTransformation(
mapToScene(original_bounding_rect_).boundingRect(),
mapToScene(modified_bounding_rect_).boundingRect()
);
command = scale_command;
} else if (current_operation_square_ == QET::MoveArea) {
QPointF movement = mapToScene(modified_bounding_rect_.topLeft()) - mapToScene(original_bounding_rect_.topLeft()); QPointF movement = mapToScene(modified_bounding_rect_.topLeft()) - mapToScene(original_bounding_rect_.topLeft());
if (!movement.isNull()) { if (!movement.isNull())
{
MovePartsCommand *move_command = new MovePartsCommand(movement, 0, graphicsItems()); MovePartsCommand *move_command = new MovePartsCommand(movement, 0, graphicsItems());
command = move_command; command = move_command;
} }
} else {
if (CustomElementPart *single_item = singleItem()) { if (command) {
bool event_accepted = single_item -> singleItemReleaseEvent(this, event); emit(actionFinished(command));
if (event_accepted) {
event -> ignore();
return;
}
} }
}
if (command) {
emit(actionFinished(command));
}
if (current_operation_square_ != QET::NoOperation) {
adjust(); adjust();
} }
@@ -440,7 +292,8 @@ void ElementPrimitiveDecorator::keyReleaseEvent(QKeyEvent *e) {
/** /**
Initialize an ElementPrimitiveDecorator Initialize an ElementPrimitiveDecorator
*/ */
void ElementPrimitiveDecorator::init() { void ElementPrimitiveDecorator::init()
{
setFlag(QGraphicsItem::ItemIsFocusable, true); setFlag(QGraphicsItem::ItemIsFocusable, true);
grid_step_x_ = grid_step_y_ = 1; grid_step_x_ = grid_step_y_ = 1;
setAcceptHoverEvents(true); setAcceptHoverEvents(true);
@@ -461,6 +314,7 @@ void ElementPrimitiveDecorator::adjustEffectiveBoundingRect() {
prepareGeometryChange(); prepareGeometryChange();
effective_bounding_rect_ = modified_bounding_rect_ | effective_bounding_rect_; effective_bounding_rect_ = modified_bounding_rect_ | effective_bounding_rect_;
update(); update();
adjusteHandlerPos();
} }
/** /**
@@ -592,6 +446,152 @@ QVector<QPointF> ElementPrimitiveDecorator::getResizingsPoints() const
return vector; return vector;
} }
/**
* @brief ElementPrimitiveDecorator::adjusteHandlerPos
*/
void ElementPrimitiveDecorator::adjusteHandlerPos()
{
QVector <QPointF> points_vector = mapToScene(getResizingsPoints());
for (int i = 0 ; i < points_vector.size() ; ++i)
m_handler_vector.at(i)->setPos(points_vector.at(i));
}
/**
* @brief ElementPrimitiveDecorator::handlerMousePressEvent
* @param qghi
* @param event
*/
void ElementPrimitiveDecorator::handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event);
QVector <QPointF> points = getResizingsPoints();
current_operation_square_ = m_handler_vector.indexOf(qghi);
first_pos_ = latest_pos_ = mapToScene(points.at(current_operation_square_));
startMovement();
}
/**
* @brief ElementPrimitiveDecorator::handlerMouseMoveEvent
* @param qghi
* @param event
*/
void ElementPrimitiveDecorator::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
QPointF scene_pos = event -> scenePos();
QPointF movement = scene_pos - latest_pos_;
// For convenience purposes, we may need to adjust mouse movements.
QET::ScalingMethod scaling_method = scalingMethod(event);
if (scaling_method > QET::FreeScaling)
{
// real, non-rounded movement from the mouse press event
QPointF global_movement = scene_pos - first_pos_;
QPointF rounded_global_movement;
if (scaling_method == QET::SnapScalingPointToGrid)
{
// real, rounded movement from the mouse press event
rounded_global_movement = snapConstPointToGrid(global_movement);
}
else
{
QRectF new_bounding_rect = original_bounding_rect_;
applyMovementToRect(current_operation_square_, global_movement, new_bounding_rect);
const qreal scale_epsilon = 20.0; // rounds to 0.05
QPointF delta = deltaForRoundScaling(original_bounding_rect_, new_bounding_rect, scale_epsilon);
// real, rounded movement from the mouse press event
rounded_global_movement = global_movement + delta;
}
// rounded position of the current mouse move event
QPointF rounded_scene_pos = first_pos_ + rounded_global_movement;
// when scaling the selection, consider the center of the currently dragged resizing rectangle
QPointF current_position = mapToScene(getResizingsPoints().at(current_operation_square_));
// determine the final, effective movement
movement = rounded_scene_pos - current_position;
}
QRectF bounding_rect = modified_bounding_rect_;
applyMovementToRect(current_operation_square_, movement, modified_bounding_rect_);
if (modified_bounding_rect_ != bounding_rect) {
adjustEffectiveBoundingRect();
}
latest_pos_ = event -> scenePos();
scaleItems(original_bounding_rect_, modified_bounding_rect_);
}
/**
* @brief ElementPrimitiveDecorator::handlerMouseReleaseEvent
* @param qghi
* @param event
*/
void ElementPrimitiveDecorator::handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
ElementEditionCommand *command = 0;
if (current_operation_square_ > QET::NoOperation)
{
ScalePartsCommand *scale_command = new ScalePartsCommand();
scale_command -> setScaledPrimitives(items());
scale_command -> setTransformation(
mapToScene(original_bounding_rect_).boundingRect(),
mapToScene(modified_bounding_rect_).boundingRect()
);
command = scale_command;
}
if (command) {
emit(actionFinished(command));
}
adjust();
current_operation_square_ = QET::NoOperation;
}
/**
* @brief ElementPrimitiveDecorator::addHandler
* Add handlers for this item
*/
void ElementPrimitiveDecorator::addHandler()
{
if (m_handler_vector.isEmpty() && scene())
{
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapFromScene(getResizingsPoints()));
for(QetGraphicsHandlerItem *handler : m_handler_vector)
{
scene()->addItem(handler);
handler->setColor(Qt::darkGreen);
handler->installSceneEventFilter(this);
handler->setZValue(this->zValue()+1);
}
}
}
/**
* @brief ElementPrimitiveDecorator::removeHandler
* Remove the handlers of this item
*/
void ElementPrimitiveDecorator::removeHandler()
{
if (!m_handler_vector.isEmpty())
{
qDeleteAll(m_handler_vector);
m_handler_vector.clear();
}
}
/** /**
Receive two rects, assuming they share a common corner and current is a \a Receive two rects, assuming they share a common corner and current is a \a
scaled version of \a original. scaled version of \a original.
@@ -661,3 +661,73 @@ QET::ScalingMethod ElementPrimitiveDecorator::scalingMethod(QGraphicsSceneMouseE
} }
return QET::RoundScaleRatios; return QET::RoundScaleRatios;
} }
/**
* @brief ElementPrimitiveDecorator::itemChange
* @param change
* @param value
* @return
*/
QVariant ElementPrimitiveDecorator::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
if (change == ItemSceneHasChanged)
{
if(scene()) //Item is added to scene, we also add handlers
addHandler();
else //Item is removed from scene, we also remove the handlers
removeHandler();
}
else if (change == ItemVisibleHasChanged)
{
bool visible = value.toBool();
for(QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setVisible(visible);
}
else if (change == ItemZValueHasChanged && !m_handler_vector.isEmpty())
{
for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setZValue(this->zValue()+1);
}
return QGraphicsObject::itemChange(change, value);
}
/**
* @brief ElementPrimitiveDecorator::sceneEventFilter
* @param watched
* @param event
* @return
*/
bool ElementPrimitiveDecorator::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
{
//Watched must be an handler
if(watched->type() == QetGraphicsHandlerItem::Type)
{
QetGraphicsHandlerItem *qghi = qgraphicsitem_cast<QetGraphicsHandlerItem *>(watched);
if(m_handler_vector.contains(qghi)) //Handler must be in m_vector_index, then we can start resize
{
m_vector_index = m_handler_vector.indexOf(qghi);
if (m_vector_index != -1)
{
if(event->type() == QEvent::GraphicsSceneMousePress) //Click
{
handlerMousePressEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if(event->type() == QEvent::GraphicsSceneMouseMove) //Move
{
handlerMouseMoveEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseRelease) //Release
{
handlerMouseReleaseEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
}
}
}
return false;
}

View File

@@ -20,11 +20,11 @@
#include <QGraphicsObject> #include <QGraphicsObject>
#include "qet.h" #include "qet.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
class ElementEditionCommand; class ElementEditionCommand;
class ElementScene; class ElementScene;
class CustomElementPart; class CustomElementPart;
class QetGraphicsHandlerItem;
/** /**
This class represents a decorator rendered above selected items so users This class represents a decorator rendered above selected items so users
@@ -42,73 +42,85 @@ class ElementPrimitiveDecorator : public QGraphicsObject
Q_OBJECT Q_OBJECT
public: public:
ElementPrimitiveDecorator(QGraphicsItem * = 0); ElementPrimitiveDecorator(QGraphicsItem * = 0);
virtual ~ElementPrimitiveDecorator(); virtual ~ElementPrimitiveDecorator();
enum { Type = UserType + 2200 }; enum { Type = UserType + 2200 };
// methods // methods
QRectF internalBoundingRect() const; QRectF internalBoundingRect() const;
virtual QRectF boundingRect () const; virtual QRectF boundingRect () const;
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0); virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
virtual int type() const { return Type; } virtual int type() const { return Type; }
void setItems(const QList<QGraphicsItem *> &); void setItems(const QList<QGraphicsItem *> &);
void setItems(const QList<CustomElementPart *> &); void setItems(const QList<CustomElementPart *> &);
QList<CustomElementPart *> items() const; QList<CustomElementPart *> items() const;
QList<QGraphicsItem *> graphicsItems() const; QList<QGraphicsItem *> graphicsItems() const;
public slots: public slots:
void adjust(); void adjust();
signals: signals:
void actionFinished(ElementEditionCommand *); void actionFinished(ElementEditionCommand *);
protected: protected:
void hoverMoveEvent(QGraphicsSceneHoverEvent *); void mousePressEvent(QGraphicsSceneMouseEvent *);
void mousePressEvent(QGraphicsSceneMouseEvent *); void mouseMoveEvent(QGraphicsSceneMouseEvent *);
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *); void mouseReleaseEvent(QGraphicsSceneMouseEvent *);
void mouseMoveEvent(QGraphicsSceneMouseEvent *); void keyPressEvent(QKeyEvent *);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *); void keyReleaseEvent(QKeyEvent *);
void keyPressEvent(QKeyEvent *); QPointF deltaForRoundScaling(const QRectF &, const QRectF &, qreal);
void keyReleaseEvent(QKeyEvent *); QPointF snapConstPointToGrid(const QPointF &) const;
QPointF deltaForRoundScaling(const QRectF &, const QRectF &, qreal); void snapPointToGrid(QPointF &) const;
QPointF snapConstPointToGrid(const QPointF &) const; bool mustSnapToGrid(QGraphicsSceneMouseEvent *);
void snapPointToGrid(QPointF &) const; QET::ScalingMethod scalingMethod(QGraphicsSceneMouseEvent *);
bool mustSnapToGrid(QGraphicsSceneMouseEvent *); virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
QET::ScalingMethod scalingMethod(QGraphicsSceneMouseEvent *); virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
private: private:
void init(); void init();
void saveOriginalBoundingRect(); void saveOriginalBoundingRect();
void adjustEffectiveBoundingRect(); void adjustEffectiveBoundingRect();
void startMovement(); void startMovement();
void applyMovementToRect(int, const QPointF &, QRectF &); void applyMovementToRect(int, const QPointF &, QRectF &);
CustomElementPart *singleItem() const; CustomElementPart *singleItem() const;
void translateItems(const QPointF &); void translateItems(const QPointF &);
void scaleItems(const QRectF &, const QRectF &); void scaleItems(const QRectF &, const QRectF &);
QRectF getSceneBoundingRect(QGraphicsItem *) const; QRectF getSceneBoundingRect(QGraphicsItem *) const;
QVector <QPointF> getResizingsPoints() const; QVector <QPointF> getResizingsPoints() const;
// attributes
private: private:
QList<CustomElementPart *> decorated_items_; void adjusteHandlerPos();
QRectF effective_bounding_rect_; ///< actual, effective bounding rect -- never shrinks void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
QRectF original_bounding_rect_; ///< original bounding rect void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
QRectF modified_bounding_rect_; ///< new bounding rect, after the user moved or resized items void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
/** void addHandler();
Index of the square leading the current operation (resizing, etc.) or -1 if no void removeHandler();
operation is occurring, -2 for a move operation.
*/
int current_operation_square_;
int grid_step_x_; ///< Grid horizontal step
int grid_step_y_; ///< Grid horizontal step QList<CustomElementPart *> decorated_items_;
QPointF first_pos_; ///< First point involved within the current resizing operation QRectF effective_bounding_rect_; ///< actual, effective bounding rect -- never shrinks
QPointF latest_pos_; ///< Latest point involved within the current resizing operation QRectF original_bounding_rect_; ///< original bounding rect
QPointF mouse_offset_; ///< Offset between the mouse position and the point to be snapped to grid when moving selection QRectF modified_bounding_rect_; ///< new bounding rect, after the user moved or resized items
bool moving_by_keys_; ///< Whether we are currently moving our decorated items using the arrow keys
QPointF keys_movement_; ///< Movement applied to our decorated items using the arrow keys /**
QetGraphicsHandlerUtility m_handler; Index of the square leading the current operation (resizing, etc.) or -1 if no
operation is occurring, -2 for a move operation.
*/
int current_operation_square_;
int grid_step_x_; ///< Grid horizontal step
int grid_step_y_; ///< Grid horizontal step
QPointF first_pos_; ///< First point involved within the current resizing operation
QPointF latest_pos_; ///< Latest point involved within the current resizing operation
QPointF mouse_offset_; ///< Offset between the mouse position and the point to be snapped to grid when moving selection
bool moving_by_keys_; ///< Whether we are currently moving our decorated items using the arrow keys
QPointF keys_movement_; ///< Movement applied to our decorated items using the arrow keys
QVector<QetGraphicsHandlerItem *> m_handler_vector;
int m_vector_index = -1;
}; };
#endif #endif

View File

@@ -32,8 +32,9 @@
#include "nameslist.h" #include "nameslist.h"
#include "ui/elementpropertieseditorwidget.h" #include "ui/elementpropertieseditorwidget.h"
#include "eseventinterface.h" #include "eseventinterface.h"
#include <algorithm> #include "QetGraphicsItemModeler/qetgraphicshandleritem.h"
#include <algorithm>
#include <QKeyEvent> #include <QKeyEvent>
/** /**
@@ -524,27 +525,45 @@ QETElementEditor* ElementScene::editor() const {
} }
/** /**
Selectionne une liste de parties * @brief ElementScene::slot_select
@param content liste des parties a selectionner * Select the item in content, every others items in the scene are deselected
*/ * @param content
void ElementScene::slot_select(const ElementContent &content) { */
void ElementScene::slot_select(const ElementContent &content)
{
blockSignals(true); blockSignals(true);
//Befor clear selection, we must to remove the handlers items in @content,
//because if in @content there are a selected item, but also its handlers items,
//When item is deselected, the item delete its handlers items,
//then handlers in content doesn't exist anymore and cause segfault
QList<QGraphicsItem*> items_list;
for (QGraphicsItem *qgi : content)
{
if(qgi->type() != QetGraphicsHandlerItem::Type)
items_list << qgi;
}
clearSelection(); clearSelection();
foreach(QGraphicsItem *qgi, content) qgi -> setSelected(true);
foreach(QGraphicsItem *qgi, items_list)
qgi -> setSelected(true);
blockSignals(false); blockSignals(false);
emit(selectionChanged()); emit(selectionChanged());
} }
/** /**
Selectionne tout * @brief ElementScene::slot_selectAll
*/ * Select all items
*/
void ElementScene::slot_selectAll() { void ElementScene::slot_selectAll() {
slot_select(items()); slot_select(items());
} }
/** /**
Deselectionne tout * @brief ElementScene::slot_deselectAll
*/ * deselect all item
*/
void ElementScene::slot_deselectAll() { void ElementScene::slot_deselectAll() {
slot_select(ElementContent()); slot_select(ElementContent());
} }
@@ -811,7 +830,15 @@ void ElementScene::reset()
clearSelection(); clearSelection();
undoStack().clear(); undoStack().clear();
foreach (QGraphicsItem *qgi, items()) //We don't add handlers, because it's the role of the primitive or decorator to remove it.
QList<QGraphicsItem*> items_list;
for (QGraphicsItem *qgi : items())
{
if(qgi->type() != QetGraphicsHandlerItem::Type)
items_list << qgi;
}
for (QGraphicsItem *qgi : items_list)
{ {
removeItem(qgi); removeItem(qgi);
qgiManager().release(qgi); qgiManager().release(qgi);
@@ -1064,14 +1091,17 @@ void ElementScene::managePrimitivesGroups()
// should we hide the decorator? // should we hide the decorator?
QList<QGraphicsItem *> selected_items = zItems(ElementScene::Selected | ElementScene::IncludeTerminals); QList<QGraphicsItem *> selected_items = zItems(ElementScene::Selected | ElementScene::IncludeTerminals);
if (selected_items.size() == 0) if (selected_items.size() <= 1)
{
m_decorator -> hide(); m_decorator -> hide();
else if (selected_items.size() == 1 && }
selected_items.first()->type() != PartText::Type &&
selected_items.first()->type() != PartTextField::Type)
m_decorator->hide();
else else
{ {
for(QGraphicsItem *qgi : selected_items)
{
//We recall set selected, then every primitive will remove there handler because there are several item selected
qgi->setSelected(true);
}
m_decorator -> setZValue(1000000); m_decorator -> setZValue(1000000);
m_decorator -> setPos(0, 0); m_decorator -> setPos(0, 0);
m_decorator -> setItems(selected_items); m_decorator -> setItems(selected_items);

View File

@@ -51,7 +51,7 @@ class ElementScene : public QGraphicsScene
NonSelected = 16, NonSelected = 16,
SelectedOrNot = 24 SelectedOrNot = 24
}; };
Q_DECLARE_FLAGS(ItemOptions, ItemOption) Q_DECLARE_FLAGS(ItemOptions, ItemOption)
// constructors, destructor // constructors, destructor
public: public:
@@ -82,7 +82,7 @@ class ElementScene : public QGraphicsScene
QETElementEditor *m_element_editor = nullptr; QETElementEditor *m_element_editor = nullptr;
/// Variables to manage the paste area on the scene /// Variables to manage the paste area on the scene
QGraphicsRectItem *m_paste_area = nullptr; QGraphicsRectItem *m_paste_area;
QRectF m_defined_paste_area; QRectF m_defined_paste_area;
/// Variables to handle copy/paste with offset /// Variables to handle copy/paste with offset
@@ -168,15 +168,15 @@ class ElementScene : public QGraphicsScene
void stackAction(ElementEditionCommand *); void stackAction(ElementEditionCommand *);
signals: signals:
/// Signal emitted after one or several parts were added /// Signal emitted after one or several parts were added
void partsAdded(); void partsAdded();
/// Signal emitted after one or several parts were removed /// Signal emitted after one or several parts were removed
void partsRemoved(); void partsRemoved();
/// Signal emitted when the zValue of one or several parts change /// Signal emitted when the zValue of one or several parts change
void partsZValueChanged(); void partsZValueChanged();
/// Signal emitted when users have defined the copy/paste area /// Signal emitted when users have defined the copy/paste area
void pasteAreaDefined(const QRectF &); void pasteAreaDefined(const QRectF &);
/// Signal emitted when need zoomFit /// Signal emitted when need zoomFit
void needZoomFit(); void needZoomFit();
}; };

View File

@@ -118,6 +118,7 @@ void AbstractPartEllipse::setRect(const QRectF &rect)
if (rect == m_rect) return; if (rect == m_rect) return;
prepareGeometryChange(); prepareGeometryChange();
m_rect = rect; m_rect = rect;
emit rectChanged(); emit rectChanged();
} }

View File

@@ -20,6 +20,8 @@
#include "customelementgraphicpart.h" #include "customelementgraphicpart.h"
class QetGraphicsHandlerItem;
/** /**
* @brief The AbstractPartEllipse class * @brief The AbstractPartEllipse class
* This is the base class for all ellipse based item like ellipse, circle, arc. * This is the base class for all ellipse based item like ellipse, circle, arc.
@@ -61,20 +63,21 @@ class AbstractPartEllipse : public CustomElementGraphicPart
virtual QPointF sceneTopLeft() const; virtual QPointF sceneTopLeft() const;
QRectF rect() const; QRectF rect() const;
void setRect (const QRectF &rect); virtual void setRect (const QRectF &rect);
virtual bool isUseless() const; virtual bool isUseless() const;
int startAngle() const {return m_start_angle;} int startAngle() const {return m_start_angle;}
void setStartAngle (const int &start_angle); virtual void setStartAngle (const int &start_angle);
int spanAngle () const {return m_span_angle;} int spanAngle () const {return m_span_angle;}
void setSpanAngle (const int &span_angle); virtual void setSpanAngle (const int &span_angle);
protected: protected:
QList<QPointF> saved_points_; QList<QPointF> saved_points_;
QRectF m_rect; QRectF m_rect;
qreal m_start_angle; qreal m_start_angle;
qreal m_span_angle; qreal m_span_angle;
QVector<QetGraphicsHandlerItem *> m_handler_vector;
}; };
#endif // ABSTRACTPARTELLIPSE_H #endif // ABSTRACTPARTELLIPSE_H

View File

@@ -118,7 +118,7 @@ class CustomElementGraphicPart : public QGraphicsObject, public CustomElementPar
Filling _filling ; Filling _filling ;
Color _color; Color _color;
bool _antialiased; bool _antialiased;
QPointF m_origin_pos, m_mouse_to_origin_pos; QPointF m_origin_pos;
}; };
typedef CustomElementGraphicPart CEGP; typedef CustomElementGraphicPart CEGP;

View File

@@ -49,16 +49,6 @@ QGraphicsItem *CustomElementPart::toItem() {
return(dynamic_cast<QGraphicsItem *>(this)); return(dynamic_cast<QGraphicsItem *>(this));
} }
/**
This method is called by the decorator when it manages only a single
primitive. This brings the possibility to implement custom behaviour, such
as text edition, points edition or specific resizing.
The default implementation does nothing.
*/
void CustomElementPart::setDecorator(ElementPrimitiveDecorator *decorator) {
Q_UNUSED(decorator)
}
/** /**
This method is called by the decorator when it needs to determine the best This method is called by the decorator when it needs to determine the best
way to interactively scale a primitive. It is typically called when only a way to interactively scale a primitive. It is typically called when only a
@@ -70,46 +60,6 @@ QET::ScalingMethod CustomElementPart::preferredScalingMethod() const {
return(QET::SnapScalingPointToGrid); return(QET::SnapScalingPointToGrid);
} }
/**
This method is called by the decorator when it manages only a single
primitive and it received a mouse press event.
The implementation should return true if the primitive accepts the event, false otherwise.
The default implementation returns false.
*/
bool CustomElementPart::singleItemPressEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *) {
return(false);
}
/**
This method is called by the decorator when it manages only a single
primitive and it received a mouse move event.
The implementation should return true if the primitive accepts the event, false otherwise.
The default implementation returns false.
*/
bool CustomElementPart::singleItemMoveEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *) {
return(false);
}
/**
This method is called by the decorator when it manages only a single
primitive and it received a mouse release event.
The implementation should return true if the primitive accepts the event, false otherwise.
The default implementation returns false.
*/
bool CustomElementPart::singleItemReleaseEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *) {
return(false);
}
/**
This method is called by the decorator when it manages only a single
primitive and it received a mouse double click event.
The implementation should return true if the primitive accepts the event, false otherwise.
The default implementation returns false.
*/
bool CustomElementPart::singleItemDoubleClickEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *) {
return(false);
}
/** /**
Helper method to map points in CustomElementPart::handleUserTransformation() Helper method to map points in CustomElementPart::handleUserTransformation()
@param initial_selection_rect Selection rectangle when the movement started, in scene coordinates @param initial_selection_rect Selection rectangle when the movement started, in scene coordinates

View File

@@ -103,12 +103,7 @@ class CustomElementPart {
virtual QGraphicsItem *toItem(); virtual QGraphicsItem *toItem();
virtual void setDecorator(ElementPrimitiveDecorator *);
virtual QET::ScalingMethod preferredScalingMethod() const; virtual QET::ScalingMethod preferredScalingMethod() const;
virtual bool singleItemPressEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemMoveEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemReleaseEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemDoubleClickEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
protected: protected:
QList<QPointF> mapPoints(const QRectF &, const QRectF &, const QList<QPointF> &); QList<QPointF> mapPoints(const QRectF &, const QRectF &, const QList<QPointF> &);

View File

@@ -18,6 +18,8 @@
#include "partarc.h" #include "partarc.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h" #include "QPropertyUndoCommand/qpropertyundocommand.h"
#include "elementscene.h" #include "elementscene.h"
#include "QetGraphicsItemModeler/qetgraphicshandleritem.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
/** /**
@@ -37,8 +39,10 @@ PartArc::PartArc(QETElementEditor *editor, QGraphicsItem *parent) :
* @brief PartArc::~PartArc * @brief PartArc::~PartArc
* Destructor * Destructor
*/ */
PartArc::~PartArc() { PartArc::~PartArc()
{
if(m_undo_command) delete m_undo_command; if(m_undo_command) delete m_undo_command;
removeHandler();
} }
/** /**
@@ -82,15 +86,7 @@ void PartArc::paint(QPainter *painter, const QStyleOptionGraphicsItem *options,
drawShadowShape(painter); drawShadowShape(painter);
if (isSelected()) if (isSelected())
{
drawCross(m_rect.center(), painter); drawCross(m_rect.center(), painter);
if (scene()->selectedItems().size() == 1) {
if (m_resize_mode == 3)
m_handler.drawHandler(painter, m_handler.pointsForArc(m_rect, m_start_angle /16, m_span_angle /16));
else
m_handler.drawHandler(painter, m_handler.pointsForRect(m_rect));
}
}
} }
/** /**
@@ -129,16 +125,6 @@ void PartArc::fromXml(const QDomElement &qde) {
m_span_angle = qde.attribute("angle", "-1440").toDouble() * 16; m_span_angle = qde.attribute("angle", "-1440").toDouble() * 16;
} }
QRectF PartArc::boundingRect() const
{
QRectF r = AbstractPartEllipse::boundingRect();
foreach(QRectF rect, m_handler.handlerRect(m_handler.pointsForRect(m_rect)))
r |= rect;
return r;
}
/** /**
* @brief PartArc::shape * @brief PartArc::shape
* @return the shape of this item * @return the shape of this item
@@ -153,10 +139,6 @@ QPainterPath PartArc::shape() const
pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight()); pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight());
shape = pps.createStroke(shape); shape = pps.createStroke(shape);
if (isSelected())
foreach(QRectF rect, m_handler.handlerRect(m_handler.pointsForRect(m_rect)))
shape.addRect(rect);
return shape; return shape;
} }
@@ -172,135 +154,6 @@ QPainterPath PartArc::shadowShape() const
return (pps.createStroke(shape)); return (pps.createStroke(shape));
} }
void PartArc::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
if (!isSelected())
{
CustomElementGraphicPart::hoverMoveEvent(event);
return;
}
if (m_resize_mode == 1 || m_resize_mode == 2) {
int handler = m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForRect(m_rect));
if (handler >= 0)
{
if (handler == 0 || handler == 2 || handler == 5 || handler == 7)
setCursor(Qt::SizeAllCursor);
else if (handler == 1 || handler == 6)
setCursor(Qt::SizeVerCursor);
else if (handler == 3 || handler == 4)
setCursor(Qt::SizeHorCursor);
return;
}
}
else if (m_resize_mode == 3) {
if (m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForArc(m_rect, m_start_angle /16, m_span_angle /16)) >= 0) {
setCursor(Qt::SizeAllCursor);
return;
}
}
CustomElementGraphicPart::hoverMoveEvent(event);
}
/**
* @brief PartArc::mousePressEvent
* Handle mouse press event
* @param event
*/
void PartArc::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
setCursor(Qt::ClosedHandCursor);
if (isSelected())
{
//resize rect
if (m_resize_mode == 1 || m_resize_mode == 2) {
m_handler_index = m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForRect(m_rect));
if(m_handler_index >= 0 && m_handler_index <= 7) //User click on an handler
{
m_undo_command = new QPropertyUndoCommand(this, "rect", QVariant(m_rect));
m_undo_command->setText(tr("Modifier un arc"));
m_undo_command->enableAnimation();
return;
}
}
//resize angle
if (m_resize_mode == 3) {
m_handler_index = m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForArc(m_rect, m_start_angle /16, m_span_angle /16));
if (m_handler_index == 0) {
m_span_point = m_handler.pointsForArc(m_rect, m_start_angle /16, m_span_angle /16).at(1);
m_undo_command = new QPropertyUndoCommand(this, "startAngle", QVariant(m_start_angle));
m_undo_command->setText(tr("Modifier un arc"));
m_undo_command->enableAnimation();
m_undo_command2 = new QPropertyUndoCommand(this, "spanAngle", QVariant(m_span_angle), m_undo_command);
m_undo_command2->setText(tr("Modifier un arc"));
m_undo_command2->enableAnimation();
return;
}
else if (m_handler_index == 1) {
m_undo_command = new QPropertyUndoCommand(this, "spanAngle", QVariant(m_span_angle));
m_undo_command->setText(tr("Modifier un arc"));
m_undo_command->enableAnimation();
return;
}
}
}
}
CustomElementGraphicPart::mousePressEvent(event);
}
/**
* @brief PartArc::mouseMoveEvent
* Handle mouse move event
* @param event
*/
void PartArc::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (m_resize_mode == 1 || m_resize_mode == 2) {
if (m_handler_index >= 0 && m_handler_index <= 7) {
QPointF pos_ = event->modifiers() == Qt::ControlModifier ? event->pos() : mapFromScene(elementScene()->snapToGrid(event->scenePos()));
prepareGeometryChange();
if (m_resize_mode == 1)
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
else
setRect(m_handler.mirrorRectForPosAtIndex(m_rect, pos_, m_handler_index));
return;
}
}
else if (m_resize_mode == 3) {
if (m_handler_index == 0 || m_handler_index == 1) {
QLineF line(m_rect.center(), event->pos());
prepareGeometryChange();
if (m_handler_index == 0) {
setStartAngle(line.angle()*16);
setSpanAngle(line.angleTo(QLineF(m_rect.center(), m_span_point))*16);
}
else if (m_handler_index == 1) {
QLineF line2(m_rect.center(), m_handler.pointsForArc(m_rect, m_start_angle/16, m_span_angle/16).at(0));
setSpanAngle (line2.angleTo(line)*16);
}
return;
}
}
CustomElementGraphicPart::mouseMoveEvent(event);
}
/** /**
* @brief PartArc::mouseReleaseEvent * @brief PartArc::mouseReleaseEvent
* Handle mouse release event * Handle mouse release event
@@ -308,59 +161,317 @@ void PartArc::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/ */
void PartArc::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void PartArc::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
if (event->button() == Qt::LeftButton) { if (event->button() == Qt::LeftButton && event->buttonDownPos(Qt::LeftButton) == event->pos())
setCursor(Qt::OpenHandCursor); switchResizeMode();
if (event->buttonDownPos(Qt::LeftButton) == event->pos())
switchResizeMode();
}
if (m_resize_mode == 1 || m_resize_mode == 2) { CustomElementGraphicPart::mouseReleaseEvent(event);
if (m_handler_index >= 0 && m_handler_index <= 7) { }
if (!m_rect.isValid())
m_rect = m_rect.normalized();
m_undo_command->setNewValue(QVariant(m_rect)); /**
elementScene()->undoStack().push(m_undo_command); * @brief PartArc::itemChange
m_undo_command = nullptr; * @param change
m_handler_index = -1; * @param value
return; * @return
*/
QVariant PartArc::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
if (change == ItemSelectedHasChanged && scene())
{
if (value.toBool() == true)
{
//When item is selected, he must to be up to date whene the selection in the scene change, for display or not the handler,
//according to the number of selected items.
connect(scene(), &QGraphicsScene::selectionChanged, this, &PartArc::sceneSelectionChanged);
if (scene()->selectedItems().size() == 1)
addHandler();
}
else
{
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartArc::sceneSelectionChanged);
removeHandler();
} }
} }
else if (m_resize_mode == 3) { else if (change == ItemPositionHasChanged)
if (m_handler_index == 0) { {
adjusteHandlerPos();
}
else if (change == ItemSceneChange)
{
if(scene())
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartArc::sceneSelectionChanged);
setSelected(false); //This is item removed from scene, then we deselect this, and so, the handlers is also removed.
}
return QGraphicsItem::itemChange(change, value);
}
/**
* @brief PartArc::sceneEventFilter
* @param watched
* @param event
* @return
*/
bool PartArc::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
{
//Watched must be an handler
if(watched->type() == QetGraphicsHandlerItem::Type)
{
QetGraphicsHandlerItem *qghi = qgraphicsitem_cast<QetGraphicsHandlerItem *>(watched);
if(m_handler_vector.contains(qghi)) //Handler must be in m_vector_index, then we can start resize
{
m_vector_index = m_handler_vector.indexOf(qghi);
if (m_vector_index != -1)
{
if(event->type() == QEvent::GraphicsSceneMousePress) //Click
{
handlerMousePressEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if(event->type() == QEvent::GraphicsSceneMouseMove) //Move
{
handlerMouseMoveEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseRelease) //Release
{
handlerMouseReleaseEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
}
}
}
return false;
}
/**
* @brief PartArc::switchResizeMode
*/
void PartArc::switchResizeMode()
{
if (m_resize_mode == 1)
{
m_resize_mode = 2;
for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::darkGreen);
}
else if (m_resize_mode == 2)
{
m_resize_mode = 3;
//From rect mode to angle mode, then numbers of handlers change
removeHandler();
addHandler();
for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::magenta);
}
else
{
m_resize_mode = 1;
//From angle mode to rect mode, then numbers of handlers change
removeHandler();
addHandler();
for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::blue);
}
}
/**
* @brief PartArc::adjusteHandlerPos
*/
void PartArc::adjusteHandlerPos()
{
if (m_handler_vector.isEmpty())
return;
QVector <QPointF> points_vector;
if(m_resize_mode == 3)
points_vector = QetGraphicsHandlerUtility::pointsForArc(m_rect, m_start_angle/16, m_span_angle/16);
else
points_vector = QetGraphicsHandlerUtility::pointsForRect(m_rect);
if (m_handler_vector.size() == points_vector.size())
{
points_vector = mapToScene(points_vector);
for (int i = 0 ; i < points_vector.size() ; ++i)
m_handler_vector.at(i)->setPos(points_vector.at(i));
}
}
/**
* @brief PartArc::handlerMousePressEvent
* @param qghi
* @param event
*/
void PartArc::handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
if (m_resize_mode == 3) //Resize angle
{
if (m_vector_index == 0)
{
m_span_point = QetGraphicsHandlerUtility::pointsForArc(m_rect, m_start_angle /16, m_span_angle /16).at(1);
m_undo_command = new QPropertyUndoCommand(this, "startAngle", QVariant(m_start_angle));
m_undo_command->setText(tr("Modifier un arc"));
m_undo_command->enableAnimation();
m_undo_command2 = new QPropertyUndoCommand(this, "spanAngle", QVariant(m_span_angle), m_undo_command);
m_undo_command2->setText(tr("Modifier un arc"));
m_undo_command2->enableAnimation();
}
else if (m_vector_index == 1)
{
m_undo_command = new QPropertyUndoCommand(this, "spanAngle", QVariant(m_span_angle));
m_undo_command->setText(tr("Modifier un arc"));
m_undo_command->enableAnimation();
}
}
else //resize rect
{
m_undo_command = new QPropertyUndoCommand(this, "rect", QVariant(m_rect));
m_undo_command->setText(tr("Modifier un arc"));
m_undo_command->enableAnimation();
}
}
/**
* @brief PartArc::handlerMouseMoveEvent
* @param qghi
* @param event
*/
void PartArc::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
QPointF new_pos = event->scenePos();
if (event->modifiers() != Qt::ControlModifier)
new_pos = elementScene()->snapToGrid(event->scenePos());
new_pos = mapFromScene(new_pos);
if (m_resize_mode == 1)
setRect(QetGraphicsHandlerUtility::rectForPosAtIndex(m_rect, new_pos, m_vector_index));
else if (m_resize_mode == 2)
setRect(QetGraphicsHandlerUtility::mirrorRectForPosAtIndex(m_rect, new_pos, m_vector_index));
else
{
QLineF line(m_rect.center(), mapFromItem(qghi, event->pos()));
prepareGeometryChange();
if (m_vector_index == 0) {
setStartAngle(line.angle()*16);
setSpanAngle(line.angleTo(QLineF(m_rect.center(), m_span_point))*16);
}
else if (m_vector_index == 1) {
QLineF line2(m_rect.center(), QetGraphicsHandlerUtility::pointsForArc(m_rect, m_start_angle/16, m_span_angle/16).at(0));
setSpanAngle (line2.angleTo(line)*16);
}
}
}
/**
* @brief PartArc::handlerMouseReleaseEvent
* @param qghi
* @param event
*/
void PartArc::handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
if (m_resize_mode == 3)
{
if (m_vector_index == 0)
{
m_undo_command->setNewValue(QVariant(m_start_angle)); m_undo_command->setNewValue(QVariant(m_start_angle));
m_undo_command2->setNewValue(QVariant(m_span_angle)); m_undo_command2->setNewValue(QVariant(m_span_angle));
elementScene()->undoStack().push(m_undo_command); elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr; m_undo_command = nullptr;
m_undo_command2 = nullptr; m_undo_command2 = nullptr;
m_handler_index = -1; m_vector_index = -1;
return;
} }
else if (m_handler_index == 1) { else if (m_vector_index == 1)
{
m_undo_command->setNewValue(QVariant(m_span_angle)); m_undo_command->setNewValue(QVariant(m_span_angle));
elementScene()->undoStack().push(m_undo_command); elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr; m_undo_command = nullptr;
m_handler_index = -1; m_vector_index = -1;
return;
} }
} }
else
{
if (!m_rect.isValid())
m_rect = m_rect.normalized();
CustomElementGraphicPart::mouseReleaseEvent(event); m_undo_command->setNewValue(QVariant(m_rect));
elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr;
m_vector_index = -1;
}
} }
void PartArc::switchResizeMode() /**
* @brief PartArc::sceneSelectionChanged
* When the scene selection change, if there are several primitive selected, we remove the handler of this item
*/
void PartArc::sceneSelectionChanged()
{ {
if (m_resize_mode == 1) { if (this->isSelected() && scene()->selectedItems().size() == 1)
m_resize_mode = 2; addHandler();
m_handler.setOuterColor(Qt::darkGreen); else
} removeHandler();
else if (m_resize_mode == 2 ) { }
m_resize_mode = 3;
m_handler.setOuterColor(Qt::magenta); /**
} * @brief PartArc::addHandler
else { * Add handlers for this item
m_resize_mode = 1; */
m_handler.setOuterColor(Qt::blue); void PartArc::addHandler()
} {
update(); if (m_handler_vector.isEmpty() && scene())
{
if(m_resize_mode == 3)
{
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(QetGraphicsHandlerUtility::pointsForArc(m_rect, m_start_angle/16, m_span_angle/16)));
}
else
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(QetGraphicsHandlerUtility::pointsForRect(m_rect)));
for(QetGraphicsHandlerItem *handler : m_handler_vector)
{
QColor color = Qt::blue;
if (m_resize_mode == 2)
color = Qt::darkGreen;
else if (m_resize_mode == 3)
color = Qt::magenta;
handler->setColor(color);
scene()->addItem(handler);
handler->installSceneEventFilter(this);
handler->setZValue(this->zValue()+1);
}
}
}
/**
* @brief PartArc::removeHandler
* Remove the handlers of this item
*/
void PartArc::removeHandler()
{
if (!m_handler_vector.isEmpty())
{
qDeleteAll(m_handler_vector);
m_handler_vector.clear();
}
} }

View File

@@ -19,9 +19,9 @@
#define PART_ARC_H #define PART_ARC_H
#include "abstractpartellipse.h" #include "abstractpartellipse.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
class QPropertyUndoCommand; class QPropertyUndoCommand;
class QetGraphicsHandlerItem;
/** /**
* @brief The PartArc class * @brief The PartArc class
@@ -54,25 +54,34 @@ class PartArc : public AbstractPartEllipse
virtual const QDomElement toXml (QDomDocument &) const; virtual const QDomElement toXml (QDomDocument &) const;
virtual void fromXml (const QDomElement &); virtual void fromXml (const QDomElement &);
virtual QRectF boundingRect() const;
virtual QPainterPath shape() const; virtual QPainterPath shape() const;
virtual QPainterPath shadowShape() const; virtual QPainterPath shadowShape() const;
virtual void setRect(const QRectF &rect) {AbstractPartEllipse::setRect(rect); adjusteHandlerPos();}
virtual void setStartAngle(const int &start_angle) {AbstractPartEllipse::setStartAngle(start_angle); adjusteHandlerPos();}
virtual void setSpanAngle(const int &span_angle) {AbstractPartEllipse::setSpanAngle(span_angle); adjusteHandlerPos();}
protected: protected:
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
private: private:
void switchResizeMode(); void switchResizeMode();
void adjusteHandlerPos();
void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void sceneSelectionChanged ();
void addHandler();
void removeHandler();
private: private:
QetGraphicsHandlerUtility m_handler = 10;
int m_handler_index = -1;
QPropertyUndoCommand *m_undo_command = nullptr; QPropertyUndoCommand *m_undo_command = nullptr;
QPropertyUndoCommand *m_undo_command2 = nullptr; QPropertyUndoCommand *m_undo_command2 = nullptr;
int m_resize_mode = 1; int m_resize_mode = 1,
m_vector_index = -1;
QPointF m_span_point; QPointF m_span_point;
QVector<QetGraphicsHandlerItem *> m_handler_vector;
}; };
#endif #endif

View File

@@ -18,6 +18,8 @@
#include "partellipse.h" #include "partellipse.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h" #include "QPropertyUndoCommand/qpropertyundocommand.h"
#include "elementscene.h" #include "elementscene.h"
#include "QetGraphicsItemModeler/qetgraphicshandleritem.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
/** /**
* @brief PartEllipse::PartEllipse * @brief PartEllipse::PartEllipse
@@ -27,8 +29,6 @@
*/ */
PartEllipse::PartEllipse(QETElementEditor *editor, QGraphicsItem *parent) : PartEllipse::PartEllipse(QETElementEditor *editor, QGraphicsItem *parent) :
AbstractPartEllipse(editor, parent), AbstractPartEllipse(editor, parent),
m_handler(10),
m_handler_index(-1),
m_undo_command(nullptr) m_undo_command(nullptr)
{} {}
@@ -36,8 +36,10 @@ PartEllipse::PartEllipse(QETElementEditor *editor, QGraphicsItem *parent) :
* @brief PartEllipse::~PartEllipse * @brief PartEllipse::~PartEllipse
* Destructor * Destructor
*/ */
PartEllipse::~PartEllipse() { PartEllipse::~PartEllipse()
{
if(m_undo_command) delete m_undo_command; if(m_undo_command) delete m_undo_command;
removeHandler();
} }
/** /**
@@ -65,11 +67,7 @@ void PartEllipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
drawShadowShape(painter); drawShadowShape(painter);
if (isSelected()) if (isSelected())
{
drawCross(m_rect.center(), painter); drawCross(m_rect.center(), painter);
if (scene()->selectedItems().size() == 1)
m_handler.drawHandler(painter, m_handler.pointsForRect(m_rect));
}
} }
/** /**
@@ -125,16 +123,6 @@ void PartEllipse::fromXml(const QDomElement &qde)
QSizeF(width, height)); QSizeF(width, height));
} }
QRectF PartEllipse::boundingRect() const
{
QRectF r = AbstractPartEllipse::boundingRect();
foreach(QRectF rect, m_handler.handlerRect(m_handler.pointsForRect(m_rect)))
r |= rect;
return r;
}
/** /**
* @brief PartEllipse::shape * @brief PartEllipse::shape
* @return the shape of this item * @return the shape of this item
@@ -148,10 +136,6 @@ QPainterPath PartEllipse::shape() const
pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight()); pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight());
shape = pps.createStroke(shape); shape = pps.createStroke(shape);
if (isSelected())
foreach(QRectF rect, m_handler.handlerRect(m_handler.pointsForRect(m_rect)))
shape.addRect(rect);
return shape; return shape;
} }
@@ -166,77 +150,6 @@ QPainterPath PartEllipse::shadowShape() const
return (pps.createStroke(shape)); return (pps.createStroke(shape));
} }
void PartEllipse::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
if (!isSelected())
{
CustomElementGraphicPart::hoverMoveEvent(event);
return;
}
int handler = m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForRect(m_rect));
if (handler >= 0)
{
if (handler == 0 || handler == 2 || handler == 5 || handler == 7)
setCursor(Qt::SizeAllCursor);
else if (handler == 1 || handler == 6)
setCursor(Qt::SizeVerCursor);
else if (handler == 3 || handler == 4)
setCursor(Qt::SizeHorCursor);
}
else
CustomElementGraphicPart::hoverMoveEvent(event);
}
/**
* @brief PartEllipse::mousePressEvent
* Handle mouse press event
* @param event
*/
void PartEllipse::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
setCursor(Qt::ClosedHandCursor);
if (isSelected())
{
m_handler_index = m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForRect(m_rect));
if(m_handler_index >= 0 && m_handler_index <= 7) //User click on an handler
{
m_undo_command = new QPropertyUndoCommand(this, "rect", QVariant(m_rect));
m_undo_command->setText(tr("Modifier une ellipse"));
m_undo_command->enableAnimation();
return;
}
}
}
CustomElementGraphicPart::mousePressEvent(event);
}
/**
* @brief PartEllipse::mouseMoveEvent
* Handle mouse move event
* @param event
*/
void PartEllipse::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if(m_handler_index >= 0 && m_handler_index <= 7)
{
QPointF pos_ = event->modifiers() == Qt::ControlModifier ? event->pos() : mapFromScene(elementScene()->snapToGrid(event->scenePos()));
prepareGeometryChange();
if (m_resize_mode == 1)
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
else
setRect(m_handler.mirrorRectForPosAtIndex(m_rect, pos_, m_handler_index));
}
else
CustomElementGraphicPart::mouseMoveEvent(event);
}
/** /**
* @brief PartEllipse::mouseReleaseEvent * @brief PartEllipse::mouseReleaseEvent
* Handle mouse release event * Handle mouse release event
@@ -244,35 +157,225 @@ void PartEllipse::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/ */
void PartEllipse::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void PartEllipse::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
if (event->button() == Qt::LeftButton) { if (event->button() == Qt::LeftButton && event->buttonDownPos(Qt::LeftButton) == event->pos())
setCursor(Qt::OpenHandCursor); switchResizeMode();
if (event->buttonDownPos(Qt::LeftButton) == event->pos())
switchResizeMode();
}
if (m_handler_index >= 0 && m_handler_index <= 7) CustomElementGraphicPart::mouseReleaseEvent(event);
}
/**
* @brief PartEllipse::itemChange
* @param change
* @param value
* @return
*/
QVariant PartEllipse::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
if (change == ItemSelectedHasChanged && scene())
{ {
if (!m_rect.isValid()) if (value.toBool() == true)
m_rect = m_rect.normalized(); {
//When item is selected, he must to be up to date whene the selection in the scene change, for display or not the handler,
//according to the number of selected items.
connect(scene(), &QGraphicsScene::selectionChanged, this, &PartEllipse::sceneSelectionChanged);
m_undo_command->setNewValue(QVariant(m_rect)); if (scene()->selectedItems().size() == 1)
elementScene()->undoStack().push(m_undo_command); addHandler();
m_undo_command = nullptr; }
m_handler_index = -1; else
{
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartEllipse::sceneSelectionChanged);
removeHandler();
}
} }
else else if (change == ItemPositionHasChanged)
CustomElementGraphicPart::mouseReleaseEvent(event); {
adjusteHandlerPos();
}
else if (change == ItemSceneChange)
{
if(scene())
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartEllipse::sceneSelectionChanged);
setSelected(false); //This item is removed from scene, then we deselect this, and so, the handlers is also removed.
}
return QGraphicsItem::itemChange(change, value);
}
/**
* @brief PartEllipse::sceneEventFilter
* @param watched
* @param event
* @return
*/
bool PartEllipse::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
{
//Watched must be an handler
if(watched->type() == QetGraphicsHandlerItem::Type)
{
QetGraphicsHandlerItem *qghi = qgraphicsitem_cast<QetGraphicsHandlerItem *>(watched);
if(m_handler_vector.contains(qghi)) //Handler must be in m_vector_index, then we can start resize
{
m_vector_index = m_handler_vector.indexOf(qghi);
if (m_vector_index != -1)
{
if(event->type() == QEvent::GraphicsSceneMousePress) //Click
{
handlerMousePressEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if(event->type() == QEvent::GraphicsSceneMouseMove) //Move
{
handlerMouseMoveEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseRelease) //Release
{
handlerMouseReleaseEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
}
}
}
return false;
} }
void PartEllipse::switchResizeMode() void PartEllipse::switchResizeMode()
{ {
if (m_resize_mode == 1) { if (m_resize_mode == 1)
{
m_resize_mode = 2; m_resize_mode = 2;
m_handler.setOuterColor(Qt::darkGreen); for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::darkGreen);
} }
else { else
{
m_resize_mode = 1; m_resize_mode = 1;
m_handler.setOuterColor(Qt::blue); for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::blue);
}
}
/**
* @brief PartEllipse::adjusteHandlerPos
*/
void PartEllipse::adjusteHandlerPos()
{
if (m_handler_vector.isEmpty())
return;
QVector <QPointF> points_vector = QetGraphicsHandlerUtility::pointsForRect(m_rect);
if (m_handler_vector.size() == points_vector.size())
{
points_vector = mapToScene(points_vector);
for (int i = 0 ; i < points_vector.size() ; ++i)
m_handler_vector.at(i)->setPos(points_vector.at(i));
}
}
/**
* @brief PartEllipse::handlerMousePressEvent
* @param qghi
* @param event
*/
void PartEllipse::handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
m_undo_command = new QPropertyUndoCommand(this, "rect", QVariant(m_rect));
m_undo_command->setText(tr("Modifier un rectangle"));
m_undo_command->enableAnimation();
return;
}
/**
* @brief PartEllipse::handlerMouseMoveEvent
* @param qghi
* @param event
*/
void PartEllipse::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
QPointF new_pos = event->scenePos();
if (event->modifiers() != Qt::ControlModifier)
new_pos = elementScene()->snapToGrid(event->scenePos());
new_pos = mapFromScene(new_pos);
if (m_resize_mode == 1)
setRect(QetGraphicsHandlerUtility::rectForPosAtIndex(m_rect, new_pos, m_vector_index));
else
setRect(QetGraphicsHandlerUtility::mirrorRectForPosAtIndex(m_rect, new_pos, m_vector_index));
adjusteHandlerPos();
}
/**
* @brief PartEllipse::handlerMouseReleaseEvent
* @param qghi
* @param event
*/
void PartEllipse::handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
m_undo_command->setNewValue(QVariant(m_rect));
elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr;
m_vector_index = -1;
}
/**
* @brief PartEllipse::sceneSelectionChanged
* When the scene selection change, if there are several primitive selected, we remove the handler of this item
*/
void PartEllipse::sceneSelectionChanged()
{
if (this->isSelected() && scene()->selectedItems().size() == 1)
addHandler();
else
removeHandler();
}
/**
* @brief PartEllipse::addHandler
* Add handlers for this item
*/
void PartEllipse::addHandler()
{
if (m_handler_vector.isEmpty() && scene())
{
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(QetGraphicsHandlerUtility::pointsForRect(m_rect)));
for(QetGraphicsHandlerItem *handler : m_handler_vector)
{
QColor color = Qt::blue;
if (m_resize_mode == 2)
color = Qt::darkGreen;
handler->setColor(color);
scene()->addItem(handler);
handler->installSceneEventFilter(this);
handler->setZValue(this->zValue()+1);
}
}
}
/**
* @brief PartEllipse::removeHandler
* Remove the handlers of this item
*/
void PartEllipse::removeHandler()
{
if (!m_handler_vector.isEmpty())
{
qDeleteAll(m_handler_vector);
m_handler_vector.clear();
} }
update();
} }

View File

@@ -19,7 +19,6 @@
#define PART_ELLIPSE_H #define PART_ELLIPSE_H
#include "abstractpartellipse.h" #include "abstractpartellipse.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
class QPropertyUndoCommand; class QPropertyUndoCommand;
@@ -55,24 +54,29 @@ class PartEllipse : public AbstractPartEllipse
virtual QString xmlName() const { return(QString("ellipse")); } virtual QString xmlName() const { return(QString("ellipse")); }
virtual const QDomElement toXml (QDomDocument &) const; virtual const QDomElement toXml (QDomDocument &) const;
virtual void fromXml (const QDomElement &); virtual void fromXml (const QDomElement &);
virtual QRectF boundingRect() const;
virtual QPainterPath shape() const; virtual QPainterPath shape() const;
virtual QPainterPath shadowShape() const; virtual QPainterPath shadowShape() const;
virtual void setRect(const QRectF &rect) {AbstractPartEllipse::setRect(rect); adjusteHandlerPos();}
protected: protected:
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
private: private:
void switchResizeMode(); void switchResizeMode();
void adjusteHandlerPos();
void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void sceneSelectionChanged ();
void addHandler();
void removeHandler();
private: private:
QetGraphicsHandlerUtility m_handler;
int m_handler_index;
QPropertyUndoCommand *m_undo_command; QPropertyUndoCommand *m_undo_command;
int m_resize_mode = 1; int m_resize_mode = 1,
m_vector_index = -1;
}; };
#endif #endif

View File

@@ -19,6 +19,7 @@
#include <cmath> #include <cmath>
#include "elementscene.h" #include "elementscene.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h" #include "QPropertyUndoCommand/qpropertyundocommand.h"
#include "QetGraphicsItemModeler/qetgraphicshandleritem.h"
/** /**
@@ -33,14 +34,16 @@ PartLine::PartLine(QETElementEditor *editor, QGraphicsItem *parent) :
first_length(1.5), first_length(1.5),
second_end(Qet::None), second_end(Qet::None),
second_length(1.5), second_length(1.5),
m_handler(10),
m_handler_index(-1),
m_undo_command(nullptr) m_undo_command(nullptr)
{} {}
/// Destructeur /// Destructeur
PartLine::~PartLine() { PartLine::~PartLine()
if(m_undo_command) delete m_undo_command; {
if(m_undo_command)
delete m_undo_command;
removeHandler();
} }
/** /**
@@ -90,9 +93,6 @@ void PartLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *options,
if (m_hovered) if (m_hovered)
drawShadowShape(painter); drawShadowShape(painter);
if (isSelected() && scene()->selectedItems().size() == 1)
m_handler.drawHandler(painter, m_handler.pointsForLine(m_line));
painter->restore(); painter->restore();
} }
@@ -140,69 +140,206 @@ void PartLine::fromXml(const QDomElement &qde) {
} }
/** /**
* @brief PartLine::mousePressEvent * @brief PartLine::itemChange
* Handle mouse press event * @param change
* @param event * @param value
* @return
*/ */
void PartLine::mousePressEvent(QGraphicsSceneMouseEvent *event) QVariant PartLine::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{ {
if(event->button() == Qt::LeftButton) if (change == ItemSelectedHasChanged && scene())
{ {
setCursor(Qt::ClosedHandCursor); if (value.toBool() == true)
if (isSelected())
{ {
m_handler_index = m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForLine(m_line)); //When item is selected, he must to be up to date whene the selection in the scene change, for display or not the handler,
//according to the number of selected items.
connect(scene(), &QGraphicsScene::selectionChanged, this, &PartLine::sceneSelectionChanged);
if(m_handler_index >= 0 && m_handler_index <= 1) //User click on an handler if (scene()->selectedItems().size() == 1)
addHandler();
}
else
{
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartLine::sceneSelectionChanged);
removeHandler();
}
}
else if (change == ItemPositionHasChanged)
{
adjusteHandlerPos();
}
else if (change == ItemSceneChange)
{
if(scene())
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartLine::sceneSelectionChanged);
setSelected(false); //This is item removed from scene, then we deselect this, and so, the handlers is also removed.
}
return QGraphicsItem::itemChange(change, value);
}
/**
* @brief PartLine::sceneEventFilter
* @param watched
* @param event
* @return
*/
bool PartLine::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
{
//Watched must be an handler
if(watched->type() == QetGraphicsHandlerItem::Type)
{
QetGraphicsHandlerItem *qghi = qgraphicsitem_cast<QetGraphicsHandlerItem *>(watched);
if(m_handler_vector.contains(qghi)) //Handler must be in m_vector_index, then we can start resize
{
m_vector_index = m_handler_vector.indexOf(qghi);
if (m_vector_index != -1)
{ {
m_undo_command = new QPropertyUndoCommand(this, "line", QVariant(m_line)); if(event->type() == QEvent::GraphicsSceneMousePress) //Click
m_undo_command->setText(tr("Modifier une ligne")); {
m_undo_command->enableAnimation(); handlerMousePressEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return; return true;
}
else if(event->type() == QEvent::GraphicsSceneMouseMove) //Move
{
handlerMouseMoveEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseRelease) //Release
{
handlerMouseReleaseEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
} }
} }
} }
CustomElementGraphicPart::mousePressEvent(event); return false;
} }
/** /**
* @brief PartLine::mouseMoveEvent * @brief PartLine::adjusteHandlerPos
* Handle pouse move event * Adjust the position of the handler item
* @param event
*/ */
void PartLine::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void PartLine::adjusteHandlerPos()
{ {
if(m_handler_index >= 0 && m_handler_index <= 1) if(m_handler_vector.isEmpty())
return;
QVector<QPointF> points_vector;
points_vector << m_line.p1() << m_line.p2();
if (m_handler_vector.size() == points_vector.size())
{ {
QPointF pos_ = event->modifiers() == Qt::ControlModifier ? event->pos() : mapFromScene(elementScene()->snapToGrid(event->scenePos())); points_vector = mapToScene(points_vector);
prepareGeometryChange(); for (int i = 0 ; i < points_vector.size() ; ++i)
setLine(m_handler.lineForPosAtIndex(m_line, pos_, m_handler_index)); m_handler_vector.at(i)->setPos(points_vector.at(i));
} }
else
CustomElementGraphicPart::mouseMoveEvent(event);
} }
/** /**
* @brief PartLine::mouseReleaseEvent * @brief PartLine::handlerMousePressEvent
* Handle mouse release event * @param qghi
* @param event * @param event
*/ */
void PartLine::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void PartLine::handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{ {
if (event->button() == Qt::LeftButton) Q_UNUSED(qghi);
setCursor(Qt::OpenHandCursor); Q_UNUSED(event);
if (m_handler_index >= 0 && m_handler_index <= 1) m_undo_command = new QPropertyUndoCommand(this, "line", QVariant(m_line));
{ m_undo_command->setText(tr("Modifier une ligne"));
m_undo_command->setNewValue(QVariant(m_line)); m_undo_command->enableAnimation();
elementScene()->undoStack().push(m_undo_command); return;
m_undo_command = nullptr; }
m_handler_index = -1;
} /**
* @brief PartLine::handlerMouseMoveEvent
* @param qghi
* @param event
*/
void PartLine::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
QPointF new_pos = event->scenePos();
if (event->modifiers() != Qt::ControlModifier)
new_pos = elementScene()->snapToGrid(event->scenePos());
new_pos = mapFromScene(new_pos);
prepareGeometryChange();
if (m_vector_index == 0)
m_line.setP1(new_pos);
else else
CustomElementGraphicPart::mouseReleaseEvent(event); m_line.setP2(new_pos);
adjusteHandlerPos();
}
/**
* @brief PartLine::handlerMouseReleaseEvent
* @param qghi
* @param event
*/
void PartLine::handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
m_undo_command->setNewValue(QVariant(m_line));
elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr;
m_vector_index = -1;
}
/**
* @brief PartLine::sceneSelectionChanged
* When the scene selection change, if there are several primitive selected, we remove the handler of this item
*/
void PartLine::sceneSelectionChanged()
{
if (this->isSelected() && scene()->selectedItems().size() == 1)
addHandler();
else
removeHandler();
}
/**
* @brief PartLine::addHandler
* Add handlers for this item
*/
void PartLine::addHandler()
{
if (m_handler_vector.isEmpty() && scene())
{
QVector<QPointF> points_vector;
points_vector << m_line.p1() << m_line.p2();
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(points_vector));
for(QetGraphicsHandlerItem *handler : m_handler_vector)
{
handler->setColor(Qt::blue);
scene()->addItem(handler);
handler->installSceneEventFilter(this);
handler->setZValue(this->zValue()+1);
}
}
}
/**
* @brief PartLine::removeHandler
* Remove the handlers of this item
*/
void PartLine::removeHandler()
{
if (!m_handler_vector.isEmpty())
{
qDeleteAll(m_handler_vector);
m_handler_vector.clear();
}
} }
/** /**
@@ -243,10 +380,6 @@ QPainterPath PartLine::shape() const
pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight()); pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight());
shape = pps.createStroke(shape); shape = pps.createStroke(shape);
if (isSelected())
foreach(QRectF rect, m_handler.handlerRect(m_handler.pointsForLine(m_line)))
shape.addRect(rect);
return shape; return shape;
} }
@@ -402,9 +535,6 @@ QRectF PartLine::boundingRect() const
bound = bound.normalized(); bound = bound.normalized();
bound.adjust(-adjust, -adjust, adjust, adjust); bound.adjust(-adjust, -adjust, adjust, adjust);
foreach(QRectF rect, m_handler.handlerRect(m_handler.pointsForLine(m_line)))
bound |= rect;
return bound; return bound;
} }
@@ -496,6 +626,7 @@ void PartLine::setLine(const QLineF &line)
if (m_line == line) return; if (m_line == line) return;
prepareGeometryChange(); prepareGeometryChange();
m_line = line; m_line = line;
adjusteHandlerPos();
emit lineChanged(); emit lineChanged();
} }
@@ -533,20 +664,6 @@ void PartLine::setSecondEndLength(const qreal &l)
emit secondEndLengthChanged(); emit secondEndLengthChanged();
} }
void PartLine::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
if (!isSelected())
{
CustomElementGraphicPart::hoverMoveEvent(event);
return;
}
if (m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForLine(m_line)) >= 0)
setCursor(Qt::SizeAllCursor);
else
CustomElementGraphicPart::hoverMoveEvent(event);
}
/** /**
* @brief PartLine::path * @brief PartLine::path
* @return this line has a QPainterPath. * @return this line has a QPainterPath.

View File

@@ -20,9 +20,9 @@
#include "customelementgraphicpart.h" #include "customelementgraphicpart.h"
#include "qet.h" #include "qet.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
class QPropertyUndoCommand; class QPropertyUndoCommand;
class QetGraphicsHandlerItem;
/** /**
This class represents a line primitive which may be used to compose the This class represents a line primitive which may be used to compose the
@@ -96,19 +96,26 @@ class PartLine : public CustomElementGraphicPart
void setSecondEndLength(const qreal &l); void setSecondEndLength(const qreal &l);
protected: protected:
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
private: private:
QPainterPath path() const; void adjusteHandlerPos();
void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void sceneSelectionChanged ();
void addHandler();
void removeHandler();
QPainterPath path() const;
QList<QPointF> fourShapePoints() const; QList<QPointF> fourShapePoints() const;
QRectF firstEndCircleRect() const; QRectF firstEndCircleRect() const;
QRectF secondEndCircleRect() const; QRectF secondEndCircleRect() const;
void debugPaint(QPainter *); void debugPaint(QPainter *);
/*****************/
Qet::EndType first_end; Qet::EndType first_end;
qreal first_length; qreal first_length;
@@ -116,8 +123,8 @@ class PartLine : public CustomElementGraphicPart
qreal second_length; qreal second_length;
QList<QPointF> saved_points_; QList<QPointF> saved_points_;
QLineF m_line; QLineF m_line;
QetGraphicsHandlerUtility m_handler; int m_vector_index = -1;
int m_handler_index;
QPropertyUndoCommand *m_undo_command; QPropertyUndoCommand *m_undo_command;
QVector<QetGraphicsHandlerItem *> m_handler_vector;
}; };
#endif #endif

View File

@@ -18,6 +18,7 @@
#include "partpolygon.h" #include "partpolygon.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h" #include "QPropertyUndoCommand/qpropertyundocommand.h"
#include "elementscene.h" #include "elementscene.h"
#include "QetGraphicsItemModeler/qetgraphicshandleritem.h"
/** /**
@@ -29,16 +30,16 @@
PartPolygon::PartPolygon(QETElementEditor *editor, QGraphicsItem *parent) : PartPolygon::PartPolygon(QETElementEditor *editor, QGraphicsItem *parent) :
CustomElementGraphicPart(editor, parent), CustomElementGraphicPart(editor, parent),
m_closed(false), m_closed(false),
m_handler(10),
m_handler_index(-1),
m_undo_command(nullptr) m_undo_command(nullptr)
{} {}
/** /**
* @brief PartPolygon::~PartPolygon * @brief PartPolygon::~PartPolygon
*/ */
PartPolygon::~PartPolygon() { PartPolygon::~PartPolygon()
{
if(m_undo_command) delete m_undo_command; if(m_undo_command) delete m_undo_command;
removeHandler();
} }
/** /**
@@ -64,9 +65,6 @@ void PartPolygon::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio
if (m_hovered) if (m_hovered)
drawShadowShape(painter); drawShadowShape(painter);
if (isSelected() && scene()->selectedItems().size() == 1)
m_handler.drawHandler(painter, m_polygon);
} }
/** /**
@@ -199,6 +197,7 @@ void PartPolygon::setPolygon(const QPolygonF &polygon)
if (m_polygon == polygon) return; if (m_polygon == polygon) return;
prepareGeometryChange(); prepareGeometryChange();
m_polygon = polygon; m_polygon = polygon;
adjusteHandlerPos();
emit polygonChanged(); emit polygonChanged();
} }
@@ -248,83 +247,195 @@ void PartPolygon::setClosed(bool close)
emit closedChange(); emit closedChange();
} }
void PartPolygon::hoverMoveEvent(QGraphicsSceneHoverEvent *event) /**
* @brief PartPolygon::itemChange
* @param change
* @param value
* @return
*/
QVariant PartPolygon::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{ {
if (!isSelected()) if (change == ItemSelectedHasChanged && scene())
{ {
CustomElementGraphicPart::hoverMoveEvent(event); if (value.toBool() == true)
return; {
//When item is selected, he must to be up to date whene the selection in the scene change, for display or not the handler,
//according to the number of selected items.
connect(scene(), &QGraphicsScene::selectionChanged, this, &PartPolygon::sceneSelectionChanged);
if (scene()->selectedItems().size() == 1)
addHandler();
}
else
{
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartPolygon::sceneSelectionChanged);
removeHandler();
}
}
else if (change == ItemPositionHasChanged)
{
adjusteHandlerPos();
}
else if (change == ItemSceneChange)
{
if(scene())
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartPolygon::sceneSelectionChanged);
setSelected(false); //This is item removed from scene, then we deselect this, and so, the handlers is also removed.
} }
if (m_handler.pointIsHoverHandler(event->pos(), m_polygon) >= 0) return QGraphicsItem::itemChange(change, value);
setCursor(Qt::SizeAllCursor);
else
CustomElementGraphicPart::hoverMoveEvent(event);
} }
/** /**
* @brief PartPolygon::mousePressEvent * @brief PartPolygon::sceneEventFilter
* Handle mouse press event * @param watched
* @param event * @param event
* @return
*/ */
void PartPolygon::mousePressEvent(QGraphicsSceneMouseEvent *event) bool PartPolygon::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
{ {
if (event->button() == Qt::LeftButton) //Watched must be an handler
if(watched->type() == QetGraphicsHandlerItem::Type)
{ {
setCursor(Qt::ClosedHandCursor); QetGraphicsHandlerItem *qghi = qgraphicsitem_cast<QetGraphicsHandlerItem *>(watched);
if(isSelected())
{
m_handler_index = m_handler.pointIsHoverHandler(event->pos(), m_polygon);
if(m_handler_index >= 0) //User click on an handler if(m_handler_vector.contains(qghi)) //Handler must be in m_vector_index, then we can start resize
{
m_vector_index = m_handler_vector.indexOf(qghi);
if (m_vector_index != -1)
{ {
m_undo_command = new QPropertyUndoCommand(this, "polygon", QVariant(m_polygon)); if(event->type() == QEvent::GraphicsSceneMousePress) //Click
m_undo_command->setText(tr("Modifier un polygone")); {
return; handlerMousePressEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if(event->type() == QEvent::GraphicsSceneMouseMove) //Move
{
handlerMouseMoveEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseRelease) //Release
{
handlerMouseReleaseEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
} }
} }
} }
CustomElementGraphicPart::mousePressEvent(event); return false;
} }
/** /**
* @brief PartPolygon::mouseMoveEvent * @brief PartPolygon::adjusteHandlerPos
* Handle mouse move event
* @param event
*/ */
void PartPolygon::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void PartPolygon::adjusteHandlerPos()
{ {
if(m_handler_index >= 0) if(m_handler_vector.isEmpty())
return;
if (m_handler_vector.size() == m_polygon.size())
{ {
QPointF pos_ = event->modifiers() == Qt::ControlModifier ? event->pos() : mapFromScene(elementScene()->snapToGrid(event->scenePos())); QVector <QPointF> points_vector = mapToScene(m_polygon);
prepareGeometryChange(); for (int i = 0 ; i < points_vector.size() ; ++i)
m_polygon.replace(m_handler_index, pos_); m_handler_vector.at(i)->setPos(points_vector.at(i));
emit polygonChanged();
} }
else
CustomElementGraphicPart::mouseMoveEvent(event);
} }
/** /**
* @brief PartPolygon::mouseReleaseEvent * @brief PartPolygon::handlerMousePressEvent
* Handle mouse release event * @param qghi
* @param event * @param event
*/ */
void PartPolygon::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void PartPolygon::handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{ {
if (event->button() == Qt::LeftButton) Q_UNUSED(qghi);
setCursor(Qt::OpenHandCursor); Q_UNUSED(event);
if (m_handler_index >= 0) m_undo_command = new QPropertyUndoCommand(this, "polygon", QVariant(m_polygon));
{ m_undo_command->setText(tr("Modifier un polygone"));
m_undo_command->setNewValue(QVariant(m_polygon)); }
elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr; /**
m_handler_index = -1; * @brief PartPolygon::handlerMouseMoveEvent
} * @param qghi
* @param event
*/
void PartPolygon::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
QPointF new_pos = event->scenePos();
if (event->modifiers() != Qt::ControlModifier)
new_pos = elementScene()->snapToGrid(event->scenePos());
new_pos = mapFromScene(new_pos);
prepareGeometryChange();
m_polygon.replace(m_vector_index, new_pos);
adjusteHandlerPos();
emit polygonChanged();
}
/**
* @brief PartPolygon::handlerMouseReleaseEvent
* @param qghi
* @param event
*/
void PartPolygon::handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
m_undo_command->setNewValue(QVariant(m_polygon));
elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr;
m_vector_index = -1;
}
/**
* @brief PartPolygon::sceneSelectionChanged
* When the scene selection change, if there are several primitive selected, we remove the handler of this item
*/
void PartPolygon::sceneSelectionChanged()
{
if (this->isSelected() && scene()->selectedItems().size() == 1)
addHandler();
else else
CustomElementGraphicPart::mouseReleaseEvent(event); removeHandler();
}
/**
* @brief PartPolygon::addHandler
* Add handlers for this item
*/
void PartPolygon::addHandler()
{
if (m_handler_vector.isEmpty() && scene())
{
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(m_polygon));
for(QetGraphicsHandlerItem *handler : m_handler_vector)
{
handler->setColor(Qt::blue);
scene()->addItem(handler);
handler->installSceneEventFilter(this);
handler->setZValue(this->zValue()+1);
}
}
}
/**
* @brief PartPolygon::removeHandler
* Remove the handlers of this item
*/
void PartPolygon::removeHandler()
{
if (!m_handler_vector.isEmpty())
{
qDeleteAll(m_handler_vector);
m_handler_vector.clear();
}
} }
/** /**
@@ -343,10 +454,6 @@ QPainterPath PartPolygon::shape() const
pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight()); pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight());
shape = pps.createStroke(shape); shape = pps.createStroke(shape);
if (isSelected())
foreach(QRectF rect, m_handler.handlerRect(m_polygon))
shape.addRect(rect);
return shape; return shape;
} }
@@ -379,8 +486,5 @@ QRectF PartPolygon::boundingRect() const
r.adjust(-adjust, -adjust, adjust, adjust); r.adjust(-adjust, -adjust, adjust, adjust);
foreach(QRectF rect, m_handler.handlerRect(m_polygon))
r |=rect;
return(r); return(r);
} }

View File

@@ -20,10 +20,9 @@
#include <QPolygonF> #include <QPolygonF>
#include "customelementgraphicpart.h" #include "customelementgraphicpart.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
class QPropertyUndoCommand; class QPropertyUndoCommand;
class QetGraphicsHandlerItem;
/** /**
* @brief The PartPolygon class * @brief The PartPolygon class
@@ -85,17 +84,25 @@ class PartPolygon : public CustomElementGraphicPart
void setClosed (bool close); void setClosed (bool close);
protected: protected:
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
private: private:
void adjusteHandlerPos();
void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void sceneSelectionChanged ();
void addHandler();
void removeHandler();
bool m_closed; bool m_closed;
QList<QPointF> saved_points_; QList<QPointF> saved_points_;
QPolygonF m_polygon; QPolygonF m_polygon;
QetGraphicsHandlerUtility m_handler;
int m_handler_index;
QPropertyUndoCommand *m_undo_command; QPropertyUndoCommand *m_undo_command;
int m_vector_index = -1;
QVector<QetGraphicsHandlerItem *> m_handler_vector;
}; };
#endif #endif

View File

@@ -18,6 +18,8 @@
#include "partrectangle.h" #include "partrectangle.h"
#include "elementscene.h" #include "elementscene.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h" #include "QPropertyUndoCommand/qpropertyundocommand.h"
#include "QetGraphicsItemModeler/qetgraphicshandleritem.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
/** /**
* @brief PartRectangle::PartRectangle * @brief PartRectangle::PartRectangle
@@ -27,16 +29,16 @@
*/ */
PartRectangle::PartRectangle(QETElementEditor *editor, QGraphicsItem *parent) : PartRectangle::PartRectangle(QETElementEditor *editor, QGraphicsItem *parent) :
CustomElementGraphicPart(editor, parent), CustomElementGraphicPart(editor, parent),
m_handler(10),
m_handler_index(-1),
m_undo_command(nullptr) m_undo_command(nullptr)
{} {}
/** /**
* @brief PartRectangle::~PartRectangle * @brief PartRectangle::~PartRectangle
*/ */
PartRectangle::~PartRectangle() { PartRectangle::~PartRectangle()
{
if(m_undo_command) delete m_undo_command; if(m_undo_command) delete m_undo_command;
removeHandler();
} }
/** /**
@@ -69,11 +71,7 @@ void PartRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
drawShadowShape(painter); drawShadowShape(painter);
if (isSelected()) if (isSelected())
{
drawCross(m_rect.center(), painter); drawCross(m_rect.center(), painter);
if (scene()->selectedItems().size() == 1)
m_handler.drawHandler(painter, m_handler.pointsForRect(m_rect));
}
} }
/** /**
@@ -129,6 +127,7 @@ void PartRectangle::setRect(const QRectF &rect)
if (rect == m_rect) return; if (rect == m_rect) return;
prepareGeometryChange(); prepareGeometryChange();
m_rect = rect; m_rect = rect;
adjusteHandlerPos();
emit rectChanged(); emit rectChanged();
} }
@@ -164,10 +163,6 @@ QPainterPath PartRectangle::shape() const
pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight()); pps.setWidth(m_hovered? penWeight()+SHADOWS_HEIGHT : penWeight());
shape = pps.createStroke(shape); shape = pps.createStroke(shape);
if (isSelected())
foreach(QRectF rect, m_handler.handlerRect(m_handler.pointsForRect(m_rect)))
shape.addRect(rect);
return shape; return shape;
} }
@@ -196,9 +191,6 @@ QRectF PartRectangle::boundingRect() const
QRectF r = m_rect.normalized(); QRectF r = m_rect.normalized();
r.adjust(-adjust, -adjust, adjust, adjust); r.adjust(-adjust, -adjust, adjust, adjust);
foreach(QRectF rect, m_handler.handlerRect(m_handler.pointsForRect(m_rect)))
r |= rect;
return(r); return(r);
} }
@@ -237,77 +229,6 @@ void PartRectangle::handleUserTransformation(const QRectF &initial_selection_rec
setRect(QRectF(mapFromScene(mapped_points.at(0)), mapFromScene(mapped_points.at(1)))); setRect(QRectF(mapFromScene(mapped_points.at(0)), mapFromScene(mapped_points.at(1))));
} }
void PartRectangle::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
if (!isSelected())
{
CustomElementGraphicPart::hoverMoveEvent(event);
return;
}
int handler = m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForRect(m_rect));
if (handler >= 0)
{
if (handler == 0 || handler == 2 || handler == 5 || handler == 7)
setCursor(Qt::SizeAllCursor);
else if (handler == 1 || handler == 6)
setCursor(Qt::SizeVerCursor);
else if (handler == 3 || handler == 4)
setCursor(Qt::SizeHorCursor);
}
else
CustomElementGraphicPart::hoverMoveEvent(event);
}
/**
* @brief PartRectangle::mousePressEvent
* Handle mouse press event
* @param event
*/
void PartRectangle::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
setCursor(Qt::ClosedHandCursor);
if(isSelected())
{
m_handler_index = m_handler.pointIsHoverHandler(event->pos(), m_handler.pointsForRect(m_rect));
if(m_handler_index >= 0 && m_handler_index <= 7) //User click on an handler
{
m_undo_command = new QPropertyUndoCommand(this, "rect", QVariant(m_rect));
m_undo_command->setText(tr("Modifier un rectangle"));
m_undo_command->enableAnimation();
return;
}
}
}
CustomElementGraphicPart::mousePressEvent(event);
}
/**
* @brief PartRectangle::mouseMoveEvent
* Handle mouse press event
* @param event
*/
void PartRectangle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if(m_handler_index >= 0 && m_handler_index <= 7)
{
QPointF pos_ = event->modifiers() == Qt::ControlModifier ? event->pos() : mapFromScene(elementScene()->snapToGrid(event->scenePos()));
prepareGeometryChange();
if (m_resize_mode == 1)
setRect(m_handler.rectForPosAtIndex(m_rect, pos_, m_handler_index));
else
setRect(m_handler.mirrorRectForPosAtIndex(m_rect, pos_, m_handler_index));
}
else
CustomElementGraphicPart::mouseMoveEvent(event);
}
/** /**
* @brief PartRectangle::mouseReleaseEvent * @brief PartRectangle::mouseReleaseEvent
* Handle mouse release event * Handle mouse release event
@@ -315,35 +236,223 @@ void PartRectangle::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/ */
void PartRectangle::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void PartRectangle::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
if (event->button() == Qt::LeftButton) { if (event->button() == Qt::LeftButton && event->buttonDownPos(Qt::LeftButton) == event->pos())
setCursor(Qt::OpenHandCursor); switchResizeMode();
if (event->buttonDownPos(Qt::LeftButton) == event->pos())
switchResizeMode();
}
if (m_handler_index >= 0 && m_handler_index <= 7) CustomElementGraphicPart::mouseReleaseEvent(event);
{
if (!m_rect.isValid())
m_rect = m_rect.normalized();
m_undo_command->setNewValue(QVariant(m_rect));
elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr;
m_handler_index = -1;
}
else
CustomElementGraphicPart::mouseReleaseEvent(event);
} }
/**
* @brief PartRectangle::itemChange
* @param change
* @param value
* @return
*/
QVariant PartRectangle::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
if (change == ItemSelectedHasChanged && scene())
{
if (value.toBool() == true)
{
//When item is selected, he must to be up to date whene the selection in the scene change, for display or not the handler,
//according to the number of selected items.
connect(scene(), &QGraphicsScene::selectionChanged, this, &PartRectangle::sceneSelectionChanged);
if (scene()->selectedItems().size() == 1)
addHandler();
}
else
{
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartRectangle::sceneSelectionChanged);
removeHandler();
}
}
else if (change == ItemPositionHasChanged)
{
adjusteHandlerPos();
}
else if (change == ItemSceneChange)
{
if(scene())
disconnect(scene(), &QGraphicsScene::selectionChanged, this, &PartRectangle::sceneSelectionChanged);
setSelected(false); //This item is removed from scene, then we deselect this, and so, the handlers is also removed.
}
return QGraphicsItem::itemChange(change, value);
}
/**
* @brief PartRectangle::sceneEventFilter
* @param watched
* @param event
* @return
*/
bool PartRectangle::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
{
//Watched must be an handler
if(watched->type() == QetGraphicsHandlerItem::Type)
{
QetGraphicsHandlerItem *qghi = qgraphicsitem_cast<QetGraphicsHandlerItem *>(watched);
if(m_handler_vector.contains(qghi)) //Handler must be in m_vector_index, then we can start resize
{
m_vector_index = m_handler_vector.indexOf(qghi);
if (m_vector_index != -1)
{
if(event->type() == QEvent::GraphicsSceneMousePress) //Click
{
handlerMousePressEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if(event->type() == QEvent::GraphicsSceneMouseMove) //Move
{
handlerMouseMoveEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseRelease) //Release
{
handlerMouseReleaseEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
}
}
}
return false;
}
/**
* @brief PartRectangle::switchResizeMode
*/
void PartRectangle::switchResizeMode() void PartRectangle::switchResizeMode()
{ {
if (m_resize_mode == 1) { if (m_resize_mode == 1)
{
m_resize_mode = 2; m_resize_mode = 2;
m_handler.setOuterColor(Qt::darkGreen); for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::darkGreen);
} }
else { else
{
m_resize_mode = 1; m_resize_mode = 1;
m_handler.setOuterColor(Qt::blue); for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::blue);
}
}
/**
* @brief PartRectangle::adjusteHandlerPos
*/
void PartRectangle::adjusteHandlerPos()
{
if (m_handler_vector.isEmpty())
return;
QVector <QPointF> points_vector = QetGraphicsHandlerUtility::pointsForRect(m_rect);
if (m_handler_vector.size() == points_vector.size())
{
points_vector = mapToScene(points_vector);
for (int i = 0 ; i < points_vector.size() ; ++i)
m_handler_vector.at(i)->setPos(points_vector.at(i));
}
}
/**
* @brief PartRectangle::handlerMousePressEvent
* @param qghi
* @param event
*/
void PartRectangle::handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
m_undo_command = new QPropertyUndoCommand(this, "rect", QVariant(m_rect));
m_undo_command->setText(tr("Modifier un rectangle"));
m_undo_command->enableAnimation();
return;
}
/**
* @brief PartRectangle::handlerMouseMoveEvent
* @param qghi
* @param event
*/
void PartRectangle::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
QPointF new_pos = event->scenePos();
if (event->modifiers() != Qt::ControlModifier)
new_pos = elementScene()->snapToGrid(event->scenePos());
new_pos = mapFromScene(new_pos);
if (m_resize_mode == 1)
setRect(QetGraphicsHandlerUtility::rectForPosAtIndex(m_rect, new_pos, m_vector_index));
else
setRect(QetGraphicsHandlerUtility::mirrorRectForPosAtIndex(m_rect, new_pos, m_vector_index));
adjusteHandlerPos();
}
void PartRectangle::handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
m_undo_command->setNewValue(QVariant(m_rect));
elementScene()->undoStack().push(m_undo_command);
m_undo_command = nullptr;
m_vector_index = -1;
}
/**
* @brief PartRectangle::sceneSelectionChanged
* When the scene selection change, if there are several primitive selected, we remove the handler of this item
*/
void PartRectangle::sceneSelectionChanged()
{
if (this->isSelected() && scene()->selectedItems().size() == 1)
addHandler();
else
removeHandler();
}
/**
* @brief PartRectangle::addHandler
* Add handlers for this item
*/
void PartRectangle::addHandler()
{
if (m_handler_vector.isEmpty() && scene())
{
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(QetGraphicsHandlerUtility::pointsForRect(m_rect)));
for(QetGraphicsHandlerItem *handler : m_handler_vector)
{
QColor color = Qt::blue;
if (m_resize_mode == 2)
color = Qt::darkGreen;
handler->setColor(color);
scene()->addItem(handler);
handler->installSceneEventFilter(this);
handler->setZValue(this->zValue()+1);
}
}
}
/**
* @brief PartRectangle::removeHandler
* Remove the handlers of this item
*/
void PartRectangle::removeHandler()
{
if (!m_handler_vector.isEmpty())
{
qDeleteAll(m_handler_vector);
m_handler_vector.clear();
} }
update();
} }

View File

@@ -19,9 +19,9 @@
#define PART_RECTANGLE_H #define PART_RECTANGLE_H
#include "customelementgraphicpart.h" #include "customelementgraphicpart.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
class QPropertyUndoCommand; class QPropertyUndoCommand;
class QetGraphicsHandlerItem;
/** /**
* This class represents a rectangle primitive which may be used to compose the * This class represents a rectangle primitive which may be used to compose the
@@ -75,20 +75,27 @@ class PartRectangle : public CustomElementGraphicPart
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);
protected: protected:
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
private: private:
void switchResizeMode(); void switchResizeMode();
void adjusteHandlerPos();
void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void sceneSelectionChanged ();
void addHandler();
void removeHandler();
private: private:
QRectF m_rect; QRectF m_rect;
QList<QPointF> saved_points_; QList<QPointF> saved_points_;
QetGraphicsHandlerUtility m_handler;
int m_handler_index;
QPropertyUndoCommand *m_undo_command; QPropertyUndoCommand *m_undo_command;
int m_resize_mode = 1; int m_resize_mode = 1,
m_vector_index = -1;
QVector<QetGraphicsHandlerItem *> m_handler_vector;
}; };
#endif #endif

View File

@@ -26,20 +26,17 @@
Constructeur Constructeur
@param editor L'editeur d'element concerne @param editor L'editeur d'element concerne
@param parent Le QGraphicsItem parent de ce texte statique @param parent Le QGraphicsItem parent de ce texte statique
@param scene La scene sur laquelle figure ce texte statique
*/ */
PartText::PartText(QETElementEditor *editor, QGraphicsItem *parent, ElementScene *scene) : PartText::PartText(QETElementEditor *editor, QGraphicsItem *parent) :
QGraphicsTextItem(parent), QGraphicsTextItem(parent),
CustomElementPart(editor), CustomElementPart(editor),
previous_text(), previous_text()
decorator_(0)
{ {
Q_UNUSED(scene)
document() -> setDocumentMargin(1.0); document() -> setDocumentMargin(1.0);
setDefaultTextColor(Qt::black); setDefaultTextColor(Qt::black);
setFont(QETApp::diagramTextsFont()); setFont(QETApp::diagramTextsFont());
real_font_size_ = font().pointSize(); real_font_size_ = font().pointSize();
setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsGeometryChanges); setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsGeometryChanges | QGraphicsItem::ItemIsMovable);
setAcceptHoverEvents(true); setAcceptHoverEvents(true);
setDefaultTextColor(Qt::black); setDefaultTextColor(Qt::black);
setPlainText(QObject::tr("T", "default text when adding a text in the element editor")); setPlainText(QObject::tr("T", "default text when adding a text in the element editor"));
@@ -231,150 +228,37 @@ void PartText::handleUserTransformation(const QRectF &initial_selection_rect, co
setProperty("real_size", qMax(1, qRound(new_font_size))); setProperty("real_size", qMax(1, qRound(new_font_size)));
} }
/**
Dessine le texte statique.
@param painter QPainter a utiliser pour effectuer le rendu
@param qsogi Pptions de dessin
@param widget Widget sur lequel on dessine (facultatif)
*/
void PartText::paint(QPainter *painter, const QStyleOptionGraphicsItem *qsogi, QWidget *widget) {
// According to the source code of QGraphicsTextItem::paint(), this should
// avoid the drawing of the dashed rectangle around the text.
QStyleOptionGraphicsItem our_qsogi(*qsogi);
our_qsogi.state = QStyle::State_None;
QGraphicsTextItem::paint(painter, &our_qsogi, widget); void PartText::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
#ifdef QET_DEBUG_EDITOR_TEXTS if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable))
painter -> setPen(Qt::blue); {
painter -> drawRect(boundingRect()); QPointF pos = event->scenePos() + (m_origine_pos - event->buttonDownScenePos(Qt::LeftButton));
event->modifiers() == Qt::ControlModifier ? setPos(pos) : setPos(elementScene()->snapToGrid(pos));
painter -> setPen(Qt::red); }
drawPoint(painter, QPointF(0, 0)); else
QGraphicsObject::mouseMoveEvent(event);
painter -> setPen(Qt::green);
drawPoint(painter, mapFromScene(pos()));
#endif
} }
/** void PartText::mousePressEvent(QGraphicsSceneMouseEvent *event)
Handle context menu events. {
@param event Object describing the context menu event to handle. if(event->button() == Qt::LeftButton)
*/ m_origine_pos = this->pos();
void PartText::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {
Q_UNUSED(event); QGraphicsObject::mousePressEvent(event);
} }
/** void PartText::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Handle events generated when the mouse hovers over the decorator. {
@param event Object describing the hover event. if((event->button() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable) && m_origine_pos != pos())
*/ {
void PartText::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { QPropertyUndoCommand *undo = new QPropertyUndoCommand(this, "pos", QVariant(m_origine_pos), QVariant(pos()));
// force the cursor when the text is being edited undo->setText(tr("Déplacer un texte"));
if (hasFocus() && decorator_) { undo->enableAnimation();
decorator_ -> setCursor(Qt::IBeamCursor); elementScene()->undoStack().push(undo);
} }
QGraphicsTextItem::hoverMoveEvent(event);
}
/** QGraphicsObject::mouseReleaseEvent(event);
@reimp CustomElementPart::setDecorator(ElementPrimitiveDecorator *)
Install or remove a sceneEventFilter on the decorator and ensure it will
adjust itself while the text is being edited.
*/
void PartText::setDecorator(ElementPrimitiveDecorator *decorator) {
if (decorator) {
decorator -> installSceneEventFilter(this);
// ensure the decorator will adjust itself when the text area expands or shrinks
connect(document(), SIGNAL(contentsChanged()), decorator, SLOT(adjust()));
}
else {
decorator_ -> removeSceneEventFilter(this);
endEdition();
}
decorator_ = decorator;
}
/**
@reimp QGraphicsItem::sceneEventFilter(QGraphicsItem *, QEvent *).
Intercepts events before they reach the watched target, i.e. typically the
primitives decorator.
This method mainly works with key strokes (F2, escape) and double clicks to
begin or end text edition.
*/
bool PartText::sceneEventFilter(QGraphicsItem *watched, QEvent *event) {
if (watched != decorator_) return(false);
QPointF event_scene_pos = QET::graphicsSceneEventPos(event);
if (!event_scene_pos.isNull()) {
if (contains(mapFromScene(event_scene_pos))) {
if (hasFocus()) {
return sceneEvent(event); // manually deliver the event to this item
return(true); // prevent this event from being delivered to any item
} else {
if (event -> type() == QEvent::GraphicsSceneMouseDoubleClick) {
mouseDoubleClickEvent(static_cast<QGraphicsSceneMouseEvent *>(event));
}
}
}
}
else if (event -> type() == QEvent::KeyRelease || event -> type() == QEvent::KeyPress) {
// Intercept F2 and escape keystrokes to focus in and out
QKeyEvent *key_event = static_cast<QKeyEvent *>(event);
if (!hasFocus() && key_event -> key() == Qt::Key_F2) {
setEditable(true);
QTextCursor qtc = textCursor();
qtc.setPosition(qMax(0, document()->characterCount() - 1));
setTextCursor(qtc);
} else if (hasFocus() && key_event -> key() == Qt::Key_Escape) {
endEdition();
}
if (hasFocus()) {
sceneEvent(event); // manually deliver the event to this item
return(true); // prevent this event from being delivered to any item
}
}
return(false);
}
/**
Accept the mouse \a event relayed by \a decorator if this text item has focus.
*/
bool PartText::singleItemPressEvent(ElementPrimitiveDecorator *decorator, QGraphicsSceneMouseEvent *event) {
Q_UNUSED(decorator)
Q_UNUSED(event)
return(hasFocus());
}
/**
Accept the mouse \a event relayed by \a decorator if this text item has focus.
*/
bool PartText::singleItemMoveEvent(ElementPrimitiveDecorator *decorator, QGraphicsSceneMouseEvent *event) {
Q_UNUSED(decorator)
Q_UNUSED(event)
return(hasFocus());
}
/**
Accept the mouse \a event relayed by \a decorator if this text item has focus.
*/
bool PartText::singleItemReleaseEvent(ElementPrimitiveDecorator *decorator, QGraphicsSceneMouseEvent *event) {
Q_UNUSED(decorator)
Q_UNUSED(event)
return(hasFocus());
}
/**
Accept the mouse \a event relayed by \a decorator if this text item has focus.
*/
bool PartText::singleItemDoubleClickEvent(ElementPrimitiveDecorator *decorator, QGraphicsSceneMouseEvent *event) {
Q_UNUSED(decorator)
// calling mouseDoubleClickEvent() will set this text item editable and grab keyboard focus
if (event -> button() == Qt::LeftButton) {
mouseDoubleClickEvent(event);
return(true);
}
return(false);
} }
/** /**
@@ -442,27 +326,4 @@ void PartText::endEdition()
setTextCursor(qtc); setTextCursor(qtc);
setEditable(false); setEditable(false);
if (decorator_) {
decorator_ -> setFocus();
}
} }
#ifdef QET_DEBUG_EDITOR_TEXTS
/**
Dessine deux petites fleches pour mettre un point en valeur
@param painter QPainter a utiliser pour effectuer le rendu
@param point Point a dessiner
*/
void PartText::drawPoint(QPainter *painter, const QPointF &point) {
qreal px = point.x();
qreal py = point.y();
qreal size_1 = 5.0;
qreal size_2 = 1.0;
painter -> drawLine(QLineF(px, py, px + size_1, py));
painter -> drawLine(QLineF(px + size_1 - size_2, py - size_2, px + size_1, py));
painter -> drawLine(QLineF(px + size_1 - size_2, py + size_2, px + size_1, py));
painter -> drawLine(QLineF(px, py, px, py + size_1));
painter -> drawLine(QLineF(px, py + size_1, px - size_2, py + size_1 - size_2));
painter -> drawLine(QLineF(px, py + size_1, px + size_2, py + size_1 - size_2));
}
#endif

View File

@@ -31,7 +31,7 @@ class PartText : public QGraphicsTextItem, public CustomElementPart {
// constructors, destructor // constructors, destructor
public: public:
PartText(QETElementEditor *, QGraphicsItem * = 0, ElementScene * = 0); PartText(QETElementEditor *, QGraphicsItem * = 0);
virtual ~PartText(); virtual ~PartText();
private: private:
@@ -55,12 +55,6 @@ class PartText : public QGraphicsTextItem, public CustomElementPart {
virtual QRectF sceneGeometricRect() const; virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0 );
virtual void setDecorator(ElementPrimitiveDecorator *);
virtual bool singleItemPressEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemMoveEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemReleaseEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemDoubleClickEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
///PROPERTY ///PROPERTY
void setProperty(const char *name, const QVariant &value) {QGraphicsTextItem::setProperty(name, value);} void setProperty(const char *name, const QVariant &value) {QGraphicsTextItem::setProperty(name, value);}
@@ -81,31 +75,29 @@ class PartText : public QGraphicsTextItem, public CustomElementPart {
Q_PROPERTY(QString text READ toPlainText WRITE setPlainText) Q_PROPERTY(QString text READ toPlainText WRITE setPlainText)
public slots: public slots:
void adjustItemPosition(int = 0); void adjustItemPosition(int = 0);
void setEditable(bool); void setEditable(bool);
void startEdition(); void startEdition();
void endEdition(); void endEdition();
protected: protected:
virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual bool sceneEventFilter(QGraphicsItem *, QEvent *); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual void focusInEvent(QFocusEvent *); virtual void focusInEvent(QFocusEvent *);
virtual void focusOutEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *);
virtual void keyPressEvent(QKeyEvent *); virtual void keyPressEvent(QKeyEvent *);
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *);
virtual QVariant itemChange(GraphicsItemChange, const QVariant &); virtual QVariant itemChange(GraphicsItemChange, const QVariant &);
QRectF boundingRect() const; QRectF boundingRect() const;
private: private:
QPointF margin() const; QPointF margin() const;
#ifdef QET_DEBUG_EDITOR_TEXTS QString previous_text;
void drawPoint(QPainter *, const QPointF &); qreal real_font_size_;
#endif QPointF saved_point_;
QString previous_text; qreal saved_font_size_;
qreal real_font_size_; QGraphicsItem *decorator_;
QPointF saved_point_; QPointF m_origine_pos;
qreal saved_font_size_;
QGraphicsItem *decorator_;
}; };
#endif #endif

View File

@@ -20,26 +20,24 @@
#include "elementprimitivedecorator.h" #include "elementprimitivedecorator.h"
#include "qetapp.h" #include "qetapp.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h" #include "QPropertyUndoCommand/qpropertyundocommand.h"
#include "elementscene.h"
/** /**
Constructeur Constructeur
@param editor L'editeur d'element concerne @param editor L'editeur d'element concerne
@param parent Le QGraphicsItem parent de ce champ de texte @param parent Le QGraphicsItem parent de ce champ de texte
@param scene La scene sur laquelle figure ce champ de texte
*/ */
PartTextField::PartTextField(QETElementEditor *editor, QGraphicsItem *parent, QGraphicsScene *scene) : PartTextField::PartTextField(QETElementEditor *editor, QGraphicsItem *parent) :
QGraphicsTextItem(parent), QGraphicsTextItem(parent),
CustomElementPart(editor), CustomElementPart(editor),
follow_parent_rotations(true), follow_parent_rotations(true),
m_tagg("none"), m_tagg("none"),
previous_text(), previous_text()
decorator_(0)
{ {
Q_UNUSED(scene);
setDefaultTextColor(Qt::black); setDefaultTextColor(Qt::black);
setFont(QETApp::diagramTextsFont()); setFont(QETApp::diagramTextsFont());
real_font_size_ = font().pointSize(); real_font_size_ = font().pointSize();
setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsGeometryChanges); setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsGeometryChanges | QGraphicsItem::ItemIsMovable);
setAcceptHoverEvents(true); setAcceptHoverEvents(true);
setPlainText(QObject::tr("_", "default text when adding a textfield in the element editor")); setPlainText(QObject::tr("_", "default text when adding a textfield in the element editor"));
@@ -112,73 +110,43 @@ QPointF PartTextField::margin() const {
return(QPointF(0.0, boundingRect().bottom() / 2.0)); return(QPointF(0.0, boundingRect().bottom() / 2.0));
} }
/** void PartTextField::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Handle context menu events. {
@param event Object describing the context menu event to handle. if((event->buttons() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable))
*/ {
void PartTextField::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { QPointF pos = event->scenePos() + (m_origine_pos - event->buttonDownScenePos(Qt::LeftButton));
Q_UNUSED(event); event->modifiers() == Qt::ControlModifier ? setPos(pos) : setPos(elementScene()->snapToGrid(pos));
}
else
QGraphicsObject::mouseMoveEvent(event);
}
void PartTextField::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
m_origine_pos = this->pos();
QGraphicsObject::mousePressEvent(event);
}
void PartTextField::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if((event->button() & Qt::LeftButton) && (flags() & QGraphicsItem::ItemIsMovable) && m_origine_pos != pos())
{
QPropertyUndoCommand *undo = new QPropertyUndoCommand(this, "pos", QVariant(m_origine_pos), QVariant(pos()));
undo->setText(tr("Déplacer un champ texte"));
undo->enableAnimation();
elementScene()->undoStack().push(undo);
}
QGraphicsObject::mouseReleaseEvent(event);
} }
/** /**
Handle events generated when the mouse hovers over the decorator. * @brief PartTextField::focusInEvent
@param event Object describing the hover event. * @param e The QFocusEvent object describing the focus gain.
*/ Start text edition when the item gains focus.
void PartTextField::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { */
// force the cursor when the text is being edited
if (hasFocus() && decorator_) {
decorator_ -> setCursor(Qt::IBeamCursor);
}
QGraphicsTextItem::hoverMoveEvent(event);
}
/**
@reimp QGraphicsItem::sceneEventFilter(QGraphicsItem *, QEvent *).
Intercepts events before they reach the watched target, i.e. typically the
primitives decorator.
This method mainly works with key strokes (F2, escape) and double clicks to
begin or end text edition.
*/
bool PartTextField::sceneEventFilter(QGraphicsItem *watched, QEvent *event) {
if (watched != decorator_) return(false);
QPointF event_scene_pos = QET::graphicsSceneEventPos(event);
if (!event_scene_pos.isNull()) {
if (contains(mapFromScene(event_scene_pos))) {
if (hasFocus()) {
return sceneEvent(event); // manually deliver the event to this item
return(true); // prevent this event from being delivered to any item
} else {
if (event -> type() == QEvent::GraphicsSceneMouseDoubleClick) {
mouseDoubleClickEvent(static_cast<QGraphicsSceneMouseEvent *>(event));
}
}
}
}
else if (event -> type() == QEvent::KeyRelease || event -> type() == QEvent::KeyPress) {
// Intercept F2 and escape keystrokes to focus in and out
QKeyEvent *key_event = static_cast<QKeyEvent *>(event);
if (!hasFocus() && key_event -> key() == Qt::Key_F2) {
setEditable(true);
QTextCursor qtc = textCursor();
qtc.setPosition(qMax(0, document()->characterCount() - 1));
setTextCursor(qtc);
} else if (hasFocus() && key_event -> key() == Qt::Key_Escape) {
endEdition();
}
if (hasFocus()) {
sceneEvent(event); // manually deliver the event to this item
return(true); // prevent this event from being delivered to any item
}
}
return(false);
}
/*
@reimp QGraphicsItem::focusInEvent(QFocusEvent *)
@param e The QFocusEvent object describing the focus gain.
Start text edition when the item gains focus.
*/
void PartTextField::focusInEvent(QFocusEvent *e) { void PartTextField::focusInEvent(QFocusEvent *e) {
startEdition(); startEdition();
QGraphicsTextItem::focusInEvent(e); QGraphicsTextItem::focusInEvent(e);
@@ -286,88 +254,6 @@ void PartTextField::handleUserTransformation(const QRectF &initial_selection_rec
qreal new_font_size = saved_font_size_ * sy; qreal new_font_size = saved_font_size_ * sy;
setProperty("real_size", qMax(1, qRound(new_font_size))); setProperty("real_size", qMax(1, qRound(new_font_size)));
} }
/**
Dessine le texte statique.
@param painter QPainter a utiliser pour effectuer le rendu
@param qsogi Pptions de dessin
@param widget Widget sur lequel on dessine (facultatif)
*/
void PartTextField::paint(QPainter *painter, const QStyleOptionGraphicsItem *qsogi, QWidget *widget) {
// According to the source code of QGraphicsTextItem::paint(), this should
// avoid the drawing of the dashed rectangle around the text.
QStyleOptionGraphicsItem our_qsogi(*qsogi);
our_qsogi.state = QStyle::State_None;
QGraphicsTextItem::paint(painter, &our_qsogi, widget);
#ifdef QET_DEBUG_EDITOR_TEXTS
painter -> setPen(Qt::blue);
painter -> drawRect(boundingRect());
painter -> setPen(Qt::red);
drawPoint(painter, QPointF(0, 0));
painter -> setPen(QColor("#800000"));
drawPoint(painter, mapFromScene(pos()));
#endif
}
/**
@reimp CustomElementPart::setDecorator(ElementPrimitiveDecorator *)
Install or remove a sceneEventFilter on the decorator and ensure it will
adjust itself while the text is being edited.
*/
void PartTextField::setDecorator(ElementPrimitiveDecorator *decorator) {
if (decorator) {
decorator -> installSceneEventFilter(this);
// ensure the decorator will adjust itself when the text area expands or shrinks
connect(document(), SIGNAL(contentsChanged()), decorator, SLOT(adjust()));
}
else {
decorator_ -> removeSceneEventFilter(this);
endEdition();
}
decorator_ = decorator;
}
/**
Accept the mouse \a event relayed by \a decorator if this text item has focus.
*/
bool PartTextField::singleItemPressEvent(ElementPrimitiveDecorator *decorator, QGraphicsSceneMouseEvent *event) {
Q_UNUSED(decorator)
Q_UNUSED(event)
return(hasFocus());
}
/**
Accept the mouse \a event relayed by \a decorator if this text item has focus.
*/
bool PartTextField::singleItemMoveEvent(ElementPrimitiveDecorator *decorator, QGraphicsSceneMouseEvent *event) {
Q_UNUSED(decorator)
Q_UNUSED(event)
return(hasFocus());
}
/**
Accept the mouse \a event relayed by \a decorator if this text item has focus.
*/
bool PartTextField::singleItemReleaseEvent(ElementPrimitiveDecorator *decorator, QGraphicsSceneMouseEvent *event) {
Q_UNUSED(decorator)
Q_UNUSED(event)
return(hasFocus());
}
/**
Accept the mouse \a event relayed by \a decorator if this text item has focus.
*/
bool PartTextField::singleItemDoubleClickEvent(ElementPrimitiveDecorator *decorator, QGraphicsSceneMouseEvent *event) {
Q_UNUSED(decorator)
// calling mouseDoubleClickEvent() will set this text item editable and grab keyboard focus
if (event -> button() == Qt::LeftButton) {
mouseDoubleClickEvent(event);
return(true);
}
return(false);
}
/** /**
Cette methode s'assure que la position du champ de texte est coherente Cette methode s'assure que la position du champ de texte est coherente
@@ -434,27 +320,4 @@ void PartTextField::endEdition()
setTextCursor(qtc); setTextCursor(qtc);
setEditable(false); setEditable(false);
if (decorator_) {
decorator_ -> setFocus();
}
} }
#ifdef QET_DEBUG_EDITOR_TEXTS
/**
Dessine deux petites fleches pour mettre un point en valeur
@param painter QPainter a utiliser pour effectuer le rendu
@param point Point a dessiner
*/
void PartTextField::drawPoint(QPainter *painter, const QPointF &point) {
qreal px = point.x();
qreal py = point.y();
qreal size_1 = 5.0;
qreal size_2 = 1.0;
painter -> drawLine(QLineF(px, py, px + size_1, py));
painter -> drawLine(QLineF(px + size_1 - size_2, py - size_2, px + size_1, py));
painter -> drawLine(QLineF(px + size_1 - size_2, py + size_2, px + size_1, py));
painter -> drawLine(QLineF(px, py, px, py + size_1));
painter -> drawLine(QLineF(px, py + size_1, px - size_2, py + size_1 - size_2));
painter -> drawLine(QLineF(px, py + size_1, px + size_2, py + size_1 - size_2));
}
#endif

View File

@@ -29,12 +29,13 @@ class ElementPrimitiveDecorator;
a default value. The field will remain editable once the element is added onto a default value. The field will remain editable once the element is added onto
a diagram. lorsque l'element sera pose sur un schema. a diagram. lorsque l'element sera pose sur un schema.
*/ */
class PartTextField : public QGraphicsTextItem, public CustomElementPart { class PartTextField : public QGraphicsTextItem, public CustomElementPart
{
Q_OBJECT Q_OBJECT
// constructors, destructor // constructors, destructor
public: public:
PartTextField(QETElementEditor *, QGraphicsItem * = 0, QGraphicsScene * = 0); PartTextField(QETElementEditor *, QGraphicsItem * = 0);
virtual ~PartTextField(); virtual ~PartTextField();
private: private:
@@ -61,12 +62,6 @@ class PartTextField : public QGraphicsTextItem, public CustomElementPart {
virtual QRectF sceneGeometricRect() const; virtual QRectF sceneGeometricRect() const;
virtual void startUserTransformation(const QRectF &); virtual void startUserTransformation(const QRectF &);
virtual void handleUserTransformation(const QRectF &, const QRectF &); virtual void handleUserTransformation(const QRectF &, const QRectF &);
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0 );
virtual void setDecorator(ElementPrimitiveDecorator *);
virtual bool singleItemPressEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemMoveEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemReleaseEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
virtual bool singleItemDoubleClickEvent(ElementPrimitiveDecorator *, QGraphicsSceneMouseEvent *);
///PROPERTY ///PROPERTY
virtual void setProperty(const char *name, const QVariant &value) {QGraphicsTextItem::setProperty(name, value);} virtual void setProperty(const char *name, const QVariant &value) {QGraphicsTextItem::setProperty(name, value);}
@@ -102,25 +97,22 @@ class PartTextField : public QGraphicsTextItem, public CustomElementPart {
void endEdition(); void endEdition();
protected: protected:
virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual bool sceneEventFilter(QGraphicsItem *, QEvent *); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual void focusInEvent(QFocusEvent *); virtual void focusInEvent(QFocusEvent *);
virtual void focusOutEvent(QFocusEvent *); virtual void focusOutEvent(QFocusEvent *);
virtual void keyPressEvent(QKeyEvent *); virtual void keyPressEvent(QKeyEvent *);
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *);
virtual QVariant itemChange(GraphicsItemChange, const QVariant &); virtual QVariant itemChange(GraphicsItemChange, const QVariant &);
QRectF boundingRect() const; QRectF boundingRect() const;
private: private:
QPointF margin() const; QPointF margin() const;
#ifdef QET_DEBUG_EDITOR_TEXTS QString previous_text;
void drawPoint(QPainter *, const QPointF &); qreal real_font_size_;
#endif QPointF saved_point_;
QString previous_text; qreal saved_font_size_;
qreal real_font_size_; QPointF m_origine_pos;
QPointF saved_point_;
qreal saved_font_size_;
QGraphicsItem *decorator_;
}; };
#endif #endif

View File

@@ -27,7 +27,7 @@ namespace QET {
/// QElectroTech version (as string, used to mark projects and elements XML documents) /// QElectroTech version (as string, used to mark projects and elements XML documents)
const QString version = "0.60"; const QString version = "0.60";
/// QElectroTech displayed version /// QElectroTech displayed version
const QString displayedVersion = "0.60-RC2"; const QString displayedVersion = "0.60-RC3";
QString license(); QString license();
/// Oriented movements /// Oriented movements

View File

@@ -2180,27 +2180,28 @@ QMessageBox::warning(0,
"\n" "\n"
"Requires python 3.5 or above.\n" "Requires python 3.5 or above.\n"
">> First install on Linux\n" ">> First install on Linux\n"
"1. check you have pip3 installed: pip3 --version.\n" "1. check you have pip3 installed: pip3 --version\n"
"If not install with: sudo apt-get install python3-pip\n" "If not install with: sudo apt-get install python3-pip\n"
"2. Install the program: sudo pip3 install qet_tb_generator\n" "2. Install the program: sudo pip3 install qet_tb_generator\n"
"3. Run the program: qet_tb_generator\n" "3. Run the program: qet_tb_generator\n"
">> Update on Linux\n" ">> Update on Linux\n"
"sudo pip3 install --upgrade qet_tb_generator\n" "sudo pip3 install --upgrade qet_tb_generator \n"
"\n" "\n"
">> First install on Windows\n" ">> First install on Windows\n"
"1. Install, if required, python 3.5 or above\n" "1. Install, if required, python 3.5 or above \n"
"2. pip install qet_generator\n" "2. pip install qet_tb_generator\n"
">> Update on Windows\n" ">> Update on Windows\n"
"python -m pip install --upgrade qet_tb_generator\n" "python -m pip install --upgrade qet_tb_generator\n"
">> First install on macOSX\n" ">>user could launch in a terminal this script in this directory \n"
"1. Install, if required, python 3.5 or above\n" " C:\\users\\XXXX\\AppData\\Local\\Programs\\Python\\Python36-32\\Scripts \n"
"2. Install tkinter with Tcl/Tk\n" "\n"
"3. Visit https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674\n" ">> First install on macOSX \n"
"2. pip3 install qet_generator\n" "1. Install, if required, python 3.5 or above \n"
">> Update on macOSX\n" " Visit https://qelectrotech.org/forum/viewtopic.php?pid=5674#p5674 \n"
"pip3 install --upgrade qet_tb_generator\n" "2. pip3 install qet_tb_generator \n"
">> Update on macOSX \n"
" pip3 install --upgrade qet_tb_generator \n"
); );
} }
} }

View File

@@ -78,17 +78,16 @@ Conductor::Conductor(Terminal *p1, Terminal* p2) :
terminal1(p1), terminal1(p1),
terminal2(p2), terminal2(p2),
m_mouse_over(false), m_mouse_over(false),
m_handler(10),
m_text_item(0), m_text_item(0),
segments(NULL), segments(NULL),
moving_segment(false), m_moving_segment(false),
modified_path(false), modified_path(false),
has_to_save_profile(false), has_to_save_profile(false),
must_highlight_(Conductor::None) must_highlight_(Conductor::None)
{ {
//set Zvalue at 11 to be upper than the DiagramImageItem and element //set Zvalue at 11 to be upper than the DiagramImageItem and element
setZValue(11); setZValue(11);
previous_z_value = zValue(); m_previous_z_value = zValue();
//Add this conductor to the list of conductor of each of the two terminal //Add this conductor to the list of conductor of each of the two terminal
bool ajout_p1 = terminal1 -> addConductor(this); bool ajout_p1 = terminal1 -> addConductor(this);
@@ -117,7 +116,7 @@ Conductor::Conductor(Terminal *p1, Terminal* p2) :
//Generate the path of this conductor. //Generate the path of this conductor.
generateConductorPath(terminal1 -> dockConductor(), terminal1 -> orientation(), terminal2 -> dockConductor(), terminal2 -> orientation()); generateConductorPath(terminal1 -> dockConductor(), terminal1 -> orientation(), terminal2 -> dockConductor(), terminal2 -> orientation());
setFlags(QGraphicsItem::ItemIsSelectable); setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsScenePositionChanges);
setAcceptHoverEvents(true); setAcceptHoverEvents(true);
// Add the text field // Add the text field
@@ -137,6 +136,7 @@ Conductor::Conductor(Terminal *p1, Terminal* p2) :
*/ */
Conductor::~Conductor() Conductor::~Conductor()
{ {
removeHandler();
terminal1->removeConductor(this); terminal1->removeConductor(this);
terminal2->removeConductor(this); terminal2->removeConductor(this);
deleteSegments(); deleteSegments();
@@ -171,30 +171,39 @@ void Conductor::updatePath(const QRectF &rect) {
} }
/** /**
Genere le QPainterPath a partir de la liste des points * @brief Conductor::segmentsToPath
*/ * Generate the QPainterPath from the list of points
void Conductor::segmentsToPath() { */
// chemin qui sera dessine void Conductor::segmentsToPath()
{
QPainterPath path; QPainterPath path;
// s'il n'y a pa des segments, on arrete la if (segments == NULL)
if (segments == NULL) setPath(path); setPath(path);
// demarre le chemin //Start the path
path.moveTo(segments -> firstPoint()); path.moveTo(segments -> firstPoint());
//Each segments
// parcourt les segments pour dessiner le chemin
ConductorSegment *segment = segments; ConductorSegment *segment = segments;
while(segment -> hasNextSegment()) { while(segment -> hasNextSegment()) {
path.lineTo(segment -> secondPoint()); path.lineTo(segment -> secondPoint());
segment = segment -> nextSegment(); segment = segment -> nextSegment();
} }
//Finish the path
// termine le chemin
path.lineTo(segment -> secondPoint()); path.lineTo(segment -> secondPoint());
// affecte le chemin au conducteur
setPath(path); setPath(path);
//If conductor is selected and he's not being modified
//we update the position of the handlers
if (isSelected() && !m_moving_segment)
{
if(handlerPoints().size() == m_handler_vector.size())
adjusteHandlerPos();
else
removeHandler();
addHandler();
}
} }
/** /**
@@ -467,7 +476,7 @@ void Conductor::paint(QPainter *qp, const QStyleOptionGraphicsItem *options, QWi
qp -> save(); qp -> save();
qp -> setRenderHint(QPainter::Antialiasing, false); qp -> setRenderHint(QPainter::Antialiasing, false);
// determine la couleur du conducteur // Set the color of conductor
QColor final_conductor_color(m_properties.color); QColor final_conductor_color(m_properties.color);
if (must_highlight_ == Normal) { if (must_highlight_ == Normal) {
final_conductor_color = QColor::fromRgb(69, 137, 255, 255); final_conductor_color = QColor::fromRgb(69, 137, 255, 255);
@@ -486,24 +495,25 @@ void Conductor::paint(QPainter *qp, const QStyleOptionGraphicsItem *options, QWi
//Draw the conductor bigger when is hovered //Draw the conductor bigger when is hovered
conductor_pen.setWidthF(m_mouse_over? (m_properties.cond_size) +4 : (m_properties.cond_size)); conductor_pen.setWidthF(m_mouse_over? (m_properties.cond_size) +4 : (m_properties.cond_size));
// affectation du QPen et de la QBrush modifies au QPainter //Set the QPen and QBrush to the QPainter
qp -> setBrush(conductor_brush); qp -> setBrush(conductor_brush);
QPen final_conductor_pen = conductor_pen; QPen final_conductor_pen = conductor_pen;
// modification du QPen generique pour lui affecter la couleur et le style adequats //Set the conductor style
final_conductor_pen.setColor(final_conductor_color); final_conductor_pen.setColor(final_conductor_color);
final_conductor_pen.setStyle(m_properties.style); final_conductor_pen.setStyle(m_properties.style);
final_conductor_pen.setJoinStyle(Qt::SvgMiterJoin); // meilleur rendu des pointilles final_conductor_pen.setJoinStyle(Qt::SvgMiterJoin); // better rendering with dot
// utilisation d'un trait "cosmetique" en-dessous d'un certain zoom //Use a cosmetique line, below a certain zoom
if (options && options -> levelOfDetail < 1.0) { if (options && options -> levelOfDetail < 1.0) {
final_conductor_pen.setCosmetic(true); final_conductor_pen.setCosmetic(true);
} }
qp -> setPen(final_conductor_pen); qp -> setPen(final_conductor_pen);
// dessin du conducteur //Draw the conductor
qp -> drawPath(path()); qp -> drawPath(path());
if (m_properties.type == ConductorProperties::Single) { if (m_properties.type == ConductorProperties::Single) {
qp -> setBrush(final_conductor_color); qp -> setBrush(final_conductor_color);
m_properties.singleLineProperties.draw( m_properties.singleLineProperties.draw(
@@ -514,11 +524,7 @@ void Conductor::paint(QPainter *qp, const QStyleOptionGraphicsItem *options, QWi
if (isSelected()) qp -> setBrush(Qt::NoBrush); if (isSelected()) qp -> setBrush(Qt::NoBrush);
} }
//Draw the squares used to modify the path of conductor when he is selected //Draw the junctions
if (isSelected())
m_handler.drawHandler(qp, handlerPoints());
// dessine les eventuelles jonctions
QList<QPointF> junctions_list = junctions(); QList<QPointF> junctions_list = junctions();
if (!junctions_list.isEmpty()) { if (!junctions_list.isEmpty()) {
final_conductor_pen.setStyle(Qt::SolidLine); final_conductor_pen.setStyle(Qt::SolidLine);
@@ -587,70 +593,18 @@ void Conductor::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) {
*/ */
void Conductor::mousePressEvent(QGraphicsSceneMouseEvent *event) void Conductor::mousePressEvent(QGraphicsSceneMouseEvent *event)
{ {
//Left clic
if (event->buttons() & Qt::LeftButton)
{
//If user click on a handler (square used to modify the path of conductor),
//we get the segment corresponding to the handler
int index = m_handler.pointIsHoverHandler(event->pos(), handlerPoints());
if (index > -1)
{
moving_segment = true;
moved_segment = segmentsList().at(index+1);
before_mov_text_pos_ = m_text_item -> pos();
}
}
QGraphicsPathItem::mousePressEvent(event); QGraphicsPathItem::mousePressEvent(event);
if (event -> modifiers() & Qt::ControlModifier) if (event->modifiers() & Qt::ControlModifier)
setSelected(!isSelected()); setSelected(!isSelected());
} }
/**
* @brief Conductor::mouseMoveEvent
* Manage the mouse move event
* @param event
*/
void Conductor::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
//Left clic
if ((event->buttons() & Qt::LeftButton) && moving_segment)
{
//Snap the mouse pos to grid
QPointF pos_ = Diagram::snapToGrid(event->pos());
//Position of the last point
QPointF p = moved_segment -> middle();
//Calcul the movement
moved_segment -> moveX(pos_.x() - p.x());
moved_segment -> moveY(pos_.y() - p.y());
//Apply the movement
modified_path = true;
has_to_save_profile = true;
segmentsToPath();
calculateTextItemPosition();
}
QGraphicsPathItem::mouseMoveEvent(event);
}
/** /**
* @brief Conductor::mouseReleaseEvent * @brief Conductor::mouseReleaseEvent
* Manage the mouse release event
* @param event * @param event
*/ */
void Conductor::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void Conductor::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
moving_segment = false;
if (has_to_save_profile)
{
saveProfile();
has_to_save_profile = false;
}
if (!(event -> modifiers() & Qt::ControlModifier)) if (!(event -> modifiers() & Qt::ControlModifier))
QGraphicsPathItem::mouseReleaseEvent(event); QGraphicsPathItem::mouseReleaseEvent(event);
} }
@@ -678,56 +632,214 @@ void Conductor::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) {
} }
/** /**
* @brief Conductor::hoverMoveEvent conductor * @brief Conductor::itemChange
* @param e QGraphicsSceneHoverEvent describing the event * @param change
* @param value
* @return
*/ */
void Conductor::hoverMoveEvent(QGraphicsSceneHoverEvent *event) QVariant Conductor::itemChange(GraphicsItemChange change, const QVariant &value)
{ {
if (isSelected()) if (change == QGraphicsItem::ItemSelectedChange)
{ {
//If user hover an handler (square used to modify the path of conductor), if (value.toBool())
//we get the segment corresponding to the handler
int index = m_handler.pointIsHoverHandler(event->pos(), handlerPoints());
if (index > -1)
{ {
ConductorSegment *segment_ = segmentsList().at(index+1); m_previous_z_value = zValue();
if (m_handler.pointIsInHandler(event->pos(), segment_->secondPoint())) setZValue(qAbs(m_previous_z_value) + 10000);
setCursor(Qt::ForbiddenCursor); addHandler();
else if (m_handler.pointIsInHandler(event->pos(), segment_->middle()))
setCursor(segmentsList().at(index+1)->isVertical() ? Qt::SplitHCursor : Qt::SplitVCursor);
} }
else else
setCursor(Qt::ArrowCursor); {
setZValue(m_previous_z_value);
removeHandler();
}
}
else if (change == QGraphicsItem::ItemSceneHasChanged)
{
calculateTextItemPosition();
if(!scene())
removeHandler();
else if (scene() && isSelected())
addHandler();
}
else if (change == QGraphicsItem::ItemVisibleHasChanged) {
calculateTextItemPosition();
}
else if (change == QGraphicsItem::ItemPositionHasChanged && isSelected()) {
adjusteHandlerPos();
} }
QGraphicsPathItem::hoverMoveEvent(event); return(QGraphicsPathItem::itemChange(change, value));
} }
/** /**
Gere les changements relatifs au conducteur * @brief Conductor::sceneEventFilter
Reimplemente ici pour : * @param watched
* positionner le conducteur en avant-plan lorsqu'il est selectionne * @param event
@param change Type de changement * @return
@param value Valeur relative au changement */
*/ bool Conductor::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
QVariant Conductor::itemChange(GraphicsItemChange change, const QVariant &value) { {
if (change == QGraphicsItem::ItemSelectedChange) { //Watched must be an handler
if (value.toBool()) { if(watched->type() == QetGraphicsHandlerItem::Type)
// le conducteur vient de se faire selectionner {
previous_z_value = zValue(); QetGraphicsHandlerItem *qghi = qgraphicsitem_cast<QetGraphicsHandlerItem *>(watched);
setZValue(qAbs(previous_z_value) + 10000);
} else { if(m_handler_vector.contains(qghi)) //Handler must be in m_vector_index, then we can start resize
// le conducteur vient de se faire deselectionner {
setZValue(previous_z_value); m_vector_index = m_handler_vector.indexOf(qghi);
if (m_vector_index != -1)
{
if(event->type() == QEvent::GraphicsSceneMousePress) //Click
{
handlerMousePressEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if(event->type() == QEvent::GraphicsSceneMouseMove) //Move
{
handlerMouseMoveEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseRelease) //Release
{
handlerMouseReleaseEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseDoubleClick) //Double click
{
editProperty();
return true;
}
}
} }
} else if (change == QGraphicsItem::ItemSceneHasChanged) {
// permet de positionner correctement le texte du conducteur lors de son ajout a un schema
calculateTextItemPosition();
} else if (change == QGraphicsItem::ItemVisibleHasChanged) {
// permet de positionner correctement le texte du conducteur lors de son ajout a un schema
calculateTextItemPosition();
} }
return(QGraphicsPathItem::itemChange(change, value));
return false;
}
/**
* @brief Conductor::adjusteHandlerPos
* Adjust the position of the handler item
*/
void Conductor::adjusteHandlerPos()
{
if (m_handler_vector.isEmpty())
return;
if (m_handler_vector.size() == handlerPoints().size())
{
QVector <QPointF> points_vector = mapToScene(handlerPoints());
for (int i = 0 ; i < points_vector.size() ; ++i)
m_handler_vector.at(i)->setPos(points_vector.at(i));
}
}
/**
* @brief Conductor::handlerMousePressEvent
* @param qghi
* @param event
*/
void Conductor::handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event);
//we get the segment corresponding to the handler
if (m_vector_index > -1)
{
qghi->setColor(Qt::cyan);
m_moving_segment = true;
m_moved_segment = segmentsList().at(m_vector_index+1);
before_mov_text_pos_ = m_text_item -> pos();
for(QetGraphicsHandlerItem *handler : m_handler_vector)
if(handler != qghi)
handler->hide();
}
}
/**
* @brief Conductor::handlerMouseMoveEvent
* @param qghi
* @param event
*/
void Conductor::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
if (m_moving_segment)
{
//Snap the mouse pos to grid
QPointF pos_ = Diagram::snapToGrid(mapFromItem(qghi, event->pos()));
//Position of the last point
QPointF p = m_moved_segment -> middle();
//Calcul the movement
m_moved_segment -> moveX(pos_.x() - p.x());
m_moved_segment -> moveY(pos_.y() - p.y());
//Apply the movement
modified_path = true;
has_to_save_profile = true;
segmentsToPath();
calculateTextItemPosition();
qghi->setPos(mapToScene(m_moved_segment->middle()));
}
}
/**
* @brief Conductor::handlerMouseReleaseEvent
* @param qghi
* @param event
*/
void Conductor::handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(event);
Q_UNUSED(qghi);
m_vector_index = -1;
m_moving_segment = false;
if (has_to_save_profile)
{
saveProfile();
has_to_save_profile = false;
}
//When handler is released, the conductor can have more segment than befor the handler was moved
//then we remove all handles and new ones are added
removeHandler();
addHandler();
}
/**
* @brief Conductor::addHandler
* Add handlers for this item
*/
void Conductor::addHandler()
{
if (m_handler_vector.isEmpty() && scene())
{
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(handlerPoints()));
for(QetGraphicsHandlerItem *handler : m_handler_vector)
{
handler->setColor(Qt::blue);
scene()->addItem(handler);
handler->installSceneEventFilter(this);
handler->setZValue(this->zValue()+1);
}
}
}
/**
* @brief Conductor::removeHandler
* Remove the handlers of this item
*/
void Conductor::removeHandler()
{
if (!m_handler_vector.isEmpty())
{
qDeleteAll(m_handler_vector);
m_handler_vector.clear();
}
} }
/** /**
@@ -753,22 +865,6 @@ QPainterPath Conductor::shape() const
QPainterPath shape_(pps.createStroke(path())); QPainterPath shape_(pps.createStroke(path()));
/**
Add handle rect to path, occur a weird bug.
when the conductor is removed from the scene he continue to be painted in the scene and make artefact.
If we save (exactly when we clear the undo stack of project when saving), Qet crash,
Don't add the handle rect to the path seem to work well.
More information here :
https://qelectrotech.org/bugtracker/view.php?id=107
https://qelectrotech.org/forum/viewtopic.php?pid=5619#p5619
https://qelectrotech.org/forum/viewtopic.php?pid=5067#p5067
**/
// if (isSelected()) {
// foreach (QRectF rect, m_handler.handlerRect(handlerPoints())) {
// shape_.addRect(rect);
// }
// }
return shape_; return shape_;
} }

View File

@@ -20,7 +20,6 @@
#include "conductorproperties.h" #include "conductorproperties.h"
#include <QGraphicsPathItem> #include <QGraphicsPathItem>
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
#include "assignvariables.h" #include "assignvariables.h"
class ConductorProfile; class ConductorProfile;
@@ -32,6 +31,8 @@ class ConductorTextItem;
class Element; class Element;
class QETDiagramEditor; class QETDiagramEditor;
class NumerotationContext; class NumerotationContext;
class QetGraphicsHandlerItem;
typedef QPair<QPointF, Qt::Corner> ConductorBend; typedef QPair<QPointF, Qt::Corner> ConductorBend;
typedef QHash<Qt::Corner, ConductorProfile> ConductorProfilesGroup; typedef QHash<Qt::Corner, ConductorProfile> ConductorProfilesGroup;
/** /**
@@ -133,36 +134,45 @@ class Conductor : public QObject, public QGraphicsPathItem
protected: protected:
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
virtual QVariant itemChange(GraphicsItemChange, const QVariant &); virtual QVariant itemChange(GraphicsItemChange, const QVariant &);
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
private: private:
void adjusteHandlerPos();
void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void addHandler();
void removeHandler();
QVector<QetGraphicsHandlerItem *> m_handler_vector;
int m_vector_index = -1;
bool m_mouse_over; bool m_mouse_over;
QetGraphicsHandlerUtility m_handler; /// Functional properties
/// Functional properties
ConductorProperties m_properties; ConductorProperties m_properties;
/// Text input for non simple, non-singleline conductors /// Text input for non simple, non-singleline conductors
ConductorTextItem *m_text_item; ConductorTextItem *m_text_item;
/// Segments composing the conductor /// Segments composing the conductor
ConductorSegment *segments; ConductorSegment *segments;
/// Attributs related to mouse interaction /// Attributs related to mouse interaction
bool moving_segment; bool m_moving_segment;
int moved_point; int moved_point;
qreal previous_z_value; qreal m_previous_z_value;
ConductorSegment *moved_segment; ConductorSegment *m_moved_segment;
QPointF before_mov_text_pos_; QPointF before_mov_text_pos_;
/// Whether the conductor was manually modified by users /// Whether the conductor was manually modified by users
bool modified_path; bool modified_path;
/// Whether the current profile should be saved as soon as possible /// Whether the current profile should be saved as soon as possible
bool has_to_save_profile; bool has_to_save_profile;
/// conductor profile: "photography" of what the conductor is supposed to look /// conductor profile: "photography" of what the conductor is supposed to look
/// like - there is one profile per kind of traject /// like - there is one profile per kind of traject
ConductorProfilesGroup conductor_profiles; ConductorProfilesGroup conductor_profiles;
/// Define whether and how the conductor should be highlighted /// Define whether and how the conductor should be highlighted
Highlight must_highlight_; Highlight must_highlight_;
bool m_valid; bool m_valid;
bool m_freeze_label = false; bool m_freeze_label = false;

View File

@@ -22,6 +22,7 @@
#include "shapegraphicsitempropertieswidget.h" #include "shapegraphicsitempropertieswidget.h"
#include "PropertiesEditor/propertieseditordialog.h" #include "PropertiesEditor/propertieseditordialog.h"
#include "QPropertyUndoCommand/qpropertyundocommand.h" #include "QPropertyUndoCommand/qpropertyundocommand.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h"
#include "qetxml.h" #include "qetxml.h"
/** /**
@@ -37,18 +38,20 @@ QetShapeItem::QetShapeItem(QPointF p1, QPointF p2, ShapeType type, QGraphicsItem
m_shapeType(type), m_shapeType(type),
m_P1 (p1), m_P1 (p1),
m_P2 (p2), m_P2 (p2),
m_hovered(false), m_hovered(false)
m_mouse_grab_handler(false),
m_handler(10)
{ {
if (type == Polygon) m_polygon << m_P1 << m_P2; if (type == Polygon) m_polygon << m_P1 << m_P2;
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemSendsGeometryChanges);
setAcceptHoverEvents(true); setAcceptHoverEvents(true);
m_pen.setStyle(Qt::DashLine); m_pen.setStyle(Qt::DashLine);
} }
QetShapeItem::~QetShapeItem() {} QetShapeItem::~QetShapeItem()
{
if(!m_handler_vector.isEmpty())
qDeleteAll(m_handler_vector);
}
/** /**
* @brief QetShapeItem::setPen * @brief QetShapeItem::setPen
@@ -109,6 +112,7 @@ bool QetShapeItem::setLine(const QLineF &line)
prepareGeometryChange(); prepareGeometryChange();
m_P1 = line.p1(); m_P1 = line.p1();
m_P2 = line.p2(); m_P2 = line.p2();
adjusteHandlerPos();
return true; return true;
} }
@@ -125,6 +129,7 @@ bool QetShapeItem::setRect(const QRectF &rect)
prepareGeometryChange(); prepareGeometryChange();
m_P1 = rect.topLeft(); m_P1 = rect.topLeft();
m_P2 = rect.bottomRight(); m_P2 = rect.bottomRight();
adjusteHandlerPos();
return true; return true;
} }
@@ -142,6 +147,7 @@ bool QetShapeItem::setPolygon(const QPolygonF &polygon)
if (Q_UNLIKELY(m_shapeType != Polygon)) return false; if (Q_UNLIKELY(m_shapeType != Polygon)) return false;
prepareGeometryChange(); prepareGeometryChange();
m_polygon = polygon; m_polygon = polygon;
adjusteHandlerPos();
return true; return true;
} }
@@ -246,23 +252,6 @@ QPainterPath QetShapeItem::shape() const
pps.setJoinStyle(Qt::RoundJoin); pps.setJoinStyle(Qt::RoundJoin);
path = pps.createStroke(path); path = pps.createStroke(path);
if (isSelected())
{
QVector <QPointF> vector;
if (m_shapeType == Line)
vector << m_P1 << m_P2;
else if (m_shapeType == Rectangle || m_shapeType == Ellipse) {
QRectF rect (m_P1, m_P2);
vector << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft();
}
else
vector = m_polygon;
foreach(QRectF r, m_handler.handlerRect(vector))
path.addRect(r);
}
return (path); return (path);
} }
@@ -294,34 +283,15 @@ void QetShapeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti
painter -> restore (); painter -> restore ();
} }
//Draw the shape and handlers if is selected switch (m_shapeType)
switch (m_shapeType) {
{ case Line: painter->drawLine(QLineF(m_P1, m_P2)); break;
case Line: case Rectangle: painter->drawRect(QRectF(m_P1, m_P2)); break;
painter->drawLine(QLineF(m_P1, m_P2)); case Ellipse: painter->drawEllipse(QRectF(m_P1, m_P2)); break;
if (isSelected()) case Polygon: m_close ? painter->drawPolygon(m_polygon) : painter->drawPolyline(m_polygon); break;
m_handler.drawHandler(painter, QVector<QPointF>{m_P1, m_P2}); }
break;
case Rectangle: painter->restore();
painter->drawRect(QRectF(m_P1, m_P2));
if (isSelected())
m_handler.drawHandler(painter, m_handler.pointsForRect(QRectF(m_P1, m_P2)));
break;
case Ellipse:
painter->drawEllipse(QRectF(m_P1, m_P2));
if (isSelected())
m_handler.drawHandler(painter, m_handler.pointsForRect(QRectF(m_P1, m_P2)));
break;
case Polygon:
m_close ? painter->drawPolygon(m_polygon) : painter->drawPolyline(m_polygon);
if (isSelected())
m_handler.drawHandler(painter, m_polygon);
break;
}
painter->restore();
} }
/** /**
@@ -329,142 +299,23 @@ void QetShapeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti
* Handle hover enter event * Handle hover enter event
* @param event * @param event
*/ */
void QetShapeItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { void QetShapeItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
m_hovered = true; m_hovered = true;
QetGraphicsItem::hoverEnterEvent(event); QetGraphicsItem::hoverEnterEvent(event);
} }
void QetShapeItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
{
if (!isSelected()) return;
QVector <QPointF> vector;
switch (m_shapeType)
{
case Line: vector << m_P1 << m_P2; break;
case Rectangle: vector = m_handler.pointsForRect(QRectF(m_P1, m_P2)); break;
case Ellipse: vector = m_handler.pointsForRect(QRectF(m_P1, m_P2)); break;
case Polygon: vector = m_polygon; break;
}
int handler = m_handler.pointIsHoverHandler(event->pos(), vector);
if (handler >= 0)
{
if (m_shapeType & (Line | Polygon)) {
setCursor(Qt::SizeAllCursor);
return;
}
if (handler == 0 || handler == 2 || handler == 5 || handler == 7)
setCursor(Qt::SizeAllCursor);
else if (handler == 1 || handler == 6)
setCursor(Qt::SizeVerCursor);
else if (handler == 3 || handler == 4)
setCursor(Qt::SizeHorCursor);
}
else
setCursor(Qt::OpenHandCursor);
}
/** /**
* @brief QetShapeItem::hoverLeaveEvent * @brief QetShapeItem::hoverLeaveEvent
* Handle hover leave event * Handle hover leave event
* @param event * @param event
*/ */
void QetShapeItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { void QetShapeItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
m_hovered = false; m_hovered = false;
unsetCursor();
QetGraphicsItem::hoverLeaveEvent(event); QetGraphicsItem::hoverLeaveEvent(event);
} }
/**
* @brief QetShapeItem::mousePressEvent
* Handle mouse press event
* @param event
*/
void QetShapeItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
setCursor(Qt::ClosedHandCursor);
//Shape is selected, we see if user click in a handler
if (isSelected())
{
QVector <QPointF> vector;
switch (m_shapeType)
{
case Line: vector << m_P1 << m_P2; break;
case Rectangle: vector = m_handler.pointsForRect(QRectF(m_P1, m_P2)); break;
case Ellipse: vector = m_handler.pointsForRect(QRectF(m_P1, m_P2)); break;
case Polygon: vector = m_polygon; break;
}
m_vector_index = m_handler.pointIsHoverHandler(event->pos(), vector);
if (m_vector_index != -1)
{
//User click on an handler
m_mouse_grab_handler = true;
m_old_P1 = m_P1;
m_old_P2 = m_P2;
m_old_polygon = m_polygon;
return;
}
}
}
QetGraphicsItem::mousePressEvent(event);
}
/**
* @brief QetShapeItem::mouseMoveEvent
* Handle move event
* @param event
*/
void QetShapeItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (m_mouse_grab_handler)
{
QPointF new_pos = event->pos();
if (event->modifiers() != Qt::ControlModifier)
new_pos = mapFromScene(Diagram::snapToGrid(event->scenePos()));
switch (m_shapeType)
{
case Line:
prepareGeometryChange();
m_vector_index == 0 ? m_P1 = new_pos : m_P2 = new_pos;
break;
case Rectangle:
if (m_resize_mode == 1) {
setRect(m_handler.rectForPosAtIndex(QRectF(m_P1, m_P2), new_pos, m_vector_index));
break;
}
else {
setRect(m_handler.mirrorRectForPosAtIndex(QRectF(m_P1, m_P2), new_pos, m_vector_index));
break;
}
case Ellipse:
if (m_resize_mode == 1) {
setRect(m_handler.rectForPosAtIndex(QRectF(m_P1, m_P2), new_pos, m_vector_index));
break;
}
else {
setRect(m_handler.mirrorRectForPosAtIndex(QRectF(m_P1, m_P2), new_pos, m_vector_index));
break;
}
case Polygon:
prepareGeometryChange();
m_polygon.replace(m_vector_index, new_pos);
break;
} //End switch
return;
}
QetGraphicsItem::mouseMoveEvent(event);
}
/** /**
* @brief QetShapeItem::mouseReleaseEvent * @brief QetShapeItem::mouseReleaseEvent
* Handle mouse release event * Handle mouse release event
@@ -472,52 +323,251 @@ void QetShapeItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
*/ */
void QetShapeItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void QetShapeItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{ {
if ((m_shapeType & (Rectangle | Ellipse)) && event->buttonDownPos(Qt::LeftButton) == event->pos()) if (event->buttonDownPos(Qt::LeftButton) == event->pos())
switchResizeMode(); switchResizeMode();
if (m_mouse_grab_handler) QetGraphicsItem::mouseReleaseEvent(event);
{
m_mouse_grab_handler = false;
if (diagram())
{
QPropertyUndoCommand *undo = nullptr;
if ((m_shapeType & (Line | Rectangle | Ellipse)) && (m_P1 != m_old_P1 || m_P2 != m_old_P2))
{
switch(m_shapeType)
{
case Line: undo = new QPropertyUndoCommand(this, "line",QLineF(m_old_P1, m_old_P2), QLineF(m_P1, m_P2)); break;
case Rectangle: undo = new QPropertyUndoCommand(this, "rect",QRectF(m_old_P1, m_old_P2), QRectF(m_P1, m_P2)); break;
case Ellipse: undo = new QPropertyUndoCommand(this, "rect",QRectF(m_old_P1, m_old_P2), QRectF(m_P1, m_P2)); break;
case Polygon: break;
}
if (undo) undo->enableAnimation();
}
else if (m_shapeType == Polygon && (m_polygon != m_old_polygon))
undo = new QPropertyUndoCommand(this, "polygon", m_old_polygon, m_polygon);
if(undo)
{
undo->setText(tr("Modifier %1").arg(name()));
diagram()->undoStack().push(undo);
}
}
setCursor(Qt::OpenHandCursor);
}
QetGraphicsItem::mouseReleaseEvent(event);
} }
/**
* @brief QetShapeItem::itemChange
* @param change
* @param value
* @return
*/
QVariant QetShapeItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
{
if (change == ItemSelectedHasChanged)
{
if (value.toBool() == true) //If this is selected, wa add handlers.
{
QVector <QPointF> points_vector;
switch (m_shapeType)
{
case Line: points_vector << m_P1 << m_P2; break;
case Rectangle: points_vector = QetGraphicsHandlerUtility::pointsForRect(QRectF(m_P1, m_P2)); break;
case Ellipse: points_vector = QetGraphicsHandlerUtility::pointsForRect(QRectF(m_P1, m_P2)); break;
case Polygon: points_vector = m_polygon; break;
}
if(!points_vector.isEmpty() && scene())
{
m_handler_vector = QetGraphicsHandlerItem::handlerForPoint(mapToScene(points_vector));
for(QetGraphicsHandlerItem *handler : m_handler_vector)
{
handler->setColor(Qt::blue);
scene()->addItem(handler);
handler->installSceneEventFilter(this);
}
}
}
else //Else this is deselected, we remove handlers
{
if(!m_handler_vector.isEmpty())
{
qDeleteAll(m_handler_vector);
m_handler_vector.clear();
}
}
}
else if (change == ItemPositionHasChanged)
{
adjusteHandlerPos();
}
else if (change == ItemSceneHasChanged)
{
if (!scene()) //This is removed from scene, then we deselect this, and so, the handlers is also removed.
{
setSelected(false);
}
}
return QGraphicsItem::itemChange(change, value);
}
/**
* @brief QetShapeItem::sceneEventFilter
* @param watched
* @param event
* @return
*/
bool QetShapeItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
{
//Watched must be an handler
if(watched->type() == QetGraphicsHandlerItem::Type)
{
QetGraphicsHandlerItem *qghi = qgraphicsitem_cast<QetGraphicsHandlerItem *>(watched);
if(m_handler_vector.contains(qghi)) //Handler must be in m_vector_index, then we can start resize
{
m_vector_index = m_handler_vector.indexOf(qghi);
if (m_vector_index != -1)
{
if(event->type() == QEvent::GraphicsSceneMousePress) //Click
{
handlerMousePressEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if(event->type() == QEvent::GraphicsSceneMouseMove) //Move
{
handlerMouseMoveEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
else if (event->type() == QEvent::GraphicsSceneMouseRelease) //Release
{
handlerMouseReleaseEvent(qghi, static_cast<QGraphicsSceneMouseEvent *>(event));
return true;
}
}
}
}
return false;
}
/**
* @brief QetShapeItem::switchResizeMode
*/
void QetShapeItem::switchResizeMode() void QetShapeItem::switchResizeMode()
{ {
if (m_resize_mode == 1) { if (m_shapeType & (Rectangle | Ellipse))
m_resize_mode = 2; {
m_handler.setOuterColor(Qt::darkGreen); if (m_resize_mode == 1)
{
m_resize_mode = 2;
for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::darkGreen);
}
else
{
m_resize_mode = 1;
for (QetGraphicsHandlerItem *qghi : m_handler_vector)
qghi->setColor(Qt::blue);
}
} }
else { }
m_resize_mode = 1;
m_handler.setOuterColor(Qt::blue); /**
* @brief QetShapeItem::adjusteHandlerPos
* Adjust the position of the handler item
*/
void QetShapeItem::adjusteHandlerPos()
{
QVector <QPointF> points_vector;
switch (m_shapeType)
{
case Line: points_vector << m_P1 << m_P2; break;
case Rectangle: points_vector = QetGraphicsHandlerUtility::pointsForRect(QRectF(m_P1, m_P2)); break;
case Ellipse: points_vector = QetGraphicsHandlerUtility::pointsForRect(QRectF(m_P1, m_P2)); break;
case Polygon: points_vector = m_polygon; break;
}
if (m_handler_vector.size() == points_vector.size())
{
points_vector = mapToScene(points_vector);
for (int i = 0 ; i < points_vector.size() ; ++i)
m_handler_vector.at(i)->setPos(points_vector.at(i));
}
}
/**
* @brief QetShapeItem::handlerMousePressEvent
* @param qghi
* @param event
*/
void QetShapeItem::handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
m_old_P1 = m_P1;
m_old_P2 = m_P2;
m_old_polygon = m_polygon;
}
/**
* @brief QetShapeItem::handlerMouseMoveEvent
* @param qghi
* @param event
*/
void QetShapeItem::handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
QPointF new_pos = event->scenePos();
if (event->modifiers() != Qt::ControlModifier)
new_pos = Diagram::snapToGrid(event->scenePos());
new_pos = mapFromScene(new_pos);
switch (m_shapeType)
{
case Line:
prepareGeometryChange();
m_vector_index == 0 ? m_P1 = new_pos : m_P2 = new_pos;
adjusteHandlerPos();
break;
case Rectangle:
if (m_resize_mode == 1) {
setRect(QetGraphicsHandlerUtility::rectForPosAtIndex(QRectF(m_P1, m_P2), new_pos, m_vector_index));
break;
}
else {
setRect(QetGraphicsHandlerUtility::mirrorRectForPosAtIndex(QRectF(m_P1, m_P2), new_pos, m_vector_index));
break;
}
case Ellipse:
if (m_resize_mode == 1) {
setRect(QetGraphicsHandlerUtility::rectForPosAtIndex(QRectF(m_P1, m_P2), new_pos, m_vector_index));
break;
}
else {
setRect(QetGraphicsHandlerUtility::mirrorRectForPosAtIndex(QRectF(m_P1, m_P2), new_pos, m_vector_index));
break;
}
case Polygon:
prepareGeometryChange();
m_polygon.replace(m_vector_index, new_pos);
adjusteHandlerPos();
break;
} //End switch
}
/**
* @brief QetShapeItem::handlerMouseReleaseEvent
* @param qghi
* @param event
*/
void QetShapeItem::handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
{
Q_UNUSED(qghi);
Q_UNUSED(event);
if (diagram())
{
QPropertyUndoCommand *undo = nullptr;
if ((m_shapeType & (Line | Rectangle | Ellipse)) && (m_P1 != m_old_P1 || m_P2 != m_old_P2))
{
switch(m_shapeType)
{
case Line: undo = new QPropertyUndoCommand(this, "line",QLineF(m_old_P1, m_old_P2), QLineF(m_P1, m_P2)); break;
case Rectangle: undo = new QPropertyUndoCommand(this, "rect",QRectF(m_old_P1, m_old_P2), QRectF(m_P1, m_P2)); break;
case Ellipse: undo = new QPropertyUndoCommand(this, "rect",QRectF(m_old_P1, m_old_P2), QRectF(m_P1, m_P2)); break;
case Polygon: break;
}
if (undo) undo->enableAnimation();
}
else if (m_shapeType == Polygon && (m_polygon != m_old_polygon))
undo = new QPropertyUndoCommand(this, "polygon", m_old_polygon, m_polygon);
if(undo)
{
undo->setText(tr("Modifier %1").arg(name()));
diagram()->undoStack().push(undo);
}
} }
update();
} }
/** /**

View File

@@ -20,10 +20,11 @@
#include <QPen> #include <QPen>
#include "qetgraphicsitem.h" #include "qetgraphicsitem.h"
#include "QetGraphicsItemModeler/qetgraphicshandlerutility.h" #include "QetGraphicsItemModeler/qetgraphicshandleritem.h"
class QDomElement; class QDomElement;
class QDomDocument; class QDomDocument;
class QetGraphicsHandlerItem;
/** /**
* @brief The QetShapeItem class * @brief The QetShapeItem class
@@ -96,14 +97,18 @@ class QetShapeItem : public QetGraphicsItem
protected: protected:
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
virtual void hoverEnterEvent (QGraphicsSceneHoverEvent *event); virtual void hoverEnterEvent (QGraphicsSceneHoverEvent *event);
virtual void hoverMoveEvent (QGraphicsSceneHoverEvent *event);
virtual void hoverLeaveEvent (QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent (QGraphicsSceneHoverEvent *event);
virtual void mousePressEvent (QGraphicsSceneMouseEvent *event);
virtual void mouseMoveEvent (QGraphicsSceneMouseEvent *event);
virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent *event);
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event);
private: private:
void switchResizeMode(); void switchResizeMode();
void adjusteHandlerPos();
void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
///ATTRIBUTES ///ATTRIBUTES
private: private:
@@ -112,11 +117,10 @@ class QetShapeItem : public QetGraphicsItem
QBrush m_brush; QBrush m_brush;
QPointF m_P1, m_P2, m_old_P1, m_old_P2; QPointF m_P1, m_P2, m_old_P1, m_old_P2;
QPolygonF m_polygon, m_old_polygon; QPolygonF m_polygon, m_old_polygon;
bool m_hovered, bool m_hovered;
m_mouse_grab_handler;
int m_vector_index; int m_vector_index;
QetGraphicsHandlerUtility m_handler;
bool m_close = false; bool m_close = false;
int m_resize_mode = 1; int m_resize_mode = 1;
QVector<QetGraphicsHandlerItem *> m_handler_vector;
}; };
#endif // QETSHAPEITEM_H #endif // QETSHAPEITEM_H

View File

@@ -68,7 +68,9 @@ ConductorPropertiesWidget::~ConductorPropertiesWidget()
*/ */
void ConductorPropertiesWidget::setProperties(const ConductorProperties &properties) void ConductorPropertiesWidget::setProperties(const ConductorProperties &properties)
{ {
if (m_properties == properties) return; if (m_properties == properties)
return;
m_properties = properties; m_properties = properties;
setColorButton(m_properties.color); setColorButton(m_properties.color);
@@ -295,7 +297,7 @@ void ConductorPropertiesWidget::on_m_color_pb_clicked() {
* Set m_color_pb to @color * Set m_color_pb to @color
* @param color * @param color
*/ */
void ConductorPropertiesWidget::setColorButton(const QColor &color) { void ConductorPropertiesWidget::setColorButton(const QColor &color){
QPalette palette; QPalette palette;
palette.setColor(QPalette::Button, color); palette.setColor(QPalette::Button, color);
ui -> m_color_pb -> setStyleSheet(QString("background-color: %1; min-height: 1.5em; border-style: outset; border-width: 2px; border-color: gray; border-radius: 4px;").arg(color.name())); ui -> m_color_pb -> setStyleSheet(QString("background-color: %1; min-height: 1.5em; border-style: outset; border-width: 2px; border-color: gray; border-radius: 4px;").arg(color.name()));