Aller au contenu

Accéder à un \"objet\" requête d\'autodesk MAP 2011 en VBA


Messages recommandés

Invité CityHunter87
Posté(e)

Bonjour,

 

Je suis entrain de réaliser un projet de fin d'étude de Master (Création d'un Système d'information Géographique) sous autodesk Map 2011 où j'aimerai via un programme en VBA travailler sur mes requêtes déjà crée.

 

Par exemple j'ai crée une requête qui me permet d'avoir toutes les salles qui font moins de 20 m² sur mon plan et j'aimerai par le biais d'une simple UserForm que l'utilisateur n'ai pas à rentrer dans les menus et lancer la requête manuellement mais qu'il puisse simplement cliquer sur un bouton qui executerait cette requête.

 

Y'a t'il un moyen d'accéder à un objet requête en VBA ??

 

J'espère avoir été assez clair :) Je suis nouveau sur ce forum, excusez moi si je n'ai pas respecté une quelconque régle !

 

 

 

Posté(e)

Hello CityHunter87,

 

Sur AutoCAD MAP qui est basé sur AutoCAD tu peux créer soit des barres d'outils ou des boutons sur le Ruban.

 

Par l'un ou l'autre de ces moyens, tu pourrais enregistrer tes requêtes AutoCAD MAP en fichiers externes d'extension QRY (fichiers en langage AutoLISP spécifique à AutoCAD MAP modifiables et enrichissables) et mettre ces derniers dans un dossier spécifique, tu pourras ainsi créer une barre d'outils avec comme bouton le lancement de telle ou telle requête.

 

Exemple,

Nom de la commande (bouton) : salles_moins_20_m2

syntaxe de la commande : ^c^c(commande) "salles_moins_20_m2.qry"

(commande) est le nom de la commande qui permet le lancement de fichiers QRY (requêtes externes)

 

Le VBA n'étant plus supporté par AutoCAD au profit du .net.

 

A+

Invité CityHunter87
Posté(e)

Merci de m'avoir répondu si vite :)

 

C'est une solution envisageable, le problème est que je vais avoir un nombre important de requêtes et le fait d'utiliser une Userform aurait rendu le tout dynamique pour l'utilisateur à mon sens.

 

N'y a t'il aucun moyen de réussir à lancer une requête via VBA !?

Invité CityHunter87
Posté(e)

Rebonsoir,

 

Je suis entrain d'essayer une solution avec LISP, j'ai pensé à une méthode qui serait la suivante :

 

Recueillir des données avec une case de dialogue pour que l'utilisateur puisse créer sa propre requête , par exemple il rentre le mot "SURFACE" dans une editbox, dans une listbox il choisit ">" et dans une dernière editbox "200"

 

Je récupère donc ces trois données sous forme de variables dans mon fichier lisp, le problème c'est que j'aimerai pouvoir mettre à la place de mon "SURFACE > 20" dans le code ci dessous, mes variables.

 

Comment faire ? Je ne sais pas si sous LISP on peut concatainer des chaînes de caractères et si dans tout les cas je pourrais mettre ma variable entre " "

 

 

(setq df (load_dialog "C:/Users/Julien/Desktop/PROJET SIG/lsp/CASEDIAL_SIG.DCL"))

(new_dialog "DSIG" df)

(start_dialog)

 

;;;SQL

 

(setq ade_cmddia_before_qry (getvar "cmddia"))

(setvar "cmddia" 0)

(mapcar 'ade_dwgdeactivate (ade_dslist))

(setq ade_tmpprefval (ade_prefgetval "ActivateDwgsOnAttach"))

(ade_prefsetval "ActivateDwgsOnAttach" T)

(setq dwg_id(ade_dsattach "C:\\USERS\\JULIEN\\DESKTOP\\PROJET SIG\\PLANS\\Ulco_calais_RdC_affichage.dwg"))

(ade_prefsetval "ActivateDwgsOnAttach" ade_tmpprefval)

(ade_qryclear)

(ade_qrysettype "preview")

(ade_qrydefine '("" "" "" "SQL" ("gab_local" "SURFACE > 20")""))

(ade_qrysetaltprop nil)

(ade_qryexecute)

(setvar "cmddia" ade_cmddia_before_qry)

 

;;;FIN SQL

 

 

(unload_dialog df)

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é