Merge branch 'feature/part-number' into dev

# Conflicts:
#	src/wireviz/Harness.py
This commit is contained in:
Daniel Rojas 2020-07-02 08:26:58 +02:00
commit 5fbe3e6b7e
10 changed files with 827 additions and 12 deletions

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from typing import Optional, List, Any from typing import Optional, List, Any, Union
from dataclasses import dataclass, field from dataclasses import dataclass, field
from wireviz.wv_helper import int2tuple from wireviz.wv_helper import int2tuple
from wireviz import wv_colors from wireviz import wv_colors
@ -10,6 +10,9 @@ from wireviz import wv_colors
@dataclass @dataclass
class Connector: class Connector:
name: str name: str
manufacturer: Optional[str] = None
manufacturer_part_number: Optional[str] = None
internal_part_number: Optional[str] = None
category: Optional[str] = None category: Optional[str] = None
type: Optional[str] = None type: Optional[str] = None
subtype: Optional[str] = None subtype: Optional[str] = None
@ -61,6 +64,9 @@ class Connector:
@dataclass @dataclass
class Cable: class Cable:
name: str name: str
manufacturer: Optional[Union[str, List[str]]] = None
manufacturer_part_number: Optional[Union[str, List[str]]] = None
internal_part_number: Optional[Union[str, List[str]]] = None
category: Optional[str] = None category: Optional[str] = None
type: Optional[str] = None type: Optional[str] = None
gauge: Optional[float] = None gauge: Optional[float] = None
@ -118,6 +124,16 @@ class Cable:
raise Exception('Unknown number of wires. Must specify wirecount or colors (implicit length)') raise Exception('Unknown number of wires. Must specify wirecount or colors (implicit length)')
self.wirecount = len(self.colors) self.wirecount = len(self.colors)
# if lists of part numbers are provided check this is a bundle and that it matches the wirecount.
for idfield in [self.manufacturer, self.manufacturer_part_number, self.internal_part_number]:
if isinstance(idfield, list):
if self.category == "bundle":
# check the length
if len(idfield) != self.wirecount:
raise Exception('lists of part data must match wirecount')
else:
raise Exception('lists of part data are only supported for bundles')
# for BOM generation # for BOM generation
self.wirecount_and_shield = (self.wirecount, self.shield) self.wirecount_and_shield = (self.wirecount, self.shield)

View File

@ -62,6 +62,18 @@ class Harness:
subtype = f', {connector.subtype}' if connector.subtype else '' subtype = f', {connector.subtype}' if connector.subtype else ''
color = wv_colors.translate_color(connector.color, self.color_mode) if connector.color else '' color = wv_colors.translate_color(connector.color, self.color_mode) if connector.color else ''
infostring = f'{connector.type}{subtype} {color}' infostring = f'{connector.type}{subtype} {color}'
# id = identification
identification = [connector.manufacturer,
f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else '',
f'IPN: {connector.internal_part_number}' if connector.internal_part_number else '']
identification = list(filter(None, identification))
if(len(identification) > 0):
infostring = f'{infostring}<br/>'
for attrib in identification:
infostring = f'{infostring}{attrib}, '
infostring = infostring[:-2] # remove trainling comma and space
infostring_l = infostring if connector.ports_right else '' infostring_l = infostring if connector.ports_right else ''
infostring_r = infostring if connector.ports_left else '' infostring_r = infostring if connector.ports_left else ''
@ -83,6 +95,10 @@ class Harness:
>'''.format(infostring_l=infostring_l, infostring_r=infostring_r, colorbar=colorbar)) >'''.format(infostring_l=infostring_l, infostring_r=infostring_r, colorbar=colorbar))
else: # not a ferrule else: # not a ferrule
identification = [connector.manufacturer,
f'MPN: {connector.manufacturer_part_number}' if connector.manufacturer_part_number else '',
f'IPN: {connector.internal_part_number}' if connector.internal_part_number else '']
attributes = [connector.type, attributes = [connector.type,
connector.subtype, connector.subtype,
f'{connector.pincount}-pin' if connector.show_pincount else''] f'{connector.pincount}-pin' if connector.show_pincount else'']
@ -95,7 +111,7 @@ class Harness:
pinouts[0].append(f'<p{pinnumber}l>{pinnumber}') pinouts[0].append(f'<p{pinnumber}l>{pinnumber}')
if connector.ports_right: if connector.ports_right:
pinouts[2].append(f'<p{pinnumber}r>{pinnumber}') pinouts[2].append(f'<p{pinnumber}r>{pinnumber}')
label = [connector.name if connector.show_name else '', attributes, pinouts, connector.notes] label = [connector.name if connector.show_name else '', identification, attributes, pinouts, connector.notes]
dot.node(key, label=nested(label)) dot.node(key, label=nested(label))
if len(connector.loops) > 0: if len(connector.loops) > 0:
@ -124,8 +140,12 @@ class Harness:
elif cable.gauge_unit.upper() == 'AWG': elif cable.gauge_unit.upper() == 'AWG':
awg_fmt = f' ({mm2_equiv(cable.gauge)} mm\u00B2)' awg_fmt = f' ({mm2_equiv(cable.gauge)} mm\u00B2)'
attributes = [cable.type, identification = [cable.manufacturer if not isinstance(cable.manufacturer, list) else '',
f'{len(cable.colors)}x' if cable.show_wirecount else '', f'MPN: {cable.manufacturer_part_number}' if (cable.manufacturer_part_number and not isinstance(cable.manufacturer_part_number, list)) else '',
f'IPN: {cable.internal_part_number}' if (cable.internal_part_number and not isinstance(cable.internal_part_number, list)) else '']
identification = list(filter(None, identification))
attributes = [f'{len(cable.colors)}x' if cable.show_wirecount else '',
f'{cable.gauge} {cable.gauge_unit}{awg_fmt}' if cable.gauge else '', f'{cable.gauge} {cable.gauge_unit}{awg_fmt}' if cable.gauge else '',
'+ S' if cable.shield else '', '+ S' if cable.shield else '',
f'{cable.length} m' if cable.length > 0 else ''] f'{cable.length} m' if cable.length > 0 else '']
@ -136,6 +156,11 @@ class Harness:
html = f'{html}<table border="0" cellspacing="0" cellpadding="3" cellborder="1">' # name+attributes table html = f'{html}<table border="0" cellspacing="0" cellpadding="3" cellborder="1">' # name+attributes table
if cable.show_name: if cable.show_name:
html = f'{html}<tr><td colspan="{len(attributes)}">{cable.name}</td></tr>' html = f'{html}<tr><td colspan="{len(attributes)}">{cable.name}</td></tr>'
if(len(identification) > 0): # print an identification row if values specified
html = f'{html}<tr><td colspan="{len(attributes)}"><table border="0" cellspacing="0" cellpadding="0" cellborder="0"><tr>'
for attrib in identification:
html = f'{html}<td>{attrib}</td>'
html = f'{html}</tr></table></td></tr>' # end identification row
html = f'{html}<tr>' # attribute row html = f'{html}<tr>' # attribute row
for attrib in attributes: for attrib in attributes:
html = f'{html}<td>{attrib}</td>' html = f'{html}<td>{attrib}</td>'
@ -158,6 +183,21 @@ class Harness:
bgcolor = wv_colors.translate_color(connection, 'hex') bgcolor = wv_colors.translate_color(connection, 'hex')
bgcolor = bgcolor if bgcolor != '' else '#ffffff' bgcolor = bgcolor if bgcolor != '' else '#ffffff'
html = f'{html}<tr><td colspan="{len(p)}" cellpadding="0" height="6" bgcolor="{bgcolor}" border="2" sides="tb" port="w{i}"></td></tr>' html = f'{html}<tr><td colspan="{len(p)}" cellpadding="0" height="6" bgcolor="{bgcolor}" border="2" sides="tb" port="w{i}"></td></tr>'
if(cable.category == 'bundle'): # for bundles individual wires can have part information
# create a list of wire parameters
wireidentification = []
if isinstance(cable.manufacturer, list):
wireidentification.append(cable.manufacturer[i - 1])
if isinstance(cable.manufacturer_part_number, list):
wireidentification.append(f'MPN: {cable.manufacturer_part_number[i - 1]}')
if isinstance(cable.internal_part_number, list):
wireidentification.append(f'IPN: {cable.internal_part_number[i - 1]}')
# print parameters into a table row under the wire
if(len(wireidentification) > 0):
html = f'{html}<tr><td colspan="{len(p)}"><table border="0" cellspacing="0" cellborder="0"><tr>'
for attrib in wireidentification:
html = f'{html}<td>{attrib}</td>'
html = f'{html}</tr></table></td></tr>'
if cable.shield: if cable.shield:
p = ['<!-- s_in -->', 'Shield', '<!-- s_out -->'] p = ['<!-- s_in -->', 'Shield', '<!-- s_out -->']
@ -254,7 +294,7 @@ class Harness:
bom_connectors = [] bom_connectors = []
bom_cables = [] bom_cables = []
# connectors # connectors
connector_group = lambda c: (c.type, c.subtype, c.pincount) connector_group = lambda c: (c.type, c.subtype, c.pincount, c.manufacturer, c.manufacturer_part_number, c.internal_part_number)
groups = Counter([connector_group(v) for v in self.connectors.values()]) groups = Counter([connector_group(v) for v in self.connectors.values()])
for group in groups: for group in groups:
items = {k: v for k, v in self.connectors.items() if connector_group(v) == group} items = {k: v for k, v in self.connectors.items() if connector_group(v) == group}
@ -268,13 +308,23 @@ class Harness:
name = f'Connector{conn_type}{conn_subtype}{conn_pincount}{conn_color}' name = f'Connector{conn_type}{conn_subtype}{conn_pincount}{conn_color}'
item = {'item': name, 'qty': len(designators), 'unit': '', item = {'item': name, 'qty': len(designators), 'unit': '',
'designators': designators if shared.category != 'ferrule' else ''} 'designators': designators if shared.category != 'ferrule' else ''}
if shared.manufacturer is not None: # set manufacturer only if it exists
item['manufacturer'] = shared.manufacturer
if shared.manufacturer_part_number is not None: # set part number only if it exists
item['manufacturer part number'] = shared.manufacturer_part_number
if shared.internal_part_number is not None: # set part number only if it exists
item['internal part number'] = shared.internal_part_number
bom_connectors.append(item) bom_connectors.append(item)
bom_connectors = sorted(bom_connectors, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom_connectors = sorted(bom_connectors, key=lambda k: k['item']) # https://stackoverflow.com/a/73050
bom.extend(bom_connectors) bom.extend(bom_connectors)
# cables # cables
# TODO: If category can have other non-empty values than 'bundle', maybe it should be part of item name? # TODO: If category can have other non-empty values than 'bundle', maybe it should be part of item name?
# Otherwise, it can be removed from the cable_group because it will allways be empty. # Otherwise, it can be removed from the cable_group because it will allways be empty.
cable_group = lambda c: (c.category, c.type, c.gauge, c.gauge_unit, c.wirecount, c.shield) cable_group = lambda c: (c.category, c.type, c.gauge, c.gauge_unit, c.wirecount, c.shield,
c.manufacturer if not isinstance(c.manufacturer, list) else None,
c.manufacturer_part_number if not isinstance(c.manufacturer_part_number, list) else None,
c.internal_part_number if not isinstance(c.manufacturer_part_number, list) else None
)
groups = Counter([cable_group(v) for v in self.cables.values() if v.category != 'bundle']) groups = Counter([cable_group(v) for v in self.cables.values() if v.category != 'bundle'])
for group in groups: for group in groups:
items = {k: v for k, v in self.cables.items() if cable_group(v) == group} items = {k: v for k, v in self.cables.items() if cable_group(v) == group}
@ -287,11 +337,17 @@ class Harness:
shield_name = ' shielded' if shared.shield else '' shield_name = ' shielded' if shared.shield else ''
name = f'Cable{cable_type}, {shared.wirecount}{gauge_name}{shield_name}' name = f'Cable{cable_type}, {shared.wirecount}{gauge_name}{shield_name}'
item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators}
bom_cables.append(item) if shared.manufacturer is not None: # set manufacturer only if it exists
item['manufacturer'] = shared.manufacturer
if shared.manufacturer_part_number is not None: # set part number only if it exists
item['manufacturer part number'] = shared.manufacturer_part_number
if shared.internal_part_number is not None: # set part number only if it exists
item['internal part number'] = shared.internal_part_number
bom_cables.append(item)
# bundles (ignores wirecount) # bundles (ignores wirecount)
wirelist = [] wirelist = []
# list all cables again, since bundles are represented as wires internally, with the category='bundle' set # list all cables again, since bundles are represented as wires internally, with the category='bundle' set
bundle_group = lambda b: (b.type, b.gauge, b.gauge_unit, b.length) # TODO: Why is b.lenght included? bundle_group = lambda b: (b.type, b.gauge, b.gauge_unit, b.length) # TODO: Why is b.length included?
groups = Counter([bundle_group(v) for v in self.cables.values() if v.category == 'bundle']) groups = Counter([bundle_group(v) for v in self.cables.values() if v.category == 'bundle'])
for group in groups: for group in groups:
items = {k: v for k, v in self.cables.items() if bundle_group(v) == group} items = {k: v for k, v in self.cables.items() if bundle_group(v) == group}
@ -299,10 +355,13 @@ class Harness:
for bundle in items.values(): for bundle in items.values():
# add each wire from each bundle to the wirelist # add each wire from each bundle to the wirelist
for color in bundle.colors: for color in bundle.colors:
wirelist.append({'type': shared.type, 'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, wireinfo = {'gauge': shared.gauge, 'gauge_unit': shared.gauge_unit, 'length': shared.length, 'color': color, 'designator': bundle.name}
'length': shared.length, 'color': color, 'designator': bundle.name}) wireinfo['manufacturer'] = bundle.manufacturer[index] if isinstance(bundle.manufacturer, list) else None
# join similar wires from all the bundles to a single BOM item wireinfo['manufacturer part number'] = bundle.manufacturer_part_number[index] if isinstance(bundle.manufacturer_part_number, list) else None
wire_group = lambda w: (w['type'], w['gauge'], w['gauge_unit'], w['color']) wireinfo['internal part number'] = bundle.internal_part_number[index] if isinstance(bundle.internal_part_number, list) else None
wirelist.append(wireinfo)
# join similar wires from all the bundles to a single BOM item
wire_group = lambda w: (w['type'], w['gauge'], w['gauge_unit'], w['color'], w['manufacturer'], w['manufacturer part number'], w['internal part number'])
groups = Counter([wire_group(v) for v in wirelist]) groups = Counter([wire_group(v) for v in wirelist])
for group in groups: for group in groups:
items = [v for v in wirelist if wire_group(v) == group] items = [v for v in wirelist if wire_group(v) == group]
@ -317,6 +376,12 @@ class Harness:
gauge_color = f', {shared["color"]}' if shared['color'] != '' else '' gauge_color = f', {shared["color"]}' if shared['color'] != '' else ''
name = f'Wire{wire_type}{gauge_name}{gauge_color}' name = f'Wire{wire_type}{gauge_name}{gauge_color}'
item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators} item = {'item': name, 'qty': round(total_length, 3), 'unit': 'm', 'designators': designators}
if shared['manufacturer'] is not None: # set manufacturer only if it exists
item['manufacturer'] = shared['manufacturer']
if shared['manufacturer part number'] is not None: # set part number only if it exists
item['manufacturer part number'] = shared['manufacturer part number']
if shared['internal part number'] is not None: # set part number only if it exists
item['internal part number'] = shared['internal part number']
bom_cables.append(item) bom_cables.append(item)
bom_cables = sorted(bom_cables, key=lambda k: k['item']) # https://stackoverflow.com/a/73050 bom_cables = sorted(bom_cables, key=lambda k: k['item']) # https://stackoverflow.com/a/73050
bom.extend(bom_cables) bom.extend(bom_cables)
@ -325,6 +390,10 @@ class Harness:
def bom_list(self): def bom_list(self):
bom = self.bom() bom = self.bom()
keys = ['item', 'qty', 'unit', 'designators'] keys = ['item', 'qty', 'unit', 'designators']
# check if any optional fields are set and add to keys if they are
for fieldname in ["manufacturer", "manufacturer part number", "internal part number"]:
if any(fieldname in x for x in bom):
keys.append(fieldname)
bom_list = [] bom_list = []
bom_list.append([k.capitalize() for k in keys]) # create header row with keys bom_list.append([k.capitalize() for k in keys]) # create header row with keys
for item in bom: for item in bom:

