Added minimal functionality for Robot teaching

- Added minimal HMI
- Added possibility to open and close all chamber doors
This commit is contained in:
2026-01-17 09:20:39 +01:00
parent 9f058db2a3
commit 2d11c43579
2274 changed files with 912690 additions and 162 deletions

View File

@@ -0,0 +1,513 @@
/* The variables in the first selector are manipulated by DesignerModeMasterControlHighlightManager
be carefully when changing values here */
:root {
/* Blink engine only */
/** Color of the outline of an untransformed control fragment */
--tchmi-designer-control-untransformed-color: rgb(51, 51, 51);
/** Color of the outline of an unselected control */
--tchmi-designer-control-unselected-color: rgb(27, 243, 31);
/** Color of the outline of a selected control */
--tchmi-designer-control-selected-color: rgb(25, 62, 237);
/** Secondary color for selected controls (fill of anchors, control name background) */
--tchmi-designer-control-selected-secondary-color: rgb(204, 204, 204);
/** Color of the snap lines */
--tchmi-designer-control-snap-color: rgb(255, 0, 0);
/** Distance of the remote snap lines */
--tchmi-designer-control-remote-snap-distance: 10px;
}
.TcHmi_Controls_System_TcHmiControl.tchmi-creator-controlhidden {
/* Force this value to be valid and override style display definitions if available! */
display: none !important; /* csslint allow: important */
}
.tchmi-creator-hierarchy-controlposition,
.tchmi-creator-hierarchy-anchorcontainer,
.tchmi-creator-hierarchy-gridanchor,
.tchmi-creator-hierarchy-gridcellposition {
position: absolute;
pointer-events: none;
}
.tchmi-creator-controlposition,
.tchmi-creator-gridcell {
position: absolute;
outline-width: 1px;
outline-style: solid;
outline-color: transparent;
pointer-events: auto;
}
.tchmi-creator-originalposition {
position: absolute;
outline-width: 1px;
outline-style: dotted;
/* Using transparent to allow getBoundingClientRect for snapping */
outline-color: transparent;
pointer-events: none;
}
/* ***************** Untransformed container */
.tchmi-creator-originalposition.tchmi-creator-active-highlight.tchmi-creator-control-selected {
outline-color: var(--tchmi-designer-control-untransformed-color);
}
/* ***************** Transformed unselected container */
.tchmi-creator-controlposition.tchmi-creator-active-highlight {
outline-color: var(--tchmi-designer-control-unselected-color);
}
/* ***************** Transformed selected container */
.tchmi-creator-controlposition.tchmi-creator-control-selected {
outline-color: var(--tchmi-designer-control-selected-color);
}
/* ***************** Cells of a selected grid */
.tchmi-creator-controlposition.tchmi-creator-childcontrol-selected > .tchmi-creator-gridcell,
.tchmi-creator-controlposition.tchmi-creator-control-selected > .tchmi-creator-gridcell {
outline: 1px solid var(--tchmi-designer-control-selected-color); /* the outlines of two neighbour cells are both visible */
opacity: 0.5;
}
/* ************************* Control Name ************************* */
.tchmi-creator-controlname {
font-family:
'Segoe UI',
Tahoma /* <- same as in VS */,
'Microsoft YaHei' /* <- nicer chinese */,
'Meiryo' /* <- nicer japanese */,
sans-serif;
font-style: normal;
font-weight: normal;
cursor: default;
position: absolute;
font-size: 11px;
bottom: 100%;
left: -1px; /* the outline of the control is not a border */
padding: 2px;
color: var(--tchmi-designer-control-selected-color);
background-color: var(--tchmi-designer-control-selected-secondary-color);
border-color: var(--tchmi-designer-control-selected-color);
border-style: solid;
border-width: 1px;
max-width: 100%;
overflow: hidden; /* If too small cut ... */
text-overflow: ellipsis; /* ... with ellipsis... */
direction: rtl; /* ...but cut from the left */
white-space: nowrap; /* prevent multi line even for chinese chars */
display: none;
}
.tchmi-creator-controlname bdi {
direction: initial; /* The text should be rendered with the native direction and not inherited rtl */
}
.tchmi-creator-control-selected > .tchmi-creator-controlname {
display: block;
}
/* ************************* Distance Lines ************************* */
.tchmi-creator-distance-line {
font-family:
'Segoe UI', Tahoma; /* numbers, px, % only */ /* stylelint-disable-line font-family-no-missing-generic-family-keyword */
font-size: 12px;
font-style: normal;
font-weight: normal;
position: absolute;
height: 15px;
border-style: solid;
border-color: transparent;
border-top-width: 7px;
border-bottom-width: 7px;
background-color: var(--tchmi-designer-control-selected-color);
background-clip: padding-box;
pointer-events: none;
color: var(--tchmi-designer-control-selected-color);
text-shadow:
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color);
display: none;
}
.tchmi-creator-control-selected > .tchmi-creator-distance-line {
display: block;
}
.tchmi-creator-distance-top {
bottom: calc(100% - 7px); /* offset to center the box anchor */
left: 50%;
transform: rotate(-90deg);
transform-origin: 0px 8px; /* 7.5 would cause rounding issues */
text-align: right;
}
.tchmi-creator-distance-left {
bottom: calc(50% - 7px); /* offset to center the box anchor */
text-align: left;
right: 100%;
}
.tchmi-creator-distance-width {
top: calc(100% + 5px);
left: -1px;
text-align: left;
/* Different default on this lines*/
border-right: 3px var(--tchmi-designer-control-selected-color) solid; /* End triangle */
border-left: 3px var(--tchmi-designer-control-selected-color) solid; /* End triangle */
}
.tchmi-creator-distance-right {
bottom: calc(50% - 7px); /* offset to center the box anchor */
text-align: right;
left: 100%;
}
.tchmi-creator-distance-height {
bottom: -8px; /* offset to center the box anchor */
left: calc(100% + 15px);
transform: rotate(-90deg);
transform-origin: 0px 7px;
text-align: left;
/* Different default on this lines*/
border-right: 3px var(--tchmi-designer-control-selected-color) solid; /* End triangle */
border-left: 3px var(--tchmi-designer-control-selected-color) solid; /* End triangle */
}
.tchmi-creator-distance-bottom {
top: calc(100% - 7px); /* offset to center the box anchor */
right: 50%;
transform: rotate(-90deg);
transform-origin: 100% 8px;
text-align: left;
}
.tchmi-creator-control-definedfromtop > .tchmi-creator-distance-top {
border-right: 3px var(--tchmi-designer-control-selected-color) solid; /* End triangle */
}
.tchmi-creator-distance-top.no-triangle {
border-right: 0px var(--tchmi-designer-control-selected-color) solid; /* No end triangle */
}
.tchmi-creator-control-definedfromleft > .tchmi-creator-distance-left {
border-left: 3px var(--tchmi-designer-control-selected-color) solid; /* End triangle */
}
.tchmi-creator-distance-left.no-triangle {
border-left: 0px var(--tchmi-designer-control-selected-color) solid; /* No end triangle */
}
.tchmi-creator-control-definedfromright > .tchmi-creator-distance-right {
border-right: 3px var(--tchmi-designer-control-selected-color) solid; /* End triangle */
}
.tchmi-creator-distance-right.no-triangle {
border-right: 0px var(--tchmi-designer-control-selected-color) solid; /* No end triangle */
}
.tchmi-creator-control-definedfrombottom > .tchmi-creator-distance-bottom {
border-left: 3px var(--tchmi-designer-control-selected-color) solid; /* End triangle */
}
.tchmi-creator-distance-bottom.no-triangle {
border-left: 0px var(--tchmi-designer-control-selected-color) solid; /* No end triangle */
}
.tchmi-creator-snapline-top,
.tchmi-creator-snapline-left,
.tchmi-creator-snapline-bottom,
.tchmi-creator-snapline-right {
position: absolute;
pointer-events: none;
border-style: dotted;
border-color: var(--tchmi-designer-control-snap-color);
border-width: 0px;
display: none;
}
.tchmi-creator-control-selected.tchmi-creator-control-snaptop > .tchmi-creator-snapline-top,
.tchmi-creator-control-selected.tchmi-creator-control-snapleft > .tchmi-creator-snapline-left,
.tchmi-creator-control-selected.tchmi-creator-control-snapbottom > .tchmi-creator-snapline-bottom,
.tchmi-creator-control-selected.tchmi-creator-control-snapright > .tchmi-creator-snapline-right {
display: block;
}
.tchmi-creator-snapline-top {
width: calc(var(--tchmi-designer-root-width) - var(--tchmi-designer-root-scroll-left));
height: calc(var(--tchmi-designer-control-remote-snap-distance));
left: calc(-1 * var(--tchmi-designer-global-left));
top: calc(-1 * var(--tchmi-designer-control-remote-snap-distance));
border-bottom-width: 1px;
}
.tchmi-creator-snapline-left {
width: calc(var(--tchmi-designer-control-remote-snap-distance));
height: calc(var(--tchmi-designer-root-height) - var(--tchmi-designer-root-scroll-top));
left: calc(-1 * var(--tchmi-designer-control-remote-snap-distance));
top: calc(-1 * var(--tchmi-designer-global-top));
border-right-width: 1px;
}
.tchmi-creator-snapline-right {
width: calc(var(--tchmi-designer-control-remote-snap-distance));
height: calc(var(--tchmi-designer-root-height) - var(--tchmi-designer-root-scroll-top));
left: 100%;
top: calc(-1 * var(--tchmi-designer-global-top));
border-left-width: 1px;
}
.tchmi-creator-snapline-bottom {
width: calc(var(--tchmi-designer-root-width) - var(--tchmi-designer-root-scroll-left));
height: calc(var(--tchmi-designer-control-remote-snap-distance));
left: calc(-1 * var(--tchmi-designer-global-left));
bottom: calc(-1 * var(--tchmi-designer-control-remote-snap-distance));
border-top-width: 1px;
}
.tchmi-creator-control-selected.tchmi-creator-control-snaptop-remote > .tchmi-creator-snapline-top,
.tchmi-creator-control-selected.tchmi-creator-control-snapleft-remote > .tchmi-creator-snapline-left,
.tchmi-creator-control-selected.tchmi-creator-control-snapbottom-remote > .tchmi-creator-snapline-bottom,
.tchmi-creator-control-selected.tchmi-creator-control-snapright-remote > .tchmi-creator-snapline-right {
background-color: var(--tchmi-designer-control-snap-color);
opacity: 0.1;
border-width: 0;
}
/* Hide distance lines with values */
.tchmi-creator-will-get-new-parent > .tchmi-creator-distance-line,
.tchmi-creator-will-get-new-parent > .tchmi-creator-snapline {
display: none;
}
/* ************************* Anchor container ************************* */
.tchmi-creator-anchorcontainer {
position: absolute;
border: 1px solid transparent;
pointer-events: none;
display: none;
}
.tchmi-creator-anchorcontainer.tchmi-creator-control-selected {
display: block;
}
.tchmi-creator-anchor-rect {
position: absolute;
pointer-events: auto;
border-width: 1px;
border-style: solid;
border-color: var(--tchmi-designer-control-selected-color);
background-color: var(--tchmi-designer-control-selected-secondary-color);
width: 9px;
height: 9px;
}
.tchmi-creator-control-height-inactive
> :is(
/* disable height anchors */
.tchmi-creator-anchor-top-center,
.tchmi-creator-anchor-bottom-center,
/* disable corner anchors */
.tchmi-creator-anchor-top-left,
.tchmi-creator-anchor-top-right,
.tchmi-creator-anchor-bottom-left,
.tchmi-creator-anchor-bottom-right
) {
display: none;
}
.tchmi-creator-control-width-inactive
> :is(
/* disable width anchors */
.tchmi-creator-anchor-center-left,
.tchmi-creator-anchor-center-right,
/* disable corner anchors */
.tchmi-creator-anchor-top-left,
.tchmi-creator-anchor-top-right,
.tchmi-creator-anchor-bottom-left,
.tchmi-creator-anchor-bottom-right
) {
display: none;
}
/* Lock icon for lock from the parent */
.tchmi-creator-control-locked .tchmi-creator-anchorcontainer::before {
content: '';
position: absolute;
top: -12px;
left: -12px;
width: 8px;
height: 10px;
background-color: var(--tchmi-designer-control-selected-secondary-color);
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="10"> <rect stroke-width="1" style="stroke:rgb(25, 62, 237);fill:none;" x="0.5" y="4.5" width="7" height="5" /> <path stroke-width="1" style="stroke:rgb(25, 62, 237);fill:none;" d="M1.5,4.5 v-1 a2,2 90 1 1 5,0 v1" /> </svg>');
box-shadow:
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color);
}
/* Lock icon for direct lock */
.tchmi-creator-anchorcontainer.tchmi-creator-control-locked::before {
content: '';
position: absolute;
top: -12px;
left: -12px;
width: 8px;
height: 10px;
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="10"> <rect stroke-width="1" style="stroke:rgb(25, 62, 237);fill:rgb(25, 62, 237);" x="0.5" y="4.5" width="7" height="5" /> <path stroke-width="1" style="stroke:rgb(25, 62, 237);fill:none;" d="M1.5,4.5 v-1 a2,2 90 1 1 5,0 v1" /> </svg>');
box-shadow:
0 0 4px var(--tchmi-designer-control-selected-secondary-color),
0 0 4px var(--tchmi-designer-control-selected-secondary-color);
}
.tchmi-creator-control-locked .tchmi-creator-anchor-rect {
display: none;
}
.tchmi-creator-root-partial
> :is(
.tchmi-creator-anchor-top-left,
.tchmi-creator-anchor-top-center,
.tchmi-creator-anchor-top-right,
.tchmi-creator-anchor-center-left,
.tchmi-creator-anchor-bottom-left
) {
display: none;
}
.tchmi-creator-anchor-top-left {
top: -5px;
left: -5px;
cursor: nwse-resize;
}
.tchmi-creator-anchor-top-center {
top: -5px;
left: calc(50% - 5px);
cursor: ns-resize;
}
.tchmi-creator-anchor-top-right {
top: -5px;
right: -5px;
cursor: nesw-resize;
}
.tchmi-creator-anchor-center-left {
top: calc(50% - 5px);
left: -5px;
cursor: ew-resize;
}
.tchmi-creator-anchor-center-right {
top: calc(50% - 5px);
right: -5px;
cursor: ew-resize;
}
.tchmi-creator-anchor-bottom-left {
bottom: -5px;
left: -5px;
cursor: nesw-resize;
}
.tchmi-creator-anchor-bottom-center {
bottom: -5px;
left: calc(50% - 5px);
cursor: ns-resize;
}
.tchmi-creator-anchor-bottom-right {
bottom: -5px;
right: -5px;
cursor: nwse-resize;
}
.tchmi-creator-view-port-simulator {
transform-origin: 0 0 0;
position: absolute;
overflow: hidden;
}
.tchmi-creator-view-port-simulator[data-tchmi-creator-target-control-type='TcHmi.Controls.System.TcHmiView'] {
background-color: rgb(255, 255, 255);
}
.tchmi-creator-view-port-highlighting {
position: absolute;
}
.tchmi-creator-view-port-background {
position: fixed;
bottom: 0;
top: 0;
right: 0;
left: 0;
}
.tchmi-creator-chessboard {
background-image:
linear-gradient(
45deg,
var(--tchmi-designer-vs-theme-chessboard-light) 25%,
transparent 25%,
transparent 75%,
var(--tchmi-designer-vs-theme-chessboard-light) 75%,
var(--tchmi-designer-vs-theme-chessboard-light) 100%
),
linear-gradient(
45deg,
var(--tchmi-designer-vs-theme-chessboard-light) 25%,
transparent 25%,
transparent 75%,
var(--tchmi-designer-vs-theme-chessboard-light) 75%,
var(--tchmi-designer-vs-theme-chessboard-light) 100%
);
background-size: 16px 16px;
background-position:
0 0,
8px 8px;
background-color: var(--tchmi-designer-vs-theme-chessboard-dark);
}
.tchmi-creator-possibledroptarget {
box-shadow: inset 0px 0px 0px 10px rgb(from var(--tchmi-designer-control-snap-color) r g b / 0.1);
}
.tchmi-creator-selection-drag-container {
position: absolute;
z-index: 10000;
border: 1px solid var(--tchmi-designer-control-selected-color);
background: rgb(from var(--tchmi-designer-control-selected-color) r g b / 0.1);
overflow: hidden;
text-align: center;
}
.tchmi-creator-copymove-container {
position: absolute;
z-index: 10000;
border: 1px solid gray;
pointer-events: none;
}
/* Main designer scrollbars should be aligned to VS theme */
html.tchmi-visual-studio-dark {
color-scheme: dark;
}
/* Main designer scrollbars should be aligned to VS theme */
html:not(.tchmi-visual-studio-dark) {
color-scheme: initial;
}
/* Other designer scrollbars should be aligned to application theme */
html > * {
color-scheme: initial;
}
/* Other designer scrollbars should be aligned to application theme */
html[tchmi-theme-name='Base-Dark'] > * {
color-scheme: dark;
}
/**
* Fullscreen messages of controls in designer
*/
.tchmi-designer-control-message {
position: absolute;
padding: 10px;
top: 0px;
left: 0px;
bottom: 0px;
right: 0px;
background: #ededed;
color: black;
font-style: italic;
white-space: pre-line;
}