Files
OmagCUT/GeomCalc.vb
T
Dario Sassi f983950b0b OmagCUT :
- gestione definizione fori da sotto da componenti e da import.
2018-07-16 06:25:26 +00:00

58 lines
2.4 KiB
VB.net

Imports EgtUILib
Module GeomCalc
Public Function GetRegionOutLoop(nRegId As Integer, nDestGrpId As Integer) As Integer
Dim nCount As Integer = 0
Dim nOutId As Integer = EgtExtractSurfFrChunkLoops(nRegId, 0, nDestGrpId, nCount)
If nOutId <> GDB_ID.NULL Then
For nId As Integer = nOutId + 1 To nOutId + nCount - 1
EgtErase(nId)
Next
End If
Return nOutId
End Function
Public Function CreateSolidFromRegion(nRegId As Integer, vtExtr As Vector3d, nDestGrpId As Integer) As Integer
Dim nOutId As Integer = GetRegionOutLoop(nRegId, nDestGrpId)
If nOutId = GDB_ID.NULL Then Return GDB_ID.NULL
Dim nSolId As Integer = EgtCreateSurfTmByRegionExtrusion(nDestGrpId, 1, {nOutId}, vtExtr,
100 * EPS_SMALL, GDB_RT.GLOB)
EgtErase(nOutId)
Return nSolId
End Function
Friend Function UpdateSolidForDrip(nPartId As Integer) As Boolean
' se non ci sono lavorazioni da sotto nel pezzo si esce
If EgtGetGroupObjs(EgtGetFirstNameInGroup(nPartId, NAME_DRIPCUT)) = 0 AndAlso
EgtGetGroupObjs(EgtGetFirstNameInGroup(nPartId, NAME_UNDERDRILL)) = 0 Then Return True
' Recupero lo spessore del grezzo
Dim dThick As Double = GetRawHeight()
' Recupero layer Regione
Dim nGrpRegId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_REGION)
' Elimino eventuale vecchio solido
EgtErase(EgtGetFirstNameInGroup(nGrpRegId, NAME_DRIP_SOLID))
' Recupero la regione del pezzo
Dim nRegId As Integer = EgtGetFirstInGroup(nGrpRegId)
While nRegId <> GDB_ID.NULL
If EgtGetType(nRegId) = GDB_TY.SRF_FRGN Then Exit While
nRegId = EgtGetNext(nRegId)
End While
' Ne derivo il solido di estrusione
Dim nSolId As Integer = CreateSolidFromRegion(nRegId, -dThick * Vector3d.Z_AX(), nGrpRegId)
EgtSetName(nSolId, NAME_DRIP_SOLID)
EgtSetColor(nSolId, New Color3d(0, 255, 255, 25))
EgtSetStatus(nSolId, GDB_ST.OFF)
Return nSolId <> GDB_ID.NULL
End Function
Friend Function EraseSolidForDrip(nPartId As Integer) As Boolean
' Recupero layer Regione
Dim nGrpRegId As Integer = EgtGetFirstNameInGroup(nPartId, NAME_REGION)
' Elimino eventuale vecchio solido
EgtErase(EgtGetFirstNameInGroup(nGrpRegId, NAME_DRIP_SOLID))
Return True
End Function
End Module