View File

@ -10,6 +10,7 @@ import yaml
if __name__ == '__main__': if __name__ == '__main__':
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from wireviz.Harness import Harness from wireviz.Harness import Harness

View File

@ -361,3 +361,61 @@ Output:
[Bill of Materials](tutorial07.bom.tsv) [Bill of Materials](tutorial07.bom.tsv)
## 8 - Part numbers
* Part number information can be added to parts
* Only provided fields will be added to the diagram and bom
* Bundles can have part information specified by wire
[Source](tutorial08.yml):
```yaml
connectors:
X1: &template1 # define a template for later use
type: Molex KK 254
pincount: 4
subtype: female
manufacturer: Molex
manufacturer_part_number: 22013047
X2:
<<: *template1 # reuse template
internal_part_number: CON4
X3:
<<: *template1 # reuse template
cables:
W1:
wirecount: 4
length: 1
gauge: 0.25 mm2
color_code: IEC
manufacturer: CablesCo
manufacturer_part_number: ABC123
internal_part_number: CAB1
W2:
category: bundle
length: 1
gauge: 0.25 mm2
colors: [YE, BK, BK, RD]
manufacturer: [WiresCo,WiresCo,WiresCo,WiresCo]
manufacturer_part_number: [W1-YE,W1-BK,W1-BK,W1-RD]
internal_part_number: [WIRE1,WIRE2,WIRE2,WIRE3]
connections:
-
- X1: [1-4]
- W1: [1-4]
- X2: [1-4]
-
- X1: [1-4]
- W2: [1-4]
- X3: [1-4]
```
Output:
![](tutorial08.png)
[Bill of Materials](tutorial08.bom.tsv)

View File

@ -0,0 +1,7 @@
Item Qty Unit Designators Manufacturer Manufacturer part number Internal part number
Connector, Molex KK 254, female, 4 pins 2 X1, X3 Molex 22013047
Connector, Molex KK 254, female, 4 pins 1 X2 Molex 22013047 CON4
Cable, 4 x 0.25 mm² 1 m W1 CablesCo ABC123 CAB1
Wire, 0.25 mm², BK 2 m W2 WiresCo W1-BK WIRE2
Wire, 0.25 mm², RD 1 m W2 WiresCo W1-RD WIRE3
Wire, 0.25 mm², YE 1 m W2 WiresCo W1-YE WIRE1
1 Item Qty Unit Designators Manufacturer Manufacturer part number Internal part number
2 Connector, Molex KK 254, female, 4 pins 2 X1, X3 Molex 22013047
3 Connector, Molex KK 254, female, 4 pins 1 X2 Molex 22013047 CON4
4 Cable, 4 x 0.25 mm² 1 m W1 CablesCo ABC123 CAB1
5 Wire, 0.25 mm², BK 2 m W2 WiresCo W1-BK WIRE2
6 Wire, 0.25 mm², RD 1 m W2 WiresCo W1-RD WIRE3
7 Wire, 0.25 mm², YE 1 m W2 WiresCo W1-YE WIRE1

36
tutorial/tutorial08.gv Normal file
View File

