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).
Besoin d'un développement spécifique pour AutoCAD ?
Développement de compléments à AutoCAD et aux autres logiciels Autodesk (AutoCAD Electrical, AutoCAD Mechanical, Inventor, Revit, Vault, Navisworks...). C#/VB/.NET, C++/ObjectARX, AutoLISP, VBA.
Migration de vos projets VBA en .NET, intégration RealDWG dans vos applications, développement sur plateforme AutoCAD OEM et Inventor OEM.
Assistance technique AutoCAD, Inventor, Revit, Vault.
Maxence DELANNOY - Tél. : 06.46.40.75.66 - maxence.delannoy@wiip.fr
|
Ajouter un commentaire