diff --git a/Controller.vb b/Controller.vb index 6d597af..4054c3f 100644 --- a/Controller.vb +++ b/Controller.vb @@ -13,7 +13,7 @@ Imports Microsoft.VisualBasic Imports System.Globalization -Imports EgtUILib.EgtInterface +Imports TestEIn.EgtInterface Imports System.Text Public Class Controller @@ -161,6 +161,17 @@ Public Class Controller Private m_nPrevSel As Integer ' info aux da penultima selezione entità Private m_ptCont As Point3d ' punto finale di entità precedente (per continuazione) Private m_vtCont As Vector3d = Vector3d.X_AX() ' direzione finale di entità precedente (per continuazione) + Private m_dLastLen As Double = If(EgtUiUnitsAreMM(), 100, 101.6) ' ultima lunghezza per linea + Private m_dLastDiam As Double = If(EgtUiUnitsAreMM(), 20, 25.4) ' ultimo diametro per circonferenza + Private m_dLastFillet As Double = If(EgtUiUnitsAreMM(), 10, 12.7) ' ultimo raggio per fillet + Private m_dLastChamfer As Double = If(EgtUiUnitsAreMM(), 10, 12.7) ' ultima lunghezza per smusso + Private m_dLastTextH As Double = If(EgtUiUnitsAreMM(), 10, 12.7) ' ultima altezza per testo + Private m_bLastExtrudeCheck As Boolean = False ' ultimo valore di check cap in estrusione + Private m_dLastExtrude As Double = If(EgtUiUnitsAreMM(), 20, 25.4) ' ultimo valore di estrusione per superficie + Private m_dLastExtend As Double = If(EgtUiUnitsAreMM(), 50, 50.8) ' ultimo valore di allungamento + Private m_bLastTransfCheck As Boolean = False ' ultimo valore di check copia nelle trasformazioni + Private m_bLastOffsetCheck As Boolean = True ' ultimo valore di check copia in offset + Private m_dLastOffset As Double = If(EgtUiUnitsAreMM(), 10, 12.7) ' ultimo valore di offset ' Input Private Enum IBT As Integer @@ -180,19 +191,6 @@ Public Class Controller ' Costanti Private LEN_STD As Double = 100 - Private LEN_STD_INCH As Double = 101.6 - Private DIAM_STD As Double = 20 - Private DIAM_STD_INCH As Double = 25.4 - Private FILLET_STD As Double = 10 - Private FILLET_STD_INCH As Double = 12.7 - Private CHAMFER_STD As Double = 10 - Private CHAMFER_STD_INCH As Double = 12.7 - Private TEXT_H_STD As Double = 10 - Private TEXT_H_STD_INCH As Double = 12.7 - Private EXTRUDE_STD As Double = 20 - Private EXTRUDE_STD_INCH As Double = 25.4 - Private EXTEND_STD As Double = 50 - Private EXTEND_STD_INCH As Double = 50.8 Private EXTEND_ADD As Double = 10 Private EXTEND_BIG_ADD As Double = 200 @@ -216,14 +214,9 @@ Public Class Controller ' se ok, aggiorno pezzo e layer correnti If nIdNewPart <> GDB_ID.NULL And nIdNewLayer <> GDB_ID.NULL Then EgtSetCurrPartLayer(nIdNewPart, nIdNewLayer) - Else - EgtResetCurrPartLayer() End If ' reset flag di modificato EgtResetModified() - Else - ' aggiorno pezzo e layer correnti - EgtResetCurrPartLayer() End If DisableCommandLog() ' aggiorno @@ -264,7 +257,6 @@ Public Class Controller m_Scene.Cursor = Cursors.WaitCursor EnableCommandLog() Dim bOk As Boolean = EgtOpenFile(sFile) - EgtResetCurrPartLayer() DisableCommandLog() EgtZoom(ZM.ALL) m_Scene.Cursor = Cursors.Default @@ -429,7 +421,7 @@ Public Class Controller OpenFileDialog.Filter = "Drawing Exchange Fmt(*.dxf)|*.dxf" & "|Stereolithography (*.stl)|*.stl" & "|Building parts (*.btl)|*.btl" & - "|Part program ISO (*.cnc;*.xpi)|*.cnc;*.xpi" & + "|Part program ISO (*.cnc;*.xpi;*.mpf)|*.cnc;*.xpi;*.mpf" & "|Cms file format (*.hed;*.ent;*.ens)|*.hed;*.ent;*.ens" & "|All Files (*.*)|*.*" OpenFileDialog.FilterIndex = 6 @@ -2369,7 +2361,7 @@ Public Class Controller Case 1 m_ptP1 = m_ptLast m_vtLast = m_vtCont - m_dAux = If(EgtUiUnitsAreMM(), LEN_STD, LEN_STD_INCH) + m_dAux = m_dLastLen ' posso prendere punto per definire direzione, ma non prendo direzione notevole m_Scene.SetStatusSelPoint(False) m_nStep = 2 @@ -2408,6 +2400,7 @@ Public Class Controller End If EgtDraw() ' aggiorno stato + m_dLastLen = m_dLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -2460,7 +2453,7 @@ Public Class Controller Case 1 m_ptP1 = m_ptLast m_vtLast = m_vtCont - m_dAux = If(EgtUiUnitsAreMM(), LEN_STD, LEN_STD_INCH) + m_dAux = m_dLastLen ' posso prendere punto per definire direzione, ma non prendo direzione notevole m_Scene.SetStatusSelPoint(False) m_nStep = 2 @@ -2497,6 +2490,7 @@ Public Class Controller End If EgtDraw() ' aggiorno stato + m_dLastLen = m_dLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -2607,7 +2601,7 @@ Public Class Controller m_Scene.DisableDrag() RaiseEvent PrepareInputBox("CIRCLE CD", "Insert Diameter", "", False, True) m_nInpType = IBT.TY_LENGTH - m_dLast = If(EgtUiUnitsAreMM(), DIAM_STD, DIAM_STD_INCH) + m_dLast = m_dLastDiam SetInputBoxDouble(m_dLast, True) EgtDisableModified() DragCircleCD() @@ -2622,6 +2616,7 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_dLastDiam = m_dLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -2824,7 +2819,7 @@ Public Class Controller Case 1 m_ptP1 = m_ptLast m_vtLast = m_vtCont - m_dAux = If(EgtUiUnitsAreMM(), LEN_STD, LEN_STD_INCH) + m_dAux = LEN_STD m_Scene.SetStatusSelPoint(False) m_nStep = 2 m_Scene.DisableDrag() @@ -2947,7 +2942,7 @@ Public Class Controller Case 1 m_ptP1 = m_ptLast m_vtLast = m_vtCont - m_dAux = If(EgtUiUnitsAreMM(), LEN_STD, LEN_STD_INCH) + m_dAux = LEN_STD m_Scene.SetStatusSelPoint(False) m_nStep = 2 m_Scene.DisableDrag() @@ -3024,7 +3019,7 @@ Public Class Controller RaiseEvent PrepareInputBox("FILLET", "Insert Radius", "Trim", False, True) RaiseEvent SetInputBoxCheck(True) m_nInpType = IBT.TY_LENGTH - m_dLast = If(EgtUiUnitsAreMM, FILLET_STD, FILLET_STD_INCH) + m_dLast = m_dLastFillet SetInputBoxDouble(m_dLast, True) Case 1 ' reset scena @@ -3039,8 +3034,9 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato - RaiseEvent UpdateUI(Me, True) + m_dLastFillet = m_dLast m_nStep = 0 + RaiseEvent UpdateUI(Me, True) Case Else m_nStep = 0 Return False @@ -3077,7 +3073,7 @@ Public Class Controller RaiseEvent PrepareInputBox("CHAMFER", "Insert distance", "Trim", False, True) RaiseEvent SetInputBoxCheck(True) m_nInpType = IBT.TY_LENGTH - m_dLast = If(EgtUiUnitsAreMM, CHAMFER_STD, CHAMFER_STD_INCH) + m_dLast = m_dLastChamfer SetInputBoxDouble(m_dLast, True) Case 1 ' reset scena @@ -3092,8 +3088,9 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato - RaiseEvent UpdateUI(Me, True) + m_dLastChamfer = m_dLast m_nStep = 0 + RaiseEvent UpdateUI(Me, True) Case Else m_nStep = 0 Return False @@ -3326,7 +3323,7 @@ Public Class Controller m_Scene.SetStatusNull() RaiseEvent PrepareInputBox("TEXT", "Insert Height", "", False, True) m_nInpType = IBT.TY_LENGTH - m_dLast = If(EgtUiUnitsAreMM(), TEXT_H_STD, TEXT_H_STD_INCH) + m_dLast = m_dLastTextH SetInputBoxDouble(m_dLast, True) Case 3 ' reset scena @@ -3338,6 +3335,7 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_dLastTextH = m_dLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -3355,7 +3353,7 @@ Public Class Controller EgtErase(nId) ' creo il testo (drag è in globale) EgtCreateText(m_Scene.GetDragGroup(), m_ptP1.Loc(GDB_ID.GRID), - m_sLast, 10, GDB_RT.GRID) + m_sLast, m_dLastTextH, GDB_RT.GRID) EgtDraw() ElseIf m_nStep = 3 Then ' recupero possibile entità già nel gruppo di drag @@ -3404,7 +3402,7 @@ Public Class Controller m_Scene.SetStatusNull() RaiseEvent PrepareInputBox("TEXT+", "Insert Height", "Italic", True, True) m_nInpType = IBT.TY_LENGTH - m_dLast = If(EgtUiUnitsAreMM(), TEXT_H_STD, TEXT_H_STD_INCH) + m_dLast = m_dLastTextH SetInputBoxDouble(m_dLast, True) m_bLast = False RaiseEvent SetInputBoxCheck(m_bLast) @@ -3434,6 +3432,7 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_dLastTextH = m_dLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -3460,7 +3459,7 @@ Public Class Controller vtDir.ToSpherical(dLen, dAngVertDeg, dAngRotDeg) ' creo il testo (drag è in globale) EgtCreateTextEx(m_Scene.GetDragGroup(), m_ptP1.Loc(GDB_ID.GRID), dAngRotDeg, - m_sLast, "", False, 10, GDB_RT.GRID) + m_sLast, "", False, m_dLastTextH, GDB_RT.GRID) EgtDraw() ElseIf m_nStep = 4 Then ' linea di base @@ -3566,9 +3565,9 @@ Public Class Controller m_Scene.SetStatusNull() ' abilito dialogo RaiseEvent PrepareInputBox("EXTRUSION", "Insert length", "CapEnds", False, True) - RaiseEvent SetInputBoxCheck(False) + RaiseEvent SetInputBoxCheck(m_bLastExtrudeCheck) m_nInpType = IBT.TY_LENGTH - m_dLast = If(EgtUiUnitsAreMM(), EXTRUDE_STD, EXTRUDE_STD_INCH) + m_dLast = If(Math.Abs(m_dLastExtrude) > 10 * EPS_SMALL, m_dLastExtrude, 10 * EPS_SMALL) SetInputBoxDouble(m_dLast, True) EgtDisableModified() DragExtrude() @@ -3602,6 +3601,8 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_bLastExtrudeCheck = m_bLast + m_dLastExtrude = m_dLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -4047,7 +4048,7 @@ Public Class Controller m_Scene.SetDragIntersForSelPoint(True) ' imposto stato a lunghezza di estensione m_nStep = 1 - m_dLast = If(EgtUiUnitsAreMM(), EXTEND_STD, EXTEND_STD_INCH) + m_dLast = m_dLastExtend ' recupero dati estremo più vicino a punto di selezione per permettere drag lunghezza con mouse m_Scene.SetStatusSelPoint(False) Dim nId As Integer = EgtGetLastSelectedObj() @@ -4082,6 +4083,7 @@ Public Class Controller ' reset stato scena m_Scene.ResetStatus() ' aggiorno stato + m_dLastExtend = m_dLast m_nStep = 0 RaiseEvent UpdateUI(Me, False) Case Else @@ -4356,13 +4358,15 @@ Public Class Controller ' abilito dialogo "MOVE", "Insert Base Point", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2402), EgtMsg(2403), EgtMsg(2001), False, False) m_nInpType = IBT.TY_POINT3D - RaiseEvent SetInputBoxCheck(False) + SetInputBoxPoint3d(Point3d.ORIG()) + RaiseEvent SetInputBoxCheck(m_bLastTransfCheck) Case 1 m_ptP1 = m_ptLast m_nStep = 2 m_Scene.EnableDrag() ' abilito dialogo "MOVE", "Insert Target Point", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2402), EgtMsg(2404), EgtMsg(2001), False, True) + SetInputBoxPoint3d(m_ptLast) m_nInpType = IBT.TY_POINT3D Case 2 m_Scene.ResetStatus(False) @@ -4382,6 +4386,7 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_bLastTransfCheck = m_bLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -4415,7 +4420,7 @@ Public Class Controller ' abilito dialogo "ROTATE", "Insert Center", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2406), EgtMsg(2407), EgtMsg(2001), False, False) m_nInpType = IBT.TY_POINT3D - RaiseEvent SetInputBoxCheck(False) + RaiseEvent SetInputBoxCheck(m_bLastTransfCheck) Case 1 m_ptP1 = m_ptLast m_nStep = 2 @@ -4460,6 +4465,7 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_bLastTransfCheck = m_bLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -4505,7 +4511,7 @@ Public Class Controller ' abilito dialogo "ROTATE 3D", "Insert First Point on Axis", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2411), EgtMsg(2412), EgtMsg(2001), False, False) m_nInpType = IBT.TY_POINT3D - RaiseEvent SetInputBoxCheck(False) + RaiseEvent SetInputBoxCheck(m_bLastTransfCheck) Case 1 m_ptP1 = m_ptLast m_ptP2 = m_ptP1 @@ -4568,6 +4574,7 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_bLastTransfCheck = m_bLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -4618,7 +4625,7 @@ Public Class Controller ' abilito dialogo "MIRROR", "Insert First Point", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2416), EgtMsg(2417), EgtMsg(2001), False, False) m_nInpType = IBT.TY_POINT3D - RaiseEvent SetInputBoxCheck(False) + RaiseEvent SetInputBoxCheck(m_bLastTransfCheck) Case 1 m_ptP1 = m_ptLast m_ptP2 = m_ptP1 @@ -4655,6 +4662,7 @@ Public Class Controller End If EgtDraw() ' aggiorno stato + m_bLastTransfCheck = m_bLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -4700,7 +4708,7 @@ Public Class Controller ' abilito dialogo "MIRROR 3D", "Insert First Point", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2421), EgtMsg(2422), EgtMsg(2001), False, False) m_nInpType = IBT.TY_POINT3D - RaiseEvent SetInputBoxCheck(False) + RaiseEvent SetInputBoxCheck(m_bLastTransfCheck) Case 1 m_ptP1 = m_ptLast m_ptP2 = m_ptP1 @@ -4751,6 +4759,7 @@ Public Class Controller End If EgtDraw() ' aggiorno stato + m_bLastTransfCheck = m_bLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -4797,7 +4806,7 @@ Public Class Controller ' abilito dialogo "SCALE", "Insert Center", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2426), EgtMsg(2427), EgtMsg(2001), False, False) m_nInpType = IBT.TY_POINT3D - RaiseEvent SetInputBoxCheck(False) + RaiseEvent SetInputBoxCheck(m_bLastTransfCheck) Case 1 m_ptP1 = m_ptLast m_dPrev = 1 @@ -4832,6 +4841,7 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_bLastTransfCheck = m_bLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -4873,7 +4883,7 @@ Public Class Controller ' abilito dialogo "SCALE 3D", "Insert Center", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2431), EgtMsg(2432), EgtMsg(2001), False, False) m_nInpType = IBT.TY_POINT3D - RaiseEvent SetInputBoxCheck(False) + RaiseEvent SetInputBoxCheck(m_bLastTransfCheck) Case 1 m_ptP1 = m_ptLast m_d3Prev(0) = 1 @@ -4920,6 +4930,7 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_bLastTransfCheck = m_bLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else @@ -4981,14 +4992,14 @@ Public Class Controller End If ' imposto stato a lunghezza di offset m_nStep = 1 - m_dLast = 0 + m_dLast = m_dLastOffset m_dPrev = m_dLast m_Scene.SetStatusSelPoint(False) ' abilito dialogo "OFFSET", "Insert Distance", "Copy" RaiseEvent PrepareInputBox(EgtMsg(2436), EgtMsg(2437), EgtMsg(2001), True, True) m_nInpType = IBT.TY_SPECIALDOUBLE SetInputBoxDouble(m_dLast, True) - RaiseEvent SetInputBoxCheck(True) + RaiseEvent SetInputBoxCheck(m_bLastOffsetCheck) RaiseEvent AddInputBoxCombo(EgtMsg(2438), True) ' Fillet RaiseEvent AddInputBoxCombo(EgtMsg(2439), False) ' Chamfer RaiseEvent AddInputBoxCombo(EgtMsg(2440), False) ' Extend @@ -5012,6 +5023,8 @@ Public Class Controller DisableCommandLog() EgtDraw() ' aggiorno stato + m_bLastOffsetCheck = m_bLast + m_dLastOffset = m_dLast m_nStep = 0 RaiseEvent UpdateUI(Me, True) Case Else diff --git a/EgtInterface.vb b/EgtInterface.vb index f4404be..7bf002d 100644 --- a/EgtInterface.vb +++ b/EgtInterface.vb @@ -6009,6 +6009,20 @@ Public Function EgtCreateOutRegion(nParentId As Integer, nOutCrvId As Integer) A End If End Function + +Private Function EgtCreateReferenceRegion_32(nParentId As Integer, nOutCrvId As Integer, bBottomUp As Boolean) As Boolean +End Function + +Private Function EgtCreateReferenceRegion_64(nParentId As Integer, nOutCrvId As Integer, bBottomUp As Boolean) As Boolean +End Function +Public Function EgtCreateReferenceRegion(nParentId As Integer, nOutCrvId As Integer, bBottomUp As Boolean) As Boolean + If IntPtr.Size = 4 Then + Return EgtCreateReferenceRegion_32(nParentId, nOutCrvId, bBottomUp) + Else + Return EgtCreateReferenceRegion_64(nParentId, nOutCrvId, bBottomUp) + End If +End Function + Private Function EgtCreateDamagedRegion_32(nParentId As Integer, nDmgCrvId As Integer) As Boolean End Function @@ -6414,7 +6428,7 @@ End Function Private Function EgtAddMachGroup_64(sName As String, sMachineName As String) As Integer End Function -Public Function EgtAddMachGroup(sName As String, sMachineName As String) As Integer +Public Function EgtAddMachGroup(sName As String, Optional sMachineName As String = "") As Integer If IntPtr.Size = 4 Then Return EgtAddMachGroup_32(sName, sMachineName) Else @@ -7435,6 +7449,29 @@ Public Function EgtMdbGetNextMachining(nType As Integer, ByRef sName As String) Return bOk End Function + +Private Function EgtMdbGetMachiningFromUUID_32(sMuuid As String, ByRef psName As IntPtr) As Boolean +End Function + +Private Function EgtMdbGetMachiningFromUUID_64(sMuuid As String, ByRef psName As IntPtr) As Boolean +End Function +Public Function EgtMdbGetMachiningFromUUID(sMuuid As String, ByRef sName As String) As Boolean + Dim psName As IntPtr + Dim bOk As Boolean + If IntPtr.Size = 4 Then + bOk = EgtMdbGetMachiningFromUUID_32(sMuuid, psName) + Else + bOk = EgtMdbGetMachiningFromUUID_64(sMuuid, psName) + End If + If bOk Then + sName = Marshal.PtrToStringUni(psName) + EgtFreeMemory(psName) + Else + sName = String.Empty + End If + Return bOk +End Function + Private Function EgtMdbSetCurrMachining_32(sName As String) As Boolean End Function diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index ce22ddd..42bb006 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -46,5 +46,5 @@ Imports System.Runtime.InteropServices ' utilizzando l'asterisco (*) come descritto di seguito: ' - - + +