@ -0,0 +1,36 @@
graph {
// Graph generated by WireViz
// https://github.com/formatc1702/WireViz
graph [bgcolor=white fontname=arial nodesep=0.33 rankdir=LR ranksep=2]
node [fillcolor=white fontname=arial shape=record style=filled]
edge [fontname=arial style=bold]
X1 [label="X1|{Molex|MPN: 22013047}|{Molex KK 254|female|4-pin}|{{<p1r>1|<p2r>2|<p3r>3|<p4r>4}}"]
X2 [label="X2|{Molex|MPN: 22013047|IPN: CON4}|{Molex KK 254|female|4-pin}|{{<p1l>1|<p2l>2|<p3l>3|<p4l>4}}"]
X3 [label="X3|{Molex|MPN: 22013047}|{Molex KK 254|female|4-pin}|{{<p1l>1|<p2l>2|<p3l>3|<p4l>4}}"]
edge [color="#000000:#666600:#000000"]
X1:p1r:e -- W1:w1:w
W1:w1:e -- X2:p1l:w
edge [color="#000000:#ff0000:#000000"]
X1:p2r:e -- W1:w2:w
W1:w2:e -- X2:p2l:w
edge [color="#000000:#ff8000:#000000"]
X1:p3r:e -- W1:w3:w
W1:w3:e -- X2:p3l:w
edge [color="#000000:#ffff00:#000000"]
X1:p4r:e -- W1:w4:w
W1:w4:e -- X2:p4l:w
W1 [label=<<table border="0" cellspacing="0" cellpadding="0"><tr><td><table border="0" cellspacing="0" cellpadding="3" cellborder="1"><tr><td colspan="3">W1</td></tr><tr><td colspan="3"><table border="0" cellspacing="0" cellpadding="0" cellborder="0"><tr><td>CablesCo</td><td>MPN: ABC123</td><td>IPN: CAB1</td></tr></table></td></tr><tr><td>4x</td><td>0.25 mm²</td><td>1 m</td></tr></table></td></tr><tr><td>&nbsp;</td></tr><tr><td><table border="0" cellspacing="0" cellborder="0"><tr><td>X1:1</td><td>BN</td><td>X2:1</td></tr><tr><td colspan="3" cellpadding="0" height="6" bgcolor="#666600" border="2" sides="tb" port="w1"></td></tr><tr><td>X1:2</td><td>RD</td><td>X2:2</td></tr><tr><td colspan="3" cellpadding="0" height="6" bgcolor="#ff0000" border="2" sides="tb" port="w2"></td></tr><tr><td>X1:3</td><td>OG</td><td>X2:3</td></tr><tr><td colspan="3" cellpadding="0" height="6" bgcolor="#ff8000" border="2" sides="tb" port="w3"></td></tr><tr><td>X1:4</td><td>YE</td><td>X2:4</td></tr><tr><td colspan="3" cellpadding="0" height="6" bgcolor="#ffff00" border="2" sides="tb" port="w4"></td></tr><tr><td>&nbsp;</td></tr></table></td></tr></table>> fillcolor=white margin=0 shape=box style=""]
edge [color="#000000:#ffff00:#000000"]
X1:p1r:e -- W2:w1:w
W2:w1:e -- X3:p1l:w
edge [color="#000000:#000000:#000000"]
X1:p2r:e -- W2:w2:w
W2:w2:e -- X3:p2l:w
edge [color="#000000:#000000:#000000"]
X1:p3r:e -- W2:w3:w
W2:w3:e -- X3:p3l:w
edge [color="#000000:#ff0000:#000000"]
X1:p4r:e -- W2:w4:w
W2:w4:e -- X3:p4l:w
W2 [label=<<table border="0" cellspacing="0" cellpadding="0"><tr><td><table border="0" cellspacing="0" cellpadding="3" cellborder="1"><tr><td colspan="3">W2</td></tr><tr><td>4x</td><td>0.25 mm²</td><td>1 m</td></tr></table></td></tr><tr><td>&nbsp;</td></tr><tr><td><table border="0" cellspacing="0" cellborder="0"><tr><td>X1:1</td><td>YE</td><td>X3:1</td></tr><tr><td colspan="3" cellpadding="0" height="6" bgcolor="#ffff00" border="2" sides="tb" port="w1"></td></tr><tr><td colspan="3"><table border="0" cellspacing="0" cellborder="0"><tr><td>WiresCo</td><td>MPN: W1-YE</td><td>IPN: WIRE1</td></tr></table></td></tr><tr><td>X1:2</td><td>BK</td><td>X3:2</td></tr><tr><td colspan="3" cellpadding="0" height="6" bgcolor="#000000" border="2" sides="tb" port="w2"></td></tr><tr><td colspan="3"><table border="0" cellspacing="0" cellborder="0"><tr><td>WiresCo</td><td>MPN: W1-BK</td><td>IPN: WIRE2</td></tr></table></td></tr><tr><td>X1:3</td><td>BK</td><td>X3:3</td></tr><tr><td colspan="3" cellpadding="0" height="6" bgcolor="#000000" border="2" sides="tb" port="w3"></td></tr><tr><td colspan="3"><table border="0" cellspacing="0" cellborder="0"><tr><td>WiresCo</td><td>MPN: W1-BK</td><td>IPN: WIRE2</td></tr></table></td></tr><tr><td>X1:4</td><td>RD</td><td>X3:4</td></tr><tr><td colspan="3" cellpadding="0" height="6" bgcolor="#ff0000" border="2" sides="tb" port="w4"></td></tr><tr><td colspan="3"><table border="0" cellspacing="0" cellborder="0"><tr><td>WiresCo</td><td>MPN: W1-RD</td><td>IPN: WIRE3</td></tr></table></td></tr><tr><td>&nbsp;</td></tr></table></td></tr></table>> fillcolor=white margin=0 shape=box style="filled,dashed"]
}

294
tutorial/tutorial08.html Normal file
View File

