phil_vsd Posté(e) le 24 février 2008 Posté(e) le 24 février 2008 Bonsoir tous, Là je me frappe la honte du siècle mais je dois l'avouer... je ne sais pas créer un calque en lisp. J'ai beau chercher mais tout ce que je trouve ne marche pas... Je voudrai créer un calque avec une couleur précise,disons le 1 pour le rouge, avec un type de ligne dots, echelle 0.5 et épaisseur 0.18 .J'ai cru comprendre que tout se passait comme sur la ligne de code en entrant les argumants les uns après les autres... Mais j'ai des message d'erreurs. En plus, selon les topic que je récupère sur Cadxp, parfois la syntaxe change... Un coup y'a des tiret devant les commandes, parfois des underscore (tiret du 8)... Un coup des guillemets pour les arguments, parfois non... Quelqu'un peut formater mon esprit une bonne fois pour toute ? Voilà mon lisp : (defun c:ccalque () (setq nl (getstring "Nom du calque ? :")) (command "-calque" "n" nl "_co" 1 "" "") ) Merci à vous. PS Edit : j'ai lu le post de Fomula1 mais même en faisant un copier coller de la réponse de (gile) je n'ai pas le résultat escompté... Ouverture du manager puis plus rien... Commande: BETON-CSP-COUPE Commande inconnue "BETON-CSP-COUPE". Appuyez sur F1 pour obtenir de l'aide. .../... [Edité le 24/2/2008 par phil_vsd] "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
(gile) Posté(e) le 24 février 2008 Posté(e) le 24 février 2008 Salut, La fonction command requiert comme arguments le nom de la commande et les options requises par la commande (en général comme on les entrerait à la ligne de commande). Il faut parfois faire quelques essais. Ces arguments peuvent avoir parfois différentes formes : - le nom de commande et les options sont des chaînes (string) qu'on peut spécifier soit dans la langue de la version :(command "calque" "nouv" "MonCalque" "couleur" 1 "MonCalque" "")soit en langage international, compatible avec toutes les versions (les commandes et options en anglais avec un underscore) :(command "_layer" "_new" "MonCalque" "_color" 1 "MonCalque" "")Comme à la ligne de commande, les options peuvent être spécifiées par leurs abréviations :(command "_layer" "_n" "MonCalque" "_co" 1 "MonCalque" "")Le tiret (-) devant le nom de commande qui sert à avoir certaines commandes sans la boite de dialogue est nécessaire à la ligne de commande et dans les macros, il est inutile en LISP. - les autres arguments peuvent être spécifiés sous fourme de chaînes, de nombres, de listes (points), de variables ou d'expressions LISP.(command "_line" "0,0" "10,0" "")ou(command "_line" '(0 0) '(10 0) "")ou(setq p1 '(0 0))(command "_line" p1 (polar p1 0.0 10) "") Mais, mieux que command, pour créer des entités (graphiques ou non), tu peux utiliser la fonction entmake (avec les groupes DXF) : (entmake '((0 . "LAYER") ; type d'entité (100 . "AcDbSymbolTableRecord") ; marqueur de sous classe (100 . "AcDbLayerTableRecord") ; marqueur de sous classe (2 . "MonCalque") ; nom du calque (70 . 0) ; drapeau d'état (gelé, vérouillé...) (62 . 1) ; couleur (6 . "AXES") ; type de ligne (370 . 18) ; épaisseur de ligne ) ) [Edité le 24/2/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
formula1 Posté(e) le 25 février 2008 Posté(e) le 25 février 2008 Voici un aperçu de ce que tu peus aussi faire (defun c:laya () (command "layer" "n" "BETON-CSP-COUPE" "c" "2" "BETON-CSP-COUPE" "l" "continuous" "BETON-CSP-COUPE" "lw" "0.5" "BETON-CSP-COUPE" ""));defun laya ATTENTION, ce lisp marche sur des version anglaise de autocad, il faut traduire les commandes pour les versions fr (defun c:nom de la commande () (command "layer" "n" "nom du layer" "c" "2" "nom du layer" "l" "continuous" "nom du layer" "lw" "0.5" "nom du layer" ""));defun nom de la commande
phil_vsd Posté(e) le 25 février 2008 Auteur Posté(e) le 25 février 2008 Merci à vous. C'est vrai que de passer par les DXF c'est plus long mais il me semble plus précis. Quant aux codes de Formula1 je les ai transformés pour qu'il passent : (defun c:alpha ()(command "layer" "n" "alpha" "co" "1" "alpha" "tl" "continuous" "alpha" "ep" "0.5" "alpha" "")) "lw" est passé en "ep""l" est passé en "tl" A bientôt. "La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant