Aller au contenu

perte de conservation des paramètres


Messages recommandés

Posté(e)

hello

il y a peu j'ai fait une formation pour faire un peu de lisp

j'aivais dfait un petit lisp pour poser des cotes altimétrique et arréter de m'enquiquiner... (lisp qui repose sur le dé^placement du SCU et sur une cotation ordonnée en suite)

le tout a été revu et corrigé par rebcao (le formateur)

ça donnait ça :

(defun c:ni (/)

 (sav_para)


 ;;modif des paramètres pour une cotation conforme
 (setvar "clayer" "68 COTES DE NIVEAU")
 (setvar "cecolor" "bylayer")
 (setvar "celtype" "bylayer")	  
 (command "_celweight" "-1")
 (command "_dimstyle" "_r" "superposees")
 
 (setq point_zero (getpoint "\nIndiquer le point de repère"))
 (initget 1)
 (setq zero (getdist "\nIndiquer l'altimétrie de ce repère : "))

 (command "_ucs" "_o" (list
			 (car point_zero)
			 (- (cadr point_zero) (* 1000 zero))
		)
   )
(while c:nu
  
  	 (command "_dimordinate" pause pause)
 		 (command "_ddedit" "_l" "")
 	) 
 )


(defun c:nu()
   	(while c:nu
		 (command "_dimordinate" pause pause)
 
	 (command "_ddedit" "_l" "")
 	) 
 )


 (defun *error*(err)
    (retour_para)
 )


;;===================================================================


   ;; enregistrement des anciens paramètres
 
 (defun sav_para()
   (setq OLDLAYER (getvar "clayer"))
   (setq OLDCOLOR (getvar "cecolor"))
   (setq OLDCELTYPE (getvar "celtype"))
   (setq OLDWEIGHT (getvar "celweight"))
   (setq OLDSTYLE (getvar "dimstyle"))
 )


  ;;rétablissement des anciens paramètres
  ;;même lorsque l'on sort du programme de manière sauvage (ou non)

 (defun retour_para()
   (setvar "clayer" oldlayer)
   (setvar "cecolor" oldcolor)
   (setvar "celtype" oldceltype)
   (setvar "celweight" oldweight)
   (command "_dimstyle" "_r" oldstyle)
 )
  

 

Eternel insatisfait je trouvais que ce code étais perfectible, en effet il m'arrive d'avoir des cotes à placer après avoir fait ne suite d'autres commandes.

Pour autant je ne souhaite pas avoir à redéfinir le SCU (sois feinéant tu vivras longtemps!)

en tapant la commande nu j'arrive à mes fins sauf que je n'ai pas comme lorsque je fais la commande ni les bons paramètres pour la définition de ma cotes (style de cotes, calque...)

Etant entreprenant j'ai donc modifié le lisp... et ça nje marche plus!! héhé

 

nouveau code

(defun c:ni (/)

 (sav_para)


 ;;modif des paramètres pour une cotation conforme

 
 (setq point_zero (getpoint "\nIndiquer le point de repère"))
 (initget 1)
 (setq zero (getdist "\nIndiquer l'altimétrie de ce repère : "))

 (command "_ucs" "_o" (list
			 (car point_zero)			;; coordonnées X
			 (- (cadr point_zero) (* 1000 zero))    ;; coordonnées Y
		)
   ) ;; fin command _ucs
 
(nin) 
 ) ;; fin ni(/)


(defun c:nin()
 
 (sav_para)
 
 (setvar "clayer" "68 COTES DE NIVEAU")
 (setvar "cecolor" "bylayer")
 (setvar "celtype" "bylayer")	  
 (command "_celweight" "-1")
 (command "_dimstyle" "_r" "superposees")
 
   	(while c:nin
		 (command "_dimordinate" pause pause)
 
	 (command "_ddedit" "_l" "")
  
         (retour_para)
 	)
 
 )


 (defun *error*(err)
    (retour_para)
 )


;;===================================================================


   ;; enregistrement des anciens paramètres
 
 (defun sav_para()
   (setq OLDLAYER (getvar "clayer"))
   (setq OLDCOLOR (getvar "cecolor"))
   (setq OLDCELTYPE (getvar "celtype"))
   (setq OLDWEIGHT (getvar "celweight"))
   (setq OLDSTYLE (getvar "dimstyle"))
 )


  ;;rétablissement des anciens paramètres
  ;;même lorsque l'on sort du programme de manière sauvage (ou non) grâce au defun *error*(err)

 (defun retour_para()
   (setvar "clayer" oldlayer)
   (setvar "cecolor" oldcolor)
   (setvar "celtype" oldceltype)
   (setvar "celweight" oldweight)
   (command "_dimstyle" "_r" oldstyle)
 )
  

j'ai modifié le lisp nu en nin que je trouve plus esthétique (bref...)

d'ou vient l'erreur?

Phil

 

PS :

il y a quelque chose que je ne comprends pas dans le lisp ni c'est à quoi sert

(while c:nu
  
  	 (command "_dimordinate" pause pause)
 		 (command "_ddedit" "_l" "")
 	) 

vu que ce morceau de code est définit dans le lisp nu... j'espère me faire comprendre car ayant moi même du mal à comprendre le lisp...)

Projeteur Revit Indépendant - traitement des eaux/CVC

Posté(e)

Bonjour Philsogood,

La commande ni et la commande nu sont deux commandes indépendantes.

Il te suffit de copier la partie suivante de la commande ni

  (sav_para) 


 ;;modif des paramètres pour une cotation conforme 
 (setvar "clayer" "68 COTES DE NIVEAU") 
 (setvar "cecolor" "bylayer") 
 (setvar "celtype" "bylayer")     
 (command "_celweight" "-1") 
 (command "_dimstyle" "_r" "superposees") 

entre le Defun c:nu() et le (while... pour que cela fonctionne.

A+

Olivier

Posté(e)

Bonjour,

 

PS :

il y a quelque chose que je ne comprends pas dans le lisp ni c'est à quoi sert

(while c:nu
  
  	 (command "_dimordinate" pause pause)
 		 (command "_ddedit" "_l" "")
 	) 

vu que ce morceau de code est définit dans le lisp nu... j'espère me faire comprendre car ayant moi même du mal à comprendre le lisp...)

 

Ca prête un peu à confusion en effet...

A priori le but est simplement de créer une boucle infinie, afin que les commandes _dimordinate et _ddedit se répètent indéfiniment.

En effet, c:nu sera toujours évalué comme "non nil".

Ce serait peut-être plus clair comme ça :

(while T
  
  	 (command "_dimordinate" pause pause)
 		 (command "_ddedit" "_l" "")
 	) 

T (true) étant toujours vrai, la boucle while ne sera jamais interrompue (sauf avec Echap bien sûr).

Posté(e)

hello

@-olivier-

ben c'est bien ce que j'avais écrit mais ça marchait pas ; toujours est-il que mtn ça fontionne! cool

@bryce

du coup le lisp nu ne sert plus dans ni, il est indépendant et ne sert que lorsqu'on l'appele directement... ; ça marche très bien aussi, j'ai juste pensé à rajouter le (sav_para) ... pour que mes cotes soient faites correctement.

merci à vous deux

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

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é