New Update ...
XML Solution seems to work .. New release of the macro .
A) List the Methods, Operations, Tool
B) Check if the tool exists in the current project
C) Update the Feedrate / Sindle with the roughing.general conditions define in the tool conditions

//---------------------------------------------------------------------------------------------------
// Macro à lancer depuis un menu utilisateur toolpath.xml
//
// Analyse Drilling Method
//
//---------------------------------------------------------------------------------------------------
// <?xml version="1.0" ?>
//<menupage>
// <button command='MACRO "Liste_Methode" "%s"' label="Liste Methode"/>
//</menupage>
//---------------------------------------------------------------------------------------------------
// Variable $Selected_Toolpath parcours d'outil sélectionné
//---------------------------------------------------------------------------------------------------
Function Main(
STRING $Selected_Toolpath
)
{
// Variable
STRING $Msg = ''
STRING $Cmd = ''
STRING $filename = "C:\temp\Methode.txt"
ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT
ENTITY $Ent=$entity('toolpath',$Selected_Toolpath)
STRING $PNAME = $Ent.NAME
ACTIVATE TOOLPATH $PNAME FORM TOOLPATH
BOOL $Op_ON = FALSE
STRING $Methode_Name =''
STRING $Op_Name =''
STRING $Op_Tool=''
// Log File
TRACEFILE OPEN $filename
// test si le parcours est bien un parcours Method
if $Ent.strategy == 'method' {
$Msg = "Drilling Method : " + $PNAME
PRINT $Msg
// Get the XMl DEFINITION
STRING XML_Def = $Method.xml
STRING LIST $XMLLigne = TOKENS($XML_Def, crlf)
// FOREACH LINE
FOREACH $Ligne IN $XMLLigne {
// NEw Method
IF POSITION($Ligne,'method name') > 0 {
CALL Extract_XML_Name($Ligne,1,$Methode_Name)
PRINT $Methode_Name
}
// NEw Drill Operation
IF POSITION($Ligne,'<drill_operation>') > 0 {
$Op_ON=TRUE
}
// IN Operation
IF POSITION($Ligne,'string_value name="label"') > 0 AND $Op_ON {
CALL Extract_XML_Name($Ligne,3,$Op_Name)
$Msg = " |- " + $Op_Name
PRINT $Msg
}
// Outil
IF POSITION($Ligne,'string_value name="Tool"') > 0 AND $Op_ON {
CALL Extract_XML_Name($Ligne,3,$Op_Tool)
}
// OPERATION AT THE END OF THE OP DEFINITION
IF POSITION($Ligne,'</drill_operation>') > 0 {
$Msg = " +- ( " + $Op_Tool + " )"
PRINT $Msg
IF ENTITY_EXISTS('Tool',$Op_Tool) {
ENTITY $Tl=entity('Tool',$Op_Tool)
REAL $S = (1000 * $Tl.CuttingSpeed.roughing.general) / (3.141516*$Tl.diameter)
REAL $F = $S * $Tl.FeedPerTooth.roughing.general * $Tl.diameter * $Tl.NumberOfFlutes
IF $S >0 OR $F > 0 {
$Msg = " +- ( S" + ROUND($S,0) + " F" + ROUND($F,0) + ")"
PRINT $Msg
EDIT METHOD PROCESS $Methode_Name CHOOSE NEW
EDIT METHOD PROCESS $Methode_Name STRATEGY $Op_Name CHOOSE NEW
$Cmd = "EDIT METHOD ; PROCESS ; STRATEGY ; STRING 'FeedRate.Cutting.Value' '" + ROUND($F,0) + "'"
DOCOMMAND $Cmd
$Cmd = "EDIT METHOD ; PROCESS ; STRATEGY ; STRING 'SpindleSpeed.Value' '" + ROUND($S,0) + "'"
DOCOMMAND $Cmd
}
} ELSE {
MESSAGE INFO "Outil non existant : $Op_Tool"
$Msg = " +- !!!! Outil non existant :" + $Op_Tool
PRINT $Msg
}
$Op_ON=FALSE
}
DRILL CANCEL
METHOD CANCEL
}
TRACEFILE CLOSE
MACRO PAUSE "Fichier " + $filename
// OLE FILEACTION 'open' $filename
} // Fin du IF
}
/////////////////////////////////////////////////////////////////////////////////
// Sous programmes
/////////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------------------------
// Extract Name XML
//----------------------------------------------------------------------------------------------
FUNCTION Extract_XML_Name(
STRING $XML_Ligne
INT $Pos
OUTPUT STRING $MName
)
{
STRING $XML_L = REPLACE($XML_Ligne,'"','|')
STRING LIST $XMLTag = TOKENS($XML_L, '|')
$MName = $XMLTag[$Pos]
}