Aller au contenu

Compilation de .QRY en un seul LiSP


Messages recommandés

Posté(e)

Bonjour à tous,

 

Voilà, dans le fichier joint, j'ai 46 petites requètes. Je les ai édités et compilées dans un seul fichier RequetesSDDEA.LSP.

 

Mon problème est que mon LiSP ne fonctionne pas. Quelqu'un aurait une solution ?

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Bonjour,

 

Pour avoir fais quelques requêtes en lisp, je remarque qu'elles sont montés de la même façon que toi.

La seule chose qui différencie et que j'utilise la fonction (ade_dsattach) pour attacher le dessin sur lequel je veux faire une requête: ceci en début de code.

(setq dwg_id (ade_dsattach "ALIAS:\\Chemin\\fichier.dwg"))

ainsi que la fonction: après un appel à (ade_qryexecute)

(ade_qrygetentlist id_dwg) pour avoir toutes les entités correspondant à ma requête.

et (ade_dsdetach id_dwg) pour détacher le fichier nécessaire lorsque la requête a été effectuée.

 

J'espère que ces quelques observations vont te mettre sur la voie.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

NB:

Tu pourrais utiliser un (foreach) sur une liste au lieu de répéter x fois la même chose.

Je te donne un exemple (qui ne sera pas applicable tel quel, mais te montrera la syntaxe)

(setq lst_all
'("NORD" "CENTRE" "SUD OUEST" "SUD EST")
)
(defun localize_commune (nam_com dwg_id / )
(ade_qryclear)
(ade_qrysetaltprop nil)
(ade_qrysettype "preview")
(ade_qrydefine '("" "" "" "Property" ("layer" "=" "PR,PR_LIMITES,PR-LIMITES")""))
(ade_qrydefine (list "AND" "" "" "Data" (list "objdata" "POINTS-ROUTIERS.GROUPEMENT_PR" "=" nam_com)""))
(ade_qrydefine '("OR" "" "" "Property" ("layer" "=" "Reseau d_Interet Economique et Touristique,Reseau d_Interet Local,Reseau Ossature")""))
(ade_qrydefine (list "AND" "" "" "Data" (list "objdata" "VOIES-DEPARTEMENTALES.GROUPEMENT_SECTION" "=" nam_com)""))
(ade_qryexecute)
)
(defun C:test_groupement ( / ade_cmddia_before_qry id_dwg ade_tmpprefval)
(setq ade_cmddia_before_qry (getvar "cmddia"))
(setvar "cmddia" 0)
(mapcar 'ade_dwgdeactivate (ade_dslist))
(setq id_dwg (ade_dsattach "SIG:\\L93-BD_RESEAU-07\\XRef\\NewL93_RGF Reseau Routier aux limites.dwg"))
(setq ade_tmpprefval (ade_prefgetval "ActivateDwgsOnAttach"))
(ade_prefsetval "ActivateDwgsOnAttach" ade_tmpprefval)
(foreach n lst_all
	(localize_commune n id_dwg)
	(print n)
	(getkword "\nGroupement suivant")
)
(ade_qrygetentlist id_dwg)
(ade_dsdetach id_dwg)
(setvar "cmddia" ade_cmddia_before_qry)
(prin1)
)

 

A toi de construire la liste lst_all comme il convient

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour BonusCAD,

 

Merci de m'aider sur ce problème. Juste une petite question, suis-je obligé d'utiliser "ade_dsattach", car mon fichier DWG est déjà lié à mon dessin ?

 

Surtout que je ne fais pas çà pour moi, mais pour un collègue qui s'y connais encore moins que moi en LiSP...

 

Encore merci,

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

salut à tous les 2,

 

denis, c'est déjà pas mal d'avoir remarque qu'un QRY se comporte comme un LSP, mais aussi comme un SCR

 

la solution de Bonuscad te permet d'avoir un lisp plus concis.

 

à voir ton lisp, je pense que cette séquence:

(mapcar 'ade_dwgdeactivate (ade_dslist))
(setq ade_tmpprefval (ade_prefgetval "ActivateDwgsOnAttach"))
(ade_prefsetval "ActivateDwgsOnAttach" T)
(ade_prefsetval "ActivateDwgsOnAttach" ade_tmpprefval)

ne sert à rien, et surtout

(mapcar 'ade_dwgdeactivate (ade_dslist))

fait que ça ne fonctionne pas, car tu désactive tous tes dessins :

ensuite tu dis à autocad qu'il faut activer quand tu attache:

(ade_prefsetval "ActivateDwgsOnAttach" T)

et ensuite tu lui dit de faire comme avant

(ade_prefsetval "ActivateDwgsOnAttach" ade_tmpprefval)

 

le tout sans avoir attaché de dessin.

 

comme cette séquence est présente à chaque fois, je ne vois pas comment ça pouvait marcher

remplace ade_dwgdeactivate par ade_dwgactivate au début de ton lisp

supprime toutes les séquence suivante,

ça devrait marcher

 

Gérald

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Salut à tous,

 

Merci, ça fonctionne super ! ! C'est un gain de temps incroyable et une source d'erreur en moins, 46 requêtes, parfois on en oubli...

 

Encore merci...

 

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é