N° | Fonction | Catégorie | Version |
---|---|---|---|
BIG 05 | BiG_CadrEnt | Fonction Géométrique | 1.0 - Janvier 2007 |
But | Détermine le rectangle exinscrit à une ligne ou une polyligne. |
Prototype | (BiG_CadrEnt Nom_Entité) |
Argument | Nom_Entité - Le nom de l'entité - ename - |
Retours | Une liste de 2 points |
Var. globales | Néant |
Description | Retourne, sous forme d'une liste, le point Bas Gauche et le point Haut Droit d'un rectangle qui inscrit tous les sommets d'une polyligne ou d'une droite. |
Notes | Attention, la fonction ne teste que les sommets. Si la polyligne comprend des arcs, ceux-ci pourraient se trouver en partie à l'extérieur du rectangle. |
Exemples | Commande: ligne Du point: 100,50 Au point: 300,0 Au point: Commande: (Big_CadrEnt (entlast)) ((100.0 0.0) (300.0 50.0)) Autre exemple Commande: polylign Du point: 160,60 Arc/Clore/... ... |
1-(defun BiG_CadrEnt (*Nam_Ent / MinX MinY MaxX MaxY Data_Ent Pt1 Data_SubEnt PtA PtB) 2- (setq Data_Ent (entget *Nam_Ent)) 3- (cond 4- ((= (cdr (assoc 0 Data_Ent)) "POLYLINE") 5- (while (setq *Nam_Ent (entnext *Nam_Ent) 6- Data_SubEnt (entget *Nam_Ent) 7- Pt1 (cdr (assoc 10 Data_SubEnt)) 8- ) 9- (if (not MinX) 10- (setq MinX (car Pt1) 11- MaxX MinX 12- MinY (cadr Pt1) 13- MaxY MinY 14- ) 15- ) 16- (setq MinX (min MinX (car Pt1)) ) 17- (setq MinY (min MinY (cadr Pt1)) ) 18- (setq MaxX (max MaxX (car Pt1)) ) 19- (setq MaxY (max MaxY (cadr Pt1)) ) 20- ) 21- (setq PtA (list MinX MinY) PtB (list MaxX MaxY)) 22- ) 23- ((= (cdr (assoc 0 Data_Ent)) "LINE") 24- (setq MinX (min (cadr (assoc 10 Data_Ent))(cadr (assoc 11 Data_Ent))) ) 25- (setq MinY (min (caddr (assoc 10 Data_Ent))(caddr (assoc 11 Data_Ent))) ) 26- (setq MaxX (max (cadr (assoc 10 Data_Ent))(cadr (assoc 11 Data_Ent))) ) 27- (setq MaxY (max (caddr (assoc 10 Data_Ent))(caddr (assoc 11 Data_Ent))) ) 28- (setq PtA (list MinX MinY) PtB (list MaxX MaxY)) 29- ) 30- (T (setq Pta (cdr (assoc 10 Data_Ent)) PtB PtA) ) 31- ) 32- (list PtA Ptb) 33- )
Ligne 4 : Si l'entité est une polyligne, Lignes 5 à 7 : Tant qu'il y a des sous-entités possédant un sommet (assoc 10) Lignes 9 à 13 : Initialisation des valeurs mini et maxi Ligne 16 : Conserve en MinX, les coordonnées en X si elles sont plus petites que la valeur ancienne, Ligne 17 : Conserve en MinY, les coordonnées en Y si elles sont plus petites que la valeur ancienne. Ligne 18 : Conserve en MaxX, les coordonnées en X si elles sont plus grandes que la valeur ancienne, Ligne 21 : Met en PtA et PtB les coordonnées des 2 points recherchés. Ligne 23 : Si l'entité est une droite Ligne 32 : Liste retournée