Olivier_CEA_Grenoble
Membres-
Compteur de contenus
46 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Olivier_CEA_Grenoble
-
Bonjour a tous, Je bloque sous SAS pour ce qui est de la récupération de fichiers pour notre nouvel environnement de gestion documentaire.(M-files) Je pose le problème: Environnement: Autocad MAP 2008 :( Une base de données SQL de gestion patrimonial GEOMAP qui fait la liaisons Autocad MAP => BDD SQL Des fichiers avec cartouche comportant les noms de bâtiments en gestion qui sont parfois mal orthographié: TO-TO pour le bâtiment TOTO Ce qui fait que j'ai besoins de les vérifier dans notre base gestion patrimoniale. La dénomination des fichiers qui comprend les autres multis références dont nous avons besoins pour la gestion: C_0504_120975_C.DWG la séparation "_" nous permet de définir les types, le NumGestdoc, NumEAM qui sont nos différents ref. J'ai développer un lisp qui fonctionne de façons unitaire sous l’environnement GEOMAP, mais impossible de le faire fonctionner au delà du premier fichier avec SAS. J'ai prêt de 800 fichiers a basculer. Plusieurs questions ce pose donc: La première, changer d’environnement et inclure un mode de connexion et de requête différent que GEOMAP dans mon lisp (mais je ne sait pas faire) La deuxième, comment indiquer a SAS l’environnement qu'il doit charger avant de lancer le lisp (je ne sais pas faire non plus) Le code (defun str2lst (str sep / pos) (if (setq pos (vl-string-search sep str)) (cons (substr str 1 pos) (str2lst (substr str (+ (strlen sep) pos 1)) sep) ) (list str) ) ) (defun c:A2M(/) (setq NameClean (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname"))4)) Lst_Dwgname (str2lst NameClean "_") LstARU '(("C" . "80")("E" . "79")) ; LstARU '(("C" . "31")("E" . "49")) GroUp (cdr(assoc (car lst_dwgname) LstARU)) Lst_Dwgname (cdr Lst_Dwgname) NumGestdoc (car lst_dwgname) Lst_Dwgname (cdr Lst_Dwgname) NumEAM (car lst_dwgname) NumEAM_dwg NumEAM Lst_Dwgname (cdr Lst_Dwgname) DeposeFich (strcat "\\\\managua\\products_data\\SFM-Converter\\Data\\DwgTempMFiles\\") DossierPrim (getvar "DWGPrefix") ) ;;_______________ Récupération des données CARTOUCHE (setq S_PDG (ssget "x"'((2 . "PDG")))) (if(/= S_PDG nil) (if(/= (sslength S_PDG) 1) (alert "Plusieurs Blocs 'PDG'") (progn (setq objPdg (ssname S_PDG 0)) (while (/= objPdg nil) (if (= (cdr(assoc 0 (entget objPdg))) "ATTRIB") (progn (if (= (cdr(assoc 2 (entget objPdg))) "BATIMENT") (setq Lst_Bat(str2lst (cdr(assoc 1(entget objPdg))) " ")) ) (if (= (cdr(assoc 2 (entget objPdg))) "TITRE1L") (setq Tl(cdr(assoc 1(entget objPdg)))) ) (if (= (cdr(assoc 2 (entget objPdg))) "TITRE1/2") (setq T12(cdr(assoc 1(entget objPdg)))) ) (if (= (cdr(assoc 2 (entget objPdg))) "TITRE2/2") (setq T22(cdr(assoc 1(entget objPdg)))) ) (if (= (cdr(assoc 2 (entget objPdg))) "TITRE1/3") (setq T13(cdr(assoc 1(entget objPdg)))) ) (if (= (cdr(assoc 2 (entget objPdg))) "TITRE2/3") (setq T23(cdr(assoc 1(entget objPdg)))) ) (if (= (cdr(assoc 2 (entget objPdg))) "TITRE3/3") (setq T33(cdr(assoc 1(entget objPdg)))) ) ) ) (setq objPdg (entnext objPdg)) ) ) ) ) (while (/= Lst_Bat nil) (if (= (car Lst_Bat ) "BATIMENT") (setq Nom_Bat (cadr Lst_Bat)) ) (setq Lst_Bat(cdr Lst_Bat)) ) (while (/= lst_dwgname nil) (if (/= (atoi(car Lst_Dwgname))0) (setq NumEAM_dwg (strcat NumEAM_dwg "_" (car Lst_Dwgname))) (setq Lst_Dwgname nil) ) (setq Lst_Dwgname (cdr Lst_Dwgname)) ) (setq SQL_Lst_BAT_BDD (strcat "select BUILDING_NAME,ID_SITE,ID_BUILDING FROM SFM_BUILDING where PJT_STATUS = 'CURRENT'") Lst_BAT_BDD(ggselrows "SFM_BUILDING" SQL_Lst_BAT_BDD) NameFich(strcat DeposeFich NumEAM_dwg "_" NumGestdoc) ) (if (/= (assoc Nom_Bat Lst_BAT_BDD) nil) (setq SFM_ID_SITE (itoa(cadr (assoc Nom_Bat Lst_BAT_BDD))) SFM_ID_BUILDING (itoa(caddr (assoc Nom_Bat Lst_BAT_BDD))) ) ) ;;___________envoie dans un fichiers XML (setq open_Nom_XML(open (strcat NameFich ".xml") "w")) (write-line (strcat "<?xml version=\"1.0\" encoding=\"utf-8\"?>") open_Nom_XML) (write-line (strcat "<document>") open_Nom_XML) (write-line (strcat " <content>") open_Nom_XML) (write-line (strcat " <Classe>" GroUp "</Classe>") open_Nom_XML) (write-line (strcat " <Auteur>" "2" "</Auteur>") open_Nom_XML) (if (/= SFM_ID_SITE nil) (progn (write-line(strcat " <Batiment>" SFM_ID_BUILDING "</Batiment>") open_Nom_XML) (write-line(strcat " <Site>" SFM_ID_SITE "</Site>") open_Nom_XML) ) (progn (write-line(strcat " <Batiment> </Batiment>") open_Nom_XML) (write-line(strcat " <Site> </Site>") open_Nom_XML) ) ) (if (/= NumEAM "XXXXXX") (write-line(strcat " <EAM>" NumEAM "</EAM>") open_Nom_XML) (write-line(strcat " <EAM></EAM>") open_Nom_XML) ) (write-line(strcat " <GESTDOC>" NumGestdoc "</GESTDOC>") open_Nom_XML) (write-line (strcat " <Titre>" NumEAM_dwg "_" NumGestdoc " </Titre> ") open_Nom_XML) (write-line (strcat " <Desc>" Tl "_" T12 "_" T22 "_" T13 "_" T23 "_" T33 " </Desc> ") open_Nom_XML) (write-line (strcat " </content>") open_Nom_XML) (write-line (strcat "</document>") open_Nom_XML) (close open_Nom_XML) (setq open_ARU_log(open (strcat DeposeFich "\\Log\\ARU.log") "a")) (write-line (strcat DossierPrim NameClean ";Transferer M-files = " NumEAM_dwg "_" NumGestdoc ";Id_type= " GroUp ";Id_Bat =" SFM_ID_BUILDING ";Nom Batiment= " Nom_Bat ";Le " (rtos(getvar "CDATE")))open_ARU_log ) (close open_ARU_log) ;;___________ Fin de l'action fichier XML (command "_SaveAs" "2007" (strcat NameFich ".DWG") "_close") ) Olivier :blink:
-
Bonjour Merci Gile. Un problème de lisp, un coup de CadXp, une réponse de Gile. Il y a tout IcI, j'avais un problème de récupération de dessin avec données personalisées a faire sous MAP. Avec Gile c'est plus facile. :D Je finis mon outil et je le met en ligne
-
Titre de fenêtre AutoCAD
Olivier_CEA_Grenoble a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
Voila ce que je viens de mettre en place. J'ai récupérer le profil courant avec les "VLA" que je ne maîtrise absolument pas :ph34r: J'ai récupérer ça chez Patrick35 ;;Définition du titre en fonction du profiles (setq CourantProfil(vla-get-activeprofile (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))))) (command "netload" "changetitle.dll") (if(/= CourantProfil "Profil-1") (if ( = CourantProfil "Profil-2") (command ".changetitle" "Titre-2") (alert "L'application courante n'est pas nommée\n\n\t Veuillez prévenir l'adminstrateur") ) (command ".changetitle" "Titre-1") ) Merci Patrick35 donc -
Titre de fenêtre AutoCAD
Olivier_CEA_Grenoble a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
Bonjour, Je me confronte a un nouveau problème sur ce change de titre. Lors de l'utilisation de changetitle.dll en direct pas de problème. Mais lors du lancement au travers des chargements par profil (appload) cela ne fonctionne pas a tous les coups. En effet si je lance un Autocad avec un profil standard puis un Autocad avec un profil qui utilise changetitle.dll j'ai ce message d'erreur. Commande: netload Nom du fichier d'assemblage: changetitle.dll Impossible de charger l'assemblage. Détails de l'erreur: Autodesk.AutoCAD.Runtime.Exception: eDuplicateKey à Autodesk.AutoCAD.Runtime.Interop.Check(Int32 returnValue) à AcMgCommandClass.AddCommand(AcMgCommandClass* , ICommandLineCallable ca, MethodInfo mi) à Autodesk.AutoCAD.ApplicationServices.AutoCADApplicationHolder.Initialize(Assembl y assembly) à Autodesk.AutoCAD.ApplicationServices.ExtensionLoader.ProcessAssembly(Assembly assembly) Commande: .changetitle Enter new title: CEA Grenoble Test Je regarde la piste de lancement via un 'ACAD.lsp' mais l'application étant capricieuse ... :( Si quelqu'un a une idée? Olivier -
Import/Export filtres de calque
Olivier_CEA_Grenoble a répondu à un(e) sujet de (gile) dans ObjectARX/DBX, C++, .NET, RealDWG
Bonjour Je viens de découvrir cet outil et il fonctionne parfaitement sous AutoCAD MAP 2008. Mais personne ne s'en étonnera plus :P Merci Gile -
Compter et Supprimer les XDATAs
Olivier_CEA_Grenoble a répondu à un(e) sujet de lecrabe dans Routines LISP
Bonjour Je réveille ce vieux poste simplement pour remercier Gile. Travaillant sur des fichiers ancien, j’étais confronté au même Pb. Merci Gile. :) -
Titre de fenêtre AutoCAD
Olivier_CEA_Grenoble a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
Super :D Merci vincentp010 cela fonctionne tout a fait comme je l'attendais. Dans ma version 2008 la dll suffit largement. Je porte ça immédiatement sur nos applications. Merci beaucoup. http://www.gifs-animes.net/images-image/Boissons/Biere/Biere-2.gifhttp://www.gifs-animes.net/images-image/Boissons/Biere/Biere-2.gifhttp://www.gifs-animes.net/images-image/Boissons/Biere/Biere-2.gif -
Bonjour Voila plusieurs années que nous travaillons avec deux applications différentes qui sous un aspect totalement identique, ne font pas du tout les même actions. Malheureusement, cela impact directement le travail d'autre collègues. Pour pouvoir différencier ces deux applis, je souhaiterais faire apparaître en lieux et place du titre "Autocad MAP 3D 'ver' [Dessin1.dwg]" un truc du genre "Application1" et "Application2" Sachant que nous avons des lisp's différent a l'ouverture de chaque applications. Je pensais a un truc du genre 'vl-registry-write'? A+
-
Lister l'ensemble des calques
Olivier_CEA_Grenoble a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
Ok je vais m’efforcer de réfléchir dans ce sens qui allégera gentiment mes lisp. Cordialement Olivier -
Lister l'ensemble des calques
Olivier_CEA_Grenoble a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
:blink: ? les portions de code répétitives, je vois bien mais factoriser? Merci pour les *list type layoutlist que je ne connaissais pas. Olivier -
Lister l'ensemble des calques
Olivier_CEA_Grenoble a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
Bien, voilà ce que j'ai pondue. ;;________ Etablir la liste des calques, blocs et présentations d'un fichier. (defun c:Balay(/ log_publication fich_log ListPres cal bl SCUS) ;;_____ Ouverture fichier LOG (setq log_publication (strcat "x:\\Log\\" (rtos(getvar "DATE")) ".log")) (setvar "luprec" 6) (setq fich_log (open log_publication "W")) ;;_____ Ecriture des valeurs de collection (write-line(getvar "dwgname") fich_log) (write-line (strcat "Date de création du fichier :" (def_date(getvar "tducreate"))) fich_log) (write-line(strcat "Date de Balayage fichier :" (def_date(getvar "DATE"))) fich_log) (write-line "______________________________________" fich_log) (write-line "Liste des presentations:" fich_log) (setq ListPres (layoutlist)) (while (/= ListPres nil) (write-line (car ListPres) fich_log) (setq ListPres (cdr ListPres)) ) (write-line "______________________________________" fich_log) (write-line "Liste des calques:" fich_log) (setq cal (tblnext "layer" t)) (while cal (write-line (cdr (assoc 2 cal)) fich_log) (setq cal (tblnext "layer")) ) (write-line "______________________________________" fich_log) (write-line "Liste des Blocks :" fich_log) (setq bl (tblnext "BLOCK" t)) (while bl (write-line (cdr(assoc 2 bl)) fich_log) (setq bl (tblnext "BLOCK")) ) (write-line "______________________________________" fich_log) (write-line "Liste des SCU :" fich_log) (setq SCUS (tblnext "UCS" t)) (while SCUS (write-line (cdr(assoc 2 SCUS)) fich_log) (setq SCUS (tblnext "UCS")) ) (close fich_log) (command "START" log_publication) ) (defun def_date (td / j y d m) (setq j (- (fix td) 1721119.0) y (fix (/ (1- (* 4 j)) 146097.0)) j (- (* j 4.0) 1.0 (* 146097.0 y)) d (fix (/ j 4.0)) j (fix (/ (+ (* 4.0 d) 3.0) 1461.0)) d (- (+ (* 4.0 d) 3.0) (* 1461.0 j)) d (fix (/ (+ d 4.0) 4.0)) m (fix (/ (- (* 5.0 d) 3) 153.0)) d (- (* 5.0 d) 3.0 (* 153.0 m)) d (fix (/ (+ d 5.0) 5.0)) y (+ (* 100.0 y) j) ) (if (< m 10.0) (setq m (+ m 3)) (setq m (- m 9) y (1+ y)) ) (strcat(itoa (fix d))"."(itoa (fix m))"."(itoa (fix y))) ) Merci a vous tous :) http://images.all-free-download.com/images/graphiclarge/beer_89581.jpg -
Lister l'ensemble des calques
Olivier_CEA_Grenoble a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
Effectivement Patrick_35, Merci aussi a VDH-Bruno pour sont analyse ou effectivement je me plantai magnifiquement, de plus je devais tomber sur une erreur non visible vue que noyer dans le déroulement du lisp. donc un grand merci a VDH-Bruno Olivier -
Lister l'ensemble des calques
Olivier_CEA_Grenoble a répondu à un(e) sujet de Olivier_CEA_Grenoble dans Débuter en LISP
Super et merci Patrick_35' :D Mon fichier de log s'enrichi gentiment (setq cal (tblnext "layer" t)) (while cal (write-line (cdr (assoc 2 cal)) fich_log) (setq cal (tblnext "layer")) ) @+ -
Bonjour Je suis en cour de rédaction d'un LISP qui scrute l'ensemble de fichiers via TBLNEXT Mais, j'ai le souci suivant, quand je passe le TBLNEXT (cdr(assoc 2 (tblnext "LAYER"))) manuellement, j'ai bien intégrité de mes calques qui défile, mais quand je le place dans une boucle while (while (/= (tblnext "LAYER") nil) (write-line(cdr(assoc 2 (tblnext "LAYER")))fich_log) ) je n'ai pas l'intégrité de mes calques :blink:
-
Erreur : nb max jeux de sélec
Olivier_CEA_Grenoble a répondu à un(e) sujet de Bred dans Débuter en LISP
Salut Gérald Oui j'ai bien passé le code après le code erreur et effectivement aucun pickset. Pour le moment, j'ai détourné la vérification de mon fichier (TEST_CM) en incrémentant mes listObj au niveau de mes requêtes par la variable Nam_bloc. Ce n’est donc pas une véritable vérification… :( Peu satisfaisant :( mais ça me rend déjà bien service. -
Erreur : nb max jeux de sélec
Olivier_CEA_Grenoble a répondu à un(e) sujet de Bred dans Débuter en LISP
Bonjour Je lance le code suivant (foreach i (atoms-family 0) (setq iType (type (eval i))) (if (setq tempList (assoc iType TypeList)) (setq TypeList (subst (cons iType (1+ (cdr tempList))) tempList TypeList)) (setq TypeList (cons (cons iType 1) TypeList)) ) ) et en voila le retour ((REAL . 1) (SYM . 11) (INT . 4) (STR . 15) (LIST . 5) (EXRXSUBR . 484) (SUBR . 689)) -
Erreur : nb max jeux de sélec
Olivier_CEA_Grenoble a répondu à un(e) sujet de Bred dans Débuter en LISP
Merci Gérald, J'ai testé les liens de Gile sans aucun succès, je vais tenter de lancer le TEST_CM juste après le lancement des requêtes d'affichage des données. :unsure: Je vous tiens aux jus. -
Erreur : nb max jeux de sélec
Olivier_CEA_Grenoble a répondu à un(e) sujet de Bred dans Débuter en LISP
Pas de SSGET mais SETQ pour la variable Liste_bat qui est incrémentée: (while (/= list_bat nil) (setq Nam_bloc (car (car list_bat))) (setq list_bat (cdr list_bat)) (ggsetcontext (strcat "Nom_Batiment=" nam_bloc)) (if (= (tblsearch "LAYER" "CONTOUR_BATIMENT") nil) (command "calque" "n" "CONTOUR_BATIMENT" "ch" "CONTOUR_BATIMENT" "") (setvar "CLAYER" "CONTOUR_BATIMENT") ) (command "ExeRequest" "BATIMENT&Contour" ) (command "bloc" nam_bloc "0,0" "der" "") (command "_insert" nam_bloc "0,0" "1" "" "0") (if (= site "CEAG") (if (= (member Nam_bloc Bat_exclu ) nil) (progn (if (= (tblsearch "LAYER" "CONTOUR_ANEX")nil) (command "calque" "n" "CONTOUR_ANEX" "ch" "CONTOUR_ANEX" "") (setvar "CLAYER" "CONTOUR_ANEX") ) (command "_insert" nam_bloc "0,0" "1" "" "0") ) ) )) Le SSGET viens après sur la création de fiçhiers log de vérif: La première partie: (defun c:TEST_CM (/ NbSSGET SSGet_BAT SSGet_rdo SSGet_FIXE SSGet_MOBILE Suite) (setq Date_Creation (def_date(getvar "tducreate"))) ;;____________ CONTOUR_BATIMENT (if (/= (ssget "x"'((8 . "CONTOUR_BATIMENT")(0 . "INSERT")))nil) (progn ;;Selection de l'ensemble des blocs (0 . "INSERT") dans le calque CONTOUR_BATIMENT (8 . "CONTOUR_BATIMENT") (setq SSGet_BAT (ssget "x"'((8 . "CONTOUR_BATIMENT")(0 . "INSERT")))) ;;Nombre d'obget dans la selection (setq NbSSGET (sslength SSGet_BAT)) (setq listObjBAT(strcat ": CONTOUR_BATIMENT ")) (if (/= NbSSGET nil) (progn (setq Suite 0) (repeat NbSSGET (setq listObjBAT(strcat ": " (cdr(assoc 2(entget(ssname SSGet_BAT suite))))listObjBAT)) (setq suite (+ 1 suite)) ) ) ) ) (setq listObjBAT (strcat "Pas d'objet sur le calque CONTOUR_BATIMENT")) )... -
Erreur : nb max jeux de sélec
Olivier_CEA_Grenoble a répondu à un(e) sujet de Bred dans Débuter en LISP
si ça persiste, vérifie que tes ssget ne sont pas attribué à une variable incrémentée, genre (set (read (strcat "Prefix" (itoa i)))) avec une boucle qui incrémente le i bon courage, Gérald Je crois bien que je suis en plein dedans avec le 'setq List_bat' incrémenté en ligne 3 : :angry: (while (/= list_bat nil) (setq Nam_bloc (car (car list_bat))) (setq list_bat (cdr list_bat))... Un repeat en lieu et place du while ferais t'il mon affaire? Cdlt Olivier -
Erreur : nb max jeux de sélec
Olivier_CEA_Grenoble a répondu à un(e) sujet de Bred dans Débuter en LISP
Bonjour Merci de cette réponse rapide, je regarde ces deux pistes surtout le defun que je néglige bien trop souvent par un (/). Cdlt Olivier -
Erreur : nb max jeux de sélec
Olivier_CEA_Grenoble a répondu à un(e) sujet de Bred dans Débuter en LISP
Bonjour Pas vraiment débutant mais fortement autodidacte :(, j'arrive a mes limites de compréhension. Utilisateur de Mapd3D2008 avec une surcouche GEOMAP 2009 et un bon train de retard, je suis en galère sur une publication. Suite a un ensemble d'action GEOMAP puis MAP et enfin lisp je me retrouve en "error : dépassement du nombre maximum de jeux de sélection" Y a t'il moyen de moyenné ?
