renumber tools
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hellou !
I have a macro that rearranges the tools that are repeated in the magazine because I have a limitation of 23 tools on the machine.
Today this macro replaces all the tools, even those that are in use, I would like it to rename only those tools that are not being used at the moment; Here is example:
Tools in the database current macro HOW I WOULD LIKE
T1 ESF 1 T4 ESF 1 T1 ESF 1
T2 ESF 2 T5 ESF 2 T2 ESF 2
T3 ESF 3 T6 ESF 3 T3 ESF 3
T4 ESF 4 T7 ESF 4 T4 ESF 4
T10 broca 4,2 T1 BROCA 4,2 T5 BROCA 4,2
T10 broca 5 T2 BROCA 5 T6 BROCA 5
T10 broca 6 3 BROCA 6 T7 BROCA 7
…In other words, do not touch the used positions, use empty positions
//
// Macro de réorganisation des numéro outils selon limitation magasin
// Cherche au départ à modifier les Numéro outils
// Une fois le magasin rempli va créer un nouveau programme et redémare la numérotation
// Normalement si ce n'est pas nécessaire ne change pas le numéro de l'outil
//
// Limite : les numéros d'outil devrait être tous inférieur aux emplacments disponible pour éviter des erreurs de traitement
//
//
function main() {
ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT
// Magasin Size
INT $SizeMag = 23
// $SizeMag = INPUT "Entrer la taille du magasin Machine"
STRING $Name = ''
STRING $TNameEquiv = ''
STRING $TName = ''
INT LIST $Magazin = {}
STRING LIST $MagazinName = {}
STRING $Selected_Ncprogram = ''
INT $Nb = 1
INT $NbT = 0
INT $T_Nb = 0
INT $PosM =0
BOOL $Fnd = FALSE
BOOL $AddNCProg = FALSE
IF entity_exists(entity('ncprogram','')) {
$Selected_Ncprogram = entity('ncprogram','').name
} ELSE {
MESSAGE ERROR "Aucun programme actif"
MACRO ABORT
}
STRING $Msg = "Reorganisation Programme NC : $Selected_Ncprogram Limite : $SizeMag"
PRINT $Msg
STRING $NewName = $Selected_Ncprogram
ACTIVATE NCPROGRAM $Selected_Ncprogram
FOREACH item IN components(entity('ncprogram',$Selected_Ncprogram)) {
$Name = $item.name
ACTIVATE TOOLPATH $Name
ENTITY $Tp = ENTITY('toolpath',$Name)
ENTITY $Tl = $Tp.Tool
$TName = $Tl.name
ACTIVATE TOOL $TName
// Récupération Numéro outil du parcours
$T_Nb = $Tool.Number.Value
// $Tool.Number.UserDefined
/// Si Maqueur de création d'un nouveau fichier NC programme
/// Change la position des pacours
IF $AddNCProg == TRUE {
EDIT NCPROGRAM $Selected_Ncprogram TOOLPATH $Name DELETE
EDIT NCPROGRAM $NewName APPEND TOOLPATH $Name
} ELSE {
// Mode Analyse des parcours
// si le numéro est supérieur à la taille ou Nulle
IF $T_Nb > $SizeMag OR $T_Nb==0 {
// Recherche emplacement libre
CALL RechercheNBLibre(Magazin,$Nb)
$Msg = "Modif A numéro parcours $Name ( $TName ) : $T_Nb -> $Nb"
PRINT $Msg
// Change le numéro
EDIT TOOL $TName NUMBER COMMANDFROMUI $Nb YES
$T_Nb = $Nb
}
// Recherche le Num Outil dans le magasin
CALL RechercheNB(Magazin, $T_Nb , $PosM)
//--------------------//
// Si pas trouvé //
//--------------------//
IF $PosM==0 {
// rajoute le numéro au magasin
$NbT = add_last(Magazin, $Tl.number)
$NbT = add_last(MagazinName, $TName)
//--------------------//
// Si Trouvé //
//--------------------//
} ELSE {
// Si le numéro a été trouvé
// test si même outil
$TNameEquiv = $MagazinName[$PosM-1]
IF $TNameEquiv == $TName {
$Msg = "Même N° $T_Nb & même outil $TNameEquiv - $TName Ok!"
PRINT $Msg
} ELSE {
$Msg = "Même N° $T_Nb outil différents -> $TNameEquiv - $TName !"
PRINT $Msg
// Recherche emplacement libre
CALL RechercheNBLibre(Magazin,$Nb)
IF $Nb < $SizeMag {
$Msg = "Modif B numéro parcours $Name ( $TName ) : $T_Nb -> $Nb "
PRINT $Msg
// Change le numéro
EDIT TOOL $TName NUMBER COMMANDFROMUI $Nb YES
$T_Nb = $Nb
$NbT = add_last(Magazin, $T_Nb)
$NbT = add_last(MagazinName, $TName)
$Msg = "Ajout B parcours $Name outil $TName ( $T_Nb )"
PRINT $Msg
} ELSE {
$Msg = "Dépassement taille Magasin ( $Nb / $SizeMag ) !"
PRINT $Msg
$NbT = $SizeMag + 1
}
}
}
IF $NbT <= $SizeMag {
$Msg = "Ajout pour parcours $Name outil $TName ( id $NbT ) | N° $T_Nb"
PRINT $Msg
} ELSE {
IF $AddNCProg == FALSE {
// Creation Nouveau Nom de fichier programme
CALL NouveauNom($NewName)
CREATE NCPROGRAM $NewName EDIT NCPROGRAM ; QUIT FORM NCTOOLPATH
NCTOOLPATH CANCEL FORM ACCEPT NCTOOLPATHLIST FORM ACCEPT NCTOOLLIST
ACTIVATE NCPROGRAM $NewName
$AddNCProg = TRUE
MESSAGE WARN "CREATION Nouveau Parcours : $NewName"
}
// Rajoute les parcours aux nouveau programme NC
EDIT NCPROGRAM $Selected_Ncprogram TOOLPATH $Name DELETE
EDIT NCPROGRAM $NewName APPEND TOOLPATH $Name
}
}
}
// Si on a du ajouter les parcours
IF $AddNCProg == TRUE {
// Action récursive sur nouveau NCProgramm
MACRO RenumeroterOutilNCProg.mac
} ELSE {
// Fin de Macro
RETURN
}
}
///////////////////////////////////////////////////
// Recherche d'un nouveau nom pour le programme CN
Function NouveauNom(
OUTPUT STRING NewName
)
{
// Recherche Nouveau Nom
DO {
$NewName= $NewName + "_1"
} WHILE entity_exists('ncprogram',$NewName)
}
// Recherche si le numéro outil est dans la base
Function RechercheNB(
INT LIST Magazin
INT Nb
OUTPUT INT Found
)
{
INT $Pos = 0
$Found = 0
FOREACH Id IN Magazin {
$Pos = $Pos + 1
IF $Nb == $Id {
$Found = $Pos
RETURN
}
}
}
// Recherche un emplacment libre
Function RechercheNBLibre(
INT LIST Magazin
OUTPUT INT New
)
{
INT $Nb = 0
INT $PosM=0
DO {
$Nb = $Nb + 1
CALL RechercheNB(Magazin, $Nb , $PosM)
} WHILE $PosM > 0
$New=$Nb
}