Compare commits

..

32 Commits

Author SHA1 Message Date
NicolaP 697fb4c730 Gestioena modifica tagli su angoli interni 2022-11-07 17:09:47 +01:00
NicolaP 4f5804206d Merge branch 'master' into develop 2022-10-24 09:48:15 +02:00
NicolaP 58828cf846 Merge branch 'master' of https://gitlab.steamware.net/egaltech/omagoffice 2022-10-24 09:47:44 +02:00
NicolaP 36138ec459 Merge branch 'develop' 2022-10-24 09:43:54 +02:00
NicolaP 7fc49b0d1d Merge branch 'master' into develop 2022-10-24 09:39:13 +02:00
NicolaP cf9379272c Merge branch 'develop' 2022-10-24 09:38:49 +02:00
NicolaP cd6714752e Cambio versione 2.4j1 2022-10-24 09:37:48 +02:00
DarioS 4c62410c20 OmagOFFICE 2.4j1 :
- ricompilazione con cambio versione.
2022-10-24 08:48:12 +02:00
NicolaP b017fef2b9 Merge branch 'develop' 2022-10-17 14:39:17 +02:00
NicolaP 17785afc20 Merge branch 'Features/Manage_Raw' into develop 2022-10-17 14:39:04 +02:00
NicolaP 62953c981e Correzione creazione nuovo grezzo in macchina 2022-10-17 14:36:08 +02:00
NicolaP c3a3057420 Merge branch 'master' into develop 2022-10-06 16:15:58 +02:00
NicolaP 8fa7b6188c Cambio versione: 2.4i4 2022-10-06 13:05:43 +02:00
NicolaP f3770dfc7c Eliinazione caratteri speciali da perocrosi file 2022-10-06 11:11:43 +02:00
NicolaP 1358cef04a Merge branch 'develop' 2022-10-05 19:57:08 +02:00
NicolaP e0fe4d9444 Migliorata abilitazione bottoni gruppi di lavoro 2022-10-05 19:39:48 +02:00
NicolaP 05186db728 Merge remote-tracking branch 'origin/HEAD' into develop 2022-10-05 10:17:32 +02:00
DarioS 5b21559e56 OmagOFFICE 2.4i3 :
- modifiche per gestione multidirettori di base delle macchine.
2022-10-04 11:16:17 +02:00
NicolaP 13a774429e Merge branch 'develop' 2022-09-19 15:08:51 +02:00
NicolaP bde6c38733 Migliorata gestione lavorazioni con ponticelli 2022-09-19 15:08:35 +02:00
NicolaP e3beaf2aa3 Merge branch 'develop' 2022-09-15 12:10:23 +02:00
NicolaP deb8b34402 Gestione eliminazione Pezzi/Ponticelli, migliorata gestione reset ponticelli 2022-09-15 12:10:03 +02:00
NicolaP 49311579ec Merge branch 'develop' 2022-09-15 11:27:01 +02:00
NicolaP 589b7211ab Migliorata gestione selezione lati per ponticelli 2022-09-15 11:26:14 +02:00
NicolaP 892806d32a Merge remote-tracking branch 'origin/master' into develop 2022-09-15 11:21:12 +02:00
DarioS 914a89014e OmagOFFICE :
- aggiunte altre info per Bridges.
2022-09-14 10:11:55 +02:00
NicolaP 3043a717d3 Merge branch 'develop' 2022-09-13 15:40:13 +02:00
NicolaP 8a3b52e082 Migliorato caricamento direttori macchine 2022-09-13 15:39:52 +02:00
NicolaP f4126dba7a Reset Bridges se muovo grezzo 2022-09-13 15:32:07 +02:00
NicolaP 6009db35cd Merge branch 'develop' 2022-09-13 12:08:32 +02:00
NicolaP 4a42374891 Migliorata gestione Bridges 2022-09-13 12:08:05 +02:00
NicolaP 64c6a6cf9b Merge remote-tracking branch 'origin/master' into develop 2022-09-13 11:36:27 +02:00
10 changed files with 218 additions and 51 deletions
+1
View File
@@ -125,6 +125,7 @@ Module ConstIni
Public Const K_AUTOMATICOPTIMIZE As String = "AutomaticOptimize"
Public Const K_AUTOMATICMAXTIME As String = "AutomaticMaxTime"
Public Const K_DRAGRECTANGLE As String = "DragRectangle"
Public Const K_STARTENDMODIFYONINTCORNER As String = "StartEndModifyOnIntCorner"
Public Const S_SPLIT As String = "Split"
Public Const K_MOVE_LEV As String = "MoveLevel"
+2
View File
@@ -158,6 +158,8 @@ Module ConstMach
Public Const NAME_UNDERDRILL As String = "UnderDrill"
' Nome layer preview
Public Const NAME_PREVIEW As String = "PV"
Public Const NAME_BRIDGES As String = "Bridges"
Public Const NAME_BRIDGESLINE As String = "BridgeLine"
' Info in layer contorno interno per FiloTop
Public Const INFO_FILOTOP As String = "FiloTop"
Public Const INFO_ROUNDOFF As String = "RoundOff"
+1 -1
View File
@@ -1418,7 +1418,7 @@ Friend Property sCurrMillNoTip As String
' recupro dalla lista delle macchine l'oggetto associato al nome indicato
Public Sub GetMachineClass(sMachineName As String)
For Each Item In OmagOFFICEMap.refMachinePanelVM.MachineList
If Item.Name = sMachineName Then
If string.Compare(Item.Name, sMachineName, True) = 0 Then
OmagOFFICEMap.refMachinePanelVM.SelectedMachine = Item
Exit For
End If
+9 -9
View File
@@ -184,12 +184,6 @@ Public Class MainWindowM
Directory.CreateDirectory(m_sBackUpDir)
' Impostazione path resources dir
m_sResourcesRoot = m_sDataRoot & "\" & RES_DIR
' Impostazione direttorio per le macchine
If GetMainPrivateProfileString(S_MACH, K_MACHINESDIR, "", m_sMachinesRoot) = 0 Then
m_sMachinesRoot = m_sDataRoot & "\" & MACHINES_DFL_DIR
End If
' Carico elenco dei direttori macchina
If Not String.IsNullOrEmpty(m_sMachinesRoot) Then m_sMachinesRootList.Add(m_sMachinesRoot)
Dim nIndexDir As Integer = 1
Dim sCurrMachineDir As String = String.Empty
While GetMainPrivateProfileString(S_MACH, K_MACHINESDIR & nIndexDir.ToString, "", sCurrMachineDir) <> 0
@@ -198,6 +192,12 @@ Public Class MainWindowM
End If
nIndexDir += 1
End While
' Impostazione direttorio (versioni precedenti 2.4i2) per le macchine
If GetMainPrivateProfileString(S_MACH, K_MACHINESDIR, "", m_sMachinesRoot) = 0 Then
m_sMachinesRoot = m_sDataRoot & "\" & MACHINES_DFL_DIR
End If
' Carico il direttorio nell'elenco dei direttori macchina
If Not String.IsNullOrEmpty(m_sMachinesRoot) Then m_sMachinesRootList.Add(m_sMachinesRoot)
' Impostazione direttorio per toolmakers
If GetMainPrivateProfileString(S_MACH, K_TOOLMAKERSDIR, "", m_sToolMakersDir) = 0 Then
m_sToolMakersDir = m_sDataRoot & "\" & TOOLMAKERS_DFL_DIR
@@ -223,8 +223,8 @@ Public Class MainWindowM
' Verifico abilitazione nesting automatico
m_bAutoNestOption = Not String.IsNullOrWhiteSpace( sNestKey)
' Recupero livello e opzioni della chiave
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2406, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2406, 1, m_nKeyOptions)
Dim bKey As Boolean = EgtGetKeyLevel(9423, 2410, 1, m_nKeyLevel) And
EgtGetKeyOptions(9423, 2410, 1, m_nKeyOptions)
' Verifico abilitazione prodotto
Dim bProd As Boolean = GetKeyOption(KEY_OPT.OFFICE_BASE)
' Inizializzazione generale di EgtInterface
@@ -308,7 +308,7 @@ Public Class MainWindowM
' verifico che il nome da inserire non esista già in elenco
Private Function VerifyMachineIsUnique(sMachDir As String) As Boolean
For Each sDir As String In m_sMachinesRootList
If sDir.ToLower.Trim = sMachDir.ToLower.Trim Then
If String.Compare( sDir.Trim().TrimEnd("\"c), sMachDir.Trim().TrimEnd("\"c), True) = 0 Then
Return False
End If
Next
+2 -2
View File
@@ -69,6 +69,6 @@ Imports System.Windows
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("2.4.9.2")>
<Assembly: AssemblyFileVersion("2.4.9.2")>
<Assembly: AssemblyVersion("2.4.10.1")>
<Assembly: AssemblyFileVersion("2.4.10.1")>
+5 -1
View File
@@ -45,6 +45,7 @@ Public Class MyMachGroupPanelVM
' Recupero la macchina di default
Dim sDefaultMachine As String = String.Empty
GetMainPrivateProfileString(S_MACH, K_CURRMACH, "", sDefaultMachine)
EgtSetCurrMachine(sDefaultMachine)
InitMachGroupPanel(True, OmagOFFICEMap.refMachinePanelVM.MachineList.ToList(), sDefaultMachine, BASE_MACH_GROUP & "1")
End Sub
@@ -73,7 +74,9 @@ Public Class MyMachGroupPanelVM
Dim sMachine As String = String.Empty
EgtGetMachGroupName(nId, sName)
EgtGetMachGroupMachineName(nId, sMachine)
MachGroupList.Add(New MyMachGroup(nId, sName, sMachine, EgtGetFirstNameInGroup(nId, "Opers")))
Dim NewMyMachGoup As MyMachGroup = New MyMachGroup(nId, sName, sMachine, EgtGetFirstNameInGroup(nId, "Opers"))
NewMyMachGoup.IsValid = VerifyMachExists(sMachine)
MachGroupList.Add(NewMyMachGoup)
If OmagOFFICEMap.refMainWindowVM.MainWindowM.m_SlabDB Then
Dim sSlabNameDB As String = String.Empty
EgtGetInfo(nId, INFO_SLABNAME, sSlabNameDB)
@@ -157,6 +160,7 @@ Public Class MyMachGroupPanelVM
' Imposto vista solo tavola
EgtSetMachineLook(MCH_LOOK.TAB)
CurrentMachine.GetMachineClass(SelectedMachGroup.Machine)
If IsNothing(OmagOFFICEMap.refMachinePanelVM.SelectedMachine) Then Return False
OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot = Path.GetDirectoryName(OmagOFFICEMap.refMachinePanelVM.SelectedMachine.DirPath)
' Ricarico la macchina corrente
InitCurrentMachine(OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot, SelectedMachGroup.Machine,
+7 -2
View File
@@ -36,7 +36,9 @@ Public Class MySceneHostVM
' Recupero l'elenco dei direttori radice macchina come stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02"
Dim sMchRoots As String = GetMachineBaseDirs()
' inizializzo gestore lavorazioni
EgtInitMachMgr(sMchRoots, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir)
If Not EgtInitMachMgr(sMchRoots, OmagOFFICEMap.refMainWindowVM.MainWindowM.sToolMakersDir) Then
EgtOutLog("Error on loading machines roots: " & sMchRoots)
End If
' inizializzo gestione più macchine
OmagOFFICEMap.refMachinePanelVM.Init(sMchRoots)
OmagOFFICEMap.refMachGroupPanelVM.Init()
@@ -165,12 +167,15 @@ Public Class MySceneHostVM
Private Function GetMachineBaseDirs() As String
' Trasformo l'elenco dei direttori radice macchina in una stringa del tipo "..\Dir1\Example01|..\Dir2\|Example02"
Dim sMchRoots As String = ""
' Pulisco eventuali caratteri nascosti: origString.Replace(vbCr, "").Replace(vbLf, "")
For Each MachDir In OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRootList
MachDir = MachDir.Replace(vbCr, "").Replace(vbLf, "")
sMchRoots &= MachDir & "|"
Next
' rimuovo dalla stringa l'ultimo carattere "|" inserito
sMchRoots = sMchRoots.Remove(sMchRoots.Length - 1, 1)
If String.IsNullOrEmpty( sMchRoots) Then sMchRoots = OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot
If String.IsNullOrEmpty(sMchRoots) Then sMchRoots = OmagOFFICEMap.refMainWindowVM.MainWindowM.sMachinesRoot
EgtOutLog("Machine root list: " & sMchRoots)
Return sMchRoots
End Function
+136 -30
View File
@@ -34,7 +34,7 @@ Public Class SplitModeVM
Private m_nIdSelectedWaterJet_End As Integer = GDB_ID.NULL
' Id gruppo Bridges (Nuovo da versione 30/08/2022)
Private m_nIdBridgesGroup As Integer = GDB_ID.NULL
Private m_nIdBridgeLineGroup As Integer = GDB_ID.NULL
'Private m_nIdBridgeLineGroup As Integer = GDB_ID.NULL
Private m_nIdBridge As Integer = GDB_ID.NULL
Private m_ptSrtBridge As New Point3d
Private m_ptEndBridge As New Point3d
@@ -48,6 +48,8 @@ Public Class SplitModeVM
Private m_bDragging As Boolean = False
' Selected cut
Private m_nSelected As Integer = GDB_ID.NULL
' Abilita la mofica Inizio fine per i tagli interni sugli angoli
Private m_StartEndModifyOnIntCorner As Boolean = False
Private m_ItemList As New ObservableCollection(Of NameIdLsBxItem)
Public ReadOnly Property ItemList As ObservableCollection(Of NameIdLsBxItem)
@@ -447,6 +449,8 @@ Public Class SplitModeVM
'm_CurrProjPage = m_MainWindow.m_CurrentProjectPageUC
m_nDragInd = -1
m_nDragType = 0
' verifico se è abilitata la possibiltà di allungare i lati interni
m_StartEndModifyOnIntCorner = (GetMainPrivateProfileInt(S_NEST, K_STARTENDMODIFYONINTCORNER, 0) <> 0)
' Nascondo eventuali pezzi in parcheggio
EstCalc.HideParkedParts()
' Nascondo eventuale contorno da foto
@@ -1151,7 +1155,7 @@ Public Class SplitModeVM
' recuoero il gruppo di lavorazione corrente
Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup()
' creo il gruppo per i ponticelli
Dim sNameGroup As String = "Bridges"
Dim sNameGroup As String = NAME_BRIDGES
Dim nId As Integer = EgtGetFirstNameInGroup(nIdCurrMachGroup, sNameGroup)
If nId <> GDB_ID.NULL Then
m_nIdBridgesGroup = nId
@@ -1159,7 +1163,7 @@ Public Class SplitModeVM
' se non lo trovo allora lo creo
If nId = GDB_ID.NULL Then
m_nIdBridgesGroup = EgtCreateGroup(nIdCurrMachGroup)
EgtSetName(m_nIdBridgesGroup, "Bridges")
EgtSetName(m_nIdBridgesGroup, NAME_BRIDGES)
End If
End Sub
@@ -1967,10 +1971,27 @@ Public Class SplitModeVM
Dim bRepeat As Boolean = False
Do
' Se c'è limite alla lunghezza libera
If m_MachiningList(nI).m_dStartFreeLen < FREELEN_INF Then
' se abilitati i controlli sugli allungamenti dei lati interni
If Not m_StartEndModifyOnIntCorner Then
' Recupero sicurezza in corner interno
Dim dCornerSafety As Double = Math.Max(GetPrivateProfileDouble(S_MACH_NEST, K_MACH_SAFE_LEN_INTCORNER, 1, CurrentMachine.sMachIniFile), 10 * EPS_SMALL)
' Recupero lunghezza baffo del taglio
Dim nPvId As Integer = GDB_ID.NULL
EgtGetInfo(EgtGetFirstNameInGroup(nOperId, NAME_PREVIEW), INFO_PV_ONPART_ID, nPvId)
Dim dDT As Double = 0
EgtGetInfo(EgtGetFirstGroupInGroup(nPvId), "DT", dDT)
dUsal = Math.Min(dUsal, m_MachiningList(nI).m_dStartFreeLen - dDT - dCornerSafety)
End If
End If
EgtSetCurrMachining(nOperId)
Dim dAddLen As Double = 0
EgtGetMachiningParam(MCH_MP.STARTADDLEN, dAddLen)
If dAddLen - dOrigUsal < -10 * EPS_SMALL Then Return
' verifico che non sia sull'angolo interno (altrimenti vieto la modifica)
If Not m_StartEndModifyOnIntCorner And (dAddLen - dOrigUsal < -10 * EPS_SMALL) Then
Return
End If
EgtSetMachiningParam(MCH_MP.STARTADDLEN, dAddLen + dUsal - dOrigUsal)
EgtSetInfo(nOperId, INFO_MCH_USER_SAL, dUsal)
UpdateMachiningPreview(m_MachiningList(nI).m_nId, True)
@@ -2130,10 +2151,24 @@ Public Class SplitModeVM
End If
Dim bRepeat As Boolean = False
Do
' Se c'è limite alla lunghezza libera
If m_MachiningList(nI).m_dEndFreeLen < FREELEN_INF Then
' se abilitati i controlli sugli allungamenti dei lati interni
If Not m_StartEndModifyOnIntCorner Then
' Recupero sicurezza in corner interno
Dim dCornerSafety As Double = Math.Max(GetPrivateProfileDouble(S_MACH_NEST, K_MACH_SAFE_LEN_INTCORNER, 1, CurrentMachine.sMachIniFile), 10 * EPS_SMALL)
' Recupero lunghezza baffo del taglio
Dim nPvId As Integer = GDB_ID.NULL
EgtGetInfo(EgtGetFirstNameInGroup(nOperId, NAME_PREVIEW), INFO_PV_ONPART_ID, nPvId)
Dim dDT As Double = 0
EgtGetInfo(EgtGetFirstGroupInGroup(nPvId), "DT", dDT)
dUeal = Math.Min(dUeal, m_MachiningList(nI).m_dEndFreeLen - dDT - dCornerSafety)
End If
End If
EgtSetCurrMachining(nOperId)
Dim dAddLen As Double = 0
EgtGetMachiningParam(MCH_MP.ENDADDLEN, dAddLen)
If dAddLen - dOrigUeal < -10 * EPS_SMALL Then
If Not m_StartEndModifyOnIntCorner And (dAddLen - dOrigUeal < -10 * EPS_SMALL) Then
Return
End If
EgtSetMachiningParam(MCH_MP.ENDADDLEN, dAddLen + dUeal - dOrigUeal)
@@ -2359,27 +2394,15 @@ Public Class SplitModeVM
EgtGetName(nIdParent, sLayer)
' solo se il nome del layer è quello associato ad un lato esterno allora procedo con l'evidenziazione
If sLayer = NAME_OUTLOOP Then
If EgtGetType(nIdMy) = GDB_TY.CRV_ARC OrElse EgtGetType(nIdMy) = GDB_TY.CRV_COMPO OrElse EgtGetType(nIdMy) = GDB_TY.CRV_LINE Then
If (EgtGetType(nIdMy) = GDB_TY.CRV_ARC OrElse EgtGetType(nIdMy) = GDB_TY.CRV_COMPO OrElse EgtGetType(nIdMy) = GDB_TY.CRV_LINE) AndAlso VerifySideIsAcceptable(nIdMy) Then
If m_nIdSelectedSideWJ <> GDB_ID.NULL Or m_nIdSelectedSideWJ = nIdMy Then
EgtDeselectObj(m_nIdSelectedSideWJ)
End If
' recupero il gruppo della lavorazione associata
nIdParentPart = EgtGetParent(nIdParent)
Dim nIdPV As Integer = EgtGetFirstNameInGroup(nIdParentPart, NAME_PREVIEW)
' VERIFICA: recupero l'elenco delle Preview di Tipo WaterJet associate a questo Part
Dim ListGroup As List(Of Integer) = OmagOFFICEMap.refNestingTabVM.ResearchGropuWJ(nIdParent, nIdPV)
' VERIFICA: se esistono delle lavorazioni associate al percorso OutLoop di tipo Saw allora non procedo
Dim ListGroupSaw As List(Of Integer) = OmagOFFICEMap.refNestingTabVM.ResearchGropuSaw(nIdParent, nIdPV)
' se non esiste almeno 1 Preview di tipo WaterJet
If ListGroup.Count > 0 Then
If IsWaterJetting(nIdMy) Then
m_nIdSelectedSideWJ = nIdMy
' Ricalcolo tutte le lavorazioni
Dim nWarn As Integer = 0
ResetAllMachinings(nWarn)
' recupero l'indice del PreView che deve essere acceso per indicare la selezione
ListGroup = OmagOFFICEMap.refNestingTabVM.ResearchGropuWJ(nIdParent, nIdPV)
Dim nIdWJ As Integer = OmagOFFICEMap.refNestingTabVM.GetPVIdFromIdSide(ListGroup, nIdMy)
OmagOFFICEMap.refNestingTabVM.GetCurrentPVFromIdSide(ListGroup, nIdMy, nIdWJ, nIdParent)
' recupero il punto più vicino alla curva passata
If IsFirst Then
EgtNearPoint(nIdMy, CurrPoint, GDB_RT.GLOB, m_ptSrtBridge)
@@ -2389,9 +2412,14 @@ Public Class SplitModeVM
EgtModifyCurveEndPoint(m_nIdBridge, m_ptEndBridge, GDB_RT.GLOB)
If VerifyInterference(m_nIdBridge) Then
OmagOFFICEMap.refStatusBarVM.ClearOutputMessage()
' salvo nel Gruppo "BridgeLine" gli dei pezzi che sono collegati
EgtSetInfo(EgtGetParent(m_nIdBridge), "PartStart", m_nIdSelectedPartWJ_Srt)
EgtSetInfo(EgtGetParent(m_nIdBridge), "PartEnd", m_nIdSelectedPartWJ_End)
EgtSetInfo(m_nIdBridge, "PartStart", m_nIdSelectedPartWJ_Srt)
EgtSetInfo(m_nIdBridge, "EntStart", m_nIdSelectedSideWJ_Srt)
EgtSetInfo(m_nIdBridge, "PartEnd", m_nIdSelectedPartWJ_End)
EgtSetInfo(m_nIdBridge, "EntEnd", m_nIdSelectedSideWJ_End)
EgtSetInfo(m_nIdBridge, "Ph", EgtGetCurrPhase())
' Ricalcolo tutte le lavorazioni
Dim nWarn As Integer = 0
ResetAllMachinings(nWarn)
Else
' attendo la selezione di un punto valido
m_nIdSelectedSideWJ = GDB_ID.NULL
@@ -2402,7 +2430,6 @@ Public Class SplitModeVM
Return
End If
End If
m_nIdSelectedWaterJet = nIdWJ
' salvo il valore del PreView evidenziato
EgtSetMark(nIdParentPart)
' EgtSetMark(nIdWJ)
@@ -2428,13 +2455,19 @@ Public Class SplitModeVM
Dim nIdMy As Integer = EgtGetFirstObjInSelWin()
While nIdMy <> GDB_ID.NULL
Dim sGroupName As String = String.Empty
Dim sSelName As String = String.Empty
' gruppo di appartenenza
Dim nIdParent As Integer = EgtGetParent(nIdMy)
' recupero il nome del Layer
' recupero il nome del gruppo di appartenenza
EgtGetName(nIdParent, sGroupName)
If sGroupName.Contains("BridgeLine") Then
EgtErase(nIdParent)
' recupero il nome dell'oggetto selezionato
EgtGetName(nIdMy, sSelName)
If sGroupName.Contains(NAME_BRIDGES) AndAlso sSelName.Contains(NAME_BRIDGESLINE) Then
EgtErase(nIdMy)
EgtDraw()
' Ricalcolo tutte le lavorazioni
Dim nWarn As Integer = 0
ResetAllMachinings(nWarn)
Return
End If
nIdMy = EgtGetNextObjInSelWin()
@@ -2445,9 +2478,9 @@ Public Class SplitModeVM
ptCurr.z = m_ptSrtBridge.z
' rappresento il egmento
If m_nIdBridge = GDB_ID.NULL Then
m_nIdBridgeLineGroup = EgtCreateGroup(m_nIdBridgesGroup)
EgtSetName(m_nIdBridgeLineGroup, "BridgeLine")
m_nIdBridge = EgtCreateLine(m_nIdBridgeLineGroup, m_ptSrtBridge, ptCurr, GDB_RT.GLOB)
m_nIdBridge = EgtCreateLine(m_nIdBridgesGroup, m_ptSrtBridge, ptCurr, GDB_RT.GLOB)
' assegno un nome alla linea
EgtSetName(m_nIdBridge, NAME_BRIDGESLINE)
End If
EgtModifyCurveEndPoint(m_nIdBridge, ptCurr, GDB_RT.GLOB)
EgtDraw()
@@ -2465,7 +2498,7 @@ Public Class SplitModeVM
Dim nIdPart As Integer = GDB_ID.NULL
nIdPart = EgtGetFirstPartInRawPart(GetCurrentRaw())
While nIdPart <> GDB_ID.NULL
Dim nIdRegion As Integer = EgtGetFirstNameInGroup(nIdPart, "Region")
Dim nIdRegion As Integer = EgtGetFirstNameInGroup(nIdPart, NAME_REGION)
Dim nIdSurf As Integer = EgtGetFirstInGroup(nIdRegion)
While nIdSurf <> GDB_ID.NULL
If EgtGetType(nIdSurf) = GDB_TY.SRF_FRGN Then
@@ -2482,6 +2515,75 @@ Public Class SplitModeVM
Return True
End Function
Private Function VerifySideIsAcceptable(nMyId As Integer) As Boolean
Dim dVal As Double = 0
' verifico che l'entità selezionata non contenga questi parametri
If EgtGetInfo(nMyId, INFO_SIDE_ANGLE2, dVal) Then
If dVal <> 0 Then
Return False
End If
End If
If EgtGetInfo(nMyId, INFO_SIDE_ANGLE, dVal) Then
If dVal <> 0 Then
Return False
End If
End If
If EgtGetInfo(nMyId, INFO_ORIG_SIDE_ANGLE, dVal) Then
If dVal <> 0 Then
Return False
End If
End If
' altrimenti l'entità è accettabile
Return True
End Function
' verifico che il lato selezionato appartenga ad una lavorazione di tipo Waterjet
Private Function IsWaterJetting(nMyId As Integer) As Boolean
' verifico che sul lato indicato sia impostato un taglio di tipo WaterJet
Dim nMchId As Integer = GDB_ID.NULL
For nInd As Integer = 0 To m_MachiningList.Count() - 1
nMchId = m_MachiningList(nInd).m_nId
Dim nMachiningType As Integer = EgtGetOperationType(m_MachiningList(nInd).m_nId)
If nMachiningType = MCH_MY.WATERJETTING Then
EgtSetCurrMachining(nMchId)
Dim nIndex As Integer = 0
Dim nIdSide As Integer = GDB_ID.NULL
Dim nSub As Integer = GDB_ID.NULL
While EgtGetMachiningGeometry(nIndex, nIdSide, nSub)
If nIdSide = nMyId Then
Return True
End If
nIndex += 1
End While
End If
Next
Return False
End Function
Private Sub RefreshMachList()
For nI As Integer = 0 To m_MachiningList.Count() - 1
' cancello tutti gli indici di lavorazione presenti nel disegno
Dim nNbrId As Integer = GDB_ID.NULL
EgtErase(m_MachiningList(nI).m_nNbrId)
EgtRemoveInfo(m_MachiningList(nI).m_nId, "NbrId")
Next
' Preparo la lista delle lavorazioni
CalculateSplitMachList(m_nCurrPhase, m_MachiningList)
' Aggiorno visualizzazione delle lavorazioni
For nI As Integer = 0 To m_MachiningList.Count() - 1
' sistemo colore
ColorMachining(m_MachiningList(nI))
' assegno nuova numerazione
NumberDirectionMachining(nI)
' conto il numero di tipi di lavorazioni
CountMachiningType(m_MachiningList(nI), m_nCountSawing, m_nCountWaterjetting, m_nCountOtherMachining)
Next
' aggiorno grafica
ShowMachiningList()
' aggiorno la visualizzazione
EgtDraw()
End Sub
Private Sub DeselectWJBridgesPart()
' se in fase di definzione di un ponticello lo elimino
If m_nIdSelectedSideWJ_Srt <> GDB_ID.NULL And m_nIdSelectedSideWJ_End = GDB_ID.NULL And m_nIdBridge <> GDB_ID.NULL Then
@@ -2518,6 +2620,8 @@ Public Class SplitModeVM
OnMyMouseDownSceneBridges(sender, e, True, m_nIdSelectedSideWJ_Srt, m_nIdSelectedWaterJet_Srt, m_nIdSelectedPartWJ_Srt)
Else
OnMyMouseDownSceneBridges(sender, e, False, m_nIdSelectedSideWJ_End, m_nIdSelectedWaterJet_End, m_nIdSelectedPartWJ_End)
' aggiorno la visualizzazione delle lavorazioni e la lista
RefreshMachList()
End If
' se entrambi i pezzi sono stati definiti allora procedo alla deselezione
If m_nIdSelectedPartWJ_Srt <> GDB_ID.NULL And m_nIdSelectedPartWJ_End <> GDB_ID.NULL Then
@@ -2529,6 +2633,8 @@ Public Class SplitModeVM
' eliminazione dei ponticelli
If m_BridgeDeleteBtn_IsChecked Then
OnMyMouseDownSceneBridgesDelete(sender, e)
' aggiorno la visualizzazione delle lavorazioni e la lista
RefreshMachList()
Return
End If
+47
View File
@@ -1744,6 +1744,10 @@ Public Class NestingTabVM
' Ciclo di cancellazione dei pezzi selezionati
nId = EgtGetFirstSelectedObj()
While nId <> GDB_ID.NULL
'' elimino eventuali ponticelli associati al pezzo: non è gestito il movimento del pezzo
'DeleteBridgeAssociated(nId)
' se è stato eseguito il Drag allora cancello tutti i ponticelli
ResetAllBridges()
' Recupero indice del successivo
Dim nNextId = EgtGetNextSelectedObj()
' Se abilitata cancellazione in ogni caso o pezzo non da Csv
@@ -1785,6 +1789,47 @@ Public Class NestingTabVM
VeinMatching.Draw()
End Sub
Private Sub DeleteBridgeAssociated(nMyId As Integer)
' verifico se esistono dei ponticelli associati al pezzo indicato
' recuoero il gruppo di lavorazione corrente
Dim nIdCurrMachGroup As Integer = EgtGetCurrMachGroup()
' creo il gruppo per i ponticelli
Dim sNameGroup As String = NAME_BRIDGES
Dim nIdBridgesGroup As Integer = EgtGetFirstNameInGroup(nIdCurrMachGroup, sNameGroup)
If nIdBridgesGroup <> GDB_ID.NULL Then
' carico la prima entità del gruppo BRIDGES
Dim nIdBridgeLine As Integer = GDB_ID.NULL
nIdBridgeLine = EgtGetFirstNameInGroup(nIdBridgesGroup, NAME_BRIDGESLINE)
' ciclo su tutte le entità
While nIdBridgeLine <> GDB_ID.NULL
Dim nNextBridgeLine As Integer = GDB_ID.NULL
Dim nIdPart As Integer = GDB_ID.NULL
If EgtGetInfo(nIdBridgeLine, "PartStart", nIdPart) Then
If nIdPart = nMyId Then
nNextBridgeLine = EgtGetNext(nIdBridgeLine)
' il ponticello deve essere eliminato
EgtErase(nIdBridgeLine)
nIdBridgeLine = nNextBridgeLine
' riparto dall'inizio del ciclo
Continue While
End If
End If
If EgtGetInfo(nIdBridgeLine, "PartEnd", nIdPart) Then
If nIdPart = nMyId Then
nNextBridgeLine = EgtGetNext(nIdBridgeLine)
' il ponticello deve essere eliminato
EgtErase(nIdBridgeLine)
nIdBridgeLine = nNextBridgeLine
' riparto dall'inizio del ciclo
Continue While
End If
End If
' il BridgeLine corrente non contiene riferimeti al pezzo da eliminare
nIdBridgeLine = EgtGetNext(nIdBridgeLine)
End While
End If
End Sub
#End Region ' RemovePartCommand
#Region "SelectAllCommand"
@@ -2157,6 +2202,8 @@ Public Class NestingTabVM
m_bDragging = False
' se è stato eseguito il Drag allora cancello tutti i ponticelli
ResetAllBridges()
' non è gestito il movimento della lavorazione!
'DeleteBridgeAssociated(nMoveId)
End Sub
Friend Sub OnMouseUpScene(sender As Object, e As System.Windows.Forms.MouseEventArgs)
+8 -6
View File
@@ -1145,14 +1145,14 @@ Public Class RawPartTabVM
dRawWidth = m_dTableWidth - 2 * dRawKerf
End If
If dRawOffsX < dRawKerf Then dRawOffsX = dRawKerf
If dRawOffsX + dRawLen + dRawKerf > m_dTableLength Then
dRawOffsX = Math.Max(dRawKerf, m_dTableLength - dRawLen - dRawKerf)
dRawLen = Math.Min(dRawLen, m_dTableLength - dRawOffsX - dRawKerf)
If dRawOffsX + dRawLen + 2 * dRawKerf > m_dTableLength Then
dRawOffsX = Math.Max(dRawKerf, m_dTableLength - dRawLen - 2 * dRawKerf)
dRawLen = Math.Min(dRawLen, m_dTableLength - dRawOffsX - 2 * dRawKerf)
End If
If dRawOffsY < dRawKerf Then dRawOffsY = dRawKerf
If dRawOffsY + dRawWidth + dRawKerf > m_dTableWidth Then
dRawOffsY = Math.Max(dRawKerf, m_dTableWidth - dRawWidth - dRawKerf)
dRawWidth = Math.Min(dRawWidth, m_dTableWidth - dRawOffsY - dRawKerf)
If dRawOffsY + dRawWidth + 2 * dRawKerf > m_dTableWidth Then
dRawOffsY = Math.Max(dRawKerf, m_dTableWidth - dRawWidth - 2 * dRawKerf)
dRawWidth = Math.Min(dRawWidth, m_dTableWidth - dRawOffsY - 2 * dRawKerf)
End If
' Assegno i dati
SetLength(dRawLen)
@@ -2389,6 +2389,8 @@ Public Class RawPartTabVM
End If
' Aggiorno il punto precedente
m_ptPrev = ptCurr
' Resetto i ponticelli (per ora non sono in grado di muoverli assieme ai pezzi)
ResetAllBridges()
End Sub
Private Sub ModifyPhoto(ptCurr As Point3d)