Imports EgtUILib Module Analyze Private m_AnaGrpId As Integer = GDB_ID.NULL Function CreateAnalyzeGroup() As Boolean Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() If m_AnaGrpId = GDB_ID.NULL Then m_AnaGrpId = EgtCreateGroup( GDB_ID.ROOT) EgtSetName( m_AnaGrpId, "$$ANALYZE") EgtSetLevel( m_AnaGrpId, GDB_LV.TEMP) Else EgtEmptyGroup( m_AnaGrpId) End If EgtUnselectableAdd( m_AnaGrpId) If bEnMod Then EgtEnableModified() Return ( m_AnaGrpId <> GDB_ID.NULL) End Function Function ClearAnalyzeGroup() As Boolean Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() EgtEmptyGroup( m_AnaGrpId) If bEnMod Then EgtEnableModified() Return ( m_AnaGrpId <> GDB_ID.NULL) End Function Function EraseAnalyzeGroup() As Boolean Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() EgtUnselectableRemove( m_AnaGrpId) EgtErase( m_AnaGrpId) m_AnaGrpId = GDB_ID.NULL If bEnMod Then EgtEnableModified() Return True End Function Function CreateFacetNormal( nId As Integer, nFac As Integer) As Boolean If m_AnaGrpId = GDB_ID.NULL Then Return False Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() Dim ptC As Point3d Dim vtN As Vector3d If EgtSurfTmFacetCenter( nId, nFac, GDB_ID.ROOT, ptC, vtN) Then Dim nNormId As Integer = EgtCreateGeoVector( m_AnaGrpId, 50 * vtN, ptC, GDB_RT.GLOB) EgtSetColor( nNormId, New Color3d( 255, 0,0)) End If If bEnMod Then EgtEnableModified() Return True End Function Function CreateFacetLoops( nId As Integer, nFac As Integer) As Boolean If m_AnaGrpId = GDB_ID.NULL Then Return False Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() Dim nCount As Integer Dim nFirstId As Integer = EgtExtractSurfTmFacetLoops( nId, nFac, m_AnaGrpId, nCount) If nFirstId <> GDB_ID.NULL Then For nCrvId As Integer = nFirstId To nFirstId + nCount - 1 EgtSetColor( nCrvId, New Color3d( 255, 0,0)) Next End If If bEnMod Then EgtEnableModified() Return True End Function Function CreateTriaLoop( nId As Integer, nT As Integer) As Boolean If m_AnaGrpId = GDB_ID.NULL Then Return False Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() Dim nCrvId As Integer = EgtExtractSurfTmTriaLoop( nId, nT, m_AnaGrpId) EgtSetColor( nCrvId, New Color3d( 255, 255,0)) If bEnMod Then EgtEnableModified() Return True End Function Function CreateTriaNormal( nId As Integer, nT As Integer) As Boolean 'If m_AnaGrpId = GDB_ID.NULL Then Return False 'Dim bEnMod As Boolean = EgtGetEnableModified() 'EgtDisableModified() 'Dim ptC As Point3d 'Dim vtN As Vector3d 'If EgtSurfTmTriangleNormVersor( nId, nT, GDB_ID.ROOT, ptC, vtN) Then ' Dim nNormId As Integer = EgtCreateGeoVector( m_AnaGrpId, 50 * vtN, ptC, GDB_RT.GLOB) ' EgtSetColor( nNormId, New Color3d( 255, 0,0)) 'End If 'If bEnMod Then EgtEnableModified() Return True End Function Function CreateChunkNormal( nId As Integer, nChk As Integer) As Boolean If m_AnaGrpId = GDB_ID.NULL Then Return False Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() Dim ptC As Point3d Dim vtN As Vector3d If EgtSurfFrChunkCenter( nId, nChk, GDB_ID.ROOT, ptC, vtN) Then Dim nNormId As Integer = EgtCreateGeoVector( m_AnaGrpId, 50 * vtN, ptC, GDB_RT.GLOB) EgtSetColor( nNormId, New Color3d( 255, 0,0)) End If If bEnMod Then EgtEnableModified() Return True End Function Function CreateChunkLoops( nId As Integer, nChk As Integer) As Boolean If m_AnaGrpId = GDB_ID.NULL Then Return False Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() Dim nCount As Integer Dim nFirstId As Integer = EgtExtractSurfFrChunkLoops( nId, nChk, m_AnaGrpId, nCount) If nFirstId <> GDB_ID.NULL Then For nCrvId As Integer = nFirstId To nFirstId + nCount - 1 EgtSetColor( nCrvId, New Color3d( 255, 0,0)) Next End If If bEnMod Then EgtEnableModified() Return True End Function Function CreateCurveCompoPntNbrs( nId As Integer) As Boolean If m_AnaGrpId = GDB_ID.NULL Then Return False Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() 'Riferimento della griglia corrente Dim refGrid As Frame3d = EgtGetGridFrame() 'Nuovo riferimento griglia con Z come versore estrusione della curva Dim vtExtr As Vector3d : EgtCurveExtrusion( nId, vtExtr) If Not vtExtr.IsSmall() Then Dim refCrv As New Frame3d : refCrv.Setup( EgtGetGridOrigin(), vtExtr) EgtSetGridFrame( refCrv) End If 'Recupero il numero di curve semplici Dim dStart, dEnd As Double EgtCurveDomain( nId, dStart, dEnd) Dim nCount As Integer = CInt( dEnd - dStart) - 1 ' Ciclo sulle curve semplici For i As Integer = 0 To nCount 'Scrivo il punto iniziale di ogni curva componente Dim ptS As Point3d EgtAtParamPoint( nId, i, GDB_ID.GRID, ptS) Dim nPntId As Integer = EgtCreateGeoPoint( m_AnaGrpId, ptS, GDB_RT.GRID) EgtSetColor( nPntId, New Color3d( 255, 0,0)) 'Scrivo il numero identificativo di ogni curva componente Dim ptP As Point3d EgtAtParamPoint( nId, i + 0.5, GDB_ID.GRID, ptP) Dim dLen As Double = 2 * Point3d.Dist( ptS, ptP) Dim dH As Double = Math.Min( 0.25 * dLen, 10) Dim nTxtId As Integer = EgtCreateTextAdv( m_AnaGrpId, ptP, 0, i.ToString(), "", 100, False, dH, 1, 0, INS_POS.MC, GDB_RT.GRID) EgtSetColor( nTxtId, New Color3d( 255, 0,0)) Next 'Se curva aperta aggiungo il punto finale If Not EgtCurveIsClosed( nId) Then Dim ptE As Point3d EgtEndPoint( nId, GDB_ID.GRID, ptE) Dim nPntId As Integer = EgtCreateGeoPoint( m_AnaGrpId, ptE, GDB_RT.GRID) EgtSetColor( nPntId, New Color3d( 255, 0,0)) End If 'Reimposto il riferimento originale alla griglia EgtSetGridFrame( refGrid) If bEnMod Then EgtEnableModified() Return True End Function Function CreateSBzPointNormalAndTangents( nId As Integer, ptBez As Point3d, ByRef dU As Double, ByRef dV As Double) As Boolean If m_AnaGrpId = GDB_ID.NULL Then Return False Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() Dim bOk As Boolean = EgtSurfBezParamsFromPoint( nId, ptBez, m_AnaGrpId, dU, dV) If bEnMod Then EgtEnableModified() Return bOk End Function Function CreateSBzIsoParam( nId As Integer, ByRef dU As Double, ByRef dV As Double) As Boolean If m_AnaGrpId = GDB_ID.NULL Then Return False Dim bEnMod As Boolean = EgtGetEnableModified() EgtDisableModified() Dim nIdCrv As Integer = EgtSurfBezierGetCurveU( nId, dV, m_AnaGrpId) EgtSetColor( nIdCrv, New Color3d(128,128,255)) Dim bOk As Boolean = nIdCrv <> GDB_ID.NULL nIdCrv = EgtSurfBezierGetCurveV( nId, dU, m_AnaGrpId) bOk = bOk And nIdCrv <> GDB_ID.NULL EgtSetColor( nIdCrv, New Color3d(255,128,128)) If bEnMod Then EgtEnableModified() Return bOk End Function End Module