Aller au contenu

Matt666

Membres
  • Compteur de contenus

    736
  • Inscription

  • Dernière visite

  • Jours gagnés

    2

Tout ce qui a été posté par Matt666

  1. Je n'ai pas testé, mais je ne pense pas que ça fonctionnera ! J'utilise la commande _-plot pour afficher le nom des imprimantes système dans l'historique de commandes. Et c'est cette commande qui précisément déclenche le F2. Une fois la commande passée je récupère les infos notées dans l'historique pour ne garder que les imprimantes. Nomutt va empêcher la commande d'affichage des imprimantes (qui elles-mêmes déclenchent le F2), donc pas d'enregistrement possible dans l'historique.
  2. Bonjour Patrick, et merci pour votre réponse. Non pas essayé mais le fonctionnement de cette routine est basé sur l'affichage des imprimantes disponibles dans l'historique depuis la commande _-plot. Nomutt supprime cet affichage.
  3. Merci SF.Designer, ça fonctionne losqu'on a un écran (la touche est F2). Pour deux écrans, c'est plus compliqué haha. Apparemment F2 ne bascule pas si 2écrans ou plus. Les fantaisies de BriscsCad. Sinon j'ai trouvé un code purement activeX, pour celleux que ça intéresse : (vlax-safearray->list (vlax-variant-value (vla-GetPlotDeviceNames (vla-Get-ActiveLayout (vla-get-ActiveDocument (vlax-get-Acad-object) ) ) ) ) ) PS : Tout à fait, Fraid, c'est la même chose sur AutoCAD.
  4. Bonjour Eric, merci pour votre réponse. Nope ça ne change rien. C'est vrai que j'aurais dû noter que j'avais déjà testé. Voici le code, si vous voulez vous faire une idée. Pour info je suis sur BricsCad. ;; retourne la liste des imprimantes système ;; Voir pour empêcher l'affichage de la fenêtre d'historique de commande (defun printerList ( / qaflags f pos line l ) (setvar 'cmdecho 0) (setvar 'logfilemode 1) ;Réinitialiser le .log (setq f (open (getvar 'LogFileName) "w")) (write-line "" f) (close f) ;écrire la liste dans l'historique de commande (command "_LOGFILEON") (setvar 'qaflags 2) (setvar 'cmdecho 1) (command "_-plot" "_y" "" "?" nil) (setvar 'cmdecho 0) (setvar 'qaflags 0) (command "_LOGFILEOFF") (setq f (open (getvar 'LogFileName) "R")) (while (setq line (read-line f)) (while (setq pos (vl-string-search "\"" line nil)) (setq line (vl-string-subst "" "\"" line pos)) ) (if (eq (substr line 1 2) " ") (setq l (cons (vl-string-subst "" ".pc3" (vl-string-subst "" " " line)) l)) ) ) (close f) (setvar 'logfilemode 0) (setvar 'cmdecho 1) l )
  5. Bonjour à tous, J'espère tout le monde va bien. J'ai créé un lisp qui retourne la liste des imprimantes système par le biais de la commande _-plot, qui permet d'afficher les imprimantes système dans l'historique de l'invite de commande (un bon gros F2 quoi) que j'enregistre pour extraire la liste. Bref. Le problème que le F2 n'est pas très silencieux, et je n'arrive pas à l'empêcher. Auriez-vous une solution autre que de ne passer par une commande ? 🙂 Merci beaucoup ! Matt.
  6. Ah zut pardon, ça avait déjà été répondu ici.
  7. Bonjour à tous, J'espère que vous allez bien. Pour les besoins d'un export de polyligne à rentrer dans un post processus de CN sans passer par son logiciel, j'aimerais convertir une polyligne sélectionnée en lignes (ça c'est pas bien compliqué) et en arcs (là c'est plus compliqué haha). Le post pro demande 3 points d'arc : Point de départ / milieu de l'arc / point d'arrivée. J'ai cherché sur le net, et pas trouvé grand chose. Pour l'instant je me cantonne juste à essayer de reproduire la polyligne en lignes et arcs sans la décomposer. L'idéal serait une routine permettant de retourner les coordonnées du milieu de l'arc en fonction du point de départ / point d'arrivée / bulge de l'arc dans la polyligne. Avez-vous qqh dans ce genre ? Merci beaucoup. Matt.
  8. Ah zut désolé je n'avais pas vu ton dernier message ! Ben si tu as une solution autre, oui je veux bien voir ton code stp ! Merci !Matt.
  9. Salut Luna, Ouf tes recherches corroborent les miennes. Je pensais que ça venait de BricsCAD... Du coup est-ce possible de récupérer des valeurs utilisateur par vlisp, autrement que pas des variables ?Je ne comprends pas grand chose à vlisp, c'est pas la même logique de l'autolisp et je trouve la documentation mal foutue. Mais ce n'est qu'un avis. J'utilise le ruby pour sketchup et la doc est très bien fournie. Là je sèche presque tout de suite et obligé de passer par les forums. Ceci dit merci pour votre savoir mis à dispo, c'est top !Bref je m'égare. Merci à toi Luna, et merci aux autre qui pourront m'aiguiller.
  10. Bonjour à tous, Petite question, je cherche à retrouver sur BricsCAD le dernier angle utilisé par la commande _rotate. La variable 'lastangle ne donne rien, en tout cas pas avec la commande _rotate. Càd la variable ne change pas après la fin de la commande. Du coup j'ai cherché un peu, et suis tombé sur un post du forum autodesk datant de 2002 (!), qui permettait de retrouver la variable en VL. Mais la ligne ci-dessous ne fonctionne pas sur BricsCAD : (vla-getInterfaceObject (vlax-get-acad-object) "AcadX.InputManager") Cette ligne fonctionne-t-elle sur AutoCAD ? C'est sûrement le ProgID qui est inextistant,j'ai cherché en vain à trouver un équivalent sur BricsCAD, la fonction 'getInterfaceObject' et surtout les potentiels ProgID associés ne sont pas répertoriés. Avez-vous une idée ?Merci !Matt.
  11. Chalut, C'est encore en phase de test, j'ai pas encore géré les changements de SCU ni les angles obtus, et j'ai pas trop de temps à consacrer à la prog en ce moment ! Mais je peux te montrer le bout de code en l'état. Dis moi ce que tu en penses !Bonne journée. da.lsp
  12. Dac je vais tester ça, merci !
  13. Bonjour Luno, chat va ? Merci pour ta réponse. Oui, j'avais bien compris cette subtilité, mais le comportement de la sélection des commandes citées au-dessus montrent que c'est possible. Je souhaite créer une commande similaire à _dimangular qui permettrait de donner l'angle "à enlever" de 2 lignes (ou segments, suivant les cas), comme le montre le schéma ci-dessous : Vu qu'il s'agit de segments, je ne sais pas comment récupérer les infos en lisp si je passe par la commande _dimangular. Donc j'essaie de reproduire le comprtement de _dimangular. Vois-tu ?
  14. Bonjour à tous, J'ai fouillé un peu sans succès, vous m'excuserez si le sujet a déjà été traité. Je cherche à sélectionner des segments de polylignes comme la méthode de sélection des commandes _trim _extend ou _dimangular. Je me dis que quelqu'un a déjà dû plancher sur le sujet. Sélectionner des sub-entités de bloc reste assez simple, mais des segmets de polyligne, je sèche. Avez-vous des idées ? Merci à vous.
  15. Matt666

    EXPORT MODELE 3D

    Salut, Sinon par ici : https://forums.sketc...kp-to-dwg/48027 Et sinon une explication des objets exportés ici : https://help.sketchup.com/en/sketchup/importing-and-exporting-cad-files
  16. Matt666

    Draftsight

    Bonjour à tous, quelqu'un aurait-il une install de Draftsight 2018 (je ne sais pas si elle existe mais apparemment il yaurait un SP3 pour cette version) qui traine dans un coin de disque dur ? Merci à vous !
  17. Un truc comme ça ? (defun c:test ( / l s) (setq l (list '("FIS02" "FIS") '("REA" "OBS") '("PHO" "PH") '("DIVERS" "DIVERSID") ) ) (foreach pt (ai_table "layer" 0) (foreach elt l (if (vl-position (strcase (substr pt 1 (strlen (car elt)))) (mapcar 'car l)) (progn (setq s (strcat (last elt) (substr pt (1+ (strlen (car elt)))))) (if (tblsearch "layer" s) (princ (strcat "\nCalque '" s "' existant.")) (progn (entmod (subst (cons 2 s)(cons 2 pt)(entget (tblobjname "layer" pt)))) (princ (strcat "\nCalque '" pt "' renommé en '" s "'.")) ) ) ) ) ) ) (princ) )
  18. Matt666

    insertion block

    Pour laisser faire l'utilisateur dans une commande, il faut entrer PAUSE : (command "_insert" "appel" PAUSE "" "" "")
  19. Matt666

    insertion block

    Salut, Dans ta commande _insert tu mets un "" après le nom du bloc, alors qu'il te demande le point d'insertion. Enlève-le donc. Ensuite tu mets des (), veux-tu dire "" ? La commande pour juste l'insérer au point 0 : (command "_insert" "nom_block" '(0.0 0.0 0.0) "" "" "")
  20. Matt666

    Adieu Patrick_35

    Oh... Repose en paix cher Patrick. Je me rappelle il y a quelques temps les challenges Lisp, il était très contributeur avec toi Gilles.
  21. Salut Gilles, Merci pour la bibliothèque, bien utile, rien que pour comprendre un peu mieux les ordres de tracé. On est d'accord que la liste d'objets (olst) demandée dans la fonction gc:SetRelativeDrawOrder est une entité de type liste, du genre (list obj1 obj2 obj3), est pas un truc en vl- que je ne comprends pas encore ? De plus il me faut piocher dans l'ordre de tracé d'un block record pour l'insérer dans un autre block record. La fonction swaporder me plaisait bien mais elle ne peut 'ranger' des entités que dans une table, et pas dans 2. En Lisp je m'en sortirais assez bien je pense, mais je ne sais même pas comment ouvrir une entité en vl... Nul. Par exemple je ne sais pas comment voir (ou ouvrir) les entités composant la table de tracé (ou déployer la liste pour mieux la comprendre) et/ou quelle est l'information qui range les entités au sein de la table (l'ordre de tri dans la table ?). Si je pouvais récupérer l'information de tri d'une entité appartenant d'une table appartenant à un bloc X pour l'insérer dans une entité d'une table d'un bloc Y ce serait l'idéal, mais je sèche là dessus. Merci de votre aide.
  22. Ca ne fonctionne pas. J'ai essayé d'utiliser la commande vla-swaporder de l'entité de l'ancien bloc vers celle du nouveau, mais rien n'y fait. ;reprendre l'ordre de tracé de la définition source (setq dict (vla-getextensiondictionary (vla-get-block (vla-get-activelayout (vla-get-activedocument (vlax-get-acad-object)))))) (if (not (zerop (vla-get-count dict))) (setq tbl (vla-getobject dict "ACAD_SORTENTS")) (setq tbl (vla-addobject dict "ACAD_SORTENTS" "AcDbSortentsTable")) ) ;recupérer les entités de l'ancienne définition (setq dxf (cdr (assoc -2 (tblsearch "block" os)))) (while dxf (setq osl (cons dxf osl) dxf (entnext dxf) ) ) ;recupérer les entités de la nouvelle définition (setq dxf (cdr (assoc -2 (tblsearch "block" ns)))) (while dxf (setq nsl (cons dxf nsl) dxf (entnext dxf) ) ) (repeat (setq n (length osl)) (setq n (1- n) obj (vlax-ename->vla-object (nth n osl)) nbj (vlax-ename->vla-object (nth n nsl)) ) ;(vla-swaporder tbl obj nbj) (vla-swaporder tbl nbj obj) )
  23. Ok je vois. Tu m'as donnée une idée : Reprendre l'ordre de tracé de l'ancienne définition pour la copier sur la nouvelle. A tester. Merci !
  24. Bonjour à tous, J'ai un petit blocage sur une routine et j'aimerais un peu d'aide. Cette routine, qui rend un bloc sélectionné unique, fonctionne très bien mais les entités du nouveau bloc perdent l'ordre de tracé défini dans le bloc source. Voici le code : ;Name: BU ;Version: 1.2 ;Bcad Version: After V8 ;Date: 2017 ;Description: rendre un bloc unique ;History: ;v1.0 2017 1ère version ;v1.1 20190319 Amélioration du code ;v1.2 20190523 Prend en compte l'ordre des objets (defun c:BU ( / *error* acdoc osmode sel e n os bl l str ns dxf) ;STR2LST (gile) (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) ) ) ;LST2STR (gile) (defun lst2str (lst sep) (if (cadr lst) (strcat (vl-princ-to-string (car lst)) sep (lst2str (cdr lst) sep) ) (vl-princ-to-string (car lst)) ) ) (vl-load-com) ;Fonction d'erreur (defun *error* (msg) (if (and msg (not (vl-position msg '("Fonction annulée" "Function cancelled" "quit / exit abort"))) ) (princ (strcat (if (= "fr_FR" (getvar 'locale)) "\nErreur: " "\Error: " ) msg)) ) (setvar 'cmdecho 1) (setvar 'osmode osmode) (vla-endUndoMark acdoc) (princ) ) ;table de tri des entités du dessin (setq osmode (getvar 'osmode) acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) ) (if (not (and (setq sel (ssget "i")) (eq 1 (sslength sel)) (eq "INSERT" (cdr (assoc 0 (entget (setq e (ssname sel 0)))))) )) (while (not (and (setq e (entsel "\nSelectionner le bloc à rendre unique : ")) (eq (cdr (assoc 0 (entget (setq e (car e))))) "INSERT") ) )) ) (setq n 1 os (cdr (assoc 2 (setq e (entget e)))) bl (ai_table "block" 2) ) ; trouver un nom a la nouvelle reference (if (setq l (str2lst os "#")) (if (< (length l) 2) (while (member (setq str (strcat (car l) "#" (itoa n))) bl) (setq n (1+ n)) ) ;if not (progn (setq str (lst2str (reverse (cdr (reverse l))) "#")) (while (member (setq str (strcat (car l) "#" (itoa n))) bl) (setq n (1+ n)) ) ) ) ;if not (while (member (setq str (strcat os "#" (itoa n))) bl) (setq n (1+ n)) ) ) (setq ns (getstring T (strcat "\nNouveau nom du bloc '" (cdr (assoc 2 e)) "' <" str "> : "))) (if (eq ns "") (setq ns str)) (if (tblsearch "block" ns) (progn (princ "\nNom de bloc existant dans la base.") (exit) ) ) (vla-startUndoMark acdoc) (setvar 'cmdecho 0) (setvar 'osmode 0) ; trouver la reference de bloc (setq dxf (cdr (assoc -2 (tblsearch "block" os)))) ;header definition: (entmake (list '(0 . "BLOCK") (cons 2 ns) '(70 . 2) (cons 10 '(0 0 0)) ) ) ;body definition: (while dxf (entmake (cdr (entget dxf))) (setq dxf (entnext dxf)) ) ;footer definition: (entmake '((0 . "ENDBLK"))) (vle-entmod 2 (cdr (assoc -1 e)) ns) (princ (strcat "\nBloc '" os "' rendu unique '" ns "'.")) (*error* nil) ) Déjà, le code fonctionne t'il chez vous ? Il fonctionne très bien sur BricsCAD.Avez-vous une idée ? Merci ! Matt.
  25. Matt666

    Extensions pour Firefox

    Salut, Ublock Origin, très bon oui et mieux qu'adblock certainement. HTTPS Everywhere aussi, Sharp Color Picker, qui permet de récupérer le code couleur d'un point sur l'écran X-notifier, notifie l'arrivée de nouveaux mails. Nimbus Screen capture, copie d'écran avec défilement possible.
×
×
  • 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é