Maison > Article > tutoriels informatiques > Apprenez à écrire des programmes Lisp pour la CAO
J'ai fait deux commandes : cacher et afficher.
Je l'ai écrit simplement, mais il n'a pas toutes les fonctions. Vous pouvez l'utiliser comme vous le souhaitez
.Copiez le code suivant et créez acad.lsp. Placez-le dans le dossier de la première couche du répertoire d'installation CAO et il pourra être chargé automatiquement :
;Entrez la commande hidsel sur la ligne de commande, puis sélectionnez les éléments graphiques. En conséquence, les éléments non sélectionnés sont remplacés par le calque caché
.(defun C:hidsel(/ all; toutes les primitives
xs ; primitives non cachées
yc;masquer les éléments
n nam dat)
(setvar "CMDECHO" 0); désactiver la commande echo
(commande "_layer" "n" "Masquer temporairement le calque""")(commande "_layer" "off" "Masquer temporairement le calque" "")
(setvar "CMDECHO" 1)
(setq all (ssget "x")); sélectionnez tout
(setq xs (ssget)); sélectionnez des primitives non cachées
(setq n -1 yc all); faire fonctionner des primitives cachées
(répéter (sslength xs)
(setq n (+ n 1))
(setq nam (ssname xs n)); Renvoie le nom de la Nième primitive
(setq yc (ssdel nam yc))
)
(setq N -1);masquer
(répéter (sslength yc)
(setq N (+ n 1))
(setq nam (ssname yc n)); renvoie le nom de la Nième primitive
(setq dat (entget nam));DAT stocke les données du Nième élément
(entmod (subst (cons 8 "Couche temporairement cachée") (Assoc 8 dat) dat)); Masquer la collection yc
)
(setq all nil xs nil yc nil n nil nam nil dat nil) ; effacer les données occupées de la mémoire
;(prince)
)
;Afficher toutes les primitives
(defun c:shoal(/ all n nam dat)
(setq all (ssget "x")); sélectionnez tout
(setq N -1);masquer
(répéter (sslength all)
(setq N (+ n 1))
(setq nam (ssname all n)); Renvoie le nom de la Nième primitive
(setq dat (entget nam));DAT stocke les données du Nième élément
(entmod (subst (cons 8 "0") (Assoc 8 dat) dat)); cacher la collection yc
)
(setvar "CMDECHO" 0)
(COMMANDE "PURGE" "LA" "Masquer temporairement le calque" "Y" "Y" "")
(setvar "CMDECHO" 1)
(setq all nil n nil nam nil dat nil); effacer la mémoire occupée par les données
(prince)
)
Lisp lui-même est un programme de développement qui appartient à la CAO. Il fournit quelques calculs de fonctions simples, et le reste est destiné aux fonctions de dessin d'autocad. Le programme Lisp est similaire à la procédure stockée dans la base de données et peut traiter et dessiner des graphiques CAO par lots.
Apprendre Lisp est très simple. Il vous suffit de maîtriser l'utilisation de quelques commandes principales. Vous devez également étudier très attentivement le format des instructions. Lisp lui-même a un certain nombre de fonctions, vous n'avez donc pas besoin de les mémoriser.
Charger LISP
1. Vous pouvez utiliser la commande APPLOAD, puis rechercher le fichier LISP que vous souhaitez charger et le charger.
2. Vous pouvez faire glisser le fichier LISP du gestionnaire de fichiers vers la fenêtre graphique d'ACAD, ou le charger
3. Après avoir utilisé la ligne de commande, (load "c:\temp\xxx.lsp") peut également être chargé. Veuillez entrer le chemin réel pour le nom du chemin.
Autre : Pour un programme LSP, (ce qui suit defun est une commande ou une fonction. Généralement, le programme doit avoir une invite. Sinon, les mots suivant l'identifiant c: sont des commandes utilisables sous ACAD, qui peuvent être saisies directement après COMMAND: , vous pouvez l'exécuter.
Comment programmer en langage LISP dans plusieurs CAO(setq i 1) ; c'est-à-dire que la valeur du code i est 1
(commande "CERCLE" '(0 0) 100); la commande dessine un cercle d'un rayon de 100 à l'origine des coordonnées.
Tous les composants du langage AutoLISP sont donnés sous forme de fonctions et ne comportent aucun concept d'énoncé ni autre structure grammaticale. Exécuter un programme AutoLISP consiste à exécuter certaines fonctions puis à appeler d'autres fonctions. Par exemple :
(setq pt1 (getpoint"nVeuillez sélectionner le point d'insertion central"))
(commande "CERCLE" pt1 100) ; Commandez ce point d'insertion pour dessiner un cercle d'un rayon de 100
;
AutoLISP exprime les données et les programmes dans une structure de table unifiée, de sorte que les programmes peuvent être traités comme des données et que les données peuvent également être exécutées en tant que programmes.Par exemple : une ligne droite, coordonnées du point de départ' (0 0), coordonnées du point final' (1000 0), calque 0, couleur 1 [rouge] Voici quelques données d'une ligne droite, comment l'exécuter et la transformer en le code du programme est le suivant :
(entmake (list '(0 . "LINE") '(8 . "0") '(62 . 1) '(10 0 0) '(11 1000 0)))
Vous pouvez visualiser les données visuellement ou les coller dans la ligne de commande d'AutoCAD pour tracer la ligne droite souhaitée ci-dessus.
Le processus d'exécution du programme dans le langage AutoLISP est le processus de traitement des valeurs de fonction, et la fonction de la fonction est réalisée dans le processus de traitement des valeurs de fonction. Dans AutoCAD, tous les objets peuvent être considérés comme composés d'innombrables points, chaque point a ses propres coordonnées. Le fonctionnement de la fonction consiste à calculer les valeurs de ces points et à porter des jugements sur la base des valeurs obtenues.
La principale structure de contrôle du langage AutoLISP est récursive. L'utilisation de la récursivité rend la programmation simple et facile à comprendre. Par exemple :
(setq &k1 (entsel)); sélectionnez l'objet
(setq &k1 (car &k1)); Extraire les éléments graphiques
(setq #g1 (entget &k1)); Obtenir la liste des attributs
(setq c0 (cdr (assoc 0 #g1))); Obtenez le nom primitif
Ce qui précède est écrit un par un. Il peut s'écrire comme suit :
(setq c0 (cdr (assoc 0 (entget (car (entsel))))))); simple et facile à comprendre
Parce qu'autolisp est simple et facile, vous pouvez commencer rapidement. Après avoir écrit un programme, l'efficacité du dessin peut être considérablement améliorée. Le célèbre plug-in [Tianzheng] est une bonne aide pour le dessin.
Le programme autolisp présente également des défauts, comme l'extraction des coordonnées. Celle-ci ne peut être extraite qu'à partir des attributs primitifs. Dans ce cas, il y aura des limitations. Les valeurs des coordonnées normales 1 et -1 sont les mêmes. les positions des graphiques sont différentes, ce qui entraîne des difficultés de calcul des coordonnées, il est donc préférable d'utiliser la fonction VLAX pour extraire les valeurs de coordonnées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!