Matt666
Membres-
Compteur de contenus
736 -
Inscription
-
Dernière visite
-
Jours gagnés
2
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Matt666
-
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut, Pendant ce temps là, j'ai amélioré mon petit bout de code (tordu, je vous l'accorde) en lisp et avec l'aide des commandes autocad. (defun c:ttp ( / e1 e2 pt el ctr temp_pt1 temp_pt2) (while (not (setq e1 (nentsel "\n1ère entité de tangeance : ")))) (while (not (setq e2 (nentsel "\n2nde entité de tangeance : ")))) (if (angle (car e1) (car e2)) (progn (while (not (setq pt (getpoint "\nPoint d'intersection : ")))) (setvar 'cmdecho 0) (command "_.circle" "_3P" "_tan" (cadr e1) "_tan" (cadr e2) pt) (setq el (entlast) ctr (cdr (assoc 10 (entget el))) ) (command "_.line" ctr (setq temp_pt1 (osnap (cadr e1) "_per")) "" "_.line" ctr (setq temp_pt2 (osnap (cadr e2) "_per")) "" ) (while el (entdel el) (setq el (entnext el)) ) (command "_.arc" temp_pt1 temp_pt2 pt) (setvar 'cmdecho 1) ) (princ "\nEntités parallèles.") ) (princ) ) J'aimerais bien trouver les deux intersections tangeantes de l'arc autrement qu'en dessinant des lignes avec accroche perpendiculaire puis les supprimer, mais je ne sais pas comment faire (en lisp, hein). La fonction osnap demande un point en amont pour faire une perpendiculaire. Bonnne journée. -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Super, merci gile. C'est vrai que le .net semble intéressant et surtout l'apprendre peut s'avérer non négligeable puisqu'utilisé un peu partout. -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Dac avec lecrabe, C'est beau.. @gile : Pardonne mon ignorance, je ne connais rien en C#/.NET : - De manière générale quel est l'intérêt d'écrire en .net plutôt qu'en Lisp en dehors du côté "temps réel" (là tu vas me sortir un sujet écrit en 2012, je le sens bien ! ^^ ) - Tu écris ça sur quoi ? J'ai cru lire ici que tu conseillais les versions Express gratuites Visual C# Express ou Visual VB Express. - Je suppose que tu compiles en .msi (ou .exe d'ailleurs) avec ce même outil ? Merci ! -
Aperçu de la sélection par type d'entité
Matt666 a répondu à un(e) sujet de Matt666 dans Débuter en LISP
Voici donc le bout de code, sous forme de fonction. ;Name: entself ;Version: 1.0 ;Bcad Version: After V8 ;Date: 20190228 ;Description: Invite utilisateur de sélection unique (comme entsel), avec filtre sur type d'entité et sur aperçu en surbrillance ; Arguments : ; str : Message d'invite ; lst : Liste des types d'entités à filtrer ; Ex : (entself "Sélectionner les entités : " '("INSERT" "LINE")) ;History: ; v1.0 20190228 1ère version (defun entself ( str lst / *error* osmode key e loop) (vl-load-com) ;Fonction d'erreur (defun *error* (msg) (if (and msg (/= msg "Fonction annulée") (/= msg "Function cancelled") (/= msg "quit / exit abort") ) (princ (strcat (if (= "fr_FR" (getvar 'locale)) "\nErreur: " "\Error: ") msg)) ) (setvar 'osmode osmode) (vla-endUndoMark acdoc) (princ) ) (vla-startUndoMark (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))) (setq loop T osmode (getvar 'osmode)) (princ str) (setvar 'osmode 0) (sssetfirst nil nil) (while (and (setq key (grread T 12 2)) (/= (car key) 3) loop) (cond ((= 5 (car key)) (if e (redraw e 4)) (if (setq e (nentselp (cadr key))) (progn (if (eq 4 (length e)) (setq e (last (last e))) (setq e (car e)) ) (if (vl-position (cdr (assoc 0 (entget e))) lst) (redraw e 3) (setq e nil) ) ) ) ) ((eq 11 (car key)) (if e (redraw e 4)) (setq e nil loop nil) ) ((equal key '(2 13)) (if e (redraw e 4)) (setq loop nil) ) ) ) (if e (sssetfirst nil (ssadd e (ssadd)))) (*error* nil) e ) Dites moi ce que vous en pensez. Ca fonctionne sur BricsCAD, je ne garantis rien sur AutoCAD. -
Aperçu de la sélection par type d'entité
Matt666 a répondu à un(e) sujet de Matt666 dans Débuter en LISP
Dac, je finis un truc pas clair avec sssetfirst qui n'affiche pas les poignées à la fin et je vous présente le petit. -
Aperçu de la sélection par type d'entité
Matt666 a répondu à un(e) sujet de Matt666 dans Débuter en LISP
C'est bon j'ai trouvé comment faire, merci à vous. C'est encore à l'état d'ébauche, si ça intéresse quelques-uns je ettrai le bout de code. -
Aperçu de la sélection par type d'entité
Matt666 a répondu à un(e) sujet de Matt666 dans Débuter en LISP
Salut Vincent, et merci pour ta réponse. redraw fonctionne si une entité est sélectionnée, or là ce sont les entités qui sont sous le pointeur, avant clic gauche de sélection. Mais peut être couplé avec un grread, je vais creuser un peu merci. -
Bonjour à tous, Petite question à priori assez simple, je ne vois pas comment faire : Sur Autocad, lorsqu'on demande à l'utilisateur de sélectionner une ou plusieurs entités, on peut afficher l'entité sous la souris en surbrillance ou en pointillés. J'aimerais contrôler cette surbrillance pour n'afficher que les entités d'un type particulier (bloc ou ligne par exemple) en pointillés. Avez-vous une solution, idéalement compatible entsel et ssget ? Merci à vous.
-
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
ah oui ok... Comme d'habitude, c'est impressionant ! Bien impatient de voir comment tu fais ce genre de choses.. Bravo (gile). -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Ah oui c'est marrant, j'y pensais (le cadr) lors de l'écriture du programme ! Mais voyant que ça fontionnait je n'ai pas corrigé. BricsCad quoi ah ah Pour le trim, les options "_edge" et "_extend" sont activées dans ce but, justement : Elle permettent d'étendre les entités pour "forcer" la coupure non physiques. Oui, le fameux changement de SCU. J'avoue avoir encore du mal avec ces maudites coordonnées qui sont pourtant le coeur du logiciel ! La fonction trans est puissante et un peu compliquée à la fois, faut vraiiiiment que je m'y colle une bonne fois pour toute. Merci encore pour tes précieux retours. -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Bonuscad, déjà bravo pour le Lisp, et aussi saurais tu me dire ce que ne va pas dans mon Lisp, par hasard ? Sur bricscad ça fonctionne très bien, alors peut être l'histoire de manque de précisions évoqué plus Haut ? J'ai aussi remarqué un pb d'accroche sur le cdr du entsel (il manque juste un osnap je pense) potentiellement déclencheur d'erreur. Merci. -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Je n'arrive pas à reproduire l'erreur, la routine fonctionne chez toi ? Et j'avoue aimer utiliser les commandes natives quand on peut, plus par manque de temps justement que de flemme. -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Pourrais-tu me donner ton message d'erreur ? La 1ere commande "_E" au sein de la commande "_trim" sert à sélectionner l'option "_EDGE" La 2ème sert à sélectionner l'option "_EXTEND" Cette option étend les "limites" à partir desquelles ajuster. EN attendant, essaie de remplacer la ligne de commande "_trim" par celle ci : (command "_trim" e1 e2 "" "_Edge" "_Extend" (polar ctr (angle pt ctr) (distance pt ctr)) "") -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut, Voici un jet, vite fait, sans contrôle de cmdecho ni gestion d'erreur.En espérant que les options des commandes cercle et ajuster sont les mêmes sur autocad que sur bricscad. (defun c:ttp ( / e1 e2 pt elast) (if (and (setq e1 (entsel "\n1ère entité de tangeance : ")) (setq e2 (entsel "\n2nde entité de tangeance : ")) (setq pt (getpoint "\nPoint d'intersection : ")) ) (progn ;(setvar 'cmdecho 0) (command "_.circle" "_3P" "_tan" (cdr e1) "_tan" (cdr e2) pt) (setq elast (entlast) ctr (cdr (assoc 10 (entget elast))) ) (command "_trim" e1 e2 "" "_E" "_E" (polar ctr (angle pt ctr) (distance pt ctr)) "") ) ) (princ) ) -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Tu dois sûrement pouvoir garder l'arc en fonction des clics sur les lignes de tangeance, non ? Ou alors questionner l'utilisateur pour confirmer le coté d'arc à conserver.. -
Creer un Arc tangent à deux Elements et qui passe par un point donne
Matt666 a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut, en passant par la commande cercle, option 3 points, 2 points en tangeante et le 3ème avec le point donné, puis ajuster ? -
https://fr.wikipedia.org/wiki/Modulo_(op%C3%A9ration)
-
Supprimer plusieurs attribut de blocs différents
Matt666 a répondu à un(e) sujet de flo54 dans LISP et Visual LISP
Salut, sinon tu peux le rendre invisible dans la définition de l'attribut et le synchroniser. -
obtenir un patron de solide à partir de la 3D sketchup
Matt666 a répondu à un(e) sujet de galérienne dans Sketchup
Bonjour, essaie cette extension : https://extensions.sketchup.com/sv/content/flatten-faces Une vidéo : https://forums.sketc...fold-tool/76368 -
de l ECRAN a une LISTE
Matt666 a répondu à un(e) sujet de PHILPHIL dans Pour aller plus loin en LISP
C'est curieux que la fonction close plante mais bon si ça fonctionne de ton côté alors tant mieux. Attnetion toutefois à s'assurer que le fichier logfile soit bien rempli après sortie du Lisp,comme il l'était avant. -
Nentsel Vs Refedit+Enstel
Matt666 a répondu à un(e) sujet de Matt666 dans Pour aller plus loin en LISP
Salut bonuscad, C'est aussi mon avis. Une espèce d'image du bloc serait créée lorsqu'on l'édite. A voir si la commande bedit se comporte de la même façon (une nouvelle fonction sur Bricscad qui doit sûrement exister depuis des lustres sur Autocad). -
de l ECRAN a une LISTE
Matt666 a répondu à un(e) sujet de PHILPHIL dans Pour aller plus loin en LISP
Salut, il est un peu tard pour te répondre, mais bon.Je n'ai pas Autocad (je travaille sur Bricscad), donc encore moins sur AutoCAD architecture. Mais s'il s'agit de récupérer des données générées dans la liste de commande, tu pourrais faire ainsi : Toutes les données inscrites dans la liste de commande sont récupérées dans un fichier texte (getvar 'LogFileName). Essaie ceci, et dis moi le résultat en tapant (logfileexport) puis !l pour voir le résultat. (defun logfileexport ( / cmdecho logfilemode qaflags f line) (setq cmdecho (getvar 'cmdecho) logfilemode (getvar 'logfilemode) qaflags (getvar 'qaflags) ) (setvar 'cmdecho 0) (setvar 'logfilemode 1) ;purger le fichier texte (setq f (open (getvar 'LogFileName) "w")) (write-line "" f) (close f) (command "_LOGFILEON") (setvar 'qaflags 2) (setvar 'cmdecho 1) ;attention, bien vérifier que la commande est la bonne. (command "_PROPERTYSETDUMP" "_AREA") ;exemple de commande qui fonctionne : ;(command "_-layer" "?" "*" "") (setvar 'qaflags qaflags) (setvar 'cmdecho cmdecho) (command "_LOGFILEOFF") ;transformer le fichier en liste (setq f (open (getvar 'LogFileName) "R")) (while (setq line (read-line f)) (setq l (cons line l)) ) (close f) l ) -
Nentsel Vs Refedit+Enstel
Matt666 a répondu à un(e) sujet de Matt666 dans Pour aller plus loin en LISP
Ah, jamais compris le seqend.. Pour le moment je n'ai jamais eu l'utilité de cette condition, mais je vais creuser un peu. Ceci expliquerait peut-être un bug produit dans un lisp de normalisation d'entités à ma sauce. Merci Olivier. -
Salut, Tu n'es pas pas loin du résultat avec ton 1er code : Tu as compris comment extraire une donnée d'un attribut et quel code DXF utiliser pour obtenir la valeur de l'attribut.Tu utilises un atof pour convertir le texte en nomblre réel, ça ne sert pas à grand chose puisque tu veux copier un texte donc une chaine de caractères.Pour trouver l'attribut 'de destination' le nentsel est bon, il ne te reste plus qu'à utiliser les fonctions entmod et subst pour remplacer le texte, comme le montre les codes de bonuscad et didier. (defun c:ata (/ att num ent ent_list) (setq att (nentsel "\nDépart Sélectionner un texte ou un attribut : ") num (cdr (assoc 1 (entget (car att)))) ) (while (setq Ent (nentsel "\nSélectionner un attribut de bloc : ")) (setq ent_list (entget (car ent))) (entmod (subst (cons 1 num) (assoc 1 ent_list) ent_list)) ) (princ) )
-
Nentsel Vs Refedit+Enstel
Matt666 a répondu à un(e) sujet de Matt666 dans Pour aller plus loin en LISP
Salut, Je pense avoir trouvé comment retrouver les entités du bloc édité ; il suffit de garder la dernière entité créée dans le dessin (entlast) avant édition puis on passe sur une boucle avec (entnext) lors de l'édition du bloc. Si j'arrive à finir ce lisp, je le partagerai ici. Merci à vous.
