CADxp: [Résolu] Création de plusieurs présentations - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

[Résolu] Création de plusieurs présentations Pour les plans à multi-feuillets

#1 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 21 août 2015 - 11:17

Bonjour à tous !

Ayant marre de me cogner toutes les présentations d'un plan sous forme de plusieurs feuillets, je me suis lancé dans la création d'une routine (la première de ma vie !) qui le fasse à ma place (duplication d'une présentation, attribution d'un nom sous la forme d'un nombre, décalage de l'espace objet dans la fenêtre de présentation).

J'ai réussi à sortir quelque chose de potable (pour moi). Je vous la soumets pour que vous me fassiez des remarques/suggestions.

Déjà quelques pistes d'évolution auxquelles j'ai pensé:
  • Reprendre à la suite d'un feuillet (ajout de feuillets)
  • Ajouter dans le nom de la présentation le numéro de plan (par exemple)


; Copie de présentation réalisé par Guillaume Ojardias
; Ce LISP permet de copier une présentation dans le cadre de la réalisation d'un carnet
; Fonctionnement : Copie de la présentation -> Décalage dans la fenêtre d'une valeur donnée -> Itération selon le nombre de page souhaitée

;-----------------------------------------------------------------------------
; Début de la commande permettant de réaliser un duplication des présentations
(defun c:FEUILLET ()
  (setq FEUILLET_NomOriginal (getstring "\nDonnez le nom de la présentation à dupliquer :") ) 				; Nom de la présentation dupliquée
  (initget 1)
  (setq FEUILLET_Nb (getint "\nDonnez le nombre de feuillets à créer :") ) 									; Nombre de feuillets que l'on veut créer
  (initget 1)
  (setq FEUILLET_DecalageX (getreal "\nDonnez la valeur de décalage entre chaque feuillet suivant X :") ) 	; Distance entre les feuillets dans l'espace objet suivant X
  (initget 1)
  (setq FEUILLET_DecalageY (getreal "\nDonnez la valeur de décalage entre chaque feuillet suivant Y :") ) 	; Distance entre les feuillets dans l'espace objet suivant X
  (setq FEUILLET_Num 1)
  (setq FEUILLET_NomPrecedent (eval FEUILLET_NomOriginal) )

  (setq FEUILLET_DecalageX (- FEUILLET_DecalageX) )
  (setq FEUILLET_DecalageY (- FEUILLET_DecalageY) )
  (setq FEUILLET_Pan (list (eval FEUILLET_DecalageX) (eval FEUILLET_DecalageY) ) )

	(while (<= FEUILLET_Num FEUILLET_Nb)
		(if (= FEUILLET_NomPrecedent FEUILLET_NomOriginal)
			(progn
				; On vérifie le nom du feuillet
				(setq FEUILLET_NomFinal (FEUILLET_Verif FEUILLET_Num) )

				; On "crée" le feuillet
				(FEUILLET_Duplique FEUILLET_NomOriginal FEUILLET_NomFinal FEUILLET_Pan)
			); fin de progn
			(progn
				; On vérifie le nom du feuillet
				(setq FEUILLET_NomFinal (FEUILLET_Verif FEUILLET_Num) )
				
				(FEUILLET_Duplique FEUILLET_NomPrecedent FEUILLET_NomFinal FEUILLET_Pan)
			);fin de progn
		); fin de if
		
		(setq FEUILLET_NomPrecedent (eval FEUILLET_NomFinal))
		(setq FEUILLET_Num (eval (1+ FEUILLET_Num)))
	); fin de while

  (command)

); fin de defun
;-----------------------------------------------------------------------------

