Invité adri7786 Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Bonjour à tous. Je suis Nouveau sur ce forum et dans le monde du LISP.Je suis actuellement en licence CAO DAO et travaille en alternance dans un bureau d'etude béton armé. Voici mon souci,Pour mon projet de fin d'année, je créer des routine sous Lisp pour autocad afin d'automatisé mes dessin d'armature. Mon programme suivant créer des epingle a l'aide de 2 acier representer en section ( 2 cercle) Mon programme marcher trés bien hier quand je les créer, il réaliser les epingle dans nimporte quel sens ( suivant les 2 acier selectioner) or aujourd'huit il me met l'erreur "type d'argument incorrect: point 2D/3D: nil" voici mon programe (defun c:EP () (command "calque" "ch" "G03 Armatures Coupes" "ac" "G03 Armatures Coupes" "") (setq LI (entsel "\nSélectionner un HA : ")) (setq LI2 (entsel "\nSélectionner un HA : ")) ;; (setq HA (getstring "\ndonner la nuance de l'epingle : ")) (initget 1 "6 8 10 12 14 16") (setq choix (strcase (getkword "\ndonner la nuance de l'epingle : [6, 8, 10, 12, 14, 16] <10> "))) ;; Affiche un menu déroulant invitant l'utilisateur à choisir son réseau, (cond ((= choix "6")) ((= choix "8")) ((= choix "10")) ((= choix "12")) ((= choix "14")) ((= choix "16")) ) (setq NomEntité (car LI)) ;; Extrait le premier élément de la liste "LI" et l'attribut dans la variable "NomEntité", (setq NomEntité2 (car LI2)) (setq LISTE (entget NomEntité)) ;; Récupére les informations de la variable "NomEntité" et la place dans la variable "LISTE", (setq LISTE2 (entget NomEntité2)) ;; Cherche dans la liste "LISTE" celle dont le code-clé est "10" (=point principale) et supprime le premier élément de celle-ci, (setq A1 (CDR (ASSOC 10 LISTE))) (setq A2 (CDR (ASSOC 10 LISTE2))) (setq Ray (cdr (assoc 40 LISTE))) (setq long2 (+ Ray 0.005)) (setq long (distance A1 A2)) ;; Même chose pour le code-clé "11" (=autre point), (setq long3 (* 0.35 long)) ;; Attribut à la variable "angl" l'angle que décrit les points "A1" et "A2", (setq angl (angle A1 A2)) (setq pt0 (polar A1 (+ angl (/ pi 2)) long2)) (setq pt1 (polar A1 (+ angl (/ pi 2)) (- long2))) (setq pt2 (polar A2 (+ angl (/ pi 2)) (- long2))) (setq pt3 (polar pt0 angl long)) (setq pt4 (polar pt1 angl long3)) (setq pt5 (polar pt2 angl (- 0 long3))) (setq dist (distance pt0 pt1)) (setq Ray2 (/ dist 2)) (setq longTotalHA (+ (* 2 long3) long (* 2 (* pi Ray2)))) (setq ptexte (polar schema2 0 (* long 0.35))) (setvar "cmdecho" 0) (setq avant (getvar "osmode")) (setvar "osmode" 0) (command "polylign" pt4 pt1 "arc" pt0 "Li" pt3 "arc" pt2 "Li" pt5 "") (setq schema (entlast)) (setq texte (getpoint "n\donner le point de depart du texte : ")) (command "calque" "ch" "G04 Rep Armatures" "ac" "G04 Rep Armatures" "") (command "texte" texte 0.05 0 (strcat "EpHA" choix "X" (rtos longTotalHA 2 2) " e:" E "cm")) (setq schema2 (getpoint "n\donner le point d'insertion du croquis : ")) (command "copier" schema "" A1 schema2) (setq schema3 (entlast)) (command "echelle" schema3 "" schema2 0.35) (command "texte" "j" "BC" ptexte 0.045 0 (rtos long 2 2)) (setvar "osmode" avant) ) si quelqu'un aurais une solution à me proposer je suis preneur ;) Merci à tous d'avance pour vos proposition. Bonne journée
Bred Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Salut,utilises l'éditeur visual lisp pour détecter tes erreurs. Ici, tu utilises la variable shema2 sans l'avoir rempli avant : (setq ptexte (polar schema2 0 (* long 0.35))) Et pense à faire des tests afin déviter les erreur (si calque n'existe pas, si tu ne selectionnes pas une entité valide, etc....) Et pour info, j'ai reçu cette pub aujourd'hui pas mail :http://solidrcad.pagesperso-orange.fr/File_html/Version.html Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Invité adri7786 Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Merci Beaucoup pour ton aide, le souci étai bien la variable schema2 qui gêné. En ce qui concerne les calque, jutilise un gabari autocad ou il sont deja créer donc cela ne pouvai pas etre le soucis. Merci encore de ton aide précieuse. ;) ;)
(gile) Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Salut et bienvenue, Je me suis permis d'éditer ton message (re-formatage du code) pour qu'il soit plus facilement lisible. Je le déplacerai dans le forum Débuter en LISP où il sera mieux à sa place. Je te recommande la lecture des 4 sujets "Mis en tête" de ce forum. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Invité adri7786 Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Merci Gile pour t modifications et désolé pour les erreur, je suis nouveau dans le forum et connait pas bien les regles encore. Comme on dit " c'est des erreur que l'on apprend " ;) merci encore et désolé
(gile) Posté(e) le 22 mars 2011 Posté(e) le 22 mars 2011 Il ne s'agit pas de "règles", mais le forum LISP ayant 4 sous forums il est préférables que les sujet soient plus ou moins dans le forum adéquat pour faciliter les recherches. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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