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. Oouuiiiiinnn, ça plante chez moi. Dés que je lance la commande, j'ai cette erreur ---> ; erreur:type d'argument incorrect: stringp nil L'erreur vient de la variable "ROAMABLEROOTPREFIX" qui est inconnu sur une A2000 Et tant que j'y suis, j'ai remarqué que tu faisais appel à des "commande" et je n'ai pas vu un (command "_.undo" "_group") et (command "_.undo" "_end") pour pouvoir revenir facilement en arrière au cas ou. ps : Tu n'as pas osé te lancer dans la lecture/écriture des registres apparemment ;) @+
  2. Salut Un exemple de ce que j'avais fait pour le chargement automatique des menus avec leurs barres d'outils Extrait de l'aide Le titre dans mon menu partiel ***MENUGROUP=MON_MENU_PERSO*** POP1 [&MENU PERSO] ID_Premier [&Premier]^C^C^P(lance_un_lisp) Pour la barre d'outil ***TOOLBARS **TB_MON_MENU_PERSO ID_MON_MENU_PERSO [_Toolbar("MENU PERSO", _Top, _Show, 1, 1, 1)] ID_Bouton_1 [_Button("BOUTON 1", "Bt1.bmp", "Bt1.bmp")]^C^C^P(lance_un_lisp) ^P [--] ID_Bouton_2 [_Button("BOUTON 2", "Bt2.bmp", "Bt2.bmp")]^C^C^P(lance_un_lisp) ^P Pour charger le menu automatiquement le menu partiel dans un s::statup() (if (not (menucmd "GMON_MENU_PERSO.ID_Premier=?")) ; ne trouve pas le menu (progn (command "_.menuload" "mon_menu.mns") ; charger le menu partiel (menucmd (strcat "P7=+MON_MENU_PERSO.Pop1")) ; place le menu à la 7éme position (command "_.toolbar" "TB_MON_MENU_PERSO" "") ; affiche la barre d'outil ) ) ps : ce que donne Zebulon_ à l'air exellent, ça reste à creuser @+
  3. Salut, Tu peux définir une clé d'accès général par exemple pour ton lisp FFMO. (setq Cle_Zeb "HKEY_CURRENT_USER\ \Software\ \Autodesk\ \Autocad\ \Zebulon\ \FFMO"); (enlever les espaces entres les deux \) Faire une lecture (setq Val_1 (vl-registry-read Cle_Zeb "Cle_1")) Une écriture (vl-registry-write Cle_Zeb "Cle_1" Val_1) Ou encore pour effacer une clé (vl-registry-delete Cle_Zeb "Cle_1") Pour ce qui est du vl, je ne sais pas si ça répond correctement à la question, mais c'est au cas ou (setq Vues (vla-get-views (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for Vue Vues (princ (strcat "\n\tVue : " (vla-get-name Vue))) (princ "\t,Direction : ")(princ (vlax-safearray->list (vlax-variant-value (vla-get-direction Vue)))) (princ "\t,Target : ")(princ (vlax-safearray->list (vlax-variant-value (vla-get-target Vue)))) ) (princ) @+
  4. Patrick_35

    présentation/objet

    Salut Ou encore avec la commande controle ! @+
  5. Salut, Je suis une bille en 3D mais pmeut-être avec les variables target et viewdir ? Et pourquoi pas dans des registres perso ? Ton utilitaire est vraiment sympa. J'aurai juste un bémol Je viens de voir que si je n'ai pas de vue prédéfini, j'ai un message sur acad_strlsort @+ [Edité le 21/10/2005 par Patrick_35]
  6. Patrick_35

    liste de filtre

    houla, je ne voulais pas te froisser Je sais que tu connais ça très bien. C'était juste pour indiquer que le filtre ne prenait pas tout @+
  7. Patrick_35

    liste de filtre

    Salut Bonus Et si par exemple ta poly 3D est fermée ? @+
  8. Patrick_35

    liste de filtre

    Le code 100 est plus orienté vlisp. Cette sélection est sûrement possible en vlisp, mais c'est assez galère à faire et autolisp est beaucoup plus simple d'emploi. Apparemment, un ssget sur un code 100 à un fonctionnement un peu spécial. Un (ssget "x" (list (cons 100 "AcDbLine"))) retourne une sélection dont la logique reste à trouver. :casstet: @+
  9. Patrick_35

    liste de filtre

    Donc en un peu plus compliqué ;) (setq js (ssget "x" (list (cons 0 "POLYLINE,LWPOLYLINE,ARC,LINE") (cons 8 calq0)))) les and et or sont inclus Et pour des polylignes 3D (setq js (ssget "x" (list (cons 0 "POLYLINE") (cons 8 calq0)))) Il faut ensuite balayer la sélection avec le bit 8 du code 70 pour savoir si c'est une 3D @+
  10. Patrick_35

    liste de filtre

    Salut (setq js (ssget "x" (list (cons 0 "LWPOLYLINE") (cons 8 mon_calque) (cons 70 0)))) @+ (ps : le and est par défaut)
  11. Patrick_35

    liste de calques

    Oui, mais du coup, avec le vlisp, on ne sait plus si le calque est dépendant ou non des xrefs, à moins de rechercher le caractère | dans le nom, mais je ne trouve pas ça top Et comme le sous-entend mlon, chaque chose en son temps.. @+
  12. Patrick_35

    liste de calques

    Salut Il est possible de simplifier ta routine et j'ai remarqué quelle prenait en compte les xrefs. Je l'ai reprise afin de les éviter @+ (defun c:mm_liste_calque (/ inc lay) (setq lay (tblnext "layer" t) inc 0 listcalques nil listpointcalques nil) (while lay (if (not (eq (logand (cdr (assoc 70 lay)) 16) 16)) ; ce n'est pas un xref (setq listcalques (append listcalques (list (cdr (assoc 2 Lay)))) listpointcalques (append listpointcalques (list (cons inc (cdr (assoc 2 Lay))))) inc (1+ inc)) ) (setq lay (tblnext "layer")) ) )
  13. Salut Comme on est dans la rubrique lisp, essaye (startapp "C:/Program files/BaCAD Desktop 2004 For R16/Liste/listefer.exe") @+
  14. Salut Tu as une explication ici, là, et là Le premier et le deuxième explique la notion de réacteur. Le troisième associe des entités aux réacteurs. @+
  15. Merci Ludwig Effectivement ce n'est pas récent et la solution que tu proposes efface tous les réacteurs, pas uniquement celui qui peut m'intéresser Le lisp ci-joint à un exemple qui supprime que le/les réacteur(s) souhaité(s) (defun Attributs_ini(Rea Cde) (setq dernier_ent (entlast)) ) (defun Attributs_xyz(Rea Cde / bl js n xyz) (cond ((or (eq (car Cde) "MOVE") (eq (car Cde) "STRETCH")) (setq js (ssget "_p")) ) ((or (eq (car Cde) "GRIP_MOVE") (eq (car Cde) "GRIP_STRETCH")) (setq js (cadr (ssgetfirst))) ) ((eq (car Cde) "INSERT") (setq js (ssadd)) (ssadd (entlast) js) ) ((eq (car Cde) "COPY") (setq js (ssadd) n (entnext dernier_ent)) (while n (ssadd n js) (setq n (entnext n)) ) ) ((eq (car Cde) "UCS") (setq js (ssget "x" (list (cons 0 "INSERT") (cons 2 Nom_bloc)))) ) ) (if js (progn (setq n 0) (while (ssname js n) (setq bl (entget (ssname js n))) (if (and (eq (cdr (assoc 0 bl)) "INSERT") (eq (strcase (cdr (assoc 2 bl))) (strcase Nom_bloc))) (if (cdr (assoc 66 bl)) (progn (setq xyz (trans (cdr (assoc 10 bl)) (cdr (assoc -1 bl)) 1)) (while (not (eq (cdr (assoc 0 bl)) "SEQEND")) (if (eq (cdr (assoc 0 bl)) "ATTRIB") (cond ((eq (strcase (cdr (assoc 2 bl))) (strcase Eti_X)) (setq bl (subst (cons 1 (rtos (car xyz))) (assoc 1 bl) bl)) (entmod bl) (entupd (cdr (assoc -1 bl))) ) ((eq (strcase (cdr (assoc 2 bl))) (strcase Eti_Y)) (setq bl (subst (cons 1 (rtos (cadr xyz))) (assoc 1 bl) bl)) (entmod bl) (entupd (cdr (assoc -1 bl))) ) ((eq (strcase (cdr (assoc 2 bl))) (strcase Eti_Z)) (setq bl (subst (cons 1 (rtos (caddr xyz))) (assoc 1 bl) bl)) (entmod bl) (entupd (cdr (assoc -1 bl))) ) ) ) (setq bl (entget (entnext (cdr (assoc -1 bl))))) ) ) ) ) (setq n (1+ n)) ) ) ) (princ) ) (defun c:spt(/ i j n) (if (setq i (vlr-reactors :vlr-Command-Reactor)) (progn (setq n 1 i (nth n (car i))) (while i (setq j nil) (if (or (eq (cdr (car (vlr-reactions i))) 'ATTRIBUTS_XYZ) (eq (cdr (car (vlr-reactions i))) 'ATTRIBUTS_INI)) (setq j i) ) (if j (vlr-remove j) (setq n (1+ n)) ) (if (setq i (vlr-reactors :vlr-Command-Reactor)) (setq i (nth n (car i))) ) ) (if mrea_mpt (princ (strcat "\n\tDésactivation de la mise à jour XYZ du bloc " Nom_bloc ".")) ) (setq mrea_mpt nil) ) ) (princ) ) (defun c:mpt() (if (not mrea_mpt) (progn (c:spt) (vlr-command-reactor nil '((:vlr-commandwillstart . Attributs_ini))) (setq mrea_mpt (vlr-command-reactor nil '((:vlr-commandEnded . Attributs_xyz)))) (princ (strcat "\n\tActivation de de la mise à jour XYZ du bloc " Nom_bloc ".")) ) (princ (strcat "\n\tLa mise à jour XYZ du bloc " Nom_bloc " est déjà activée.")) ) (princ) ) (vl-load-com) (setq Nom_bloc "XY" Eti_X "X" Eti_Y "Y" Eti_Z "Z") (princ (strcat "\n\tPour activer la mise à jour XYZ du bloc " Nom_bloc ", lancez la commande MPT.\n\tPour revenir à la normale, faites la commande SPT.")) (princ)
  16. Merci Bonus, ça décoiffe :cool: Je suis impressionné par ton lisp, on y retrouve même des fonctions cachées :) . Il me reste plus qu'à regarder sérieusement les résultats et à deviner quelles variables et quels flags correspondent à telle fonction. @+
  17. Merci Patrick, je vais regarder de plus près @+
  18. Merci de ton aide Bonus Si tu fais la commande acadinfo sur autocad, tu écris le fichier acadinfo.txt dans lequel tu retrouves toutes ces fonctions mais pas leurs arguments :( J'ai trouvé sur l'autre forum toutes les explications par rapport à mon exemple et je me demandais si par hasard il n'existait pas quelques choses reprenant toutes ces commandes et leurs argumentaires afin de se faciliter la vie dans les lisps. Si je suis ton exemple avec (acet-ui-message), il m’est impossible de deviner la valeur des flags ainsi que la valeur par exemple 1 qui m’est retourné par cette fonction. @+
  19. Bonjour à vous tous Je viens de découvrir que l'on pouvait faire appel à des fonctions des express tools du style (acet-ui-message "Message d'alerte" "WARNING" 48) (acet-ui-message "Message d'information" "INFO" 64) Où peut-on retrouver toutes ces fonctions avec leurs arguments ? (et pas uniquement pour l'exemple ci-dessus) Merci @+
  20. Patrick_35

    Définir la version Autocad

    Je viens de tester et c'est exact. si on convertit avec a9cad, on ne retouve plus la bonne version :mad: @+
  21. Salut Tu peux te servir de la commande _SYSVDLG des express tools qui indique si c'est sauvé ou non dans les registres, et il y a plein d'autres infos @+
  22. Patrick_35

    Définir la version Autocad

    Hello Il y a aussi le batch drawing converter fournit acec autocad qui donne la version du dwg @+
  23. Salut En mettant comme ligne de commande dans le script (avec sdi à 1) _open _no mon_dessin.dwg ou encore (avec sdi à 0) _close _no _open mon_dessin.dwg @+
  24. Salut C'est faisable....via un lisp ou en vba et pas sur une version LT @+
  25. Je ne comprends pas trop son intérêt ?? On a déjà C Crossing, CP Crossing Polygon, W Window et WP Window Polygon !! Il me tarde d'avoir une nouvelle version pour tester ces nouvelles fonctionnalités @+
×
×
  • 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é