Bortch59 Posté(e) le 20 juin 2017 Posté(e) le 20 juin 2017 Bonjour, ci-dessous un LISP que j'utilise pour extraire des attributs. Celui-ci n'a jamais "déraillé" jusqu'à aujourd'hui où il me renvoie le code erreur suivant:"erreur: Le serveur ActiveX a renvoyé une erreur: Paramètre non facultatif" Je précise que cette erreur n'est renvoyée que sur un fichier. Lorsque je copie-colle un bloc de ce même fichier vers un autre, tout redevient fonctionnel. Savez-vous quelle est cette erreur et comment y échapper? Merci. ;-- RapidExtrac 1.0 (BCH) --;Utilitaire d'extraction d'attributs. (defun c:RapidExtrac ( / ) ;; Selection du bloc à extraire (setq lstEnt (entget (car (entsel "\nSélectionnez le bloc à extraire: ")))) (setq NomEnt (cdr (car lstEnt))) (setq Handle (cdr (assoc 5 lstEnt))) (setq NomBloc (EffectifName Handle)) (setq js (ssget "X" (list (cons 0 "INSERT")))) (setq cpt 0) (setq cptselect 0) (setq NbEntSelect (sslength js)) (setq fichierGabarit (open (findfile "Gabarit.txt") "w")) (ExtracEtq) ;; Boucle sur le nombre d'objet (repeat NbEntSelect (setq Attrib "'") (setq NomEntjs (ssname js cpt)) ;; recherche l'entité Numéro 'CPT' (setq lstEntjs (entget NomEntjs)) ;; Récupère la liste de l'entité (setq Handlejs (cdr (assoc 5 lstEntjs))) (setq NomBlocjs (EffectifName Handlejs)) (setq TypeEntjs (cdr (assoc 0 lstEntjs))) (if (= NomBlocjs NomBloc) (progn (ExtracValeur) (setq cptselect (1+ cptselect)) ) ) (setq cpt (1+ cpt)) ;; Ajoute 1 au compteur pour avoir l'entité suivante );repeat (close fichierGabarit) (princ cptselect) (prompt " bloc(s) traité(s) dans le fichier d'extraction") ;;;Chemin à modifier selon version EXCEL (startapp (findfile "excel.exe") (findfile "TEMP_EXTRAC.xlsm")) (princ) );defun ;; Création par Didier LOURDELLE;; le 2011-06-06;;;; Récupère le NomEffectif d'un bloc dynamique;; Paramètre :;; Handle = Handle du bloc AutoCAD;;ap(defun EffectifName (Handle / NomBlocDidier) ;; charge les fonctions VL* (vl-load-com) ;; Initialise la variable ThisDrawing (Setq ThisDrawing (vla-get-ActiveDocument (vlax-get-acad-object))) ;; Depuis le handle recupere 'selectionne une entité' (setq BlockRefObj (vla-HandleToObject ThisDrawing Handle)) ;; Vérification qu'il s'agit d'un bloc (if (equal (setq ObjType (vla-Get-ObjectName BlockRefObj)) "AcDbBlockReference" );;; retourne le nom effectif du bloc (setq NomBlocDidier (vla-get-EffectiveName BlockRefObj)) ) ;if ) ;defun ;;; - Extraction des étiquettes d'attributs du bloc sélectionné - ;;;(defun ExtracEtq ( / TypeEnt LstEnt Etq lgchaine) (setq Etq "'") (while (/= TypeEnt "SEQEND") (setq LstEnt (entget (entnext NomEnt))) (setq NomEnt (cdr (car LstEnt))) (setq TypeEnt (cdr (assoc 0 LstEnt))) (if (= TypeEnt "ATTRIB") (progn (setq Etq (strcat Etq (cdr (assoc 2 LstEnt)) "','")) ) ;progn ) ;if ) ;while (setq lgchaine (strlen Etq)) (setq Etq (substr Etq 1 (- lgchaine 2))) (princ (strcat Etq "\n") fichierGabarit)) ;defun ;;; - Extraction des valeurs d'attributs de l'ensemble des blocs filtrés - ;;;(defun ExtracValeur (/) (while (/= TypeEntjs "SEQEND") (setq LstEntjs (entget (entnext NomEntjs))) (setq NomEntjs (cdr (car LstEntjs))) (setq TypeEntjs (cdr (assoc 0 LstEntjs))) (if (= TypeEntjs "ATTRIB") (progn (setq Attrib (strcat Attrib (cdr (assoc 1 LstEntjs)) "','")) ) ;progn ) ;if ) ;while (setq lgchaine (strlen attrib)) (setq attrib (substr attrib 1 (- lgchaine 2))) (princ (strcat Attrib "\n") fichierGabarit))
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant