Aller au contenu

création d'un lisp pour créer des présentations automatiquement


Messages recommandés

Posté(e)

bonjour

je suis actuellement en train de réaliser un lisp permettant de créer des présentations sur autocad automatiquement pour un projet linéaire

pour cela j'insère des blocs (rectangle avec attribut pour nommer les planches)

ces blocs représentent alors la zone visible de la future fenetre d'une présentation.

A chaque bloc inséré se créé une présentation avec sa fenetre par l'intermédiaire d'insertion de gabarit spécifique.

une fenetre se créée alors dans la présentation dans laquel je viens zoomer sur mon bloc(rectangle), remettre à une orientation 0, et zoomer sur le rectangle pour faire correspondre celui ci avec ma fenetre.

 

j'espère avoir été plutot clair..

cependant je n'arrive pas à mettre en place une boucle permettant de récupérer le nom de chaque bloc pour ensuite l'appeler lorsque je zoome dans la fenetre.

 

si quelqu'un peu m'aider ne serait ce qu'un peu cela serait génial..

voici mon lisp détaillé

 

 

(defun c:projet4()

 

(vl-load-com)

 

;stockage des variables systèmes qui vont être modifiées

 

(setq cmd (getvar "cmdecho")

osm (getvar "osmode")

ortho (getvar "orthomode")

attd (getvar "attdia")

)

 

;modification des variables systèmes

(setvar "cmdecho"1)

(setvar "osmode" 0)

(setvar "orthomode" 0)

(setvar "attdia" 0 )

 

;saisie du point d'insertion du bloc

 

(setq pt (getpoint "\nCliquer sur le point d'insertion du bloc rectangle sur l'axe du projet (pt d'insertion situé au milieu du coté gauche du rectangle: "))

 

; insertion du bloc puis rotation à définir manuellement ou en tapant la valeur grâce au mot "pause" qui donne la main à l'utilisateur

;mise en place d'une variable qui ajoutera 1 à sa valeur

 

(setq num 1)

;création d'un calque planches encartage

(command "-calque" "e" "planches encartage" "co" 2 "" "")

;commande d'insertion du bloc

 

(command "inserer" "A0" pt 1 1 pause (strcat "Planche n°" (itoa num)))

 

;récupération données du bloc

 

(Setq NomEnt (entlast)) ;nom du précédent objet dessiné

;passage en espace papier

 

(setvar "tilemode" 0 )

 

;paramétrage de la création des présentations:

 

(setvar "layoutcreateviewport" 0)

;chargement du gabarit A0 et définir comme présentation courante

(command "_layout" "G" "A0" "PLA0")

(setvar "clayout" "PLA0")

;renommons la présentation

(command "_layout" "R" "PLA0" "Format A0")

 

;création d'une fenetre dans l'espace d'impression

 

(command "fmult" "0,0,0" "938,825")

;passage en espace objet dans la fenetre dessinée

 

(command "espaceo")

;création d'un scu temporaire sur le bloc inséré

 

(command "scu" "objet" NomEnt )

;recadrage du bloc par rapport à la présentation en définissant le scu créé comme courant

 

(command "repere" "c")

;zoom sur l'objet dessiné

 

(command "zoom" "1xp")

; passage en espace papier (sortie de la fenetre)

 

(command "espacep")

;passage en espace objet

 

(setvar "tilemode" 1 )

 

;mise en place d'un cycle(qui ajoute notamment +1 à chaque planche

(while

(setq pt (getpoint "\nPoint d'insertion suivant pour une nouvelle planche (Return pour FIN): "))

 

(setq num (+ 1 num))

 

(command "inserer" "A0" pt 1 1 pause (strcat "Planche n°" (itoa num)))

;récupération données du bloc

 

(Setq NomEnt (entlast)) ;nom du précédent objet dessiné

;choix du bloc suivant

 

;(setq NomEnt NomEnt)

 

(setq NomEnt (cons (entlast) NomEnt))

;passage en espace papier

 

(setvar "tilemode" 0 )

;paramétrage de la création des présentations: 0 pour désactiver la création de fenetre dans une nouvelle présentation

 

(setvar "layoutcreateviewport" 0)

;chargement du gabarit A0 et définir comme présentation courante

(command "_layout" "G" "A0" "PLA0")

(setvar "clayout" "PLA0")

;renommons la présentation

(command "_layout" "R" "PLA0" "Format A0")

 

;création d'une fenetre dans l'espace d'impression

 

(command "fmult" "0,0,0" "938,825")

;passage en espace objet dans la fenetre dessinée

 

(command "espaceo")

;création d'un scu temporaire sur le bloc inséré

 

(command "scu" "objet" NomEnt )

;recadrage du bloc par rapport à la présentation en définissant le scu créé comme courant

 

(command "repere" "c")

;zoom sur l'objet dessiné

 

(command "zoom" "1xp")

; passage en espace papier (sortie de la fenetre)

 

(command "espacep")

;passage en espace objet

 

(setvar "tilemode" 1 )

)

 

;régénérer

 

(command "redess")

; remise en état des variables systèmes

(setvar "cmdecho" cmd)

(setvar "osmode" osm)

(setvar "orthomode" ortho)

(setvar "attdia" attd)

)

 

 

merci beaucoup de votre aide

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é