/* Sélection des composants du type sélectionné ou spécifié
   © R.Florac, Chez Corbin, 19 mars 1998, v1.00
   Version 1.01, 20 avril 1998 (ajout affichage type d'élément)
   Version 1.02, 27 avril 1998 (ajout rectangles)
   Version 1.03, 1er juin 1998 (signalisation jokers)
   Version 1.04, 14 avril 2000 (adaptation version 2.05)
   $VER: SelectParts.AmiCAD 1.04 (© R.Florac, 14 avril 2000) */

options results     /* indispensable pour récupérer le résultat des macros */

signal on error     /* pour l'interception des erreurs */
signal on syntax

'FIRSTSEL'; objet = result
if objet = 0 then do
    'COMPOSANT=ASKTEXT("Quel est le nom du"+CHR(10)+"composant recherché ?"+CHR(10)+"Vous pouvez utiliser"+CHR(10)+"les jokers pour étendre"+CHR(10)+"la recherche (Ex: Diod#?)","")'
    part=result
    if part="" then exit
end
else do
    'COMPOSANT=PARTNAME('objet')'
    part=result
    if part="" then do
	'TYPE('objet')'; type=result
	'SECURITY(OBJECTS+10):FOR(I=1:N=0,I<=OBJECTS,IF(TYPE(I)=='type',MARK(I):N=N+1,0),I=I+1)'
	'N'; n=result
	affichage(n,type)
	exit
    end
end
'SECURITY(OBJECTS+10):N=0:I=0:WHILE(I=IF(I+1<=OBJECTS,FINDPART(I+1,COMPOSANT),0),MARK(I):N=N+1)'
'N'; n=result
affichage(n,1)

exit

affichage: procedure expose part
    parse arg nombre, type
    select
	when type = 1 then element = part
	when type = 2 then element = "fil de liaison"
	when type = 3 then element = "arc de cercle"
	when type = 4 then element = "texte"
	when type = 5 then element = "référence de composant"
	when type = 6 then element = "valeur de composant"
	when type = 7 then element = "connexion"
	when type = 8 then element = "fil en pointillé"
	when type = 9 then element = "bus"
	when type = 10 then element = "ellipse"
	when type = 11 then element = "connecteur d'entrée"
	when type = 12 then element = "connecteur de sortie"
	when type = 15 then element = "trait double"
	when type = 21 then element = "ligne personnalisée"
	when type = 22 then element = "rectangle"
	otherwise element = "élément"
    end
    'MESSAGE("Type d''élément sélectionné:"+CHR(10)+"'element'"+CHR(10)+"Quantité trouvée: 'nombre'")'
    exit
end

/* Traitement des erreurs, interruption du programme */
syntax:
erreur=RC
'MESSAGE("Script SelectParts"+CHR(10)+"Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
exit

error:
'MESSAGE("Script SelectParts"+CHR(10)+"Erreur en ligne 'SIGL'")'
exit
