Aller au contenu

Messages recommandés

Posté(e)

Bonjour a tous et toutes

1ére utilisation du lisp

je cherche à créer ub rectangle pour commencer mon apprentissage en lisp!

 

y a til une personne dispo à m'indiquer le chemin à suivre

merci d'avance

 

 

Avant de savoir courir if faut savoir marcher

Posté(e)

Coucou,

 

Alors pour celà tu dois

 

 

(defun c:rectanglelisp(/ p1 p2 )
  (setq p1 (getpoint "\nSpécifiez le point bas gauche du rectangle sur l'écran :")
  (setq p2 (getpoint "\nSpécifiez le point haut droit du rectangle sur l'écran :")
  (command "rectangle" p1 p2)
)

 

Voilà, trés simple . Ensuite on peut faire qqch pour donner le point d'insertion d'un coté ou du centre, la hauteur et la longueur et il se débrouille tout seul.

 

Explication.

 

(defun c:rectanglelisp -> définit la routine sous le nom de rectanglelisp. Pour la lancer dans autocad tu devras écrire ça

 

 

(/p1 p2) -> Ce sont les variables que tu vas utiliser dans ton programme.

 

Setq p1 -> Créer une variable p1

 

Getpoint -> Demande à l'utilisateur de cliquer un point à l'écran. le message sera "Spécifiez le point bas gauche du rectangle sur l'écran :"

 

le \n c'est pour écrire à la ligne

 

(command "rectangle" p1 p2) -> C'est exactement la même chose que dans la barre de commande. tulance la commande rectangle. tu entres les coordonnées p1 puis p2.

 

 

et enfin refermer la parenthèse pour cloturer le programme

 

[Edité le 26/6/2008 par Arcasdk]

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

Salut kermitos!

 

Tout d'abord, l'objet rectangle n'existe pas sous autocad, c'est en fait une polyligne fermée avec

4 sommets.

 

Est-ce que le rectangle que tu veux dessiner sera parallèle au scu (axe X et Y)?

- Si oui, tu peux utiliser simplement la commande _rectang:

(command "_rectang" (setq p1 (getpoint "\nCoin1: ")) (getpoint p1 "\nCoin2: "))

 

getpoint demande la saisie d'un point, et (getpoint p1 "message") affiche une ligne allant de

p1 au curseur de ta souris, donc la diagonale du rectangle.

 

- Sinon, solution 1: utiliser la commande _rectang et faire une rotation

solution 2: demander au moins 3 points (le 4ème tu peux le calculer) et créer une polyligne passant par ces 4 points.

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

merci pour les infos

je connais la commande rectangle, néanmoins je cherche à apprendre le lisp en vue de certaine amélioration de travail

 

losque vs ecrivez une chaine ( un lisp) on doit tjrs l'enregistrer dans support avec les autres lisp?

comment lancé la commande?

peux créer un icone pour la commande lisp?

 

Avant de savoir courir if faut savoir marcher

Posté(e)

Tu peux enregistrer tes lisps où bon te semble.

 

Pour les lancer il faut les charger (charger une application) ou (charger la fenêtre d'édition active (dans l'éditeur visal lisp)) et taper dans la ligne de commande de nom que tu as mis après le c: dans defun (defun c:nomeduprogramme (\))

 

Tu peux aussi créer une icône qui tapera à ta place le nom de la commande dans la ligne de commande.

 

 

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Posté(e)

re , a tous

merci pour les infos

vu que je suis novice je v essayer de digerer toutes les données.

à l'occasion je pourrais vous soliciter.

merci

Avant de savoir courir if faut savoir marcher

Posté(e)

Salut

Perso j'aurais plus utilisé la combinaison getpoint getcorner pour bien singer la vraie commande...

(command "_rectang" (setq a (getpoint)) (getcorner a))

Ou encore

(defun c:rec ()
   (command "_.rectang")
   (while (not (zerop (getvar "cmdactive")))(command pause))
)

Pour toutes les options disponibles avec l'outil natif.

 

Salut !

"Chacun compte pour un, et nul ne compte pour plus d'un."

  • 7 mois après...
Posté(e)

yo

bah du lisp en gros c'est des liste est si tu fait des rectangles du genre tu te fais chier ensuite si tu veux modifier

(defun c:rectanglelisp(/ p1 p2 )

(setq p1 (getpoint "\nSpécifiez le point bas gauche du rectangle sur l'écran :")

(setq p2 (getpoint "\nSpécifiez le point haut droit du rectangle sur l'écran :")

(command "rectangle" p1 p2)

)

 

alors jte conseil de creer une fonction qui fait des ligne et une autre qui appel la fonction ligne 4 fois avec des point en parametre

 

(defun line (BPOINT EPOINT LAYER / )

(entmake (list (cons 0 "Line")

(cons 10 BPOINT)

(cons 11 EPOINT)

(cons 8 LAYER)

)

)

(entlast)

)

 

(defun recdraw (BPOINT L H LAYER / X Y PT1 PT2 PT4)

(setq X (+ L (car BPOINT))

Y (+ H (cadr BPOINT))

PT1 (list X

(cadr BPOINT)

)

PT2 (list X

Y

)

PT3 (list (car BPOINT)

Y

)

)

(line BPOINT PT1 LAYER)

(line PT1 PT2 LAYER)

(line PT2 PT3 LAYER)

(line PT3 BPOINT LAYER)

)

 

pis dans un un grosse main fonction quand jai besoin de dessiner un rectangle ben jy call (recdraw '(0 0 0) 15 32 "0")

ou mettons

(setq pt (getpoint)

longueur (getreal "\nentrer longueur:")

hauteur (getreal "\nentrer longueur:")

)

(recdraw pt longueur hauteur "0")

 

voila tu peux regarder laide de vlide tres pratique

bref ces sa jespere que sa peux taider

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité