Aller au contenu

GEGEMATIC

Membres
  • Compteur de contenus

    1 416
  • Inscription

  • Dernière visite

  • Jours gagnés

    19

Tout ce qui a été posté par GEGEMATIC

  1. Salut Luna, avec Handle_explorer, que j'ai posté plus haut: je commence par chercher le "handle" d'entrée, à savoir le handle du calque 0 (entget (tblobjname "LAYER" "0")) -> ((-1 . <Nom d'entité: 26c5056c900>) (0 . "LAYER") (5 . "10") (102 . "{ACAD_XDICTIONARY") (360 . <Nom d'entité: 26c6eb75c90>) (102 . "}") (330 . <Nom d'entité: 26c5056c820>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "0") (70 . 0) (62 . 7) (6 . "Continuous") (290 . 1) (370 . -3) (390 . <Nom d'entité: 26c5056c8f0>) (347 . <Nom d'entité: 26c50555ea0>) (348 . <Nom d'entité: 0>)) le handle est "10": (5 . "10") Commande: HANDLE_EXPLORER Maintien de l'entité ? * pour saisir à l'écran<10> : je parcours toutes les entités, est dès le code 360, j'a: Code 360 trouvé: 185E9 <Nom d'entité: 26c6eb75c90> Afficher l'entget entité ?Oui/Non<Oui> : Ligne précédent l'entité (parfois étiquette: (102 . {ACAD_XDICTIONARY) (-1 . <Nom d'entité: 26c6eb75c90>) (0 . DICTIONARY) (330 . <Nom d'entité: 26c5056c900>) (5 . 185E9) (100 . AcDbDictionary) (280 . 1) (281 . 1) (3 . ADSK_XREC_LAYER_COLOR_OVR) (360 . <Nom d'entité: 26c6eb75ca0>) J'ai trouvé mon (3 . ADSK_XREC_LAYER_COLOR_OVR) du coup je relance Handle_explorer avec "185E9"
  2. Salut à toutes et à tous. comme il faut respecter, je ne critiquerai pas. rions un peu quand même, de ce genre d'aide : https://www.autodesk.fr/support/technical/article/caas/sfdcarticles/sfdcarticles/FRA/How-to-disable-contextual-ribbon-tabs-in-AutoCAD-2015.html si vous comprenez le concept, vous êtes très forts: En tout cas, le pb ne venait pas de là. Sous MAP, j'ai bien accès au carroyage dans une présentation, mais pas sous CIVIL je n'ai pas réussi à trouver ce foutu ruban sous CIVIL ... a+, Gégé
  3. Salut Didier c'est sûr, mais quand on a choppé une tendinite généralisée, on se met aux raccourcis clavier et la la ligne de commande ... a+ Gégé
  4. salut, pour les mac, comme il n'y a pas l'interface com, il y a des commandes spéciales: (dumpallproperties ename [context]) getpropertyvalue (AutoLISP) setpropertyvalue (AutoLISP) ispropertyreadonly (AutoLISP) Au final, pour Autocad leur champ d'action est plus vaste que l'interface .com mais on ne peux pas utiliser des objet externes à Autocad *Pour Autocad, com = activeX a+ Gégé
  5. atoms-family
  6. Salut, je croyais que tu avait déjà réussi à faire fonctionner le DCL que tu as donné en exemple. Malheureusement je n'ai même plus le temps de programmer pour moi ... Pour ta question, tout dépend de la ou tu met l'action_tile, et dans le cas des slide_bar, il faut faire des tests, je ne les ai jamais utilisées a+ Gégé
  7. salut, la solution en lisp est de sorti du dcl, appliquer les modifs sur ta coupe et rouvrir le dcl, le tout provoqué par un action_tile sur la slide_bar. cela simulera une case de dialogue non modale, car finalement c'est ce que tu veux, puisque l'action est en dehors de la dcl. Il faut juste que tu stocke les paramètre de la cas de dialogue, puis que tu rouvre le dcl avec ces paramètre. le truc, c'est sortir du dialogue avec un (done_dialog "par") a+ gégé
  8. GEGEMATIC

    AutoCAD et Excel ?

    Salut, en refaisant un inventaire de mes lisps, je me suis aperçu que j'avais programmé 580 lignes de code pour lier une base access à un dessin Autocad, avec lecture/ecriture dans les 2 sens, une affaire de regards avec anomalie qui apparaissent sur une carte, et de coordonnées qui vont vers une fiche. Je ne m'en souvenais absolument pas ! Je me souviens par contre d'avoir beaucoup souffert pour programmer access en VBA, et que le SQL avec Access, c'est pas évidant vu que l'editeur est pire que le notepad. Et j'ai le sujet qui m'a permis de commencer ce travail, avec ma question, vieille de 10 ans, qui n'a pas eu de réponse ! (de toute façon je ne la comprend plus ...) voilà la liste des commandes lisp: C:CONNEXIONACCESS Connexion à une base de données choisie par l'utilisateur [ none ] C:CONNEXIONCLOSE Déconnexion de la base de données [ none ] C:DONNEES_ACCESS_VERS_ADE Transfert de données à partir des fiches regard acc ess [ none ] C:RENSEIGNE_ACCESS_XYZ renseigne les champs X Y Z d'une table à partir de topo_xy et zsurf et des noeuds avec numéro [ none ] C:SELECT_NOEUD_ANOMALIES_DEPUIS_ACCESS Sélectionne les noeuds à partir des fi ches regard access [ none ] CHANGESRCPPALERCS Ecriture dans les enregistrements de source_principale [ Id x y z ] NA_CLOSECONNEXION ferme la connexion [ acc ] NA_CONNEXIONACCESS Connexion à une base de données du cfichier fich [ fich ] NA_CONNEXIONANNOMALIESPRESENTES Connexion à la table Annomalies presentes [ none ] NA_CONNEXIONSRCPPALE Connexion à la table source_principale [ none ] NA_LISTANNOMALIESPRESENTES liste des enregistrement de le table Annomalies p resentes [ none ] NA_LISTVALSRCPPALE liste des valeurs de le table source_principale [ none ] NA_LISTVALSRCPPALEASSOC liste d'association des enregistrement de le table S ource_principale [ none ] TRYACC essai d'écriture d'un enregistrement de le table source_principale [ none ]nil connexion_access.lsp
  9. Salut, bien d'accord avec Mariette, mais je n'y crois pas trop ... dans tous les cas, question vitesse, Autocad n'est certainement pas une Porsche, plutôt une Multipla surchargée avec un coffre de toit ... a+, Gégé
  10. Salut à toutes et tous, et à Olivier je me permet de créer ce sujet car je trouve ton appli excellente: https://apps.autodesk.com/MAP3D/fr/Detail/Index?id=7146835859656784994&appLang=fr&os=Win64&autostart=true# Elle peut servir au delà d'AutoCAD Map (ou Civil), car par exemple OECK_PropertyByLayer peut servir à tous les utilisateurs d'AutoCAD. En tout cas elle nous est vraiment utile ne ce moment ! J'en profite pour amener des retours en vue d'améliorations (mais rien ne presse ...) OECK_PropertyByLayer et OECK_SHOWOD - > Bouton pour mise à jour des DO (Donnees d Objet = Object Data) ou des propriétés en restant sur son affichage quand on a modifié des propriétés ou des DO avec la palette d'AutoCAD (sinon la mise à jour se fait en changeant de calque et en revenant dessus) -> bouton pour n'afficher que les calques non vides -> colonne pour préciser dans quel onglet se trouvent les entités. voilà pour l'instant ! a+, Gégé
  11. GEGEMATIC

    Bonnes Fêtes

    Joyeuses fêtes à toutes et à tous, et courage à ceux qui vont bosser la semaine prochaine ...
  12. Salut, j'ai un écran panoramique incurvé hp, je l'aurai eu avant, j'aurais peut être pas besoins de lunettes ! a+ Gégé
  13. Salut, du coup : 1) changé la valeur SAVETIME -> pas de changement 2) Dossier "C:\TEMP_ACAD_SAUVE" -> ça roule ! merci a tous et joyeuses fêtes ! gégé
  14. Merci les gars, j'ai déjà fait savetime, on va voir, si ça marche pas je change le chemin temp ! a+ Gégé
  15. Salut à toutes et a tous, sur un poste, en Autocad (Map) 2024, la sauvegarde automatique en sv$ ne se fait pas, bien qu'elle soit programmée dans les options toutes les 10 minutes. Il me semble avoir déjà eu ce problème, mais je ne me souviens plus du remède. des idées ? a+ Gérald
  16. Salut à toutes et tous. Je n'ai jamais réussi à comprendre le phénomène, mais les prix saisis dans la bibliothèque peuvent disparaitre au fur et à mesure de l'évolution de celle ci. Il disparaissent de la bibliothèque, et du bordereau. Je le répète, jamsi compris le phénomène, qui n'est pas du tout brutal, c'est au fur et a mesure. en ce qui nous concerne, nous avons été recherché les prix perdus dans des sauvegardes incrémentales du bordereau. PB, les réinjecter: Car le mécanisme de dépendance entre les 3 xml: biblio VRD, Biblio matériaux et bordereau reste un mystère. En éditant les bibliothèques, c'est facile, mais ça monopolise la licence pour un boulot long et fastidieux. voilà notre méthode en utilisant l'editeur de base d'article (qui fonctionne sans licence) donc voilà notre technique: Séquence de mise à jour de la bibliothèque depuis le bordereau En général le bordereau est mis à jour depuis la bibliothèque, mais on peut faire le chemin inverse : La séquence marche sous la V18 : 1) Editer le bordereau avec l’outil editeur de base d’article 2) Sous covadis editer le bordereau avec l’outil de la barre VRD : 3) Faire un changement sur un prix et enregistrer 4) Fermer le dessin, plus aucun dessin ouvert 5) Ouvrir un dessin 6) Ouvrir la bibliothèque : elle doit se mettre à jour
  17. GEGEMATIC

    Logiciel cracké

    Salut, les exemples cités montrent que les cracks n'ont jamais été tolérés sur cadXp, et les modérateurs les ont toujours envoyés balader. donc je trouve ce message pas très sympa pour les modérateurs. a+ Gégé
  18. salut à toutes et à tous, quand une routine vieille de 30 ans ne marche plus, on se pose des questions ... est un espace c'est invisible ... alors quand votre vielle routine qui découpe un chaine avec un séparateur vous donne le mauvais résultat dans le deboggueur (pw_lst_de_ch "15 c" " ") -> ("15 c") Vous retapez en ligne de commande et la c'est bon: (pw_lst_de_ch "15 c" " ") -> ("15" "c") Vous cogitez un moment, car en fait " " /= " " car (chr 32) /= (chr 160) code ascii 160 = espace insécable https://fr.wikipedia.org/wiki/Espace_insécable donc j'ai ajouté à mon code: (if (or (= (chr 32) separ) ;_espace normal (= (chr 160) separ) ;_espace insécable ) (progn (setq separ (chr 32)) ;_espace normal (while (vl-string-search (chr 160) ch) (setq ch (vl-string-subst separ (chr 160) ch)) ) ) ) voilà, 1h30 de perdues ... a+ Gégé
  19. GEGEMATIC

    Covadis v18.1

    salut, apparemment on ne peut pas "patcher " de 18.0 à 18.1 ? il faut tout réinstaller ? a+ gégé
  20. Salut Reb, je pourrais pas t'aider sur ce coup là, mais si tu peux essayer de savoir ce qu'il mettent dans les Purina pour que les chats soient accro comme ça ! T'as le malheur d'en donner une fois, le chat fait la grève de la faim pour en ravoir ! a+ Gégé
  21. salut, j'en profite pour signaler le problème des chargements de palettes .xpt : Par exemple des palettes générées par Covadis (métrés avec base d'article) j'ai ce message: "L'outil n'est pas correctement enregistré. Vous ne pouvez modifier que les propriétés de base." et les palettes ne fonctionnent pas ... a+ gégé
  22. salut, des nouvelles de process Monitor, on sait que la palette des blocs est douteuse concernant la performance. On l'a prise en "flag" de ralentissement débile: Le dernier bloc inséré dans un dessin, et il est donc encore proposé dans la palette blocs, provoques un nombre astronomique de requêtes (environ 500 à 1000 par seconde) vers ce bloc Moralité: remplacer les alias I et -I par INSERCLASSIQUE et -INSERCLASSIQUE peuvent vous épargner bien des déboires. a+ Gégé
  23. merci a vous deux ! de vrais anges gardiens ! mais j'ai pas la berlue, avant (2018 ...) cette option était proposée par le ruban ou le menu quand on tapait geocarte ? a+, gégé
  24. salut à toutes et à tous, j'ai du mal à croire que je n'ai pas eu besoin de cette fonction depuis si longtemps , mais sous la 2021 je ne trouve pas l'option "capturer" (je l'avais sous la 2018) et je vois également que l'image ne s’imprime pas. Je peux me passer de géocarte, puisque j'ai le wms ign, qui lui s'imprime, mais comment dans ce cas choisir la fen^tre dans laquelle la carte s'affiche, puisqu'en wms, je ne peux gérer le calque que globalement ! Grr a+ gégé
  25. Oui c'est bizarre, dans le dictionnaire de l'entité, il y a rien de tangible. j'avais présenté un vieil outil qui peut t'aider : https://cadxp.com/topic/15169-handle_explorer/?do=findComment&comment=79234 je l'ai fait évoluer, il peut servir car certaines infos sont dispo en dxf pur, mais pas en .com, (incompréhensible avec edict de Gille, mais claires en dxf) j'espère que j'ai mis toutes les dépendances ... a+ Gégé ; **************************************************************************** ;;§/dxf/Exploration autour d'un handle vers les entités présentes /none ;;les code rechercés sont 330 331 340 345 346 347 348 349 350 360 390 ;;;330 ID/identificateur pointeur logiciel du dictionnaire propriétaire (facultatif) ;;; ;;;360 ID/identificateur de propriétés matérielles du dictionnaire propriétaire (facultatif) ;;; ;;;330 ID/identificateur pointeur logiciel de l'objet propriétaire ;;; ;;;350 ID/identificateur propriétaire logiciel de l'objet entrée (un pour chaque entrée) (facultatif) ;;autres codes : ;;;331 ID/identificateur de la dernière fenêtre active dans la présentation lorsque celle-ci était la présentation courante. ;;; ;;;345 ID/identificateur de l'énumération AcDbUCSTableRecord s'il s'agit d'un SCU nommé. En cas d'absence, le SCU n'est pas nommé ;;; ;;;346 ID/identificateur de l'énumération AcDbUCSTableRecord du SCU de base s'il s'agit d'un SCU orthogonal (code 76 différent de 0). En cas d'absence et si le code 76 est différent de 0, le SCU de base est du type GENERAL (defun c:handle_explorer (/ eg i cont eg2 dxf id prec lid) (if (not HDE-ident) (if (= "Oui" (pw_getkwordmem "\nCommencer l'exploration par AcadDictionaries ?/Oui Non" "HDE-App" ) ) (setq HDE-ident (vla-get-handle (vla-get-dictionaries (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) ) ) ) (pw_getstringmem "\nMaintien de l'entité ? * pour saisir à l'écran" "HDE-ident") (if (= "*" HDE-ident) (setq HDE-ident (eid)) ) (setq eg (entget (handent HDE-ident))) (foreach l eg (print l) ) (prompt "\n - * - * - * - * - * - * - * - * - * - * - * - * - *" ) (setq i 0 cont "Oui" ) (setq prec "") (while (setq dxf (nth i eg)) (if (member (car dxf) '(330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 360 390 1005 ) ) (if (and (/= (cdr dxf) "0") (setq eg2 (entget (pw_to_ename (cdr dxf))))) (progn (setq id (cdr (assoc 5 eg2))) (prompt (strcat "\n Code " (itoa (car dxf)) " trouvé: " id " ") ) (prin1 (cdr dxf)) (pw_getkwordmem "\nAfficher l'entget entité ?/Oui Non" "cont" ) (if (= "Oui" cont) (progn (prompt (strcat "\n Ligne précédent l'entité (parfois étiquette: " ;;(pw_fab_chaine prec) (vl-princ-to-string prec) ) ) (setq lid (cons (list (cdr (assoc 5 eg2)) (cdr (assoc 0 eg2))) lid)) (foreach l eg2 (prompt "\n ") (princ l) ) (prompt "\n- - - - - - - - - - - - - -") ) ) ) (prompt "\nEntité sans entget: ename = 0") ) ) (setq prec dxf) (setq i (+ 1 i)) ) (print lid) (princ) ) ; **************************************************************************** ;;§/dxf/Exploration des dictionnaiores du dessin /none (defun c:Dic_explorer ( / odics lnoms odict eg2 cont odump l) (setq odics (vla-get-dictionaries pw-acaddocument)) (setq lnoms (PW_VLAX_LIST_NOM_ITEMS odics)) (pw_bydefault "aff-dic" '("")) (setq aff-dic (pw_s_lchaines3 "Choisissez le dictionnaire à afficher : " lnoms nil aff-dic ) ) (setq odict (vla-item odics (car aff-dic))) (setq HDE-ident (vla-get-handle odict)) (pw_getkwordmem "\nAfficher l'entget entité ?/Oui Non" "cont" ) (if (= "Oui" cont) (progn (setq eg2 (entget (pw_to_ename odict))) (foreach l eg2 (prompt "\n ") (princ l) ) (prompt "\n- - - - - - - - - - - - - -") ) ) (pw_getkwordmem "\nAfficher l'object-dump de entité ?/Oui Non" "odump" ) (if (= "Oui" odump) (progn (vlax-dump-object odict T) (prompt "\n- - - - - - - - - - - - - -") ) ) (prompt "\nLe dictionnaire est disponible pour handle_explorer") ) ;**************************************************************************** ;§**/divers/ getkword modifié pour garder en memoire la derniere valeur et la proposer/msg var ;** argument : "message" "nomvar" ;si message de type "Alors ?/Oui Non", oui et non sont des mots clef, ;;retourne toujours l'entrée utilisateur ;;ex (pw_getkwordmem "Alors ?/Oui Non/Oui" "myvar") ;;( pw_ext_keyword "Alors ?/Oui Non/Oui") -> ("Alors ?Oui/Non<Oui>" "Oui Non" "Oui") (defun pw_getkwordmem (msg var / tmp iget strdef liget mots defaut) (pw_getmemlvar var msg "STR") (setq liget (pw_ext_keyword msg)) (setq msg (car liget)) (setq mots (cadr liget)) (setq defaut (last liget)) (if (wcmatch mots "*_*") (alert "\nUn mot clef de initget contient _, erreur !") (setq iget (list mots)) ) (cond ((eval (read var)) ; si valeur présente (setq strdef (eval (read var))) ;_permet le return (setq msg (strcat msg "<" strdef "> :")) ) (defaut (setq strdef defaut) (setq msg (strcat msg "<" strdef "> :")) ) (t (setq strdef "" iget (cons 1 iget) ) ;_valeur 1 empeche le return (setq msg (strcat msg " :")) ) ) ;;initget (eval (cons 'initget iget)) ;;(setq msg (strcat msg "<" strdef "> :")) ;;(setq msg (strcat msg " :")) (setq tmp (getkword msg)) (if (= 'STR (type tmp)) (set (read var) tmp) ) (if tmp tmp (eval (read var)) ) ) ;**************************************************************************** ;§**/divers/ place la variable var dans la liste des variables à mémoire pw-getmemlvar/var msg tp (defun pw_getmemlvar ( var msg tp ) (setq var (strcase var)) (if (not (assoc var pw-getmemlvar)) (setq pw-getmemlvar (cons (list var msg tp) pw-getmemlvar)) ) ) ;**************************************************************************** ;;§/divers/extrait les mots clef pour un getKword à partir du message /msg ;;exemple : ;;à partir d'un message type:"Alors ?/Oui Non/Non" ->'("Alors ?/Oui/Non<Non>" "Oui Non" "Non") ;; une liste avec le message, l'initget, et la valeur par defaut ;;n'accepte pas les _ dans la liste des keyword ;;(pw_ext_keyword "Alors ?/Oui Non/Non") ->("Alors ?Oui/Non" "Oui Non" "Non") ; (defun pw_ext_keyword2 (msg / lval valdef lms iget) (setq lms (pw_lst_de_ch msg "/")) (setq valdef (caddr lms)) (if (setq iget (cadr lms)) (progn (setq lval (strcat " [" (pw_ch_de_lst (pw_lst_de_ch iget " ") "/") "]")) (setq msg (strcat (car lms) lval)) ) ) (list msg iget valdef) ) ;;************************************************************************** ;;§/vlax/retourne la liste des noms des items d'un objet si applicable / objet ;;si c'est possible, sinon retourne nil ;;ex: (pw_vlax_list_nom_items (pw_get_dictionaries)) ;;; ->("ACAD_COLOR" "ACAD_IMAGE_DICT" "ACAD_MATERIAL" "ACAD_MLINESTYLE" "ACAD_OC" ;;; "ACAD_PLOTSTYLENAME" "ACAD_TABLESTYLE" ...) (defun pw_vlax_list_nom_items (objet / x) (mapcar 'vla-get-name (vl-remove-if-not '(lambda (x) (vlax-property-available-p x 'name) ) (pw_vlax_list_items objet ) ) ) ) ;;************************************************************************** ;;§/vlax/retourne tous les items d'un objet si applicable / objet ;;si c'est possible, sinon retourne nil ;;;peut être avntageuesement remplacé en utilisant vlax-for ;;;par exemple lister les calques: ;;;(vlax-for lay (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (setq llay (cons lay llay))) ;;;ex: (pw_vlax_list_items (pw_get_dictionaries)) ;;; ->(#<VLA-OBJECT IAcadDictionary 19aacbc4> #<VLA-OBJECT IAcadGroups 19aaa3b4> ...) ;;;pw_vlax_list_items liste les éléments d'une collection, peut être avntageuesement remplacé en utilisant ;;;vlax-for ;;;par exemple lister les calques: ;;;(vlax-for lay (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (setq llay (cons lay llay))) (defun pw_vlax_list_items (objet / i nb res collection) (if (= (type objet) 'ENAME) (setq objet (vlax-ename->vla-object objet)) ) (if (vlax-property-available-p objet 'count) (progn (setq nb (vlax-get-property objet 'Count)) ;;parcours les items pour retourne leur vla-ename (setq i 0) (while (< i nb) (setq id (vlax-invoke-method objet 'Item i)) (setq res (cons id res)) (setq i (+ 1 i)) ) (reverse res) ) ) ) ;**************************************************************************** ;;§**/divers/Assigne un valeur à var si var = nil /var defval ;;var est une chaine représentant la variable (defun pw_bydefault ( var defval / ) (if (eval (read var)) nil ;; valeur 0 change rien (set (read var) defval) ) ) ;*************************************************************************** ;§/dcl/permet la saisie multiple dans la list_box pw_s_nlist de pw_util.dcl/titre lchaines mode cpl ;l'arg mode permet de choisir plusieur elements si 't, 1 seul si nil ;place pas le focus sur le-les courants ;(pw_s_lchaines3 "titre" '("un" "deux" "trois") 1 '("deux" "un"))->("un" "deux" "trois") ; (defun pw_s_lchaines3 (titre lchaines mode cpl / lchoix sortie ok dcl_id) (defun ok () (setq lchoix (get_tile "cle"));;lchoix de la forme "0 2 3" (done_dialog) ) (setq dcl_id pw-dcl-util) (if mode (if (not (new_dialog "pw_s_nlist" dcl_id)) (exit)) (progn (if (not (new_dialog "pw_s_1list" dcl_id)) (exit)) (setq cpl (list (car cpl)));;un seul préchoix ) ) (setq lchoix "");;signifie aucun choix (pw_init_lbox "cle" lchaines);;rempli les lignes (set_tile "titre" titre) ;;affiche le titre (foreach r cpl ;;préselection (setq r (pw_rang r lchaines)) (if r (set_tile "cle" (itoa r)) ) ) (action_tile "accept" "(setq sortie $key) (ok)") (action_tile "cancel" "(setq sortie $key) (done_dialog)") (start_dialog) (cond ( (= sortie "accept") (pw_lst_select lchaines lchoix)) (t nil) ) )
×
×
  • 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é