version 6.0
dr_ATTRIBUTS VERS TABLEAU (zone; cible; numAttribut; tabAttribut)
| Paramètre | Type | Description | |
| zone | Entier long | Zone 4D Draw | |
| cible | Entier long | -1 = Tous, 0 = Sélection, >0 = ID d'un groupe | |
| numAttribut | Entier long | Code de l'attribut | |
| tabAttribut | Tableau | Tableau recevant la valeur pour l'attribut |
Description
La commande dr_ATTRIBUTS VERS TABLEAU remplit le tableau tabAttribut avec la valeur de l'attribut désigné par le troisième paramètre, et ce pour chaque objet désigné par cible. La liste des codes se trouve à l'Annexe A, Codes d'attributs.
Si cible est égal à -1, dr_ATTRIBUTS VERS TABLEAU retourne dans le tableau la valeur prise par l'attribut pour l'ensemble des objets de zone. Les objets groupés seront considérés comme un seul et même objet. S'il n'y a pas uniformité à l'intérieur du groupe pour numAttribut, la valeur renvoyée dans le tableau sera -32000 ou "*****" en fonction du type de tableau utilisé.
Si cible est égal à 0, dr_ATTRIBUTS VERS TABLEAU retourne dans le tableau la valeur prise par l'attribut pour chaque objet de la sélection courante. Les objets groupés seront considérés comme un seul et même objet. S'il n'y a pas uniformité à l'intérieur du groupe pour numAttribut, la valeur renvoyée dans le tableau sera - 32000 ou "*****" en fonction du type de tableau utilisé.
Si cible est supérieur à 0, dr_ATTRIBUTS VERS TABLEAU interprète la valeur passée comme étant le numéro d'identification d'un groupe d'objets et renvoie, pour chacun d'entre eux, la valeur de l'attribut passé en second paramètre. Seul le numéro d'identification d'un groupe d'objets est autorisé.
Si l'attribut n'est pas en adéquation avec la sélection, dr_ATTRIBUTS VERS TABLEAU renvoie -32000 ou "*****" en fonction de la nature du tableau passé en quatrième paramètre.
Par exemple, si vous passez 24 en second paramètre et que votre sélection courante est un groupe de lignes, vous obtiendrez dans le tableau la valeur -32000 (24 correspondant à l'attribut "Coins arrondis").
Exemple
Cet exemple montre comment remplir un tableau avec les numéros d'identification de tous les objets de zone, y compris les numéros d'identification des groupes, et d'en remplir un second avec leur type.
C_ENTIER LONG($i;$j) ` Déclaration des variables
TABLEAU ENTIER LONG(TabID;0)
` Initialisation du tableau des numéros d'identification
TABLEAU ENTIER LONG(TabType;0)
` Initialisation du tableau des types
TABLEAU ENTIER LONG(GrpID;0)
`Initialisation du tableau des numéros d'identification des groupes
TABLEAU ENTIER LONG(GrpType;0)
` Initialisation du tableau des types des différents groupes
$i:=0 ` Initialisation de la variable à 0
Si (dr_Compter (LaZone;-1)>0)
` Si la zone n'est pas vide
dr_ATTRIBUTS VERS TABLEAU (LaZone;-1;0;TabID)
` On remplit le tableau avec les ID des objets non groupés
dr_ATTRIBUTS VERS TABLEAU (LaZone;-1;1;TabType)
` On remplit le tableau avec les types des objets non groupés
Repeter
$i:=$i+1 ` On incrémente le compteur d'une unité
Si(TabType{$i}=10)
` Si l'objet est un groupe
dr_ATTRIBUTS VERS TABLEAU (LaZone;TabID{$i};0;GrpID)
` On rentre dans le tableau le numéro d'identification du groupe
dr_ATTRIBUTS VERS TABLEAU (LaZone;TabID{$i};1;GrpType)
` On rentre dans le tableau le type du groupe
INSERER LIGNES(TabID;$i+1;Taille tableau(GrpID))
` Dans TabID, on insère un nbre de lignes équivalant au nombre de
` lignes du tableau des ID des groupes
INSERER LIGNES(TabType;$i+1;Taille tableau(GrpType))
` Dans TabType, on insère un nbre de lignes équivalant au nombre
` de lignes du tableau des types de groupes
Boucle ($j;1;Taille tableau(GrpID))
TabID{$i+$j}:=GrpID{$j}
` Copie de l'ID du groupe dans le tableau principal, TabID
TabType{$i+$j}:=GrpType{$j}
` Copie du type du groupe dans le tableau principal, TabType
Fin de boucle
Fin de si
Jusque ($i=Taille tableau(TabID))
Sinon
ALERTE("Votre zone 4D Draw est vide.")
Fin de si
Référence
dr_Lire ID, dr_TABLEAU VERS ATTRIBUTS.