@ -0,0 +1,294 @@
<html><body style="font-family:Arial"><h1>Diagram</h1><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="1017pt" height="508pt"
viewBox="0.00 0.00 1017.00 507.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 503.5)">
<title>%3</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-503.5 1013,-503.5 1013,4 -4,4"/>
<!-- X1 -->
<g id="node1" class="node">
<title>X1</title>
<polygon fill="#ffffff" stroke="#000000" points="0,-207.5 0,-368.5 216,-368.5 216,-207.5 0,-207.5"/>
<text text-anchor="middle" x="108" y="-353.3" font-family="arial" font-size="14.00" fill="#000000">X1</text>
<polyline fill="none" stroke="#000000" points="0,-345.5 216,-345.5 "/>
<text text-anchor="middle" x="37.5" y="-330.3" font-family="arial" font-size="14.00" fill="#000000">Molex</text>
<polyline fill="none" stroke="#000000" points="75,-322.5 75,-345.5 "/>
<text text-anchor="middle" x="145.5" y="-330.3" font-family="arial" font-size="14.00" fill="#000000">MPN: 22013047</text>
<polyline fill="none" stroke="#000000" points="0,-322.5 216,-322.5 "/>
<text text-anchor="middle" x="53.5" y="-307.3" font-family="arial" font-size="14.00" fill="#000000">Molex KK 254</text>
<polyline fill="none" stroke="#000000" points="107,-299.5 107,-322.5 "/>
<text text-anchor="middle" x="137" y="-307.3" font-family="arial" font-size="14.00" fill="#000000">female</text>
<polyline fill="none" stroke="#000000" points="167,-299.5 167,-322.5 "/>
<text text-anchor="middle" x="191.5" y="-307.3" font-family="arial" font-size="14.00" fill="#000000">4&#45;pin</text>
<polyline fill="none" stroke="#000000" points="0,-299.5 216,-299.5 "/>
<text text-anchor="middle" x="108" y="-284.3" font-family="arial" font-size="14.00" fill="#000000">1</text>
<polyline fill="none" stroke="#000000" points="0,-276.5 216,-276.5 "/>
<text text-anchor="middle" x="108" y="-261.3" font-family="arial" font-size="14.00" fill="#000000">2</text>
<polyline fill="none" stroke="#000000" points="0,-253.5 216,-253.5 "/>
<text text-anchor="middle" x="108" y="-238.3" font-family="arial" font-size="14.00" fill="#000000">3</text>
<polyline fill="none" stroke="#000000" points="0,-230.5 216,-230.5 "/>
<text text-anchor="middle" x="108" y="-215.3" font-family="arial" font-size="14.00" fill="#000000">4</text>
</g>
<!-- W1 -->
<g id="node4" class="node">
<title>W1</title>
<polygon fill="none" stroke="#000000" points="597.5,-499.5 360.5,-499.5 360.5,-296.5 597.5,-296.5 597.5,-499.5"/>
<polygon fill="none" stroke="#000000" points="361,-476 361,-499 598,-499 598,-476 361,-476"/>
<text text-anchor="start" x="468.5" y="-483.8" font-family="arial" font-size="14.00" fill="#000000">W1</text>
<polygon fill="none" stroke="#000000" points="361,-453 361,-476 598,-476 598,-453 361,-453"/>
<text text-anchor="start" x="365" y="-460.8" font-family="arial" font-size="14.00" fill="#000000">CablesCo</text>
<text text-anchor="start" x="430" y="-460.8" font-family="arial" font-size="14.00" fill="#000000">MPN: ABC123</text>
<text text-anchor="start" x="524" y="-460.8" font-family="arial" font-size="14.00" fill="#000000">IPN: CAB1</text>
<polygon fill="none" stroke="#000000" points="361,-430 361,-453 440,-453 440,-430 361,-430"/>
<text text-anchor="start" x="392.5" y="-437.8" font-family="arial" font-size="14.00" fill="#000000">4x</text>
<polygon fill="none" stroke="#000000" points="440,-430 440,-453 537,-453 537,-430 440,-430"/>
<text text-anchor="start" x="458" y="-437.8" font-family="arial" font-size="14.00" fill="#000000">0.25 mm²</text>
<polygon fill="none" stroke="#000000" points="537,-430 537,-453 598,-453 598,-430 537,-430"/>
<text text-anchor="start" x="555" y="-437.8" font-family="arial" font-size="14.00" fill="#000000">1 m</text>
<text text-anchor="start" x="477.5" y="-418.8" font-family="arial" font-size="14.00" fill="#000000"> </text>
<text text-anchor="start" x="386.5" y="-401.8" font-family="arial" font-size="14.00" fill="#000000">X1:1</text>
<text text-anchor="start" x="469.5" y="-401.8" font-family="arial" font-size="14.00" fill="#000000">BN</text>
<text text-anchor="start" x="542" y="-401.8" font-family="arial" font-size="14.00" fill="#000000">X2:1</text>
<polygon fill="#666600" stroke="transparent" points="361,-390 361,-396 598,-396 598,-390 361,-390"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="362,-391 597,-391 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-395 362,-395 "/>
<text text-anchor="start" x="386.5" y="-376.8" font-family="arial" font-size="14.00" fill="#000000">X1:2</text>
<text text-anchor="start" x="469" y="-376.8" font-family="arial" font-size="14.00" fill="#000000">RD</text>
<text text-anchor="start" x="542" y="-376.8" font-family="arial" font-size="14.00" fill="#000000">X2:2</text>
<polygon fill="#ff0000" stroke="transparent" stroke-width="2" points="361,-365 361,-371 598,-371 598,-365 361,-365"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="362,-366 597,-366 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-370 362,-370 "/>
<text text-anchor="start" x="386.5" y="-351.8" font-family="arial" font-size="14.00" fill="#000000">X1:3</text>
<text text-anchor="start" x="468.5" y="-351.8" font-family="arial" font-size="14.00" fill="#000000">OG</text>
<text text-anchor="start" x="542" y="-351.8" font-family="arial" font-size="14.00" fill="#000000">X2:3</text>
<polygon fill="#ff8000" stroke="transparent" stroke-width="2" points="361,-340 361,-346 598,-346 598,-340 361,-340"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="362,-341 597,-341 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-345 362,-345 "/>
<text text-anchor="start" x="386.5" y="-326.8" font-family="arial" font-size="14.00" fill="#000000">X1:4</text>
<text text-anchor="start" x="470" y="-326.8" font-family="arial" font-size="14.00" fill="#000000">YE</text>
<text text-anchor="start" x="542" y="-326.8" font-family="arial" font-size="14.00" fill="#000000">X2:4</text>
<polygon fill="#ffff00" stroke="transparent" stroke-width="2" points="361,-315 361,-321 598,-321 598,-315 361,-315"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="362,-316 597,-316 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-320 362,-320 "/>
<text text-anchor="start" x="400" y="-301.8" font-family="arial" font-size="14.00" fill="#000000"> </text>
</g>
<!-- X1&#45;&#45;W1 -->
<g id="edge1" class="edge">
<title>X1:e&#45;&#45;W1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-286C297.5489,-288.2668 283.4154,-393.2668 361,-391"/>
<path fill="none" stroke="#666600" stroke-width="2" d="M216,-288C295.5667,-288 281.4333,-393 361,-393"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-290C293.5846,-287.7332 279.4511,-392.7332 361,-395"/>
</g>
<!-- X1&#45;&#45;W1 -->
<g id="edge3" class="edge">
<title>X1:e&#45;&#45;W1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-263C297.0327,-265.2523 283.9354,-368.2523 361,-366"/>
<path fill="none" stroke="#ff0000" stroke-width="2" d="M216,-265C295.0487,-265 281.9513,-368 361,-368"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-267C293.0646,-264.7477 279.9673,-367.7477 361,-370"/>
</g>
<!-- X1&#45;&#45;W1 -->
<g id="edge5" class="edge">
<title>X1:e&#45;&#45;W1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-240C296.5231,-242.2374 284.4486,-343.2374 361,-341"/>
<path fill="none" stroke="#ff8000" stroke-width="2" d="M216,-242C294.5372,-242 282.4628,-343 361,-343"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-244C292.5514,-241.7626 280.4769,-342.7626 361,-345"/>
</g>
<!-- X1&#45;&#45;W1 -->
<g id="edge7" class="edge">
<title>X1:e&#45;&#45;W1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-217C296.0202,-219.2222 284.955,-318.2222 361,-316"/>
<path fill="none" stroke="#ffff00" stroke-width="2" d="M216,-219C294.0326,-219 282.9674,-318 361,-318"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-221C292.045,-218.7778 280.9798,-317.7778 361,-320"/>
</g>
<!-- W2 -->
<g id="node5" class="node">
<title>W2</title>
<polygon fill="#ffffff" stroke="#000000" stroke-dasharray="5,2" points="598,-272 360,-272 360,0 598,0 598,-272"/>
<polygon fill="none" stroke="#000000" points="360,-249 360,-272 598,-272 598,-249 360,-249"/>
<text text-anchor="start" x="468" y="-256.8" font-family="arial" font-size="14.00" fill="#000000">W2</text>
<polygon fill="none" stroke="#000000" points="360,-226 360,-249 422,-249 422,-226 360,-226"/>
<text text-anchor="start" x="383" y="-233.8" font-family="arial" font-size="14.00" fill="#000000">4x</text>
<polygon fill="none" stroke="#000000" points="422,-226 422,-249 528,-249 528,-226 422,-226"/>
<text text-anchor="start" x="444.5" y="-233.8" font-family="arial" font-size="14.00" fill="#000000">0.25 mm²</text>
<polygon fill="none" stroke="#000000" points="528,-226 528,-249 598,-249 598,-226 528,-226"/>
<text text-anchor="start" x="550.5" y="-233.8" font-family="arial" font-size="14.00" fill="#000000">1 m</text>
<text text-anchor="start" x="477" y="-214.8" font-family="arial" font-size="14.00" fill="#000000"> </text>
<text text-anchor="start" x="397.5" y="-197.8" font-family="arial" font-size="14.00" fill="#000000">X1:1</text>
<text text-anchor="start" x="486.5" y="-197.8" font-family="arial" font-size="14.00" fill="#000000">YE</text>
<text text-anchor="start" x="547" y="-197.8" font-family="arial" font-size="14.00" fill="#000000">X3:1</text>
<polygon fill="#ffff00" stroke="transparent" points="360,-186 360,-192 598,-192 598,-186 360,-186"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="361,-187 597,-187 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-191 361,-191 "/>
<text text-anchor="start" x="364.5" y="-170.8" font-family="arial" font-size="14.00" fill="#000000">WiresCo</text>
<text text-anchor="start" x="425.5" y="-170.8" font-family="arial" font-size="14.00" fill="#000000">MPN: W1&#45;YE</text>
<text text-anchor="start" x="516" y="-170.8" font-family="arial" font-size="14.00" fill="#000000">IPN: WIRE1</text>
<text text-anchor="start" x="397.5" y="-149.8" font-family="arial" font-size="14.00" fill="#000000">X1:2</text>
<text text-anchor="start" x="486.5" y="-149.8" font-family="arial" font-size="14.00" fill="#000000">BK</text>
<text text-anchor="start" x="547" y="-149.8" font-family="arial" font-size="14.00" fill="#000000">X3:2</text>
<polygon fill="#000000" stroke="transparent" points="360,-138 360,-144 598,-144 598,-138 360,-138"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="361,-139 597,-139 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-143 361,-143 "/>
<text text-anchor="start" x="364.5" y="-122.8" font-family="arial" font-size="14.00" fill="#000000">WiresCo</text>
<text text-anchor="start" x="425.5" y="-122.8" font-family="arial" font-size="14.00" fill="#000000">MPN: W1&#45;BK</text>
<text text-anchor="start" x="516" y="-122.8" font-family="arial" font-size="14.00" fill="#000000">IPN: WIRE2</text>
<text text-anchor="start" x="397.5" y="-101.8" font-family="arial" font-size="14.00" fill="#000000">X1:3</text>
<text text-anchor="start" x="486.5" y="-101.8" font-family="arial" font-size="14.00" fill="#000000">BK</text>
<text text-anchor="start" x="547" y="-101.8" font-family="arial" font-size="14.00" fill="#000000">X3:3</text>
<polygon fill="#000000" stroke="transparent" points="360,-90 360,-96 598,-96 598,-90 360,-90"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="361,-91 597,-91 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-95 361,-95 "/>
<text text-anchor="start" x="364.5" y="-74.8" font-family="arial" font-size="14.00" fill="#000000">WiresCo</text>
<text text-anchor="start" x="425.5" y="-74.8" font-family="arial" font-size="14.00" fill="#000000">MPN: W1&#45;BK</text>
<text text-anchor="start" x="516" y="-74.8" font-family="arial" font-size="14.00" fill="#000000">IPN: WIRE2</text>
<text text-anchor="start" x="397.5" y="-53.8" font-family="arial" font-size="14.00" fill="#000000">X1:4</text>
<text text-anchor="start" x="485.5" y="-53.8" font-family="arial" font-size="14.00" fill="#000000">RD</text>
<text text-anchor="start" x="547" y="-53.8" font-family="arial" font-size="14.00" fill="#000000">X3:4</text>
<polygon fill="#ff0000" stroke="transparent" points="360,-42 360,-48 598,-48 598,-42 360,-42"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="361,-43 597,-43 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-47 361,-47 "/>
<text text-anchor="start" x="364" y="-26.8" font-family="arial" font-size="14.00" fill="#000000">WiresCo</text>
<text text-anchor="start" x="424" y="-26.8" font-family="arial" font-size="14.00" fill="#000000">MPN: W1&#45;RD</text>
<text text-anchor="start" x="516" y="-26.8" font-family="arial" font-size="14.00" fill="#000000">IPN: WIRE3</text>
<text text-anchor="start" x="411" y="-5.8" font-family="arial" font-size="14.00" fill="#000000"> </text>
</g>
<!-- X1&#45;&#45;W2 -->
<g id="edge9" class="edge">
<title>X1:e&#45;&#45;W2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-286C291.6789,-288.2274 280.347,-189.2274 360,-187"/>
<path fill="none" stroke="#ffff00" stroke-width="2" d="M216,-288C293.666,-288 282.334,-189 360,-189"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-290C295.653,-287.7726 284.3211,-188.7726 360,-191"/>
</g>
<!-- X1&#45;&#45;W2 -->
<g id="edge11" class="edge">
<title>X1:e&#45;&#45;W2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-263C298.4977,-265.394 273.5807,-141.394 360,-139"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-265C300.4585,-265 275.5415,-141 360,-141"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-267C302.4193,-264.606 277.5023,-140.606 360,-143"/>
</g>
<!-- X1&#45;&#45;W2 -->
<g id="edge13" class="edge">
<title>X1:e&#45;&#45;W2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-240C306.1634,-242.5208 265.9746,-93.5208 360,-91"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-242C308.0944,-242 267.9056,-93 360,-93"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-244C310.0254,-241.4792 269.8366,-92.4792 360,-95"/>
</g>
<!-- X1&#45;&#45;W2 -->
<g id="edge15" class="edge">
<title>X1:e&#45;&#45;W2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-217C314.4801,-219.6203 257.7171,-45.6203 360,-43"/>
<path fill="none" stroke="#ff0000" stroke-width="2" d="M216,-219C316.3815,-219 259.6185,-45 360,-45"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-221C318.2829,-218.3797 261.5199,-44.3797 360,-47"/>
</g>
<!-- X2 -->
<g id="node2" class="node">
<title>X2</title>
<polygon fill="#ffffff" stroke="#000000" points="742,-309.5 742,-470.5 1009,-470.5 1009,-309.5 742,-309.5"/>
<text text-anchor="middle" x="875.5" y="-455.3" font-family="arial" font-size="14.00" fill="#000000">X2</text>
<polyline fill="none" stroke="#000000" points="742,-447.5 1009,-447.5 "/>
<text text-anchor="middle" x="770" y="-432.3" font-family="arial" font-size="14.00" fill="#000000">Molex</text>
<polyline fill="none" stroke="#000000" points="798,-424.5 798,-447.5 "/>
<text text-anchor="middle" x="859" y="-432.3" font-family="arial" font-size="14.00" fill="#000000">MPN: 22013047</text>
<polyline fill="none" stroke="#000000" points="920,-424.5 920,-447.5 "/>
<text text-anchor="middle" x="964.5" y="-432.3" font-family="arial" font-size="14.00" fill="#000000">IPN: CON4</text>
<polyline fill="none" stroke="#000000" points="742,-424.5 1009,-424.5 "/>
<text text-anchor="middle" x="804" y="-409.3" font-family="arial" font-size="14.00" fill="#000000">Molex KK 254</text>
<polyline fill="none" stroke="#000000" points="866,-401.5 866,-424.5 "/>
<text text-anchor="middle" x="904.5" y="-409.3" font-family="arial" font-size="14.00" fill="#000000">female</text>
<polyline fill="none" stroke="#000000" points="943,-401.5 943,-424.5 "/>
<text text-anchor="middle" x="976" y="-409.3" font-family="arial" font-size="14.00" fill="#000000">4&#45;pin</text>
<polyline fill="none" stroke="#000000" points="742,-401.5 1009,-401.5 "/>
<text text-anchor="middle" x="875.5" y="-386.3" font-family="arial" font-size="14.00" fill="#000000">1</text>
<polyline fill="none" stroke="#000000" points="742,-378.5 1009,-378.5 "/>
<text text-anchor="middle" x="875.5" y="-363.3" font-family="arial" font-size="14.00" fill="#000000">2</text>
<polyline fill="none" stroke="#000000" points="742,-355.5 1009,-355.5 "/>
<text text-anchor="middle" x="875.5" y="-340.3" font-family="arial" font-size="14.00" fill="#000000">3</text>
<polyline fill="none" stroke="#000000" points="742,-332.5 1009,-332.5 "/>
<text text-anchor="middle" x="875.5" y="-317.3" font-family="arial" font-size="14.00" fill="#000000">4</text>
</g>
<!-- X3 -->
<g id="node3" class="node">
<title>X3</title>
<polygon fill="#ffffff" stroke="#000000" points="767.5,-71.5 767.5,-232.5 983.5,-232.5 983.5,-71.5 767.5,-71.5"/>
<text text-anchor="middle" x="875.5" y="-217.3" font-family="arial" font-size="14.00" fill="#000000">X3</text>
<polyline fill="none" stroke="#000000" points="767.5,-209.5 983.5,-209.5 "/>
<text text-anchor="middle" x="805" y="-194.3" font-family="arial" font-size="14.00" fill="#000000">Molex</text>
<polyline fill="none" stroke="#000000" points="842.5,-186.5 842.5,-209.5 "/>
<text text-anchor="middle" x="913" y="-194.3" font-family="arial" font-size="14.00" fill="#000000">MPN: 22013047</text>
<polyline fill="none" stroke="#000000" points="767.5,-186.5 983.5,-186.5 "/>
<text text-anchor="middle" x="821" y="-171.3" font-family="arial" font-size="14.00" fill="#000000">Molex KK 254</text>
<polyline fill="none" stroke="#000000" points="874.5,-163.5 874.5,-186.5 "/>
<text text-anchor="middle" x="904.5" y="-171.3" font-family="arial" font-size="14.00" fill="#000000">female</text>
<polyline fill="none" stroke="#000000" points="934.5,-163.5 934.5,-186.5 "/>
<text text-anchor="middle" x="959" y="-171.3" font-family="arial" font-size="14.00" fill="#000000">4&#45;pin</text>
<polyline fill="none" stroke="#000000" points="767.5,-163.5 983.5,-163.5 "/>
<text text-anchor="middle" x="875.5" y="-148.3" font-family="arial" font-size="14.00" fill="#000000">1</text>
<polyline fill="none" stroke="#000000" points="767.5,-140.5 983.5,-140.5 "/>
<text text-anchor="middle" x="875.5" y="-125.3" font-family="arial" font-size="14.00" fill="#000000">2</text>
<polyline fill="none" stroke="#000000" points="767.5,-117.5 983.5,-117.5 "/>
<text text-anchor="middle" x="875.5" y="-102.3" font-family="arial" font-size="14.00" fill="#000000">3</text>
<polyline fill="none" stroke="#000000" points="767.5,-94.5 983.5,-94.5 "/>
<text text-anchor="middle" x="875.5" y="-79.3" font-family="arial" font-size="14.00" fill="#000000">4</text>
</g>
<!-- W1&#45;&#45;X2 -->
<g id="edge2" class="edge">
<title>W1:e&#45;&#45;X2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-391C661.6447,-391.0344 677.6169,-388.0344 742,-388"/>
<path fill="none" stroke="#666600" stroke-width="2" d="M598,-393C662.0139,-393 677.9861,-390 742,-390"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-395C662.3831,-394.9656 678.3553,-391.9656 742,-392"/>
</g>
<!-- W1&#45;&#45;X2 -->
<g id="edge4" class="edge">
<title>W1:e&#45;&#45;X2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-366C661.8768,-366.0039 677.8737,-365.0039 742,-365"/>
<path fill="none" stroke="#ff0000" stroke-width="2" d="M598,-368C662.0015,-368 677.9985,-367 742,-367"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-370C662.1263,-369.9961 678.1232,-368.9961 742,-369"/>
</g>
<!-- W1&#45;&#45;X2 -->
<g id="edge6" class="edge">
<title>W1:e&#45;&#45;X2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-341C662.1263,-341.0039 678.1232,-342.0039 742,-342"/>
<path fill="none" stroke="#ff8000" stroke-width="2" d="M598,-343C662.0015,-343 677.9985,-344 742,-344"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-345C661.8768,-344.9961 677.8737,-345.9961 742,-346"/>
</g>
<!-- W1&#45;&#45;X2 -->
<g id="edge8" class="edge">
<title>W1:e&#45;&#45;X2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-316C662.3831,-316.0344 678.3553,-319.0344 742,-319"/>
<path fill="none" stroke="#ffff00" stroke-width="2" d="M598,-318C662.0139,-318 677.9861,-321 742,-321"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-320C661.6447,-319.9656 677.6169,-322.9656 742,-323"/>
</g>
<!-- W2&#45;&#45;X3 -->
<g id="edge10" class="edge">
<title>W2:e&#45;&#45;X3:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-187C673.2588,-188.2364 688.5443,-151.2364 767.5,-150"/>
<path fill="none" stroke="#ffff00" stroke-width="2" d="M598,-189C675.1073,-189 690.3927,-152 767.5,-152"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-191C676.9557,-189.7636 692.2412,-152.7636 767.5,-154"/>
</g>
<!-- W2&#45;&#45;X3 -->
<g id="edge12" class="edge">
<title>W2:e&#45;&#45;X3:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-139C672.4317,-139.3233 690.8879,-127.3233 767.5,-127"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-141C673.5219,-141 691.9781,-129 767.5,-129"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-143C674.6121,-142.6767 693.0683,-130.6767 767.5,-131"/>
</g>
<!-- W2&#45;&#45;X3 -->
<g id="edge14" class="edge">
<title>W2:e&#45;&#45;X3:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-91C674.709,-91.3668 693.0999,-104.3668 767.5,-104"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-93C673.5546,-93 691.9454,-106 767.5,-106"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-95C672.4001,-94.6332 690.791,-107.6332 767.5,-108"/>
</g>
<!-- W2&#45;&#45;X3 -->
<g id="edge16" class="edge">
<title>W2:e&#45;&#45;X3:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-43C677.062,-44.2617 692.1555,-82.2617 767.5,-81"/>
<path fill="none" stroke="#ff0000" stroke-width="2" d="M598,-45C675.2033,-45 690.2967,-83 767.5,-83"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-47C673.3445,-45.7383 688.438,-83.7383 767.5,-85"/>
</g>
</g>
</svg>
<h1>Bill of Materials</h1><table style="border:1px solid #000000; font-size: 14pt; border-spacing: 0px"><tr><th align="left" style="border:1px solid #000000; padding: 8px">Item</th><th align="left" style="border:1px solid #000000; padding: 8px">Qty</th><th align="left" style="border:1px solid #000000; padding: 8px">Unit</th><th align="left" style="border:1px solid #000000; padding: 8px">Designators</th><th align="left" style="border:1px solid #000000; padding: 8px">Manufacturer</th><th align="left" style="border:1px solid #000000; padding: 8px">Manufacturer part number</th><th align="left" style="border:1px solid #000000; padding: 8px">Internal part number</th></tr><tr><td style="border:1px solid #000000; padding: 4px">Connector, Molex KK 254, female, 4 pins</td><td align="right" style="border:1px solid #000000; padding: 4px">2</td><td style="border:1px solid #000000; padding: 4px"></td><td style="border:1px solid #000000; padding: 4px">X1, X3</td><td style="border:1px solid #000000; padding: 4px">Molex</td><td style="border:1px solid #000000; padding: 4px">22013047</td><td style="border:1px solid #000000; padding: 4px"></td></tr><tr><td style="border:1px solid #000000; padding: 4px">Connector, Molex KK 254, female, 4 pins</td><td align="right" style="border:1px solid #000000; padding: 4px">1</td><td style="border:1px solid #000000; padding: 4px"></td><td style="border:1px solid #000000; padding: 4px">X2</td><td style="border:1px solid #000000; padding: 4px">Molex</td><td style="border:1px solid #000000; padding: 4px">22013047</td><td style="border:1px solid #000000; padding: 4px">CON4</td></tr><tr><td style="border:1px solid #000000; padding: 4px">Cable, 4 x 0.25 mm²</td><td align="right" style="border:1px solid #000000; padding: 4px">1</td><td style="border:1px solid #000000; padding: 4px">m</td><td style="border:1px solid #000000; padding: 4px">W1</td><td style="border:1px solid #000000; padding: 4px">CablesCo</td><td style="border:1px solid #000000; padding: 4px">ABC123</td><td style="border:1px solid #000000; padding: 4px">CAB1</td></tr><tr><td style="border:1px solid #000000; padding: 4px">Wire, 0.25 mm², BK</td><td align="right" style="border:1px solid #000000; padding: 4px">2</td><td style="border:1px solid #000000; padding: 4px">m</td><td style="border:1px solid #000000; padding: 4px">W2</td><td style="border:1px solid #000000; padding: 4px">WiresCo</td><td style="border:1px solid #000000; padding: 4px">W1-BK</td><td style="border:1px solid #000000; padding: 4px">WIRE2</td></tr><tr><td style="border:1px solid #000000; padding: 4px">Wire, 0.25 mm², RD</td><td align="right" style="border:1px solid #000000; padding: 4px">1</td><td style="border:1px solid #000000; padding: 4px">m</td><td style="border:1px solid #000000; padding: 4px">W2</td><td style="border:1px solid #000000; padding: 4px">WiresCo</td><td style="border:1px solid #000000; padding: 4px">W1-RD</td><td style="border:1px solid #000000; padding: 4px">WIRE3</td></tr><tr><td style="border:1px solid #000000; padding: 4px">Wire, 0.25 mm², YE</td><td align="right" style="border:1px solid #000000; padding: 4px">1</td><td style="border:1px solid #000000; padding: 4px">m</td><td style="border:1px solid #000000; padding: 4px">W2</td><td style="border:1px solid #000000; padding: 4px">WiresCo</td><td style="border:1px solid #000000; padding: 4px">W1-YE</td><td style="border:1px solid #000000; padding: 4px">WIRE1</td></tr></table></body></html>

