Maison  >  Article  >  tutoriels informatiques  >  Comment réaliser le développement secondaire de CAD Autolisp ?

Comment réaliser le développement secondaire de CAD Autolisp ?

王林
王林avant
2024-01-04 10:18:301282parcourir

Comment faire du développement secondaire de CAD autolisp

;;;Lampe T4

(défun C:T4206()

L'utilisateur saisit la commande d'exécution T4206 (sans aucun paramètre) pour charger et exécuter immédiatement le programme suivant.

(graphscr)

(setvar "cmdecho" 0)

;;;L'affichage de la ligne de commande est désactivé

(setq P1(getpoint "nVeuillez préciser la position de placement de la lampe (T4 206,5mm 6W) :"))

;;;Définissez un point d'insertion P1 et un point de retour

(commande "-INSERT" "D:/YZ_ZCAD/TK/DGT/T4206.dwg" "S" "1" P1 "0")

Lors de l'exécution de commandes standard CAO, vous pouvez ajouter "-" devant la commande (reportez-vous aux commandes CAO) pour exécuter la commande directement dans la ligne de commande sans utiliser de boîte de dialogue.

Lorsque le programme est exécuté, vous ne pouvez pas utiliser la boîte de dialogue pour opérer. Vous pouvez ajouter le symbole "-" avant la commande ou utiliser la variable FILEDIA pour la contrôler. Il existe également des cas particuliers qui peuvent être contrôlés par d’autres moyens.

(setvar "cmdecho" 1)

;;;L'affichage de la ligne de commande est activé

(principe)

;;;Conclusion

)

;;;Mettez le texte ci-dessus en LISP et enregistrez-le sous n'importe quel nom anglais

Après avoir enregistré le fichier, nous pouvons utiliser AP pour charger le fichier en CAO.

;; Exécutez la commande T4206 pour exécuter la commande d'insertion, (confirmez l'existence du fichier)

À mon avis personnel, je pense que le développement VBA est plus pratique que LISP. Pour apprendre LISP, il vous suffit de maîtriser les connaissances de base et vous n’avez pas besoin d’étudier en profondeur. Le développement de boîtes de dialogue LISP (DCL) est beaucoup plus compliqué que VBA. Cependant, nous devons parfois utiliser des fonctions LISP pour exécuter des fonctions VBA. Dans le document d'aide d'AutoCAD, il existe une aide spécialement fournie aux développeurs, qui contient de nombreux contenus détaillés. De nombreux éditeurs utilisent également des ressources directement issues de ces documents. Je vous suggère d'y jeter un oeil, cela pourrait vous aider.

Développement secondaire CAO et modification de LISP

(defun c:dz (/oce1 n1 zn h1 sxh1 p1)

(vl-load-com)

(setq oce1 (getvar "cmdecho"))

(setvar "cmdecho" 0)

(setq ms (vla-get-modelspace

(vla-get-activedocument (vlax-get-acad-object)) Cette ligne de code est utilisée pour obtenir l'objet du document actuellement actif dans AutoCAD. Il utilise l'interface VLAX (Visual LISP ActiveX) d'AutoCAD, obtient l'objet d'application AutoCAD via la fonction vlax-get-acad-object, puis utilise la méthode vla-get-activedocument pour obtenir l'objet du document actuellement actif. De cette manière, nous pouvons effectuer diverses opérations sur le document actuel, comme accéder à ses propriétés, modifier des objets, etc. Cette ligne de code est très courante dans la programmation LISP d'AutoCAD et est très

lorsque vous travaillez avec des objets de document

)

)

(si qz

()

(setq qz "")

)

(si hz

()

(setq hz "")

)

(initget "c")

(setq nqz (getstring (strcat "nVeuillez entrer le préfixe /c (vide): " )))

(cond

((= nqz "c") (setq qz ""”))

(T (if (/= nqz "")(setq qz nqz)))

)

(setq hz "")

(if (not (setq n1 (getint "nVeuillez entrer le numéro de séquence de départ  : ")))

(setq n11)

)

(setq zn 1)

(if (not (setq h1 (getreal "nVeuillez préciser la hauteur du texte  : ")))

(setq h1 2.5)

)

(setq sxh1 (strcat qz (itoa n1) hz)) est une expression LISP courante. Dans cette expression, qz, n1 et hz sont des variables et une nouvelle chaîne sxh1 est créée en concaténant leurs valeurs. Je vais vous expliquer exactement ce que signifie cette expression. - qz est une variable représentant un préfixe, qui stocke une chaîne, telle que "préfixe". - n1 est une variable entière qui stocke une valeur numérique comme 10

(setq p1 (getpoint "nVeuillez préciser le point d'insertion : "))

(pendant que (/= p1 nul)

(setq p1 (vlax-3d-point p1))

(setq txt (vla-addtext

ms

sxh1

p1

h1

)

)

(setq

n1 (+ n1 zn)

sxh1 (strcat qz (itoa n1) hz)

p1 (getpoint "nVeuillez préciser le prochain point d'insertion :")

)

)

(setvar "cmdecho" oce1)

(vlax-release-object ms)

(principe)

)

Un expert LISP en développement secondaire CAO écrit un programme

Modifiez-le comme suit :

(défun c:sdd (dwg)

(setq dwg (getfiled "Sélectionner le chemin et le nom du fichier" "" "Dwg" 1))

(if (wcmatch dwg "* ####-##-## ##:##.dwg")

(setq dwg (substr dwg 1 (vl-string-search " " dwg)))

Étant donné une variable chaîne `dwg`, nous pouvons utiliser `(setq dwg (substr dwg 1 (- (strlen dwg) 4)))` pour la traiter. La fonction de cette ligne de code est de tronquer les quatre derniers caractères de la chaîne `dwg` et de réaffecter le résultat à la variable `dwg`. Cela peut être fait pour supprimer les extensions de fichiers des noms de fichiers ou d'autres identifiants. Grâce à cette ligne de code, nous pouvons modifier la chaîne `dwg` afin qu'elle réponde à des exigences ou à des formats spécifiques.

)

(setq dwg (strcat dwg " " (menucmd "M=$(edtime,$(getvar,date),YYYY-MO-DD HH:MM)") ".dwg"))

(commande "_.saveas" "" dwg)

(principe)

)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer