Aller au contenu

vlx chargé automatiquement ne fonctionne pas


Messages recommandés

Posté(e)

Bonjour,

J'utilise un vlx chargé au démarrage. Quand je lance une commande qui y est définie, j'ai:

error: bad argument type: lselsetp nil

dans la foulée, si j'appload manuellement le même VLX, là ça fonctionne....

 

Si quelqu'un a une idée, ce serait sympa....

 

Merci !!

L'expérience est une lanterne qui n'éclaire que celui qui la porte... (Confucius)

Posté(e)

Salut,

 

Difficile à dire sans voir le code, mais je vois mal comment ça peut venir du mode de chargement.

"error: bad argument type: lselsetp nil" signifie qu'une fonction attend un jeu de sélection comme argument et se voit passer nil.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour, et merci pour vos réponses. Au fait, le chargement auto se fait via le Startup suite de la boite de dialogue appload.

 

Pour ce qui est du code, je redéfini les fonctions QSAVE SAVEAS et REGEN afin que celles-ci updatent le nombre total de présentations, afin que le champ du bloc cartouche qui l'utilise soit renseigné/updaté.

 

;;;; nouvelle définition de la commande QSAVE (pour update du champ du nombre total de présentations)
(defun c:QSAVE ()
(layoutcount) 
(title_expand)
(command ".QSAVE")
)
;;;; Fin nouvelle définition de la commande QSAVE

 

Pour layoutcount:

 ;;; Début de la mise à jour automatique du nombre total de présentation (comptage et update du champ)
(defun layoutcount ( / acadObj acDoc acDocLayouts acDocSumInfo) 
 (vl-load-com) 
 (setq acadObj (vlax-get-acad-object)) 
 (setq acDoc (vlax-get-property acadObj 'ActiveDocument)) 
 (setq acDocLayouts (vlax-get-property acDoc 'Layouts)) 
 (setq acDocSumInfo (vlax-get-property acDoc 'SummaryInfo)) 
 
 ;; Subtract one for the Model tab 
 (setq sLayoutCount (itoa (1- (vlax-get-property acDocLayouts 'Count)))) 
 
 (if (= (strlen sLayoutCount) 1) (setq sLayoutCount (strcat "0" sLayoutCount)))
)

 

Si le nombre total est à 1 chiffre, je rajoute un 0 devant..

 

Pour title_expand, il s'agit de récupérer la valeur d'un attribut du cartouche (si existant) afin de renseigner un champ personnalisé du fichier, afin que celui-ci soit récupéré dans Productstream...

 

 ;;;;;;;;;;;;;;;; Extraction du titre depuis le block ou dernière ligne cartouche non-sketch vers propriétés fichier pour Vault
(defun title_expand ( / kWord acadObj acDoc acDocSumInfo nCustomProps loopCnt customFieldName fieldValue errHandler nombloc etiq_title etiq_title2 valtitle)
(setq ss nil)
(setq ss (ssget "x" '((-4 . ""))))
(setq etiq_title "title_3")
(setq etiq_title2 "Description.1")
(if (/= ss nil)
(progn
(while (setq Ent (ssname ss 0))
 (setq tempEnt Ent)
	 (while
	  
	   (setq tempEnt (entnext tempEnt))
	   (setq EntData (entget tempEnt))
	   (if
		   (and
			(= (cdr (assoc 0 EntData)) "ATTRIB")
		   		(or 	(= (cdr (assoc 2 EntData)) etiq_title)
					(= (cdr (assoc 2 EntData)) etiq_title2)
				)
		   )
		   	(progn
				(setq valtitle (cdr (assoc 1 EntData)))
			)
	)
	   
	  
	  
	  (ssdel Ent ss)
	 )
)
)
)
(princ valtitle)
(if (/= valtitle nil)
(progn
	(vl-load-com)
	(setq acadObj (vlax-get-acad-object))
	(setq acDoc (vlax-get-property acadObj 'ActiveDocument))
	(setq acDocSumInfo (vlax-get-property acDoc 'SummaryInfo))
	(setq customFieldName "DrawingDesignation.1")
  
               (if (or (/= customFieldName "")(/= customFieldName nil))
                 (progn
                       ;; Test to see if the Field is already created or not
                       (setq errHandler (vl-catch-all-apply 'vlax-invoke-method (list acDocSumInfo 'GetCustomByKey customFieldName 'fieldValue)))

                       ;; Get the value for the field
                       (setq fieldValue valtitle)
     
                       ;; Test error
                       ;;(vl-catch-all-error-message errHandler)

                       (if (= errHandler nil)
                         ;;Update extry
                         (vlax-invoke-method acDocSumInfo 'SetCustomByKey customFieldName fieldValue)

                         ;; Field doesn't exist... creating entry
                         (vlax-invoke-method acDocSumInfo 'AddCustomInfo customFieldName fieldValue)
                     )
                     (progn
                       ;; Test to see if the Field is already created or not
                       (setq errHandler (vl-catch-all-apply 'vlax-invoke-method (list acDocSumInfo 'GetCustomByKey customFieldName 'fieldValue)))

                       ;; Test error
                       ;;(vl-catch-all-error-message errHandler)

                       ;(if (= errHandler nil)
                         ;;Remove extry
                        ; (vlax-invoke-method acDocSumInfo 'RemoveCustomByKey customFieldName)
                       ;)
                     )
                   )
                 )
         )
)
)

            
;;;;;;;;;;;;;;;;; FIN Extraction du titre depuis le block ou dernière ligne cartouche non-sketch vers propriétés fichier pour Vault

 

Ces fonctions sont toutes définies dans un fichier Lisp que le compile dans un VLX et que je place dans un lecteur réseau. Quand je fai un appload et que je charge manuellement, ça marche...

 

Voilà, merci pour votre précieuse aide.

L'expérience est une lanterne qui n'éclaire que celui qui la porte... (Confucius)

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é