BIN
tutorial/tutorial08.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

293
tutorial/tutorial08.svg Normal file
View File

@ -0,0 +1,293 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
-->
<!-- Title: %3 Pages: 1 -->
<svg width="1017pt" height="508pt"
viewBox="0.00 0.00 1017.00 507.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 503.5)">
<title>%3</title>
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-503.5 1013,-503.5 1013,4 -4,4"/>
<!-- X1 -->
<g id="node1" class="node">
<title>X1</title>
<polygon fill="#ffffff" stroke="#000000" points="0,-207.5 0,-368.5 216,-368.5 216,-207.5 0,-207.5"/>
<text text-anchor="middle" x="108" y="-353.3" font-family="arial" font-size="14.00" fill="#000000">X1</text>
<polyline fill="none" stroke="#000000" points="0,-345.5 216,-345.5 "/>
<text text-anchor="middle" x="37.5" y="-330.3" font-family="arial" font-size="14.00" fill="#000000">Molex</text>
<polyline fill="none" stroke="#000000" points="75,-322.5 75,-345.5 "/>
<text text-anchor="middle" x="145.5" y="-330.3" font-family="arial" font-size="14.00" fill="#000000">MPN: 22013047</text>
<polyline fill="none" stroke="#000000" points="0,-322.5 216,-322.5 "/>
<text text-anchor="middle" x="53.5" y="-307.3" font-family="arial" font-size="14.00" fill="#000000">Molex KK 254</text>
<polyline fill="none" stroke="#000000" points="107,-299.5 107,-322.5 "/>
<text text-anchor="middle" x="137" y="-307.3" font-family="arial" font-size="14.00" fill="#000000">female</text>
<polyline fill="none" stroke="#000000" points="167,-299.5 167,-322.5 "/>
<text text-anchor="middle" x="191.5" y="-307.3" font-family="arial" font-size="14.00" fill="#000000">4&#45;pin</text>
<polyline fill="none" stroke="#000000" points="0,-299.5 216,-299.5 "/>
<text text-anchor="middle" x="108" y="-284.3" font-family="arial" font-size="14.00" fill="#000000">1</text>
<polyline fill="none" stroke="#000000" points="0,-276.5 216,-276.5 "/>
<text text-anchor="middle" x="108" y="-261.3" font-family="arial" font-size="14.00" fill="#000000">2</text>
<polyline fill="none" stroke="#000000" points="0,-253.5 216,-253.5 "/>
<text text-anchor="middle" x="108" y="-238.3" font-family="arial" font-size="14.00" fill="#000000">3</text>
<polyline fill="none" stroke="#000000" points="0,-230.5 216,-230.5 "/>
<text text-anchor="middle" x="108" y="-215.3" font-family="arial" font-size="14.00" fill="#000000">4</text>
</g>
<!-- W1 -->
<g id="node4" class="node">
<title>W1</title>
<polygon fill="none" stroke="#000000" points="597.5,-499.5 360.5,-499.5 360.5,-296.5 597.5,-296.5 597.5,-499.5"/>
<polygon fill="none" stroke="#000000" points="361,-476 361,-499 598,-499 598,-476 361,-476"/>
<text text-anchor="start" x="468.5" y="-483.8" font-family="arial" font-size="14.00" fill="#000000">W1</text>
<polygon fill="none" stroke="#000000" points="361,-453 361,-476 598,-476 598,-453 361,-453"/>
<text text-anchor="start" x="365" y="-460.8" font-family="arial" font-size="14.00" fill="#000000">CablesCo</text>
<text text-anchor="start" x="430" y="-460.8" font-family="arial" font-size="14.00" fill="#000000">MPN: ABC123</text>
<text text-anchor="start" x="524" y="-460.8" font-family="arial" font-size="14.00" fill="#000000">IPN: CAB1</text>
<polygon fill="none" stroke="#000000" points="361,-430 361,-453 440,-453 440,-430 361,-430"/>
<text text-anchor="start" x="392.5" y="-437.8" font-family="arial" font-size="14.00" fill="#000000">4x</text>
<polygon fill="none" stroke="#000000" points="440,-430 440,-453 537,-453 537,-430 440,-430"/>
<text text-anchor="start" x="458" y="-437.8" font-family="arial" font-size="14.00" fill="#000000">0.25 mm²</text>
<polygon fill="none" stroke="#000000" points="537,-430 537,-453 598,-453 598,-430 537,-430"/>
<text text-anchor="start" x="555" y="-437.8" font-family="arial" font-size="14.00" fill="#000000">1 m</text>
<text text-anchor="start" x="477.5" y="-418.8" font-family="arial" font-size="14.00" fill="#000000"> </text>
<text text-anchor="start" x="386.5" y="-401.8" font-family="arial" font-size="14.00" fill="#000000">X1:1</text>
<text text-anchor="start" x="469.5" y="-401.8" font-family="arial" font-size="14.00" fill="#000000">BN</text>
<text text-anchor="start" x="542" y="-401.8" font-family="arial" font-size="14.00" fill="#000000">X2:1</text>
<polygon fill="#666600" stroke="transparent" points="361,-390 361,-396 598,-396 598,-390 361,-390"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="362,-391 597,-391 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-395 362,-395 "/>
<text text-anchor="start" x="386.5" y="-376.8" font-family="arial" font-size="14.00" fill="#000000">X1:2</text>
<text text-anchor="start" x="469" y="-376.8" font-family="arial" font-size="14.00" fill="#000000">RD</text>
<text text-anchor="start" x="542" y="-376.8" font-family="arial" font-size="14.00" fill="#000000">X2:2</text>
<polygon fill="#ff0000" stroke="transparent" stroke-width="2" points="361,-365 361,-371 598,-371 598,-365 361,-365"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="362,-366 597,-366 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-370 362,-370 "/>
<text text-anchor="start" x="386.5" y="-351.8" font-family="arial" font-size="14.00" fill="#000000">X1:3</text>
<text text-anchor="start" x="468.5" y="-351.8" font-family="arial" font-size="14.00" fill="#000000">OG</text>
<text text-anchor="start" x="542" y="-351.8" font-family="arial" font-size="14.00" fill="#000000">X2:3</text>
<polygon fill="#ff8000" stroke="transparent" stroke-width="2" points="361,-340 361,-346 598,-346 598,-340 361,-340"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="362,-341 597,-341 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-345 362,-345 "/>
<text text-anchor="start" x="386.5" y="-326.8" font-family="arial" font-size="14.00" fill="#000000">X1:4</text>
<text text-anchor="start" x="470" y="-326.8" font-family="arial" font-size="14.00" fill="#000000">YE</text>
<text text-anchor="start" x="542" y="-326.8" font-family="arial" font-size="14.00" fill="#000000">X2:4</text>
<polygon fill="#ffff00" stroke="transparent" stroke-width="2" points="361,-315 361,-321 598,-321 598,-315 361,-315"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="362,-316 597,-316 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-320 362,-320 "/>
<text text-anchor="start" x="400" y="-301.8" font-family="arial" font-size="14.00" fill="#000000"> </text>
</g>
<!-- X1&#45;&#45;W1 -->
<g id="edge1" class="edge">
<title>X1:e&#45;&#45;W1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-286C297.5489,-288.2668 283.4154,-393.2668 361,-391"/>
<path fill="none" stroke="#666600" stroke-width="2" d="M216,-288C295.5667,-288 281.4333,-393 361,-393"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-290C293.5846,-287.7332 279.4511,-392.7332 361,-395"/>
</g>
<!-- X1&#45;&#45;W1 -->
<g id="edge3" class="edge">
<title>X1:e&#45;&#45;W1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-263C297.0327,-265.2523 283.9354,-368.2523 361,-366"/>
<path fill="none" stroke="#ff0000" stroke-width="2" d="M216,-265C295.0487,-265 281.9513,-368 361,-368"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-267C293.0646,-264.7477 279.9673,-367.7477 361,-370"/>
</g>
<!-- X1&#45;&#45;W1 -->
<g id="edge5" class="edge">
<title>X1:e&#45;&#45;W1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-240C296.5231,-242.2374 284.4486,-343.2374 361,-341"/>
<path fill="none" stroke="#ff8000" stroke-width="2" d="M216,-242C294.5372,-242 282.4628,-343 361,-343"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-244C292.5514,-241.7626 280.4769,-342.7626 361,-345"/>
</g>
<!-- X1&#45;&#45;W1 -->
<g id="edge7" class="edge">
<title>X1:e&#45;&#45;W1:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-217C296.0202,-219.2222 284.955,-318.2222 361,-316"/>
<path fill="none" stroke="#ffff00" stroke-width="2" d="M216,-219C294.0326,-219 282.9674,-318 361,-318"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-221C292.045,-218.7778 280.9798,-317.7778 361,-320"/>
</g>
<!-- W2 -->
<g id="node5" class="node">
<title>W2</title>
<polygon fill="#ffffff" stroke="#000000" stroke-dasharray="5,2" points="598,-272 360,-272 360,0 598,0 598,-272"/>
<polygon fill="none" stroke="#000000" points="360,-249 360,-272 598,-272 598,-249 360,-249"/>
<text text-anchor="start" x="468" y="-256.8" font-family="arial" font-size="14.00" fill="#000000">W2</text>
<polygon fill="none" stroke="#000000" points="360,-226 360,-249 422,-249 422,-226 360,-226"/>
<text text-anchor="start" x="383" y="-233.8" font-family="arial" font-size="14.00" fill="#000000">4x</text>
<polygon fill="none" stroke="#000000" points="422,-226 422,-249 528,-249 528,-226 422,-226"/>
<text text-anchor="start" x="444.5" y="-233.8" font-family="arial" font-size="14.00" fill="#000000">0.25 mm²</text>
<polygon fill="none" stroke="#000000" points="528,-226 528,-249 598,-249 598,-226 528,-226"/>
<text text-anchor="start" x="550.5" y="-233.8" font-family="arial" font-size="14.00" fill="#000000">1 m</text>
<text text-anchor="start" x="477" y="-214.8" font-family="arial" font-size="14.00" fill="#000000"> </text>
<text text-anchor="start" x="397.5" y="-197.8" font-family="arial" font-size="14.00" fill="#000000">X1:1</text>
<text text-anchor="start" x="486.5" y="-197.8" font-family="arial" font-size="14.00" fill="#000000">YE</text>
<text text-anchor="start" x="547" y="-197.8" font-family="arial" font-size="14.00" fill="#000000">X3:1</text>
<polygon fill="#ffff00" stroke="transparent" points="360,-186 360,-192 598,-192 598,-186 360,-186"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="361,-187 597,-187 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-191 361,-191 "/>
<text text-anchor="start" x="364.5" y="-170.8" font-family="arial" font-size="14.00" fill="#000000">WiresCo</text>
<text text-anchor="start" x="425.5" y="-170.8" font-family="arial" font-size="14.00" fill="#000000">MPN: W1&#45;YE</text>
<text text-anchor="start" x="516" y="-170.8" font-family="arial" font-size="14.00" fill="#000000">IPN: WIRE1</text>
<text text-anchor="start" x="397.5" y="-149.8" font-family="arial" font-size="14.00" fill="#000000">X1:2</text>
<text text-anchor="start" x="486.5" y="-149.8" font-family="arial" font-size="14.00" fill="#000000">BK</text>
<text text-anchor="start" x="547" y="-149.8" font-family="arial" font-size="14.00" fill="#000000">X3:2</text>
<polygon fill="#000000" stroke="transparent" points="360,-138 360,-144 598,-144 598,-138 360,-138"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="361,-139 597,-139 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-143 361,-143 "/>
<text text-anchor="start" x="364.5" y="-122.8" font-family="arial" font-size="14.00" fill="#000000">WiresCo</text>
<text text-anchor="start" x="425.5" y="-122.8" font-family="arial" font-size="14.00" fill="#000000">MPN: W1&#45;BK</text>
<text text-anchor="start" x="516" y="-122.8" font-family="arial" font-size="14.00" fill="#000000">IPN: WIRE2</text>
<text text-anchor="start" x="397.5" y="-101.8" font-family="arial" font-size="14.00" fill="#000000">X1:3</text>
<text text-anchor="start" x="486.5" y="-101.8" font-family="arial" font-size="14.00" fill="#000000">BK</text>
<text text-anchor="start" x="547" y="-101.8" font-family="arial" font-size="14.00" fill="#000000">X3:3</text>
<polygon fill="#000000" stroke="transparent" points="360,-90 360,-96 598,-96 598,-90 360,-90"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="361,-91 597,-91 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-95 361,-95 "/>
<text text-anchor="start" x="364.5" y="-74.8" font-family="arial" font-size="14.00" fill="#000000">WiresCo</text>
<text text-anchor="start" x="425.5" y="-74.8" font-family="arial" font-size="14.00" fill="#000000">MPN: W1&#45;BK</text>
<text text-anchor="start" x="516" y="-74.8" font-family="arial" font-size="14.00" fill="#000000">IPN: WIRE2</text>
<text text-anchor="start" x="397.5" y="-53.8" font-family="arial" font-size="14.00" fill="#000000">X1:4</text>
<text text-anchor="start" x="485.5" y="-53.8" font-family="arial" font-size="14.00" fill="#000000">RD</text>
<text text-anchor="start" x="547" y="-53.8" font-family="arial" font-size="14.00" fill="#000000">X3:4</text>
<polygon fill="#ff0000" stroke="transparent" points="360,-42 360,-48 598,-48 598,-42 360,-42"/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="361,-43 597,-43 "/>
<polyline fill="none" stroke="#000000" stroke-width="2" points="597,-47 361,-47 "/>
<text text-anchor="start" x="364" y="-26.8" font-family="arial" font-size="14.00" fill="#000000">WiresCo</text>
<text text-anchor="start" x="424" y="-26.8" font-family="arial" font-size="14.00" fill="#000000">MPN: W1&#45;RD</text>
<text text-anchor="start" x="516" y="-26.8" font-family="arial" font-size="14.00" fill="#000000">IPN: WIRE3</text>
<text text-anchor="start" x="411" y="-5.8" font-family="arial" font-size="14.00" fill="#000000"> </text>
</g>
<!-- X1&#45;&#45;W2 -->
<g id="edge9" class="edge">
<title>X1:e&#45;&#45;W2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-286C291.6789,-288.2274 280.347,-189.2274 360,-187"/>
<path fill="none" stroke="#ffff00" stroke-width="2" d="M216,-288C293.666,-288 282.334,-189 360,-189"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-290C295.653,-287.7726 284.3211,-188.7726 360,-191"/>
</g>
<!-- X1&#45;&#45;W2 -->
<g id="edge11" class="edge">
<title>X1:e&#45;&#45;W2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-263C298.4977,-265.394 273.5807,-141.394 360,-139"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-265C300.4585,-265 275.5415,-141 360,-141"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-267C302.4193,-264.606 277.5023,-140.606 360,-143"/>
</g>
<!-- X1&#45;&#45;W2 -->
<g id="edge13" class="edge">
<title>X1:e&#45;&#45;W2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-240C306.1634,-242.5208 265.9746,-93.5208 360,-91"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-242C308.0944,-242 267.9056,-93 360,-93"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-244C310.0254,-241.4792 269.8366,-92.4792 360,-95"/>
</g>
<!-- X1&#45;&#45;W2 -->
<g id="edge15" class="edge">
<title>X1:e&#45;&#45;W2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-217C314.4801,-219.6203 257.7171,-45.6203 360,-43"/>
<path fill="none" stroke="#ff0000" stroke-width="2" d="M216,-219C316.3815,-219 259.6185,-45 360,-45"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M216,-221C318.2829,-218.3797 261.5199,-44.3797 360,-47"/>
</g>
<!-- X2 -->
<g id="node2" class="node">
<title>X2</title>
<polygon fill="#ffffff" stroke="#000000" points="742,-309.5 742,-470.5 1009,-470.5 1009,-309.5 742,-309.5"/>
<text text-anchor="middle" x="875.5" y="-455.3" font-family="arial" font-size="14.00" fill="#000000">X2</text>
<polyline fill="none" stroke="#000000" points="742,-447.5 1009,-447.5 "/>
<text text-anchor="middle" x="770" y="-432.3" font-family="arial" font-size="14.00" fill="#000000">Molex</text>
<polyline fill="none" stroke="#000000" points="798,-424.5 798,-447.5 "/>
<text text-anchor="middle" x="859" y="-432.3" font-family="arial" font-size="14.00" fill="#000000">MPN: 22013047</text>
<polyline fill="none" stroke="#000000" points="920,-424.5 920,-447.5 "/>
<text text-anchor="middle" x="964.5" y="-432.3" font-family="arial" font-size="14.00" fill="#000000">IPN: CON4</text>
<polyline fill="none" stroke="#000000" points="742,-424.5 1009,-424.5 "/>
<text text-anchor="middle" x="804" y="-409.3" font-family="arial" font-size="14.00" fill="#000000">Molex KK 254</text>
<polyline fill="none" stroke="#000000" points="866,-401.5 866,-424.5 "/>
<text text-anchor="middle" x="904.5" y="-409.3" font-family="arial" font-size="14.00" fill="#000000">female</text>
<polyline fill="none" stroke="#000000" points="943,-401.5 943,-424.5 "/>
<text text-anchor="middle" x="976" y="-409.3" font-family="arial" font-size="14.00" fill="#000000">4&#45;pin</text>
<polyline fill="none" stroke="#000000" points="742,-401.5 1009,-401.5 "/>
<text text-anchor="middle" x="875.5" y="-386.3" font-family="arial" font-size="14.00" fill="#000000">1</text>
<polyline fill="none" stroke="#000000" points="742,-378.5 1009,-378.5 "/>
<text text-anchor="middle" x="875.5" y="-363.3" font-family="arial" font-size="14.00" fill="#000000">2</text>
<polyline fill="none" stroke="#000000" points="742,-355.5 1009,-355.5 "/>
<text text-anchor="middle" x="875.5" y="-340.3" font-family="arial" font-size="14.00" fill="#000000">3</text>
<polyline fill="none" stroke="#000000" points="742,-332.5 1009,-332.5 "/>
<text text-anchor="middle" x="875.5" y="-317.3" font-family="arial" font-size="14.00" fill="#000000">4</text>
</g>
<!-- X3 -->
<g id="node3" class="node">
<title>X3</title>
<polygon fill="#ffffff" stroke="#000000" points="767.5,-71.5 767.5,-232.5 983.5,-232.5 983.5,-71.5 767.5,-71.5"/>
<text text-anchor="middle" x="875.5" y="-217.3" font-family="arial" font-size="14.00" fill="#000000">X3</text>
<polyline fill="none" stroke="#000000" points="767.5,-209.5 983.5,-209.5 "/>
<text text-anchor="middle" x="805" y="-194.3" font-family="arial" font-size="14.00" fill="#000000">Molex</text>
<polyline fill="none" stroke="#000000" points="842.5,-186.5 842.5,-209.5 "/>
<text text-anchor="middle" x="913" y="-194.3" font-family="arial" font-size="14.00" fill="#000000">MPN: 22013047</text>
<polyline fill="none" stroke="#000000" points="767.5,-186.5 983.5,-186.5 "/>
<text text-anchor="middle" x="821" y="-171.3" font-family="arial" font-size="14.00" fill="#000000">Molex KK 254</text>
<polyline fill="none" stroke="#000000" points="874.5,-163.5 874.5,-186.5 "/>
<text text-anchor="middle" x="904.5" y="-171.3" font-family="arial" font-size="14.00" fill="#000000">female</text>
<polyline fill="none" stroke="#000000" points="934.5,-163.5 934.5,-186.5 "/>
<text text-anchor="middle" x="959" y="-171.3" font-family="arial" font-size="14.00" fill="#000000">4&#45;pin</text>
<polyline fill="none" stroke="#000000" points="767.5,-163.5 983.5,-163.5 "/>
<text text-anchor="middle" x="875.5" y="-148.3" font-family="arial" font-size="14.00" fill="#000000">1</text>
<polyline fill="none" stroke="#000000" points="767.5,-140.5 983.5,-140.5 "/>
<text text-anchor="middle" x="875.5" y="-125.3" font-family="arial" font-size="14.00" fill="#000000">2</text>
<polyline fill="none" stroke="#000000" points="767.5,-117.5 983.5,-117.5 "/>
<text text-anchor="middle" x="875.5" y="-102.3" font-family="arial" font-size="14.00" fill="#000000">3</text>
<polyline fill="none" stroke="#000000" points="767.5,-94.5 983.5,-94.5 "/>
<text text-anchor="middle" x="875.5" y="-79.3" font-family="arial" font-size="14.00" fill="#000000">4</text>
</g>
<!-- W1&#45;&#45;X2 -->
<g id="edge2" class="edge">
<title>W1:e&#45;&#45;X2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-391C661.6447,-391.0344 677.6169,-388.0344 742,-388"/>
<path fill="none" stroke="#666600" stroke-width="2" d="M598,-393C662.0139,-393 677.9861,-390 742,-390"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-395C662.3831,-394.9656 678.3553,-391.9656 742,-392"/>
</g>
<!-- W1&#45;&#45;X2 -->
<g id="edge4" class="edge">
<title>W1:e&#45;&#45;X2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-366C661.8768,-366.0039 677.8737,-365.0039 742,-365"/>
<path fill="none" stroke="#ff0000" stroke-width="2" d="M598,-368C662.0015,-368 677.9985,-367 742,-367"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-370C662.1263,-369.9961 678.1232,-368.9961 742,-369"/>
</g>
<!-- W1&#45;&#45;X2 -->
<g id="edge6" class="edge">
<title>W1:e&#45;&#45;X2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-341C662.1263,-341.0039 678.1232,-342.0039 742,-342"/>
<path fill="none" stroke="#ff8000" stroke-width="2" d="M598,-343C662.0015,-343 677.9985,-344 742,-344"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-345C661.8768,-344.9961 677.8737,-345.9961 742,-346"/>
</g>
<!-- W1&#45;&#45;X2 -->
<g id="edge8" class="edge">
<title>W1:e&#45;&#45;X2:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-316C662.3831,-316.0344 678.3553,-319.0344 742,-319"/>
<path fill="none" stroke="#ffff00" stroke-width="2" d="M598,-318C662.0139,-318 677.9861,-321 742,-321"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-320C661.6447,-319.9656 677.6169,-322.9656 742,-323"/>
</g>
<!-- W2&#45;&#45;X3 -->
<g id="edge10" class="edge">
<title>W2:e&#45;&#45;X3:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-187C673.2588,-188.2364 688.5443,-151.2364 767.5,-150"/>
<path fill="none" stroke="#ffff00" stroke-width="2" d="M598,-189C675.1073,-189 690.3927,-152 767.5,-152"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-191C676.9557,-189.7636 692.2412,-152.7636 767.5,-154"/>
</g>
<!-- W2&#45;&#45;X3 -->
<g id="edge12" class="edge">
<title>W2:e&#45;&#45;X3:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-139C672.4317,-139.3233 690.8879,-127.3233 767.5,-127"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-141C673.5219,-141 691.9781,-129 767.5,-129"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-143C674.6121,-142.6767 693.0683,-130.6767 767.5,-131"/>
</g>
<!-- W2&#45;&#45;X3 -->
<g id="edge14" class="edge">
<title>W2:e&#45;&#45;X3:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-91C674.709,-91.3668 693.0999,-104.3668 767.5,-104"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-93C673.5546,-93 691.9454,-106 767.5,-106"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-95C672.4001,-94.6332 690.791,-107.6332 767.5,-108"/>
</g>
<!-- W2&#45;&#45;X3 -->
<g id="edge16" class="edge">
<title>W2:e&#45;&#45;X3:w</title>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-43C677.062,-44.2617 692.1555,-82.2617 767.5,-81"/>
<path fill="none" stroke="#ff0000" stroke-width="2" d="M598,-45C675.2033,-45 690.2967,-83 767.5,-83"/>
<path fill="none" stroke="#000000" stroke-width="2" d="M598,-47C673.3445,-45.7383 688.438,-83.7383 767.5,-85"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

41
tutorial/tutorial08.yml Normal file
View File

@ -0,0 +1,41 @@
connectors:
X1: &template1 # define a template for later use
type: Molex KK 254
pincount: 4
subtype: female
manufacturer: Molex
manufacturer_part_number: 22013047
X2:
<<: *template1 # reuse template
internal_part_number: CON4
X3:
<<: *template1 # reuse template
cables:
W1:
wirecount: 4
length: 1
gauge: 0.25 mm2
color_code: IEC
manufacturer: CablesCo
manufacturer_part_number: ABC123
internal_part_number: CAB1
W2:
category: bundle
length: 1
gauge: 0.25 mm2
colors: [YE, BK, BK, RD]
manufacturer: [WiresCo,WiresCo,WiresCo,WiresCo]
manufacturer_part_number: [W1-YE,W1-BK,W1-BK,W1-RD]
internal_part_number: [WIRE1,WIRE2,WIRE2,WIRE3]
connections:
-
- X1: [1-4]
- W1: [1-4]
- X2: [1-4]
-
- X1: [1-4]
- W2: [1-4]
- X3: [1-4]