Créer un calque en AutoLISP sans passer par la commande CALQUE

On utilise d'abord tblsearch pour vérifier que le calque n'existe pas déjà, ensuite on crée une liste de définition d'entité et finalement on utilise entmakex :

(defun create-layer-if-not-exists (layer-name)
  (if (not (tblsearch "LAYER" layer-name))
    (entmakex (list '(0 . "LAYER")
		    '(100 . "AcDbSymbolTableRecord")
		    '(100 . "AcDbLayerTableRecord")
		    (cons 2 layer-name)
		    '(70 . 0)
		    '(62 . 7)
	      )
    )
  )
)

Il faut utiliser entmakex et non pas entmake qui ne sait créer que des entités graphiques (c'est à dire des entités visibles à l'écran comme des cercles, des lignes).

Les codes DXF 0 et 100 précisent le type d'objet à créer (LAYER), le code 2 correspond au nom du calque, le code 70 est un drapeau indiquant l'état du calque (1 : calque gelé, 4 : calque verrouillé...) et le code 62 correspond à la couleur (7, blanc/noir dans notre cas).

Etiquettes:

Ajouter un commentaire