IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres Logiciels Discussion :

Autolisp AutoCAD 2013


Sujet :

Autres Logiciels

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Dessinateur Bureau etudes
    Inscrit en
    Février 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Dessinateur Bureau etudes

    Informations forums :
    Inscription : Février 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Autolisp AutoCAD 2013
    Bonjour,
    je vous expose mon "problème":

    je créé des dossiers de plans sur autoCAD 2013 avec plusieurs onglets de présentation. Chaque onglet est toujours constitué de la même manière, c'est a dire un cartouche (nom du document, nom de la page, numéro page etc etc...) et la vue en question (fenêtre).

    Je souhaiterai réaliser un répertoire automatique, c'est à dire que avec un lisp (si possible) ce répertoire ce mette à jour en fonction de ce qui est remplis dans mon cartouche (nom de la page ainsi que le numéro de celle ci).

    Je vous remercie déjà par avance pour votre aide.

    PS: je débute en autoLISP....

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Tu dois d'abord récupérer l'ensemble des blocs cartouches présent dans ton fichier:
    (En supposant que le nom du bloc est "CARTOUCHE") -> (setq ss (ssget "x" '((2 . "CARTOUCHE"))))
    Tu obtient un ensemble 'ss' d'entités qui correspondent à tes blocs.
    Ensuite il faut pour chaque entité de l'ensemble, lire les attributs du bloc et récupérer les valeurs qui t'intéresses.
    Cela donnerait un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (setq cpteur 0) 					; compteur
    (while (setq ent1 (ssname ss cpteur)) 	; récupération de la première entité de l'ensemble
         (if (setq listret (lec_attrib ent1))  	; recherche les attributs de l'entité
     	(setq lstCartouche (cons (list 
    		(nth (+ (vl-position "NUMFOL" listret) 1) listret) 		; N° folio
    		(nth (+ (vl-position "DESIGN" listret) 1) listret) 		; Désignation folio
    		) lstCartouche))
    	)
    	(setq cpteur (1+ cpteur))
    )
    Cela donnera une liste 'lstCartouche' du type: ( ( 'N° Folio1' 'Désignation Folio1' ) ( 'N° Folio2' 'Désignation Folio2' ) ... ( 'N° FolioN' 'Désignation FolioN' ) )

    Pour récupérer les attributs des blocs il faut créer la fonction 'lec_attrib' utilisée ci-dessus:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    (defun lec_attrib (ent1x / entlx attribname attribval listatt typent attexist)
    (setq entlx (entget ent1x)							; Récupère les valeurs de l'entité
    	typent (cdr (assoc 0 entlx))						; Récupère la valeur associée au code DXF 0 = type d'entitée
    	attexist (cdr (assoc 66 entlx))					; Récupère la valeur associée au code DXF 66 = exist attrib
    	listatt nil
    )
    (if (and (= typent "INSERT") (= attexist 1))				; bloc avec attribut
    	(progn
    		(setq ent1x (entnext ent1x))				; Nom de l'entitée suivante
    		(setq entlx (entget ent1x))					; Valeurs de l'entitée
    		(while (= (cdr (assoc 0 entlx)) "ATTRIB")		; Récupère la valeur associée au code DXF 0 = type d'entitée	
    			(Setq attribname (cdr (assoc 2 entlx))) 	; Récupère le nom de l'attribut
    			(Setq attribval (cdr (assoc 1 entlx)))		; Récupère la valeur de l'attribut
    			(setq listatt (cons attribname listatt))		; Nom de l'attribut
    			(setq listatt (cons attribval listatt))		; valeur de l'attribut
    			(setq listatt (cons ent1x listatt))			; ENAME de l'attribut
    			(setq ent1x (entnext ent1x))			; Entité suivante
    			(setq entlx (entget ent1x))				; Valeurs de l'entitée
    		)
    	)
    )
    (reverse listatt)	
    ) ; fin defun
    Ensuite il faudra utiliser la liste 'lstCartouche' pour afficher dans autocad ton répertoire des folios mais je ne suis pas allé plus loin pour l'instant.

    Bonne chance

    mattoti

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/02/2015, 16h27
  2. problèmes autocad 2013
    Par Legirondin33 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 02/03/2013, 10h42
  3. [XL-2007] [AUTOCAD 2013] Insertion d'objet sur une polyligne à une longueur donnée
    Par Garruth dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/12/2012, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo