Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Bonjour Dans le gestionnaire de mise en page, il y a une case à cocher pour Afficher les styles de tracé. Connaissez-vous la variable qui la gère ? @+
  2. Patrick_35

    Polyligne "multicalque"

    Salut On peut aussi se servir de la commande _group @+
  3. Patrick_35

    Dependance circulaire

    Salut Une référence circulaire indique que quelque chose se réfère à lui-même Par exemple, j'ai ouvert un dessin "c:\toto\toto.dwg" Je lie en xref "c:\toto\toto.dwg" et j'ai comme message d'erreur référence circulaire possible dans le dessin courant. @+
  4. Salut En vlisp, regarde GetBoundingBox @+
  5. Salut Deux petites remarques sir tu le permets 1) Tu peux inverser tes deux conditions et cela évite un not 2) Tu peux utiliser (trans pt 1 0) et cela fonctionne sans conditions. Cela indique systématiquement les coordonnées en WCS. Le 1 représentant l'UCS courant, si tu es déjà en WCS, cela ne change donc rien. @+
  6. Salut Je confirme ce qu'indique VDH-Bruno, il faut utiliser le numéro de maintien et pour retrouver à quel objet il appartient, tu as la fonction lisp handent @+
  7. Salut Pour ta boite de dialogue des attributs, regarde les variables ATTREQ et ATTDIA. @+
  8. Salut Avec celui-ci par exemple J'ai aussi inclus pour ceux que cela peut intéresser Une sélection multiple de fichiers Une ouverture via ObjectDbx maintenant compatible A2013 (defun c:unx(/ Ouvrir_dessin_dbx GetMultFiles enlever_xref lst) (defun Ouvrir_dessin_dbx(dwg / dbx doc lan rel DLLRegister ProgID->ClassID DBX-Register Get-ObjectDBX) ; Calls REGSVR32 to Register a DLL silently (defun DLLRegister (dll) (startapp "regsvr32.exe" (strcat "/s \"" dll "\""))) ; Returns the ProgID for a given ClassID if found in registry (defun ProgID->ClassID (ProgID) (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\" progid "\\CLSID"))) ; Try to Register ObjectDBX if not done so already ; Returns the Class Name if already registered / sucessfully registered ; Else returns nil if failure (defun DBX-Register (classname filename / server acver) (cond ((not (and classname filename)) (DBX-Register (strcat "ObjectDBX.AxDbDocument." (itoa (setq acver (atoi (getvar 'ACadVer))))) (strcat "AxDb" (itoa acver) ".dll") ) ) ((ProgID->ClassID classname) classname) ((setq server (findfile filename)) (cond ((and (DLLRegister server) (ProgID->ClassID classname)) classname) (t nil) ) ) (t (DBX-Register "ObjectDBX.AxDbDocument" "AxDb.dll")) ) ) ; Try to reference ObjectDBX - returns the ActiveX object if sucessful ; Else returns nil if failure (defun Get-ObjectDBX (/ classname) (if (setq classname (DBX-Register nil nil)) (vla-getinterfaceobject (vlax-get-acad-object) classname) ) ) (and (setq dwg (findfile dwg)) (progn (vlax-for doc (vla-get-documents (vlax-get-acad-object)) (and (eq (strcase (vla-get-fullname doc)) (strcase dwg)) (setq dbx doc lan T) ) ) (and (not dbx) (setq dbx (Get-ObjectDBX)) (vla-open dbx dwg) ) ) ) (list dbx lan) ) (defun GetMultFiles (strTitle strFilter strInitDir / Maxfiles Flags WinDlg mFiles Catchit lst) (vl-load-com) (or (eq (vl-registry-read "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905") "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj") (vl-registry-write "HKEY_CLASSES_ROOT\\Licenses\\4D553650-6ABE-11cf-8ADB-00AA00C00905" "" "gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj") ) (if (setq WinDlg (vlax-create-object "MSComDlg.CommonDialog")) (progn (setq Maxfiles 32767 Flags (+ 4 512 524288 1048576 1024) ) (vlax-put-property WinDlg 'CancelError :vlax-false) (vlax-put-property WinDlg 'MaxFileSize Maxfiles) (vlax-put-property WinDlg 'Flags Flags) (vlax-put-property WinDlg 'DialogTitle strTitle) (vlax-put-property WinDlg 'Filter strFilter) (vlax-put-property WinDlg 'InitDir strInitDir) (setq Catchit (vl-catch-all-apply '(lambda () (vlax-invoke-method WinDlg 'ShowOpen) (setq mFiles (vlax-get WinDlg 'Filename)) ) ) ) (vlax-release-object WinDlg) (if (vl-catch-all-error-p Catchit) nil (progn (while (setq pos (vl-string-position (ascii "\000") mFiles)) (setq lst (cons (substr mFiles 1 pos) lst) mFiles (substr mFiles (+ pos 2)) ) ) (reverse (cons mFiles lst)) ) ) ) (progn (princ "\nErreur: Le pilote Comdlg.OCX du système d'exploitation n'est pas installé.") nil ) ) ) (defun enlever_xref(dessin / dbx ent esp lck) (princ (strcat "\n Travail sur " dessin))(princ) (and (car (setq dbx (Ouvrir_dessin_dbx dessin))) (progn (vlax-for esp (vla-get-blocks (car dbx)) (vlax-for ent esp (and (eq (vla-get-objectname ent) "AcDbBlockReference") (vlax-property-available-p ent 'path) (progn (setq lay (vla-item (vla-get-layers (car dbx)) (vla-get-layer ent))) (and (eq (setq lck (vla-get-lock lay)) :vlax-true) (vla-put-lock lay :vlax-false) ) (vla-delete ent) (and (setq lck :vlax-true) (vla-put-lock lay :vlax-true) ) ) ) ) ) (vla-saveas (car dbx) dessin) (or (cadr dbx) (vlax-release-object (car dbx))) ) ) ) (and (setq lst (GetMultFiles "Sélectionnez les dessins à traiter" "Dessin AutoCAD (*.dwg)|*.dwg|Fichier d’échange AutoCAD (*.dxf)|*.dxf|Tout (*.*)|*.*" (getvar "dwgprefix"))) (mapcar '(lambda(x) (enlever_xref (strcat (car lst) "\\" x))) (cdr lst)) ) (princ) ) @+
  9. Salut C'est certain que cela va plaire. Ce serait bien aussi de pouvoir faire un tri avec les coordonnées. Par exemple, pour numéroter un bornier, je fais une sélection de mes textes, et le 1er se trouve le plus à gauche, le suivant à sa droite, etc... Un tri se faisant par exemple comme sur l'image jointe. ps : On dirait que tu migres tous tes lisps en version .net ;) @+
  10. Alors, à cette adresse (vl-list->string '(112 97 116 114 105 99 107 51 53 64 97 108 105 99 101 97 100 115 108 46 102 114)) @+
  11. Tu as apparemment des boites de dialogues qui définissent des variables. Comme ce que tu donnes est incomplet et je doute que l'auteur du lisp soit d'accord pour une diffusion de ses sources, il est très difficile, voir impossible de trouver le pourquoi du comment. Le plus simple est de t'adresser à l'auteur et de voir avec lui. @+
  12. Salut A la lecture du lisp, tu n'as pas de variable l_val de définie @+
  13. Patrick_35

    Position d'un bloc

    Salut Si on veux aller plus vite dans la recherche d'un bloc dans la table, on peut utiliser tout simplement vla-item avec une gestion des erreurs s'il n'existe pas (cela revient à utiliser tblsearch en lisp) Sans la gestion des erreurs (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) "MON_BLOC") Avec la gestion des erreurs (vl-catch-all-apply 'vla-item (list (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) "MON_BLOC")) @+
  14. Patrick_35

    Position d'un bloc

    Salut (and (setq mon_bloc "MON_BLOC") ; Définir le nom du bloc (ssget "x" (list (cons 0 "insert") (cons 2 mon_bloc))) ; Faire une sélection dans le dessin (setq mon_bloc (vla-item (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object))) 0)) ; Récupére dans le jeu de sélection le 1er bloc (vlax-get mon_bloc 'insertionpoint) ; le point d'insertion du 1er bloc ) Que ce soit du lisp ou du vlisp, la logique reste la même. Sélection dans le dessin puis on prends le 1er élément du jeu de sélection. @+
  15. Patrick_35

    Gerer les calques X-ref

    Salut Je suis comme lecrabe, j'ai un peu de mal à comprendre Peut-être avec GEF ? @+
  16. Salut En regardant ta fonction explodestr, je me suis dis que l'on pouvait faire ceci (defun explodestr (str) (mapcar 'chr (vl-string->list str)) ) @+
  17. Bonjour C'est même très bien. Merci de l'info @+
  18. Salut Ben, le but des xdatas, c'est d'ajouter des données à un objet et que cela soit le plus souvent possible invisible. Pour savoir si un objet posséde des xdatas, tu as une commande des express-tools -> xdlist Pour les dictionnaires, tu as une excellente explication de (gile) @+
  19. Salut Essaye quelque chose de ce style pour du texte (vl-load-com) (setq obj (entsel)) (setq obj (vlax-ename->vla-object (car obj))) (vla-put-textstring obj (vla-fieldcode obj)) @+
  20. Patrick_35

    Le vapotage !

    Salus Bonus Moi aussi j'était un gros fumeur, mais j'ai arreté grâce à un centre d'aide d'arrêt au Tabac. L'avantage, c'est que tu es vu par un médecin au début et ensuite, tu vois une infirmière qui se suis jusqu'au sevrage definitif. Certains n'aiment pas le milieu médical, mais l'avantage, c'est du sérieux et ensuite, tu as les bons dosages avec les patchs. Tous les moyens sont bons, et si celui-ci permet de t'arreter, je ne dirai qu'une chose, fonce. Si ça t'intéresse, j'ai participé récemment à une discution sur l'e-cig. @+
  21. Salut Comme les objets AEC sont spécifiques, je ne saurai dire, mais une piste en regardant dans les xdatas. @+
  22. Salut Commande Aire --> Addition --> Objets @+
  23. Patrick_35

    JAV dernier cri SVP ?

    Salut Lecrabe Je crois que c'est une amélioration pour purger les filtres de calques. Mais pour ton dessin, j'aimerai bien une copie si c'est possible pour comprendre. @+
  24. Salut Un exemple pour sauvegarder le menu des express tools qui logiquement devrait fonctionner mais ce n'est pas le cas. Pourquoi ??? (setq mnu (vla-get-menugroups (vlax-get-acad-object))) (vlax-saveas (vla-item mnu "express") "c:/test/Express.mns" acMenuFileSource) Donc, on triche pour y arriver (setq mnu (vla-get-menugroups (vlax-get-acad-object))) (vl-file-copy (vla-get-menufilename (vla-item mnu "express")) "c:/test/Express.cui") Et pour le charger s'il n'est pas présent comme menu (setq mnu (vla-get-menugroups (vlax-get-acad-object))) (and (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list mnu "express"))) (vla-load mnu "c:/test/Express.cuix") ) @+
  25. Salut Correction d'un bug qui faisait un import sur rien, car comme les styles de lignes sont déjà dans le dessin, elles ne sont plus importées. Même type d'erreur que celle du dessus car les trois type de lignes de bases ne sont pas importées car déjà dans le dessin. C'est DUBLOC, DUCALQUE et CONTINUOUS. J'ai pas reussi à reproduire l'erreur. Peut-être avec la nouvelle version (defun Ouvrir_dessin_dbx(dwg / dbx doc lan rel DLLRegister ProgID->ClassID DBX-Register Get-ObjectDBX) ; Calls REGSVR32 to Register a DLL silently (defun DLLRegister (dll) (startapp "regsvr32.exe" (strcat "/s \"" dll "\""))) ; Returns the ProgID for a given ClassID if found in registry (defun ProgID->ClassID (ProgID) (vl-registry-read (strcat "HKEY_CLASSES_ROOT\\" progid "\\CLSID"))) ; Try to Register ObjectDBX if not done so already ; Returns the Class Name if already registered / sucessfully registered ; Else returns nil if failure (defun DBX-Register (classname filename / server acver) (cond ((not (and classname filename)) (DBX-Register (strcat "ObjectDBX.AxDbDocument." (itoa (setq acver (atoi (getvar 'ACadVer))))) (strcat "AxDb" (itoa acver) ".dll") ) ) ((ProgID->ClassID classname) classname) ((setq server (findfile filename)) (cond ((and (DLLRegister server) (ProgID->ClassID classname)) classname) (t nil) ) ) (t (DBX-Register "ObjectDBX.AxDbDocument" "AxDb.dll")) ) ) ; Try to reference ObjectDBX - returns the ActiveX object if sucessful ; Else returns nil if failure (defun Get-ObjectDBX (/ classname) (if (setq classname (DBX-Register nil nil)) (vla-getinterfaceobject (vlax-get-acad-object) classname) ) ) (and (setq dwg (findfile dwg)) (progn (vlax-for doc (vla-get-documents (vlax-get-acad-object)) (and (eq (strcase (vla-get-fullname doc)) (strcase dwg)) (setq dbx doc lan T) ) ) (and (not dbx) (setq dbx (Get-ObjectDBX)) (vla-open dbx dwg) ) ) ) (list dbx lan) ) (defun c:gst(/ bda dbx doc lin lst rec res) (defun bda(titre dwg lst / dcl fil n pos res tmp txt) (setq tmp (vl-filename-mktemp "ret" nil ".dcl") fil (open tmp "w") ) (foreach txt (list "gst : dialog {" "key = \"titre\";" "fixed_width = true;" "alignment = centered;" "is_cancel = true;" "width = 60;" (strcat ": list_box {label = \"Styles de lignes depuis " (vl-filename-base dwg) (vl-filename-extension dwg) "\";") " key = \"lst\";" " height = 20;" " multiple_select=true;}" "spacer;" "ok_cancel;" "}" ) (write-line txt fil) ) (close fil) (setq dcl (load_dialog tmp)) (new_dialog "gst" dcl "") (start_list "lst") (mapcar 'add_list lst) (end_list) (set_tile "titre" titre) (action_tile "lst" "(setq pos $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (and (eq (start_dialog) 1) (progn (while (not (eq pos "")) (setq n (read pos) res (cons (nth n lst) res) pos (substr pos (+ 2 (strlen (itoa n))) (strlen pos)) ) ) ) ) (unload_dialog dcl) (vl-file-delete tmp) (reverse res) ) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (if (setq rec (getenv "Patrick_35_Style_Ligne_Fichier")) (or (findfile rec) (setq rec (strcat (vl-filename-directory rec) "/"))) (setq rec (strcat (vla-get-templatedwgpath (vla-get-files (vla-get-preferences (vlax-get-acad-object)))) "/")) ) (and (setq rec (getfiled "Choix d'un Gabarit" rec "dwt;dwg;dxf" 8)) (car (setq dbx (Ouvrir_dessin_dbx rec))) (progn (vlax-for ent (vla-get-linetypes (car dbx)) (or (wcmatch (strcase (setq lin (vla-get-name ent))) "*|*,CONTINU*,BYLAYER,BYBLOCK") (setq lst (cons lin lst)) ) ) (if lst (and (setq lst (bda "GST v1.00" rec (acad_strlsort lst))) (setq n 0) (progn (while (setq ent (nth n lst)) (setenv (strcat "Patrick_35_Style_Ligne_" (itoa n)) ent) (setq n (1+ n)) ) (setenv "Patrick_35_Style_Ligne_Total" (itoa n)) (setenv "Patrick_35_Style_Ligne_Fichier" rec) (princ "\nStyles de lignes mémorisés.") ) ) (alert "Pas de types de lignes à charger.") ) (or (cadr dbx) (vlax-release-object (car dbx))) ) ) (princ) ) (defun c:cst(/ dbx doc ent fic lst n rec tab) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (or (getenv "Patrick_35_Style_Ligne_Fichier") (c:gst)) (and (setq rec (getenv "Patrick_35_Style_Ligne_Fichier")) (if (setq fic (findfile rec)) (and (car (setq dbx (Ouvrir_dessin_dbx rec))) (progn (setq n 0) (while (< n (atoi (getenv "Patrick_35_Style_Ligne_Total"))) (setq lst (cons (getenv (strcat "Patrick_35_Style_Ligne_" (itoa n))) lst) n (1+ n) ) ) (vlax-for ent (vla-get-linetypes (car dbx)) (and (member (strcase (setq lin (vla-get-name ent))) lst) (not (tblsearch "ltype" lin)) (setq tab (cons ent tab)) ) ) (and tab (vla-copyobjects (car dbx) (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (length tab)))) tab ) (vla-get-linetypes doc) ) ) (or (cadr dbx) (vlax-release-object (car dbx))) (princ (strcat "\nImportation de " (itoa (length tab)) " styles de lignes.")) ) ) (alert (strcat "Le fichier " rec " est introuvable.\nVeuiller lancer GST pour définir un nouveau Gabarit.")) ) ) (princ) ) @+
×
×
  • 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é