private void UnregisterLinks(IToolElement tool) { IMachineElement me = tool; while (me.Parent != null) { if ((me.LinkToParent != null) && (me.LinkToParent.MoveType == MDE.LinkMoveType.Linear)) { if (_links.TryGetValue(me.LinkToParent.Id, out int n)) { if (n <= 1) { me.LinkToParent.ValueChanged -= OnLinkValueChanged; _links.Remove(me.LinkToParent.Id); } else { _links[me.LinkToParent.Id] = n - 1; } } } me = me.Parent; } }
public static MDE.MachineElement ToModel(this IMachineElement me) { if (me is IRootElement re) { return(Convert(re)); } else if (me is IInserterElement inse) { return(Convert(inse)); } else if (me is IInjectorElement inje) { return(Convert(inje)); } else if (me is IColliderElement ce) { return(Convert(ce)); } else if (me is IToolholderElement the) { return(Convert(the)); } else if (me is IPanelholderElement phe) { return(Convert(phe)); } else { return(Convert <MDE.MachineElement>(me)); } return(null); }
private static ToolholderElementViewModel Convert(MDE.ToolholderElement th, IMachineElement parent) { ToolholderElementViewModel vm = null; switch (th.ToolHolderType) { case MD.Enums.ToolHolderType.Static: vm = Convert <StaticToolholderElementViewModel>(th, parent); break; case MD.Enums.ToolHolderType.AutoSource: vm = Convert <AutoSourceToolholderElementViewModel>(th, parent); break; case MD.Enums.ToolHolderType.AutoSink: vm = Convert <AutoSyncToolholderElementViewModel>(th, parent); break; default: throw new NotImplementedException(); } vm.ToolHolderId = th.ToolHolderId; vm.Position = th.Position; vm.Direction = th.Direction; return(vm); }
private static IMachineElement Decorate(this IMachineElement element) { var appType = Machine.ViewModels.Ioc.SimpleIoc <MVMUI.IApplicationInformationProvider> .GetInstance().ApplicationType; if (appType == MVMUI.ApplicationType.MachineEditor) { var name = $"Indicator {++_indicatorCount}"; if (element is MVMII.IPositionAndDirectionIndicator pdi) { element.Children.Add(new MVMI.PositionAndDirectionIndicatorViewModel() { Name = name, Parent = element }); } else if (element is MVMII.IPositionIndicator pi) { element.Children.Add(new MVMI.PositionIndicatorViewModel() { Name = name, Parent = element }); } else if (element is MVMII.IPositionsIndicator psi) { element.Children.Add(new MVMI.PositionsIndicatorViewModel() { Name = name, Parent = element }); } } return(element); }
public static IMachineElement ToViewModel(this MDE.MachineElement me, IMachineElement parent = null) { if (me is MDE.RootElement re) { return(Convert(re, parent).Decorate()); } else if (me is MDE.InserterElement ins) { return(Convert(ins, parent).Decorate()); } else if (me is MDE.InjectorElement inj) { return(Convert(inj, parent).Decorate()); } else if (me is MDE.ColliderElement ce) { return(Convert(ce, parent).Decorate()); } else if (me is MDE.ToolholderElement th) { return(Convert(th, parent).Decorate()); } else if (me is MDE.PanelHolderElement ph) { return(Convert(ph, parent).Decorate()); } else { return(Convert <ElementViewModel>(me, parent).Decorate()); } }
private static Matrix3D GetElementTransformation(IMachineElement e) { if (e is IPanelElement pe) { return(pe.GetTransformation()); } else if (e == null) //else if ((e == null) || (e.Transformation == null)) //if ((e == null) || (e.Transformation == null)) { return(Matrix3D.Identity); } else { var ts = (e.Transformation != null) ? StaticTransformationConverter.Convert(e.Transformation) : Matrix3D.Identity; if (e.LinkToParent != null) { ts.Append(GetLinkTransformation(e.LinkToParent)); } if (e.Parent is IToolholderBase th) { var dt = DirectionToMatrixConverter.Convert(th.Direction); var pt = StaticTransformationConverter.Convert(th.Position); ts.Append(dt); ts.Append(pt); } return(ts); } }
public bool GetBoundingBox(IMachineElement element, out double minX, out double minY, out double minZ, out double maxX, out double maxY, out double maxZ) { var result = TryGet(element.ModelFile, out Geometry3D geometry); if (result) { var bb = geometry.Bound; minX = bb.Minimum.X; minY = bb.Minimum.Y; minZ = bb.Minimum.Z; maxX = bb.Maximum.X; maxY = bb.Maximum.Y; maxZ = bb.Maximum.Z; } else { minX = 0.0; minY = 0.0; minZ = 0.0; maxX = 0.0; maxY = 0.0; maxZ = 0.0; } return(result); }
//public static Matrix3D GetChainTransformation(this IPanelElement panel) //{ // var matrix = (panel as IMachineElement).GetChainTransformation(); // //if (panel is IMovablePanel mp) // //{ // // var m = Matrix3D.Identity; // // m.OffsetX = mp.OffsetX; // // matrix.Append(m); // //} // //var mc = Matrix3D.Identity; // //mc.OffsetX = panel.CenterX; // //mc.OffsetY = panel.CenterY; // //mc.OffsetZ = panel.CenterZ; // //matrix.Append(mc); // //var pm = panel.GetTransformation(); // return matrix; //} public static Matrix3D GetChainTransformation(this IMachineElement endOfChain, bool fromRoot = false) { IMachineElement p = endOfChain; var list = new List <IMachineElement>(); var matrix = Matrix3D.Identity; while (p != null) { list.Add(p); p = p.Parent; } if (fromRoot) { for (int i = (list.Count - 1); i >= 0; i--) { matrix.Append(GetElementTransformation(list[i])); } } else { for (int i = 0; i < list.Count; i++) { matrix.Append(GetElementTransformation(list[i])); } } return(matrix); }
private static ColliderElementViewModel Convert(MDE.ColliderElement ce, IMachineElement parent) { ColliderElementViewModel vm = null; switch (ce.Type) { case Enums.ColliderType.Presser: vm = Convert <PresserColliderElementViewModel>(ce, parent); break; case Enums.ColliderType.Gripper: vm = Convert <GripperColliderElementViewModel>(ce, parent); break; case Enums.ColliderType.Detect: default: throw new NotImplementedException(); } vm.Radius = ce.Radius; foreach (var p in ce.Points) { vm.Points.Add(p); } return(vm); }
private IElementHandle CreatePositionElementHandle(IMachineElement element) { var bbProvider = Ioc.SimpleIoc <IElementBoundingBoxProvider> .GetInstance(); if (bbProvider.GetBoundingBox(element, out double minX, out double minY, out double minZ, out double maxX, out double maxY, out double maxZ)) { var handle = new Handles.ElementHandleViewModel() { IsVisible = true, MinX = minX, MinY = minY, MinZ = minZ, MaxX = maxX, MaxY = maxY, MaxZ = maxZ }; handle.Children.Add(new Handles.PositionHandleViewModel() { IsVisible = true, Parent = handle, Type = Interfaces.Handles.Type.X }); handle.Children.Add(new Handles.PositionHandleViewModel() { IsVisible = true, Parent = handle, Type = Interfaces.Handles.Type.Y }); handle.Children.Add(new Handles.PositionHandleViewModel() { IsVisible = true, Parent = handle, Type = Interfaces.Handles.Type.Z }); return(handle); }
public ProbePointChangableTransformer(IMachineElement probeParent, IList <ILinkViewModel> links, IList <IMovablePanel> movables) : base(probeParent) { _links = links; _movables = movables; AttachToLinks(); AttachToMovable(); }
private static RootElementViewModel Convert(MDE.RootElement re, IMachineElement parent) { var revm = Convert <RootElementViewModel>(re, parent); revm.AssemblyName = re.AssemblyName; revm.RootType = re.RootType; return(revm); }
private static InserterElementViewModel Convert(MDE.InserterElement ins, IMachineElement parent) { var vm = ConverterInserter <InserterElementViewModel>(ins, parent); vm.Diameter = ins.Diameter; vm.Length = ins.Length; vm.LoaderLinkId = ins.LoaderLinkId; vm.DischargerLinkId = ins.DischargerLinkId; return(vm); }
private static T ConverterInserter <T>(MDE.InjectorElement me, IMachineElement parent) where T : InjectorBaseElementViewModel, new() { var vm = Convert <T>(me, parent); vm.InserterId = me.InserterId; vm.Position = new Base.Point() { X = me.Position.X, Y = me.Position.Y, Z = me.Position.Z }; vm.Direction = me.Direction; vm.InserterColor = me.InserterColor; return(vm); }
public IProbePointTransformer GetTransformer(IMachineElement probeParent) { var links = GetLinks(probeParent); var movables = GetMovables(probeParent); if ((links.Count() > 0) || (movables.Count() > 0)) { return(new ProbePointChangableTransformer(probeParent, links, movables)); } else { return(new ProbePointTransformer(probeParent)); } }
public void StartMove() { _elementToMove = Parent.Parent; _startTransform = _elementToMove.Transformation; if (_startTransform == null) { _startTransform = new Matrix() { M11 = 1.0, M22 = 1.0, M33 = 1.0 } } ; }
private static IList <IMovablePanel> GetMovables(IMachineElement machineElement) { var list = new List <IMovablePanel>(); var me = machineElement; while (me.Parent != null) { if (me is IMovablePanel mp) { list.Add(mp); } me = me.Parent; } return(list); }
private static IList <ILinkViewModel> GetLinks(IMachineElement machineElement) { var list = new List <ILinkViewModel>(); var me = machineElement; while (me.Parent != null) { if (me.LinkToParent != null) { list.Add(me.LinkToParent); } me = me.Parent; } return(list); }
private SWMM.Point3D GetRotationCenter(IMachineElement element) { Machine.ViewModels.Ioc.SimpleIoc <MVMIPR.IElementBoundingBoxProvider> .GetInstance() .GetBoundingBox(element, out double minX, out double minY, out double minZ, out double maxX, out double maxY, out double maxZ); var bb = new SharpDX.BoundingBox(new SharpDX.Vector3((float)minX, (float)minY, (float)minZ), new SharpDX.Vector3((float)maxX, (float)maxY, (float)maxZ)); return(bb.Center.ToPoint3D()); }
private static T Convert <T>(IMachineElement machineElement) where T : MDE.MachineElement, new() { var m = new T() { MachineElementID = machineElement.MachineElementID, Name = machineElement.Name, ModelFile = machineElement.ModelFile, Color = machineElement.Color.Convert(), Transformation = machineElement.Transformation.Convert(), LinkToParent = machineElement.LinkToParent.Convert(), }; foreach (var item in machineElement.Children) { if (!item.IsIndicator()) { m.Children.Add(item.ToModel()); } } return(m); }
private static T Convert <T>(MDE.MachineElement machineElement, IMachineElement parent) where T : ElementViewModel, new() { var evm = new T() { MachineElementID = machineElement.MachineElementID, Name = machineElement.Name, ModelFile = machineElement.ModelFile, Color = machineElement.Color, Transformation = machineElement.Transformation, LinkToParent = ConvertLink(machineElement.LinkToParent, machineElement.Name), Parent = parent }; foreach (var item in machineElement.Children) { evm.Children.Add(item.ToViewModel(evm)); } //foreach (var item in evm.Children) item.Parent = evm; return(evm); }
private void RegisterLinks(IToolElement tool) { IMachineElement me = tool; while (me.Parent != null) { if ((me.LinkToParent != null) && (me.LinkToParent.MoveType == MDE.LinkMoveType.Linear)) { if (_links.TryGetValue(me.LinkToParent.Id, out int n)) { _links[me.LinkToParent.Id] = n + 1; } else { _links.Add(me.LinkToParent.Id, 1); me.LinkToParent.ValueChanged += OnLinkValueChanged; } } me = me.Parent; } }
public IElementHandle Create(IMachineElement element, MDE.ElementHandle type = MDE.ElementHandle.Position) { IElementHandle handle = null; if ((element != null) && !string.IsNullOrEmpty(element.ModelFile)) { switch (type) { case MDE.ElementHandle.Position: handle = CreatePositionElementHandle(element); break; case MDE.ElementHandle.Rotation: handle = CreaterRotationElementHandle(element); break; default: break; } } return(handle); }
public ElementRotator(IMachineElement element) { _element = element; _matrix = StaticTransformationConverter.Convert(element.Transformation); _center = GetCenter(element); }
public IElementRotator Create(IMachineElement element) => new ElementRotator(element);
private static bool IsIndicator(this IMachineElement element) => element is MVMII.IIndicatorProxy;
public ProbePointTransformer(IMachineElement probeParent) { _probeParent = probeParent; }
private static InjectorElementViewModel Convert(MDE.InjectorElement inj, IMachineElement parent) => ConverterInserter <InjectorElementViewModel>(inj, parent);
private static PanelHolderElementViewModel Convert(MDE.PanelHolderElement ph, IMachineElement parent) { var vm = Convert <PanelHolderElementViewModel>(ph, parent); vm.PanelHolderId = ph.PanelHolderId; vm.PanelHolderName = ph.PanelHolderName; vm.Position = ph.Position; vm.Corner = ph.Corner; return(vm); }