diff --git a/Controller.vb b/Controller.vb index 239b29d..8b06173 100644 --- a/Controller.vb +++ b/Controller.vb @@ -1636,9 +1636,7 @@ Public Class Controller Select Case EgtGetType(nId) Case GDB_TY.GEO_POINT Dim ptOrig As Point3d - If Not EgtStartPoint(nId, GDB_ID.ROOT, ptOrig) Then - Return False - End If + If Not EgtStartPoint(nId, GDB_ID.ROOT, ptOrig) Then Return False Dim frNew As Frame3d = EgtGetGridFrame() frNew.ChangeOrigin(ptOrig) EnableCommandLog() @@ -1646,31 +1644,17 @@ Public Class Controller DisableCommandLog() Case GDB_TY.GEO_FRAME Dim frNew As New Frame3d - If Not EgtFrame(nId, GDB_ID.ROOT, frNew) Then - Return False - End If + If Not EgtFrame(nId, GDB_ID.ROOT, frNew) Then Return False EnableCommandLog() EgtSetGridFrame(frNew) DisableCommandLog() - Case GDB_TY.CRV_ARC + Case GDB_TY.CRV_LINE, GDB_TY.CRV_ARC, GDB_TY.CRV_BEZ, GDB_TY.CRV_COMPO Dim vtZ As Vector3d If Not EgtCurveExtrusion(nId, vtZ) OrElse vtZ.IsSmall() Then - EgtArcNormVersor(nId, vtZ) + If Not EgtArcNormVersor(nId, vtZ) Then vtZ = Vector3d.Z_AX End If Dim ptOrig As Point3d - EgtMidPoint(nId, ptOrig) - Dim frNew As New Frame3d - frNew.Setup(ptOrig.Glob(nId), vtZ.Glob(nId)) - EnableCommandLog() - EgtSetGridFrame(frNew) - DisableCommandLog() - Case GDB_TY.CRV_LINE, GDB_TY.CRV_BEZ, GDB_TY.CRV_COMPO - Dim vtZ As Vector3d - If Not EgtCurveExtrusion(nId, vtZ) OrElse vtZ.IsSmall() Then - vtZ = Vector3d.Z_AX - End If - Dim ptOrig As Point3d - EgtMidPoint(nId, ptOrig) + EgtCentroid(nId, ptOrig) Dim frNew As New Frame3d frNew.Setup(ptOrig.Glob(nId), vtZ.Glob(nId)) EnableCommandLog() @@ -5115,7 +5099,13 @@ Public Class Controller Dim nCount As Integer EgtOffsetCurveAdv(nId, m_dLast, m_nLast, nCount) If nCount <= 0 Then + Dim vtPlaN As Vector3d + Dim dPlaDist As Double + If EgtCurveIsFlat(nId, vtPlaN, dPlaDist) Then RaiseEvent OutputInfo(Me, EgtMsg(2056)) ' Distance too big + Else + RaiseEvent OutputInfo(Me, EgtMsg(2057)) ' Curve not flat (in its plane) + End If Else EgtErase(nId) RaiseEvent OutputInfo(Me, "") @@ -5138,6 +5128,11 @@ Public Class Controller Dim dDistFr As Double = vtDiff.Len() ' assegno la distanza di offset tenendo conto del lato ( sx=-1, dx=+1) m_dLast = dDistFr * nSide + ' se vettore estrusione della curva opposto al versore Z della griglia, devo cambiare segno alla distanza + Dim vtExtr As Vector3d + If EgtCurveExtrusion(nId, vtExtr) And Not vtExtr.IsSmall() Then + If vtExtr * EgtGetGridVersZ() < -EPS_SMALL Then m_dLast = -m_dLast + End If End If End If Return False diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index f55cd77..fb317f5 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: ' - - + +