;---------------------------------------------------------------------------------------------
; Fonction pour vérifier et corriger, si nécessaire, la disponibilité d'un nom de présentation
(defun FEUILLET_Verif (FEUILLET_Verif_Num / FEUILLET_Verif_Nom FEUILLET_Verif_NomFinal FEUILLET_Verif_ListePresentations FEUILLET_Verif_Msg FEUILLET_Verif_Reponse FEUILLET_Verif_n)

	; Dans un premier temps on corrige le nom  de la présentation
	(setq FEUILLET_Verif_Nom (FEUILLET_CorrectionInf10 FEUILLET_Verif_Num) )
	
	; On récupère la liste de présentations existantes
	(setq FEUILLET_Verif_ListePresentations (layoutlist) )
	
	(if (member FEUILLET_Verif_Nom FEUILLET_Verif_ListePresentations)
		(progn
			(setq FEUILLET_Verif_Msg (strcat "La présentation " FEUILLET_Verif_Nom " existe déjà. Souhaitez-vous effacer l'existante ? [Oui/Non]: ") )
			
			(initget 1 "Oui Non")
			(setq FEUILLET_Verif_Reponse (getkword FEUILLET_Verif_Msg)) ; On propose d'effacer la présentation existante
			
			(if (= FEUILLET_Verif_Reponse "Oui")
				(progn ; Si l'utilisateur accepte, on efface la présentation existante et on la remplace par la nouvelle
					(command "_layout" "effacer" FEUILLET_Verif_Nom)
					(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
				); fin de progn
				(progn ; Sinon on cherche un nom de substitution
					(setq FEUILLET_Verif_n 0)
					(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
					
					(while (member FEUILLET_Verif_NomFinal FEUILLET_Verif_ListePresentations)
						(setq FEUILLET_Verif_n (1+ FEUILLET_Verif_n) )
						(setq FEUILLET_Verif_NomFinal (eval (strcat FEUILLET_Verif_Nom " (" (rtos FEUILLET_Verif_n 2 0) ")") ) )				  	
					); fin du while
				)
			); fin du if
		); fin de progn
		(progn
	  		(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
		); fin de progn
	)

); fin de defun
;---------------------------------------------------------------------------------------------


;------------------------------------------------------------------------
; Fonction pour ajouter un zéro devant les présentations inférieures à 10
(defun FEUILLET_CorrectionInf10 (FEUILLET_CorrectionInf10_Num / FEUILLET_CorrectionInf10_Nom)

	; Si le numéro de la présentation que l'on va créer est inférieure à 10, on ajoute un 0 devant
	(if (< FEUILLET_CorrectionInf10_Num 10)
		(progn
			(setq FEUILLET_CorrectionInf10_Nom (strcat "0" (rtos FEUILLET_CorrectionInf10_Num 2 0) ) )
		); fin de progn
		(progn
			(setq FEUILLET_CorrectionInf10_Nom (eval FEUILLET_CorrectionInf10_Num))
		); fin de progn
	); fin de if

); fin de defun
;------------------------------------------------------------------------


;--------------------------------------------------------------------------------------------
; Fonction servant à dupliquer les présentation est à déplacer l'espace objet dans la fenêtre
(defun FEUILLET_Duplique (FEUILLET_Duplique_NomPrecedent FEUILLET_Duplique_NomFinal FEUILLET_Duplique_Pan)

	(command "_layout" "copier" FEUILLET_Duplique_NomPrecedent FEUILLET_Duplique_NomFinal)
	(command "_ctab" FEUILLET_Duplique_NomFinal)
	(command "_mspace")
	(command "-pan" FEUILLET_Duplique_Pan "")
	(command "_pspace")

); fin de defun
;--------------------------------------------------------------------------------------------


Bonne journée à tous !

P.S: merci à (gile) pour son cours d'introduction à AutoLISP, ça ma bien aidé (en plus du manuel fournis par Autodesk.

Fichier(s) joint(s)

  • Fichier joint  feuillet.LSP (5,41 Ko)
    Nombre de téléchargements : 5

Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

#2 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 21 août 2015 - 18:59

Re-bonjour,

Petite question à 5 balle. Comment faire pour que cette routine fonctionne sur tous les AutoCAD quelques soient la langue système ?

Il me semble qu'il ne manque pas grand chose, mais j'ai du faire un peu des mélanges dans les noms de commande.

Merci et bon WE à tous !
Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

#3 L'utilisateur est hors-ligne   x_all 

  • ceinture rouge et blanche 6em dan
  • Groupe : Membres
  • Messages : 3318
  • Inscrit(e) : 27-juin 06
  • Location04190

Posté 22 août 2015 - 07:48

bonjour et bien venu sur le forum
c'est pas si courant qu'un nouveau membre arrive avec une solution plutôt qu'un problème :)

pour en revenir aux commandes, je crois qu'il faut lancer la commande de la version anglaise pour que ça marche avec le préfixe "_."

j'avais noté ici un lien avec les traduction et un fil de discutions ou (gile) et Patrick_35 donnait des trucs pour choper les options
http://joch04.free.f...ml/lisps.htm#an
"La possibilité d'expliquer m'a toujours paru comme la seule excuse à l’existence de la parole"
JL Godard

quelques trucs sur autocad
0

#4 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 24 août 2015 - 12:59

Bonjourà tous,

Petite mise à jour :
  • Maintenant on peut ajouter des pages à la suite d'un carnet
  • On peut donner un numéro du plan (facultatif)
  • Normalement (à vérifier) le script est international (mais j'en suis pas du tout sûr)


Au sujet de l'internationalisation, j'ai compris comment faire pour appeler la commande, mais pour l'option de la commande (dans mon cas "Copier"), lorsque je met "Copy", sur AutoCAD en français cela ne fonctionne pas. Y'a-t-il quelque chose de particulier à faire ?


; Copie de présentation réalisé par Guillaume Ojardias v1.1.0 du 24/08/2015
; Ce LISP permet de copier une présentation dans le cadre de la réalisation d'un carnet
; Fonctionnement : Copie de la présentation -> Décalage dans la fenêtre d'une valeur donnée -> Itération selon le nombre de page souhaitée

;-----------------------------------------------------------------------------
; Début de la commande permettant de réaliser un duplication des présentations
(defun c:FEUILLET ()
  (setq FEUILLET_NomOriginal (getstring "\nDonnez le nom de la présentation à dupliquer : ") ); Nom de la présentation dupliquée
  (initget 1 "Oui Non")
  (setq FEUILLET_TypeOriginal (getstring "\nS'agit-il de la première page du carnet ? [Oui/Non] : ") )  
  (setq FEUILLET_NumPlan (getstring "\nNuméro du plan (facultatif) ? ") )
  (initget 1)
  (setq FEUILLET_Nb (getint "\nDonnez le nombre de présentations à créer : ") ) ; Nombre de feuillets que l'on veut créer
  (initget 1)
  (setq FEUILLET_DecalageX (getreal "\nDonnez la valeur de décalage entre chaque feuillet suivant X : ") ) ; Distance entre les feuillets dans l'espace objet suivant X
  (initget 1)
  (setq FEUILLET_DecalageY (getreal "\nDonnez la valeur de décalage entre chaque feuillet suivant Y : ") ) ; Distance entre les feuillets dans l'espace objet suivant X
  (setq FEUILLET_NomPrecedent (eval FEUILLET_NomOriginal) )

  (setq FEUILLET_DecalageX (- FEUILLET_DecalageX) )
  (setq FEUILLET_DecalageY (- FEUILLET_DecalageY) )
  (setq FEUILLET_Pan (list (eval FEUILLET_DecalageX) (eval FEUILLET_DecalageY) ) )

	(cond
		( (= FEUILLET_TypeOriginal "N") (setq FEUILLET_TypeOriginal 1) )
		( (= FEUILLET_TypeOriginal "n") (setq FEUILLET_TypeOriginal 1) )
		( (= FEUILLET_TypeOriginal "Non") (setq FEUILLET_TypeOriginal 1) )		
		( (= FEUILLET_TypeOriginal "O") (setq FEUILLET_TypeOriginal 0) )		
		( (= FEUILLET_TypeOriginal "o") (setq FEUILLET_TypeOriginal 0) )
		( (= FEUILLET_TypeOriginal "Oui") (setq FEUILLET_TypeOriginal 0) )
	); fin de cond

	(if (= FEUILLET_TypeOriginal 1)
		(progn
			(if (/= FEUILLET_NumPlan "")
				(progn
					(setq FEUILLET_PrefixePresentation (strcat FEUILLET_NumPlan "-") )
					(setq FEUILLET_NumOriginal (vl-string-left-trim (eval FEUILLET_PrefixePresentation) (eval FEUILLET_NomOriginal) ) )
					(setq FEUILLET_Num (rtos (read FEUILLET_NumOriginal) 2 0) )
				  	(setq FEUILLET_Num (eval (read FEUILLET_Num ) ) )
				  	(setq FEUILLET_Nb (+ FEUILLET_Num FEUILLET_Nb) )
				  	(setq FEUILLET_Num (eval (1+ FEUILLET_Num) ) )
				); fin de progn
				(progn				
					(setq FEUILLET_Num (rtos (read FEUILLET_NomOriginal) 2 0) )
				  	(setq FEUILLET_Num (eval (read FEUILLET_Num ) ) )
				  	(setq FEUILLET_Num (eval (1+ FEUILLET_Num) ))
				  	(setq FEUILLET_Nb (+ FEUILLET_Num FEUILLET_Nb) )
				); fin de progn
			); fin de if
		); fin de progn
		(progn
			(setq FEUILLET_Num 1)
		); fin de progn
	)
	(while (<= FEUILLET_Num FEUILLET_Nb)
		(if (= FEUILLET_NomPrecedent FEUILLET_NomOriginal)
			(progn
				; On vérifie le nom du feuillet
				(setq FEUILLET_NomFinal (FEUILLET_Verif FEUILLET_Num) )
	
				; On "crée" le feuillet
				(FEUILLET_Duplique FEUILLET_NomOriginal FEUILLET_NomFinal FEUILLET_Pan)
			); fin de progn
			(progn
				; On vérifie le nom du feuillet
				(setq FEUILLET_NomFinal (FEUILLET_Verif FEUILLET_Num) )
				
				(FEUILLET_Duplique FEUILLET_NomPrecedent FEUILLET_NomFinal FEUILLET_Pan)
			);fin de progn
		); fin de if
		
		(setq FEUILLET_NomPrecedent (eval FEUILLET_NomFinal))
		(setq FEUILLET_Num (eval (1+ FEUILLET_Num)))
	); fin de while

); fin de defun
;-----------------------------------------------------------------------------

;---------------------------------------------------------------------------------------------
; Fonction pour vérifier et corriger, si nécessaire, la disponibilité d'un nom de présentation
(defun FEUILLET_Verif (FEUILLET_Verif_Num / FEUILLET_Verif_Nom FEUILLET_Verif_NomFinal FEUILLET_Verif_ListePresentations FEUILLET_Verif_Msg FEUILLET_Verif_Reponse FEUILLET_Verif_n)

	; Dans un premier temps on corrige le nom  de la présentation
	(setq FEUILLET_Verif_Nom (FEUILLET_CorrectionInf10 FEUILLET_Verif_Num) )
  	(if (/= FEUILLET_NumPlan "")
	  	(progn
		  	(if (= (type FEUILLET_Verif_Nom) 'STR )
			  	(progn
		  			(setq FEUILLET_Verif_Nom (strcat FEUILLET_NumPlan "-" FEUILLET_Verif_Nom) )
				); fin de progn
			  	(progn
		  			(setq FEUILLET_Verif_Nom (strcat FEUILLET_NumPlan "-" (rtos FEUILLET_Verif_Nom 2 0) ) )
				); fin de progn
			); fin de if
		); fin de progn
	); fin de if
	; On récupère la liste de présentations existantes
	(setq FEUILLET_Verif_ListePresentations (layoutlist) )
	
	(if (member FEUILLET_Verif_Nom FEUILLET_Verif_ListePresentations)
		(progn
			(setq FEUILLET_Verif_Msg (strcat "La présentation " FEUILLET_Verif_Nom " existe déjà. Souhaitez-vous effacer l'existante ? [Oui/Non]: ") )
			
			(initget 1 "Oui Non")
			(setq FEUILLET_Verif_Reponse (getkword FEUILLET_Verif_Msg)) ; On propose d'effacer la présentation existante
			
			(if (= FEUILLET_Verif_Reponse "Oui")
				(progn ; Si l'utilisateur accepte, on efface la présentation existante et on la remplace par la nouvelle
					(command "_.layout" "delete" FEUILLET_Verif_Nom)
					(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
				); fin de progn
				(progn ; Sinon on cherche un nom de substitution
					(setq FEUILLET_Verif_n 0)
					(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
					
					(while (member FEUILLET_Verif_NomFinal FEUILLET_Verif_ListePresentations)
						(setq FEUILLET_Verif_n (1+ FEUILLET_Verif_n) )
						(setq FEUILLET_Verif_NomFinal (eval (strcat FEUILLET_Verif_Nom " (" (rtos FEUILLET_Verif_n 2 0) ")") ) )					  
					); fin du while
				)
			); fin du if
		); fin de progn
		(progn
		  	(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
		); fin de progn
	)

); fin de defun
;---------------------------------------------------------------------------------------------


;------------------------------------------------------------------------
; Fonction pour ajouter un zéro devant les présentations inférieures à 10
(defun FEUILLET_CorrectionInf10 (FEUILLET_CorrectionInf10_Num / FEUILLET_CorrectionInf10_Nom)

	; Si le numéro de la présentation que l'on va créer est inférieure à 10, on ajoute un 0 devant
	(if (< FEUILLET_CorrectionInf10_Num 10)
		(progn
			(setq FEUILLET_CorrectionInf10_Nom (strcat "0" (rtos FEUILLET_CorrectionInf10_Num 2 0) ) )
		); fin de progn
		(progn
			(setq FEUILLET_CorrectionInf10_Nom (eval FEUILLET_CorrectionInf10_Num))
		); fin de progn
	); fin de if

); fin de defun
;------------------------------------------------------------------------


;--------------------------------------------------------------------------------------------
; Fonction servant à dupliquer les présentation est à déplacer l'espace objet dans la fenêtre
(defun FEUILLET_Duplique (FEUILLET_Duplique_NomPrecedent FEUILLET_Duplique_NomFinal FEUILLET_Duplique_Pan)

	(command "_.layout" "c" FEUILLET_Duplique_NomPrecedent FEUILLET_Duplique_NomFinal)
	(command "ctab" FEUILLET_Duplique_NomFinal)
	(command "_.mspace")
	(command "_.pan" FEUILLET_Duplique_Pan "")
	(command "_.pspace")

); fin de defun
;--------------------------------------------------------------------------------------------

Fichier(s) joint(s)

  • Fichier joint  feuillet.LSP (7,29 Ko)
    Nombre de téléchargements : 1

Ce message a été modifié par Giropode - 24 août 2015 - 13:05 .

Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

#5 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 24 août 2015 - 13:21

Re-bonjour,

En fait c'est bon, en lisant l'aide développeur d'autocad, ils disent qu'il faut mettre un "_" devant le nom de la commande en anglais et aussi devant le nom de l'option.

Ci-joint le code final.
; Copie de présentation réalisé par Guillaume Ojardias v1.1.1 du 24/08/2015
; Ce LISP permet de copier une présentation dans le cadre de la réalisation d'un carnet
; Fonctionnement : Copie de la présentation -> Décalage dans la fenêtre d'une valeur donnée -> Itération selon le nombre de page souhaitée

;-----------------------------------------------------------------------------
; Début de la commande permettant de réaliser un duplication des présentations
(defun c:FEUILLET ()
  (setq FEUILLET_NomOriginal (getstring "\nDonnez le nom de la présentation à dupliquer : ") ); Nom de la présentation dupliquée
  (initget 1 "Oui Non")
  (setq FEUILLET_TypeOriginal (getstring "\nS'agit-il de la première page du carnet ? [Oui/Non] : ") )  
  (setq FEUILLET_NumPlan (getstring "\nNuméro du plan (facultatif) ? ") )
  (initget 1)
  (setq FEUILLET_Nb (getint "\nDonnez le nombre de présentations à créer : ") ) ; Nombre de feuillets que l'on veut créer
  (initget 1)
  (setq FEUILLET_DecalageX (getreal "\nDonnez la valeur de décalage entre chaque feuillet suivant X : ") ) ; Distance entre les feuillets dans l'espace objet suivant X
  (initget 1)
  (setq FEUILLET_DecalageY (getreal "\nDonnez la valeur de décalage entre chaque feuillet suivant Y : ") ) ; Distance entre les feuillets dans l'espace objet suivant X
  (setq FEUILLET_NomPrecedent (eval FEUILLET_NomOriginal) )

  (setq FEUILLET_DecalageX (- FEUILLET_DecalageX) )
  (setq FEUILLET_DecalageY (- FEUILLET_DecalageY) )
  (setq FEUILLET_Pan (list (eval FEUILLET_DecalageX) (eval FEUILLET_DecalageY) ) )

	(cond
		( (= FEUILLET_TypeOriginal "N") (setq FEUILLET_TypeOriginal 1) )
		( (= FEUILLET_TypeOriginal "n") (setq FEUILLET_TypeOriginal 1) )
		( (= FEUILLET_TypeOriginal "Non") (setq FEUILLET_TypeOriginal 1) )		
		( (= FEUILLET_TypeOriginal "O") (setq FEUILLET_TypeOriginal 0) )		
		( (= FEUILLET_TypeOriginal "o") (setq FEUILLET_TypeOriginal 0) )
		( (= FEUILLET_TypeOriginal "Oui") (setq FEUILLET_TypeOriginal 0) )
	); fin de cond

	(if (= FEUILLET_TypeOriginal 1)
		(progn
			(if (/= FEUILLET_NumPlan "")
				(progn
					(setq FEUILLET_PrefixePresentation (strcat FEUILLET_NumPlan "-") )
					(setq FEUILLET_NumOriginal (vl-string-left-trim (eval FEUILLET_PrefixePresentation) (eval FEUILLET_NomOriginal) ) )
					(setq FEUILLET_Num (rtos (read FEUILLET_NumOriginal) 2 0) )
				  	(setq FEUILLET_Num (eval (read FEUILLET_Num ) ) )
				  	(setq FEUILLET_Nb (+ FEUILLET_Num FEUILLET_Nb) )
				  	(setq FEUILLET_Num (eval (1+ FEUILLET_Num) ) )
				); fin de progn
				(progn				
					(setq FEUILLET_Num (rtos (read FEUILLET_NomOriginal) 2 0) )
				  	(setq FEUILLET_Num (eval (read FEUILLET_Num ) ) )
				  	(setq FEUILLET_Num (eval (1+ FEUILLET_Num) ))
				  	(setq FEUILLET_Nb (+ FEUILLET_Num FEUILLET_Nb) )
				); fin de progn
			); fin de if
		); fin de progn
		(progn
			(setq FEUILLET_Num 1)
		); fin de progn
	)
	(while (<= FEUILLET_Num FEUILLET_Nb)
		(if (= FEUILLET_NomPrecedent FEUILLET_NomOriginal)
			(progn
				; On vérifie le nom du feuillet
				(setq FEUILLET_NomFinal (FEUILLET_Verif FEUILLET_Num) )
	
				; On "crée" le feuillet
				(FEUILLET_Duplique FEUILLET_NomOriginal FEUILLET_NomFinal FEUILLET_Pan)
			); fin de progn
			(progn
				; On vérifie le nom du feuillet
				(setq FEUILLET_NomFinal (FEUILLET_Verif FEUILLET_Num) )
				
				(FEUILLET_Duplique FEUILLET_NomPrecedent FEUILLET_NomFinal FEUILLET_Pan)
			);fin de progn
		); fin de if
		
		(setq FEUILLET_NomPrecedent (eval FEUILLET_NomFinal))
		(setq FEUILLET_Num (eval (1+ FEUILLET_Num)))
	); fin de while

); fin de defun
;-----------------------------------------------------------------------------

;---------------------------------------------------------------------------------------------
; Fonction pour vérifier et corriger, si nécessaire, la disponibilité d'un nom de présentation
(defun FEUILLET_Verif (FEUILLET_Verif_Num / FEUILLET_Verif_Nom FEUILLET_Verif_NomFinal FEUILLET_Verif_ListePresentations FEUILLET_Verif_Msg FEUILLET_Verif_Reponse FEUILLET_Verif_n)

	; Dans un premier temps on corrige le nom  de la présentation
	(setq FEUILLET_Verif_Nom (FEUILLET_CorrectionInf10 FEUILLET_Verif_Num) )
  	(if (/= FEUILLET_NumPlan "")
	  	(progn
		  	(if (= (type FEUILLET_Verif_Nom) 'STR )
			  	(progn
		  			(setq FEUILLET_Verif_Nom (strcat FEUILLET_NumPlan "-" FEUILLET_Verif_Nom) )
				); fin de progn
			  	(progn
		  			(setq FEUILLET_Verif_Nom (strcat FEUILLET_NumPlan "-" (rtos FEUILLET_Verif_Nom 2 0) ) )
				); fin de progn
			); fin de if
		); fin de progn
	); fin de if
	; On récupère la liste de présentations existantes
	(setq FEUILLET_Verif_ListePresentations (layoutlist) )
	
	(if (member FEUILLET_Verif_Nom FEUILLET_Verif_ListePresentations)
		(progn
			(setq FEUILLET_Verif_Msg (strcat "La présentation " FEUILLET_Verif_Nom " existe déjà. Souhaitez-vous effacer l'existante ? [Oui/Non]: ") )
			
			(initget 1 "Oui Non")
			(setq FEUILLET_Verif_Reponse (getkword FEUILLET_Verif_Msg)) ; On propose d'effacer la présentation existante
			
			(if (= FEUILLET_Verif_Reponse "Oui")
				(progn ; Si l'utilisateur accepte, on efface la présentation existante et on la remplace par la nouvelle
					(command "_layout" "_d" FEUILLET_Verif_Nom)
					(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
				); fin de progn
				(progn ; Sinon on cherche un nom de substitution
					(setq FEUILLET_Verif_n 0)
					(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
					
					(while (member FEUILLET_Verif_NomFinal FEUILLET_Verif_ListePresentations)
						(setq FEUILLET_Verif_n (1+ FEUILLET_Verif_n) )
						(setq FEUILLET_Verif_NomFinal (eval (strcat FEUILLET_Verif_Nom " (" (rtos FEUILLET_Verif_n 2 0) ")") ) )					  
					); fin du while
				)
			); fin du if
		); fin de progn
		(progn
		  	(setq FEUILLET_Verif_NomFinal (eval FEUILLET_Verif_Nom) )
		); fin de progn
	)

); fin de defun
;---------------------------------------------------------------------------------------------


;------------------------------------------------------------------------
; Fonction pour ajouter un zéro devant les présentations inférieures à 10
(defun FEUILLET_CorrectionInf10 (FEUILLET_CorrectionInf10_Num / FEUILLET_CorrectionInf10_Nom)

	; Si le numéro de la présentation que l'on va créer est inférieure à 10, on ajoute un 0 devant
	(if (< FEUILLET_CorrectionInf10_Num 10)
		(progn
			(setq FEUILLET_CorrectionInf10_Nom (strcat "0" (rtos FEUILLET_CorrectionInf10_Num 2 0) ) )
		); fin de progn
		(progn
			(setq FEUILLET_CorrectionInf10_Nom (eval FEUILLET_CorrectionInf10_Num))
		); fin de progn
	); fin de if

); fin de defun
;------------------------------------------------------------------------


;--------------------------------------------------------------------------------------------
; Fonction servant à dupliquer les présentation est à déplacer l'espace objet dans la fenêtre
(defun FEUILLET_Duplique (FEUILLET_Duplique_NomPrecedent FEUILLET_Duplique_NomFinal FEUILLET_Duplique_Pan)

	(command "_layout" "_c" FEUILLET_Duplique_NomPrecedent FEUILLET_Duplique_NomFinal)
	(command "_ctab" FEUILLET_Duplique_NomFinal)
	(command "_mspace")
	(command "_pan" FEUILLET_Duplique_Pan "")
	(command "_pspace")

); fin de defun
;--------------------------------------------------------------------------------------------

Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

#6 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6336
  • Inscrit(e) : 06-janvier 03

Posté 24 août 2015 - 13:57

Salut

C'est sympa de partager ses codes. Le principal est qu'il fonctionne et qu'il te satisfasse.

Comme tu le demandes, quelques pistes
(cond
                ( (= FEUILLET_TypeOriginal "N") (setq FEUILLET_TypeOriginal 1) )
                ( (= FEUILLET_TypeOriginal "n") (setq FEUILLET_TypeOriginal 1) )
                ( (= FEUILLET_TypeOriginal "Non") (setq FEUILLET_TypeOriginal 1) )              
                ( (= FEUILLET_TypeOriginal "O") (setq FEUILLET_TypeOriginal 0) )                
                ( (= FEUILLET_TypeOriginal "o") (setq FEUILLET_TypeOriginal 0) )
                ( (= FEUILLET_TypeOriginal "Oui") (setq FEUILLET_TypeOriginal 0) )
        )

Par exemple
(if (vl-position FEUILLET_TypeOriginal '("N" "n" "Non"))
  (setq FEUILLET_TypeOriginal 1)
  (setq FEUILLET_TypeOriginal 0)
)

ou encore, pour simplifier (a placer avant la question)
(initget 1 "Oui Non")


Tu peux intégrer une gestion des erreurs, redéfinir la variable cmdecho afin de ne pas voir le défilement des commandes (variable que l'on restaure à l'état initial en fin de programme ou en cas d'erreur, d'où la gestion des erreurs)
J'ai remarqué aussi que si tu as juste une fonction après un if, inutile d'ajouter un progn.
Une dernière chose est que tu utilises abondamment des eval et read. A la lecture de ton lisp, ces fonctions n'apportent rien. Tu sais si tes variables sont des chaines de caractères, des réels ou autres.

@+
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
0

#7 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 24 août 2015 - 14:18

Voir le messagePatrick_35, le 24 août 2015 - 13:57 , dit :

(cond
                ( (= FEUILLET_TypeOriginal "N") (setq FEUILLET_TypeOriginal 1) )
                ( (= FEUILLET_TypeOriginal "n") (setq FEUILLET_TypeOriginal 1) )
                ( (= FEUILLET_TypeOriginal "Non") (setq FEUILLET_TypeOriginal 1) )              
                ( (= FEUILLET_TypeOriginal "O") (setq FEUILLET_TypeOriginal 0) )                
                ( (= FEUILLET_TypeOriginal "o") (setq FEUILLET_TypeOriginal 0) )
                ( (= FEUILLET_TypeOriginal "Oui") (setq FEUILLET_TypeOriginal 0) )
        )

Par exemple
(if (vl-position FEUILLET_TypeOriginal '("N" "n" "Non"))
  (setq FEUILLET_TypeOriginal 1)
  (setq FEUILLET_TypeOriginal 0)
)



Parfait !

Voir le messagePatrick_35, le 24 août 2015 - 13:57 , dit :

ou encore, pour simplifier (a placer avant la question)
(initget 1 "Oui Non")


A ce sujet, j'étais partis avec cette solution de base, mais en faisant un test en mettant juste o en minuscule, ça ne fonctionnait pas...

Erreur de ma part, j'avais mis getstring au lieu de getkword...

Voir le messagePatrick_35, le 24 août 2015 - 13:57 , dit :

Tu peux intégrer une gestion des erreurs, redéfinir la variable cmdecho afin de ne pas voir le défilement des commandes (variable que l'on restaure à l'état initial en fin de programme ou en cas d'erreur, d'où la gestion des erreurs)

Il va falloir que je me penche sur le sujet.

Voir le messagePatrick_35, le 24 août 2015 - 13:57 , dit :

J'ai remarqué aussi que si tu as juste une fonction après un if, inutile d'ajouter un progn.

J'en ai un peu abusé. Il faut que je me relise. Petite question à ce sujet, je peux imbriqué un if dans un autre if sans utiliser progn ?

Voir le messagePatrick_35, le 24 août 2015 - 13:57 , dit :

Une dernière chose est que tu utilises abondamment des eval et read. A la lecture de ton lisp, ces fonctions n'apportent rien. Tu sais si tes variables sont des chaines de caractères, des réels ou autres.

@+

Je pense que c'est une mauvaise compréhension de ma part de ces fonctions...

Ce message a été modifié par Giropode - 24 août 2015 - 14:28 .

Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

#8 L'utilisateur est en ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11853
  • Inscrit(e) : 21-décembre 05

Posté 24 août 2015 - 14:18

Bonjour à toutes et tous,

Ton lisp semble bien fonctionner Giropode.;). Comme le dis Patrick (que je salut au passage'B)) il est très certainement perfectible (et on peut lui faire confiance !)

En ce qui me concerne, un cadre représentatif en espace objet des présentations ainsi créées serait pas mal afin de mieux visualiser les folios après création des feuilles de présentation, le tout sur un calque unique facilement gelable.

Je l'ai fait "manuellement" sur un petit fichier en créant un rectangle sur la fenêtre et en modifiant d'espace ce rectangle (_chspace) afin de visualiser la vue dans l'espace objet
AutoCAD MAP 3D 2019 - Covadis 17.0b
Forum : http://genie-civil.bbactif.com/
0

#9 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6336
  • Inscrit(e) : 06-janvier 03

Posté 24 août 2015 - 14:34

Voir le messageGiropode, le 24 août 2015 - 14:18 , dit :

A ce sujet, j'étais partis avec cette solution de base, mais en faisant un test en mettant juste o en minuscule, ça ne fonctionnait pas...

Par exemple
(initget 1 "Oui Non")
(setq question (getkword "Êtes-vous content [Oui/Non] : "))

Voir le messageGiropode, le 24 août 2015 - 14:18 , dit :

J'en ai un peu abusé. Il faut que je me relise. Petite question à ce sujet, je peux imbriqué un if dans un autre if sans utiliser progn ?

Oui

@lili2006 : V

@+
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
0

#10 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 24 août 2015 - 14:42

Voir le messagelili2006, le 24 août 2015 - 14:18 , dit :

En ce qui me concerne, un cadre représentatif en espace objet des présentations ainsi créées serait pas mal afin de mieux visualiser les folios après création des feuilles de présentation, le tout sur un calque unique facilement gelable.

Je l'ai fait "manuellement" sur un petit fichier en créant un rectangle sur la fenêtre et en modifiant d'espace ce rectangle (_chspace) afin de visualiser la vue dans l'espace objet

Un cadre qui sert uniquement à dire : "Eh coco ! T'as fait les présentations de seuelement ces pages ?" ^^
Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

#11 L'utilisateur est en ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11853
  • Inscrit(e) : 21-décembre 05

Posté 24 août 2015 - 14:53

Re,

Comment t'y prends tu toi concrètement pour savoir ou tu en est dans tes folios ?

Merci d'avance,



AutoCAD MAP 3D 2019 - Covadis 17.0b
Forum : http://genie-civil.bbactif.com/
0

#12 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 24 août 2015 - 16:32

Re,

J'avoue que je n'ai jamais était trop confronté au problème. En effet, dans les carnets de ferraillage, les feuillets dépassent rarement la cinquantaine de pages ^^.
En plus généralement, on fait notre mise en page à la fin.

Mais l'idée est bonne et me donne un autre défi : dessiner un rectangle et jouer avec pour le modifier ^^
Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

#13 L'utilisateur est en ligne   lili2006 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11853
  • Inscrit(e) : 21-décembre 05

Posté 26 août 2015 - 18:07

Bonjour à toutes et tous,

Merci pour ta réponse Giropode (et ton prog !)
AutoCAD MAP 3D 2019 - Covadis 17.0b
Forum : http://genie-civil.bbactif.com/
0

#14 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 19 novembre 2015 - 16:45

Bonjour à tous,

Ci-joint une mise à jour du LISP.
P.S. : @lili2006, je ne gère toujours pas l'histoire du rectangle. Un jour ! :rolleyes:

; Copie de présentation réalisé par Guillaume Ojardias v15.10.30
; Ce LISP permet de dupliquer des présentations en plusieurs exemplaires et de les renommer
; Fonctionnement : Copie de la présentation -> Décalage des fenêtres d'une valeur donnée -> Itération selon le nombre de pages souhaitées

;-----------------------------------------------------------------------------
; Début de la commande permettant de réaliser la duplication des présentations
(defun c:FEUILLET (/ *error*)

	(setq FEUILLET_CMDECHO (getvar 'CMDECHO) )

	(defun *error* (MsgErreur)
		(setvar 'CMDECHO FEUILLET_CMDECHO)
	  	(princ "\nErreur : ")
	  	(princ MsgErreur)
	  	(princ)
	)

	(setvar 'CMDECHO 0)
	
	(setq FEUILLET_ListePresentations (FEUILLET_ListerPresentations) ) ; On liste les présentations de l'espace papier
	(setq FEUILLET_ListePresentationsMsg (vl-string-translate " " "/" FEUILLET_ListePresentations) ) ; On les espaces par des / pour le getkword
	(setq FEUILLET_ListePresentationsMsg (strcat "\nDonnez le nom de la présentation à dupliquer [" FEUILLET_ListePresentationsMsg "] : ") ) ; On finalise la question pour le getkword

	(initget 1 FEUILLET_ListePresentations)
	(setq FEUILLET_NomOriginal (getkword FEUILLET_ListePresentationsMsg) ); On demande le nom de la présentation à dupliquer
	(initget 1 "Oui Non")
	(setq FEUILLET_TypeOriginal (getkword "\nS'agit-il de la première page du carnet ? [Oui/Non] : ") )  ; On demande si il s'agit de la première présentation d'un carnet
	(setq FEUILLET_NumPlan (getstring "\nNuméro du plan (facultatif) ? ") ) ; On propose l'ajout d'un numéro de plan (si plusieurs carnet dans la même fichier)
	(initget 1)
	(setq FEUILLET_Nb (getint "\nDonnez le nombre de présentations à créer : ") ) ; On demande le nombre de présenations à créer
	(setq FEUILLET_NbString (rtos FEUILLET_Nb 2 0) )
	(setq FEUILLET_MsgFinal (strcat FEUILLET_NbString " présentation(s) créée(s)"))
	(initget 1)
	(setq FEUILLET_DecalageX (getreal "\nDonnez la valeur de décalage entre chaque feuillet suivant X : ") ) ; Distance entre les feuillets dans l'espace objet suivant X
	(initget 1)
	(setq FEUILLET_DecalageY (getreal "\nDonnez la valeur de décalage entre chaque feuillet suivant Y : ") ) ; Distance entre les feuillets dans l'espace objet suivant X
	(setq FEUILLET_NomPrecedent FEUILLET_NomOriginal )

	(setq FEUILLET_DecalageX (- FEUILLET_DecalageX) )
	(setq FEUILLET_DecalageY (- FEUILLET_DecalageY) )
	(setq FEUILLET_Pan (list FEUILLET_DecalageX FEUILLET_DecalageY ) )

	(if (= FEUILLET_TypeOriginal "Non")
		(if (/= FEUILLET_NumPlan "")
			(progn
				(setq FEUILLET_PrefixePresentation (strcat FEUILLET_NumPlan "-") )
				(setq FEUILLET_NumOriginal (vl-string-trim FEUILLET_PrefixePresentation FEUILLET_NomOriginal ) )
				(setq FEUILLET_Num (atoi FEUILLET_NumOriginal) )
				(setq FEUILLET_Nb (+ FEUILLET_Num FEUILLET_Nb) )
				(setq FEUILLET_Num (+ FEUILLET_Num 1) )
			); fin de progn
			(progn		
				(setq FEUILLET_Num (atoi FEUILLET_NomOriginal) )
				(setq FEUILLET_Nb (+ FEUILLET_Num FEUILLET_Nb) )
				(setq FEUILLET_Num (+ FEUILLET_Num 1) )
			); fin de progn
		); fin de if
		(setq FEUILLET_Num 1)
	)
	(while (<= FEUILLET_Num FEUILLET_Nb)
		(if (= FEUILLET_NomPrecedent FEUILLET_NomOriginal)
			(progn
				; On vérifie le nom du feuillet
				(setq FEUILLET_NomFinal (FEUILLET_Verif FEUILLET_Num) )
	
				; On "crée" le feuillet
				(FEUILLET_Duplique FEUILLET_NomOriginal FEUILLET_NomFinal FEUILLET_Pan)
			); fin de progn
			(progn
				; On vérifie le nom du feuillet
				(setq FEUILLET_NomFinal (FEUILLET_Verif FEUILLET_Num) )
				
				(FEUILLET_Duplique FEUILLET_NomPrecedent FEUILLET_NomFinal FEUILLET_Pan)
			);fin de progn
		); fin de if
		
		(setq FEUILLET_NomPrecedent FEUILLET_NomFinal)
		(setq FEUILLET_Num (1+ FEUILLET_Num) )
	); fin de while
	
	(setvar 'CMDECHO 1)
	(alert FEUILLET_MsgFinal)

); fin de defun
;-----------------------------------------------------------------------------

;---------------------------------------------------------------------------------------------
; Fonction pour vérifier et corriger, si nécessaire, la disponibilité d'un nom de présentation
(defun FEUILLET_Verif (FEUILLET_Verif_Num / *error* FEUILLET_Verif_Nom FEUILLET_Verif_NomFinal FEUILLET_Verif_ListePresentations FEUILLET_Verif_Msg FEUILLET_Verif_Reponse FEUILLET_Verif_n)

	(defun *error* (MsgErreur)
	  	(princ "\nErreur : ")
	  	(princ MsgErreur)
	  	(princ)
	)

	; Dans un premier temps on corrige le nom  de la présentation
	(setq FEUILLET_Verif_Nom (FEUILLET_CorrectionInf10 FEUILLET_Verif_Num) )
  	(if (/= FEUILLET_NumPlan "")
		(if (= (type FEUILLET_Verif_Nom) 'STR )
			(setq FEUILLET_Verif_Nom (strcat FEUILLET_NumPlan "-" FEUILLET_Verif_Nom) )
			(setq FEUILLET_Verif_Nom (strcat FEUILLET_NumPlan "-" (rtos FEUILLET_Verif_Nom 2 0) ) )
		); fin de if
	); fin de if
	; On récupère la liste de présentations existantes
	(setq FEUILLET_Verif_ListePresentations (layoutlist) )
	
	(if (member FEUILLET_Verif_Nom FEUILLET_Verif_ListePresentations)
		(progn
			(setq FEUILLET_Verif_Msg (strcat "La présentation " FEUILLET_Verif_Nom " existe déjà. Souhaitez-vous effacer l'existante ? [Oui/Non]: ") )
			
			(initget 1 "Oui Non")
			(setq FEUILLET_Verif_Reponse (getkword FEUILLET_Verif_Msg)) ; On propose d'effacer la présentation existante
			
			(if (= FEUILLET_Verif_Reponse "Oui")
				(progn ; Si l'utilisateur accepte, on efface la présentation existante et on la remplace par la nouvelle
					(command "_layout" "_d" FEUILLET_Verif_Nom)
					(setq FEUILLET_Verif_NomFinal FEUILLET_Verif_Nom )
				); fin de progn
				(progn ; Sinon on cherche un nom de substitution
					(setq FEUILLET_Verif_n 0)
					(setq FEUILLET_Verif_NomFinal FEUILLET_Verif_Nom )
					
					(while (member FEUILLET_Verif_NomFinal FEUILLET_Verif_ListePresentations)
						(setq FEUILLET_Verif_n (1+ FEUILLET_Verif_n) )
						(setq FEUILLET_Verif_NomFinal (strcat FEUILLET_Verif_Nom " (" (rtos FEUILLET_Verif_n 2 0) ")") )					  
					); fin du while
				); fin de progn
			); fin du if
		); fin de progn
		(setq FEUILLET_Verif_NomFinal FEUILLET_Verif_Nom )
	)

); fin de defun
;---------------------------------------------------------------------------------------------


;------------------------------------------------------------------------
; Fonction pour ajouter un zéro devant les présentations inférieures à 10
(defun FEUILLET_CorrectionInf10 (FEUILLET_CorrectionInf10_Num / *error* FEUILLET_CorrectionInf10_Nom)

	(defun *error* (MsgErreur)
	  	(princ "\nErreur : ")
	  	(princ MsgErreur)
	  	(princ)
	)

	; Si le numéro de la présentation que l'on va créer est inférieure à 10, on ajoute un 0 devant
	(if (< FEUILLET_CorrectionInf10_Num 10)
		(setq FEUILLET_CorrectionInf10_Nom (strcat "0" (rtos FEUILLET_CorrectionInf10_Num 2 0) ) )
		(setq FEUILLET_CorrectionInf10_Nom FEUILLET_CorrectionInf10_Num)
	); fin de if

); fin de defun
;------------------------------------------------------------------------


;--------------------------------------------------------------------------------------------
; Fonction servant à dupliquer les présentation est à déplacer l'espace objet dans la fenêtre
(defun FEUILLET_Duplique (FEUILLET_Duplique_NomPrecedent FEUILLET_Duplique_NomFinal FEUILLET_Duplique_Pan / *error*)

	(defun *error* (MsgErreur)
	  	(princ "\nErreur : ")
	  	(princ MsgErreur)
	  	(princ)
	)

	(command "_layout" "_c" FEUILLET_Duplique_NomPrecedent FEUILLET_Duplique_NomFinal)
	(command "_ctab" FEUILLET_Duplique_NomFinal)
	(command "_mspace")
		; Fonction permettant de modifier plusieurs fenêtres dans l'espace papier, récupérée sur CADXP, je n'arrive pas à la comprendre, mais elle fonctionne !
		(if
  			(setq ss
    				(ssget "_X"
      					(list
        					(cons 0 "viewport")
        					(if (getvar "ctab")
          						(cons 410 (getvar "ctab"))
          						(cons 67 (- 1 (getvar "tilemode")))
        					); fin de if
      					); fin de list
    				); fin de ssget
  			); fin de setq
  			(foreach n (mapcar 'cdr (mapcar '(lambda (x) (assoc 69 x)) (mapcar 'entget (mapcar 'cadr (ssnamex ss)))))
    				(if (not (eq n 1))
				      (progn
				        (setvar "cvport" n)
				        (command "_pan" FEUILLET_Duplique_Pan "")
				      )
   				); fin de if
  			); fin de foreach
		); fin de if

	(command "_pspace")

); fin de defun
;--------------------------------------------------------------------------------------------


;------------------------------------------------------------------
; Fonction servant à récupérer la liste des présentations du projet
(defun FEUILLET_ListerPresentations (/ *error*)

	(defun *error* (MsgErreur)
	  	(princ "\nErreur : ")
	  	(princ MsgErreur)
	  	(princ)
	)

	(setq FEUILLET_Presentations (layoutlist) )
	(setq FEUILLET_ListePresentations "")
	
	(foreach FEUILLET_Iteration FEUILLET_Presentations
		(if (/= FEUILLET_ListePresentations "")
			(setq FEUILLET_ListePresentations (strcat FEUILLET_ListePresentations " ") )
		); fin de if
		(setq FEUILLET_ListePresentations (strcat FEUILLET_ListePresentations FEUILLET_Iteration))
	); fin de foreach
); fin de defun
;------------------------------------------------------------------

Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

#15 L'utilisateur est hors-ligne   Charles T 

  • ceinture verte
  • Groupe : Membres
  • Messages : 81
  • Inscrit(e) : 08-août 13
  • LocationSaint-Maur-des-Fossés

Posté 17 août 2018 - 10:38

Salut à tous !

Désolé de déterrer le sujet ... mais ce lisp est tout simplement GENIAL !

Il fait PRESQUE ce que je veux ...

Pour faire simple je suis en train de modéliser un carnet de Bordures avec ... 560 bordures différentes ...
Chaque bordure est donc un Solide 3D dans mon fichier, et chaque onglet de présentation affiche ce solide sous tous les angles.

Du coup quand je crée des onglet via le lisp, ça me décale correctement la fenêtre "vue en plan".

Ma question est simple : Est-il possible de modifier ce lisp pour lui faire appliquer un décalage différent en fonction de la fenêtre ?
Ou plus simple, Décaler une seule fenêtre dans chaque onglet sans devoir créer de nouveaux onglets ?

Je sais pas si je suis très clair ...

:D
AutoCAD Map 2019.1.2
Covadis 17.0b + Autopiste
Mensura Genius 9
Windows 10 - 64 bits


Toujours à l'affût des bonnes astuces :)
0

#16 L'utilisateur est hors-ligne   Charles T 

  • ceinture verte
  • Groupe : Membres
  • Messages : 81
  • Inscrit(e) : 08-août 13
  • LocationSaint-Maur-des-Fossés

Posté 17 août 2018 - 13:32

Etttttt voilà j'ai trouvé comment faire :)

Il suffit de mettre l'ensemble de mes fenêtres (vue de haut/bas/gauche/droite/face/ ...) dans le SCG et on pas dans le SCU de la vue ... et nickel chrome !


100000000 merci pour ce lisp ! il est tout simplement dingue pour créer des carnets !
AutoCAD Map 2019.1.2
Covadis 17.0b + Autopiste
Mensura Genius 9
Windows 10 - 64 bits


Toujours à l'affût des bonnes astuces :)
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)