Aller au contenu

"erreur: Le serveur ActiveX a renvoyé une erreur: Paramètre non facultatif"


Bortch59

Messages recommandés

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)

)

Lien vers le commentaire
Partager sur d’autres sites

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é