Aller au contenu

Ligne multicolore


Oli553

Messages recommandés

Dans ce cas précis, à quoi sert "Initget" et comment sait t'on le chiffre que l'on doit mettre?

 

Sinon, le repeat me sert à éviter de remettre la largeur voulue au bout de 2 polylignes.

 

Merci pour cette réponse qui m'éclaire et me fait découvrir à chaque fois un peu plus du lisp :D

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Lien vers le commentaire
Partager sur d’autres sites

(initget [bits] [chaine]) sert de fonction de controle d'entrée utilisateur pour toute les fonctions (get????) sauf (getstring) ainsi que (?entsel?)

 

Suivant comment est amé le bit de controle, une réponse ne répondant pas aux exigences sera refusé et redemandé.

 

ici (initget 4) refuse toute entrée négative car PLINEWID refuserait une telle valeur.

 

Voir l'aide sur iniget pour les bit de controle

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Amennnn...

 

Va falloir que j eme remmette à l'anglais donc si j'ai bien compris il sert à gerer des conditions pour les valeurs demandés? (je résume peut etre imparfaitement) :casstet:

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Lien vers le commentaire
Partager sur d’autres sites

C'est vrai que cette doc en ligne en anglais exclu toute les personnes pas famillère avec l'english.

 

Mais l'exclusion de nos jour est monnaie courante :mad:

 

Tiens un nouveau jus, justement concernant initget, cela te permet de valider la dernière largeur, d'en entrer une nouvelle, ou de quitter la procédure.

(defun c:limul (/ old_color old_plw w_pl def_color)
(setq old_color (getvar "CECOLOR") old_plw (getvar "PLINEWID"))
(initget 4 "Quitter _Quit")
(while (/= (setq w_pl (getdist (strcat "\nLargeur de la polyligne/[Quitter] <" (rtos (getvar "PLINEWID")) ">: "))) "Quit")
	(if w_pl (setvar "PLINEWID" w_pl))
	(setq def_color 50)
	(repeat 2
		(setvar "CECOLOR" (itoa def_color))
		(command "_.pline")
			(while (not (zerop (getvar "cmdactive")))
			(command pause)
		)
		(setq def_color 100)
	)
	(initget 4 "Quitter _Quit")
)
(setvar "CECOLOR" old_color)
(setvar "PLINEWID" old_plw)
(prin1)
)

 

En voyant l'évolution, on comprend mieux. ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Merci, effectivement, on comprend mieux en voyant l'évolution d'un programme.

Je me pose la question : A quoi sert les données aprés la variable qui permet de lancer le lisp?

(defun c:limul (/ old_color old_plw w_pl def_color)

 

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Lien vers le commentaire
Partager sur d’autres sites

Cela sert que lorsque la routine est achevée de remettre les variables déclarées à "nil" (rien, vide)

Tu récupère ainsi de l'espace mémoire qui a servi au stockage des variables et évite aussi lors d'un appel ultérieur de la routine d'utiliser la valeur d'une variable (si le lisp n'est pas très bien monté) qui pourrait fausser le déroulement du code.

 

Si ceci n'est pas fait ex (defun c:limul ( / ) tu pourras interroger tes variables utilisées à la fin de ta routine par !def_color (par exemple) au message commande: qui te retournera 100 (dernière valeur utilisée).

Ce mode peut être utile en phase de débug

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Va falloir que j eme remmette à l'anglais donc si j'ai bien compris il sert à gerer des conditions pour les valeurs demandés? (je résume peut etre imparfaitement) :casstet:

 

:red:

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Génial, un nouveau lispeur a rejoint notre communauté

Donc pour t'encourager dans cette voie et pour te montrer un peu ce qui est possible de faire, je te donne un lisp qui a été fait au plus simple et sans visual lisp (à part peut-être vl-remove)

 

@+

(defun c:mp(/ Cmd Co Coo Compt ep Lg os Pt1 Pt2 Pts Pas s)

 (defun *errmp* (msg)
   (if (/= msg "Function cancelled")
     (if (= msg "quit / exit abort")
       (princ)
       (princ (strcat "\nErreur : " msg))
     )
     (princ)
   )
   (if os
     (setvar "osmode" os)
   )
   (setvar "cecolor" coo)
   (command "_.undo" "_end")
   (setvar "cmdecho" Cmd)
   (setq *error* s)
   (princ)
 )

 (defun cg_co()
   (setvar "cecolor" (itoa Co))
   (if (= Co 50)
     (setq Co 100)
     (setq Co 50)
   )
 )

 (setq s *error*)
 (setq *error* *errmp*)
 (setq Cmd (getvar "cmdecho") Coo (getvar "cecolor"))
 (setvar "cmdecho" 0)
 (setq Ep (getstring (strcat "\nEpaisseur des polylignes <" (rtos (getvar "plinewid")) "> : ")))
 (if Ep
   (setvar "plinewid" (atof Ep))
 )
 (setq Pt1 (getpoint "\nPremier point : ") Pt2 '(0.0 0.0 0.0) Co 50 Compt 0)
 (if Pt1
   (progn
     (setq Pts (list (cons 0 Pt1)))
     (while Pt2
       (initget "Undo")
       (setq Pt2 (getpoint Pt1 "\nPoint suivant / Undo : "))
       (if Pt2
         (progn
           (if (= Pt2 "Undo")
             (progn
               (if (/= Compt 0)
                 (progn
                   (command "_.undo" "1")
                   (setq Pts (vl-remove (assoc Compt Pts) Pts) Compt (1- Compt) Pt1 (cdr (assoc Compt Pts)))
                 )
                 (princ "\nRien à annuler")
               )
             )
             (progn
               (command "_.undo" "_group")
               (setq os (getvar "osmode"))
               (setvar "osmode" 0)
               (setq Pas 0 Lg (* (getvar "ltscale") 5))
               (while (< Pas (- (distance Pt1 Pt2) Lg))
                 (cg_co)
                 (command "_.pline" (if (= Pas 0)
                                      Pt1
                                      "@"
                                    )
                                    (strcat "@" (rtos Lg) "<" (angtos (angle Pt1 Pt2) 0 16))
                                    "")
                 (setq Pas (+ Pas Lg))
               )
               (cg_co)
               (command "_.pline" "@" Pt2 "")
               (setvar "osmode" os)
               (setvar "cecolor" coo)
               (command "_.undo" "_end")
               (setq Pt1 Pt2 Compt (1+ Compt) Pts (append Pts (list (cons Compt Pt2))))
             )
           )
         )
       )
     )
   )
 )
 (setvar "cmdecho" Cmd)
 (setq *error* s)
 (princ)
)

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Y'en a qui ont du temps, à 18h !

Avec Patrick, tu vas avoir une super routine.

 

Oli, demain tu lui mets tes voeux de formation sous le nez à ton patron.

 

S'il ne donne pas sa réponse dans les 4 semaines, c'est acquis.

(hi hi)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Tu fait bien de me le rappeler, j'avais oublier ce petit point là... ;)

 

Pour Patrick, merci beaucoup, j'essairai de regarder en profondeur demain ou Vendredi :D

 

Merci à tous, je m'y met doucement, cette semaine j'ai un peu de temps, les semaines qui viennent à mon avis j'en aurais moins... :exclam:

 

@+

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Lien vers le commentaire
Partager sur d’autres sites

Y'en a qui ont du temps, à 18h !

Non, pas spécialement, jute le temps de l’écrire, de corriger un ou deux bug, de l’améliorer un peu et de le tester. De plus, c’est le type de prog qui peut me servir à l’occasion

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Sans lisp ni vba ni....

 

J'aime bien cette Bidouille

 

1) je trace un trait en couleur jaune et en type de ligne continuous

2) je fais une copie de ma ligne en @ (en clair sur lui-même)

3) je change les propriétés de ma copie en vert et avec le type de ligne cache

4) il ne reste plus qu'à jouer avec ltscale (de la ligne ou général)

 

Pourquoi faire simple .... ;)

 

Parceque entre nous, des lignes bicilores... On en fait pas souvent :hallucine:

Lien vers le commentaire
Partager sur d’autres sites

:P C'était histoire de voir ce qu'il est possible et non en lisp :D et aussi parce que j'i une affaire ou la Terre générale de fond de fouille du batiment doit apparaitre :o .

@+

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Lien vers le commentaire
Partager sur d’autres sites

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é