# Le guide de référence Visual LISP AutoCAD® 2000i en anglais

**URL:** https://dessein-tech.com/t/le-guide-de-reference-visual-lisp-autocad-2000i-en-anglais/3356
**Category:** AutoLISP
**Tags:** lisp, programmation
**Created:** 2025-04-25T00:46:00Z
**Posts:** 1

## Post 1 by @Patrick — 2025-04-25T00:46:01Z

Le guide de référence **Visual LISP AutoCAD® 2000i** en anglais d’Autodesk® détaille une vaste gamme de **fonctions AutoLISP** disponibles en version 2000i. Ils couvrent des opérations fondamentales comme les **mathématiques** , les **manipulations de chaînes** , la **gestion des listes** , et l’ **interaction avec l’utilisateur** via des invites et des boîtes de dialogue. De plus, ils expliquent comment interagir avec les **entités AutoCAD®** , les **dictionnaires** , les **ensembles de sélection** , et comment gérer les **fichiers**. Une section importante est consacrée à l’intégration d’ **ActiveX** et aux **réacteurs** , permettant une automatisation et une personnalisation avancées d’AutoCAD®. Enfin, des commandes **externes** liées au rendu 3D et à l’alignement d’objets sont également documentées.

 ![visual-lisp-autocad-2000i-guide](https://dessein-tech.com/uploads/default/original/2X/4/44fd438e70790c9011bc5c1cb77ea4be3c12435e.jpeg)

[AlispRef.pdf](/uploads/short-url/rVOJjpKdMqBsVI1j5B5Uj4DlGhp.pdf) (4,2 Mo)

# Revue des fonctions AutoLISP et VLISP

Ce document présente une synthèse des principales fonctions AutoLISP et VLISP, leur syntaxe, arguments, valeurs de retour et exemples d’utilisation extraits du fichier «&nbsp;AlispRef.pdf&nbsp;».

## 1. Fonctions de Base et Opérateurs Mathématiques

### Opérateurs arithmétiques

- `+`, `-`, `*`, `/`
- Exemple: `(* 2 3.0)` renvoie `6.0`
- La fonction `/` divise le premier argument par le produit des suivants

### Comparaisons

- `=`, `/=`, `<`, `<=`, `>`, `>=`
- Retournent `T` (vrai) ou `nil` (faux)

### Opérations bit à bit

- `~`, `logand`, `logior`, `lsh`

### Incréments/décréments

- `1+`, `1–`

## 2. Manipulation de Listes

### Création de listes

- `list`, `cons`

### Accès aux éléments

- `car` (premier élément)
  - Exemple: `(car '(a b c))` renvoie `A`

- `cdr` (reste de la liste)
  - Exemple: `(cdr '(a b c))` renvoie `(B C)`
  - Note: comportement spécifique avec les paires pointées

- `cadr` (deuxième élément)
- `caddr` (troisième élément)
- `nth` (élément à un index spécifique)

### Modification de listes

- `append`, `reverse`, `subst`

### Interrogation de listes

- `length`, `member`, `assoc`, `listp`, `null`
- `null` vérifie si un élément est lié à `nil`
  - Exemple: `(null c)` renvoie `T` (si c est défini comme nil)

## 3. Interaction Utilisateur et Interface

### Affichage de messages

- `alert`, `prompt`, `prin1`, `princ`, `print`, `terpri`

### Récupération d’entrées utilisateur

- `getangle`, `getcorner`, `getdist`, `getfiled`
- `getint`, `getkword`, `getorient`, `getpoint`
- `getreal`, `getstring`

### Gestion des boîtes de dialogue

- Initialisation: `initdia`, `new_dialog`, `load_dialog`, `unload_dialog`, `term_dialog`
- Manipulation: `action_tile`, `get_tile`, `set_tile`, `client_data_tile`, `mode_tile`
- Dimensions: `dimx_tile`, `dimy_tile`
- Finalisation: `done_dialog`

## 4. Gestion des Entités et de la Base de Données AutoCAD®

### Sélection d’entités

- `entsel`, `nentsel`, `ssget`, `ssadd`, `ssdel`
- `ssmemb`, `ssname`, `sslength`, `sssetfirst`, `ssgetfirst`, `ssnamex`, `nentselp`

### Création et modification d’entités

- `entmake`, `entmakex`, `entmod`, `entupd`, `entdel`

### Accès aux données

- `entget` (données des entités)
- `entlast` (dernière entité créée)
- `tblobjname` (recherche d’entités par nom d’objet)

## 5. Fonctions Diverses Utiles

### Conversion de types de données

- `itoa` (entier vers chaîne)
  - Exemple: `(itoa 33)` renvoie `"33"`

- `atoi` (chaîne vers entier)
- `atof` (chaîne vers réel)
- `rtos` (réel vers chaîne)
- `distof` (chaîne de distance vers réel)
- `angtof` (chaîne d’angle vers réel)
- `angtos` (angle vers chaîne)

### Gestion de fichiers

- `open`, `close`, `read-char`, `read-line`
- `write-char`, `write-line`, `findfile`

### Exécution de commandes AutoCAD®

- `command`

### Contrôle de flux

- `if`, `cond`, `while`, `repeat`, `foreach`
- `lambda`, `progn`
- Exemple: `(if (= 1 3) "YES!!" "no.")` renvoie `"no."`

### Manipulation de chaînes

- `strcase`, `strcat`, `strlen`, `substr`

### Opérations mathématiques

- `abs`, `angle`, `atan`, `cos`, `exp`, `expt`, `log`, `sin`, `sqrt`

### Gestion des configurations

- `getvar`, `setvar`, `getcfg`, `setcfg`, `getenv`, `setenv`

### Gestion des menus

- `menucmd`, `menugroup`

### Tables de symboles

- `tblnext`, `tblsearch`

### Utilitaires graphiques

- `graphscr`, `textscr`, `grclear`, `grdraw`, `grread`
- `grtext`, `grvecs`, `redraw`
- `slide_image`, `fill_image`, `start_image`, `end_image`, `vector_image`

### Systèmes de coordonnées

- `trans`, `polar`
- Exemple: `(polar '(1 1) 0.785398 1.414214)` renvoie `(2.0 2.0)`

### Gestion de la mémoire

- `alloc`, `gc`, `expand`, `xdroom`, `xdsize`

### Aide

- `help`, `acad_helpdlg`, `setfunhelp`

### Gestion des applications

- `arx`, `arxload`, `arxunload`, `autoarxload`, `autoload`
- `vlisp-compile`, `vl-load-all`, `vl-list-loaded-vlx`
- `vl-vlx-loaded-p`, `vl-unload-vlx`, `startapp`

### Éditeur Visual LISP

- `LISPED`

### Gestion des erreurs

- `*error*`, `vl-exit-with-error`
- `vl-catch-all-apply`, `vl-catch-all-error-message`, `vl-catch-all-error-p`

### Presse-papiers

- `acad_strlsort`

### Dictionnaires nommés

- `namedobjdict`, `dictadd`, `dictnext`
- `dictremove`, `dictrename`, `dictsearch`

### Gestion des présentations

- `layoutlist`

### Gestion des vues

- `setview`, `vports`

### Validation des noms

- `snvalid`

### Tablette

- `tablet`

### Traçage

- `trace`, `untrace`

### Évaluation d’expressions

- `eval`, `apply`, `mapcar`

### Définition de fonctions

- `defun`, `defun-q`, `vl-acad-defun`, `vl-acad-undefun`

## 6. Fonctions VLISP (Visual LISP)

### Interaction avec les objets ActiveX et COM

- `vlax-create-object`, `vlax-get-acad-object`, `vlax-get-object`
- `vlax-release-object`, `vlax-invoke-method`
- `vlax-get-property`, `vlax-put-property`, `vlax-dump-object`
- `vlax-ename->vla-object`, `vlax-vla-object->ename`
- `vlax-map-collection`, `vlax-method-applicable-p`
- `vlax-property-available-p`
- `vlax-safearray-make`, `vlax-safearray-get-element`

### Manipulation avancée de listes

- `vl-list*`, `vl-list->string`, `vl-string->list`
- `vl-member-if`, `vl-remove`, `vl-sort`
- Exemple: `(vl-list-length '(1 2))` renvoie `2`

### Gestion des fichiers et répertoires

- `vl-directory-files`, `vl-file-copy`, `vl-file-delete`, `vl-file-rename`

### Accès au registre Windows

- `vl-registry-read`, `vl-registry-write`
- `vl-registry-delete`, `vl-registry-descendents`

### Gestion des ressources

- `vl-get-resource`

### Travail avec les variantes

- `vlax-make-variant`, `vlax-variant-change-type`
- `vlax-variant-type`, `vlax-variant-value`

### Création et gestion de réacteurs (événements)

- `vlr-acdb-reactor`, `vlr-command-reactor`, `vlr-object-reactor`

## 7. Commandes Définies Externelement

L’Annexe A liste des commandes définies en dehors du noyau d’AutoLISP:

- `3dsin`, `3dsout`, `align`, `cal`
- Commandes liées au rendu: `render`, `light`, `rmat`, `scene`

## 8. Concepts et Faits Importants

- **Types de Données** : AutoLISP gère différents types (entiers, réels, chaînes, listes, atomes). La fonction `type` détermine le type d’une expression.
- **Évaluation** : LISP est un langage d’évaluation. La fonction `eval` permet d’évaluer une expression.
- **Portée des Variables** : Les fonctions `setq` et `set` assignent des valeurs à des symboles. Variables locales ou globales. `boundp` vérifie les liaisons.
- **Paires Pointées** : Comportement spécifique de `cdr` avec les paires pointées.
- **Tolérance dans `equal`** : Peut prendre un argument de tolérance pour comparer des réels.
- **Lambda Expressions** : Définition de fonctions anonymes avec `lambda`.
- **Espaces de Noms VLX** : Vérification avec `vl-list-loaded-vlx` et `vl-vlx-loaded-p`.
- **Conversions d’Unités** : Fonction `cvunit` pour convertir entre unités.
- **Macros Visual Basic** : Fonctions `vl-vbaload` et `vl-vbarun`.
- **Tables de Symboles** : `atoms-family` liste les symboles définis.
  - Exemple: `(atoms-family 1 '("CAR" "CDR" "XYZ"))` renvoie `("CAR" "CDR" nil)`

- **Validation des Noms** : `snvalid` vérifie la validité des noms de symboles.
- **Registre Windows** : `vl-registry-descendents` liste les sous-clés du registre.
