BiG_CadrEnt

Fonction Catégorie Version
BIG 05 BiG_CadrEnt Fonction Géométrique 1.0 - Janvier 2007

Description

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/...    ...: 190,80
	Arc/... .../LArgeur/: 250,55
	Arc/Clore/...   .../: 210,50
	Arc/Clore/Demi-larg/: 220,30
	Arc/Clore/...   .../: 130,60
	Arc/Clore/...   .../: c
Commande: (BiG_CadrEnt (entlast))
	((130.0 30.0) (250.0 80.0))

La fonction


 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

Max : Renvoie le plus grand des nombres spécifiés.
Min : Renvoie le plus petit des nombres spécifiés.