#!/bin/perl
#
# Ce script (facilement adaptable pour d'autres utilisations) permet
# d'automatiser la creation de cartes CGAP entre noeuds coincidents.
# Les donnees d'entree sont lues dans deux fichiers contenant chacun
# la liste des noeuds appartenant a une surface, chaque fichier etant 
# généré par un .prg I-Deas
#
#
# Les variables a initialiser sont les suivantes :
#
#
# VARIABLES A MODIFIER (eventuellement)
#
# Numero de la premiere carte CGAP (les suivantes sont automatiquement
# incrementees d'une unité)
#
$k = 55555;
#
# Distance en-dessous de laquelle deux noeuds sont considérés comme coincidents
#
$tol = 0.01;
#
# Nombre de paire de noeuds a traiter
#
$nbNoeuds = 121;
#
# Noms des fichiers d'entree et de sortie
#
open (fic1,"test1.prg");
open (fic2,"test2.prg");
open (out,">sortie");
#
# NORMALEMENT IL N'Y A RIEN A MODIFIER CI-DESSOUS 
# (ou alors j'ai merdé quelque chose)
#
$tol = $tol**2;
$i = 1;
$j = 1;
while ($in1 = <fic1>) {
$noeud1{$i}=substr($in1,4,11);
$noeud1{$i}{"x"}=substr($in1,15,11);
$noeud1{$i}{"y"}=substr($in1,26,11);
$noeud1{$i}{"z"}=substr($in1,37,11);
$i++;
}
while ($in2 = <fic2>) {
$noeud2{$j}=substr($in2,4,11);
$noeud2{$j}{"x"}=substr($in2,15,11);
$noeud2{$j}{"y"}=substr($in2,26,11);
$noeud2{$j}{"z"}=substr($in2,37,11);
$j++;
}
for ($ii=1;$ii<$nbNoeuds+1;$ii++){
for ($jj=1;$jj<$nbNoeuds+1;$jj++) {
$dist = ($noeud2{$jj}{"x"}-$noeud1{$ii}{"x"})**2
+ ($noeud2{$jj}{"y"}-$noeud1{$ii}{"y"})**2
+ ($noeud2{$jj}{"z"}-$noeud1{$ii}{"z"})**2;
if ($dist < $tol) {
print out ("CGAP,",$k,",idPGAP,",$noeud1{$ii},",",$noeud2{$jj},"\n");
$k++;
delete ($noeud{$jj});
}
}
}
