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
-
Regarde cette vidéo, tu verras un peu mieux comment faire !
-
Ouverture facile ou comment ouvrir un DWG avec la bonne version d\'AutoCAD
Matt666 a répondu à un(e) sujet de Eric dans Programmer en s'amusant
Ah oui didon, pas mal du tout !! Sinon petite requête... Tu ne pourrais faire un programme permettant d'imprimer n'importe quelle présentation d'un dessin sans ouvrir autocad (ou un moteur Intellicad, d'ailleurs) ? C'est à dire qu'il faudrait une fenêtre avec plusieurs listes déroulantes : une avec les présentation du ficher une autre avec les imprimantes dispo Et puis les fomats de papier... Mais ça c'est plutot en fonction de la présentation sélectionnée plus haut... J'aimerais bien le faire en lisp, mais d'une part on est obligé d'ouvrir le logiciel, et d'autre part je n'utilise que de l'autolisp, et les fonctions d'impression sont quasi-nulle.. Il faut passer par les commandes.. Voilà, je n'ai pas la moindre idée du temps que cela peut prendre, ni du niveau de difficulté !! Mais c'est juste une idée de dév intéressant (enfin pour moi, en tout cas !!)... Merci pour ces amléios bien intéressantes ! A bientot. Matt. -
Dir est une commande ms-dos. Pour voir à quoi elle sert, va dans l'aide windows, fais une recherche sur Dir.. Extrait de l'aide windows Si tu ne comprends pas bien, fais des essais avec une batch dans un répertoire... Par exemple : Il te faut un dossier avec des sous-dossiers et des fichiers. Dans ce dossier, ckique droit dans le vide du dossier pour créer un fichier texte. Renomme-le avec une extension ".bat". ensuite clique-droit dessus et choisi ouvrir Colle ceci : dir /s/b/a:d > texte.txt Enregistre et ferme. Ensuite double-clique dessus. Ce batch créé un fichier "texte.txt" à la racine de ce dossier et affiche tous les sous-dossiers depuis ce dossier. Le paramètre /b permet un retour chariot à chaque nouveau dossier trouvé... Voilà.. A bientot ! Matt.
-
Mon problème est que je ne connais pas du tout le Vlisp, parce qu'il n'est pas disponible sur BricsCAD... Enfin bon il paraitrait qu'ils les ont implémentés dans la nouvelle verison 8... Pleine de bugs pour l'instant Je ne désespère pas (trop)... A bientot ! Matt.
-
Boum !! 18 minutes plus tard, Gile le sage répond parfaitement (je n'ai même pas testé, mais je le sais, c'est tout), comme d'hab ! Je ne me répèterai pas, mais merci à toi Gile.
-
Liaison Excel et AutoCad 2008 (base de données) ??
Matt666 a répondu à un(e) sujet de jeefreeze dans AutoCAD 2008
Je viens de parcourir ce post, très intéressant !! Tout ça pour dire : Il est quand dément ce Patrick_35 !!! Hallucinant... Toi et Gile, vous êtes vraiment les rois de ce forum, c'est clair !!! Cette dévotion, moi ça me rend couac :thumbup: Comment ferions-nous sans vous... J'ai progressé à une vitesse folle depuis que je lis et relis vos commentaires, codes, analyses, suggestions, etc.. Dément, vraiment. Voilà petite touche émotion, totalement gratuite mais surtout pas intéressée ;) A bientot. Matt. -
Arrr... Bon je récupère mon PC ce WE, et avec tautocad dessus, on verra bien !! Par contre juste un truc, j'ai l'impression que pour ton premier point, (Premier point : 20) tu as mis une valeur, alors qu'il attend simplement un point (getpoint)... Il faut d'abord spécifier un point, puis entrer les valeurs à partir de ce point. Mais je vois ça ce WE.. Merci pour ce test !
-
Petit exemple d'utilisation ici ! On a une ligne de base (en vert). Sur celle ci, on veut créer une deuxième ligne qui commence à @20,-20 de l'extrémité droite et à @0,50 de l'extrémité gauche. Procédure sur la vidéo : 1- Commande Ligne 2- On tape (rpd) sur la ligne de commande puis entrée 3- Premier point de l'accroche rapide à l'extrémité droite de la ligne existante (verte) 4- Deuxième point (point de repérage temporaire) à x=20 5- Autre point de repérage temporaire à y=-20 6- Entrée pour valider le dernier point de repérage. On voit sur la ligne de commande que la commande ligne est repassée en commande courante. Le dernier point de repérage est devenu le premier point de la ligne 7- On tape (rpd) sur la ligne de commande puis entrée 8- Premier point de l'accroche rapide à l'extrémité gauche de la ligne existante (verte) 9- Deuxième point (point de repérage temporaire) correspondant à l'intersection entre l'extension du premier point de la ligne en cours de création et le premier point de l'accroche rapide 10- Autre point de repérage temporaire à y=-10 11- Entrée pour valider le dernier point de repérage. On voit sur la ligne de commande que la commande ligne est repassée en commande courante. Le dernier point de repérage est devenu l'extrémité de la ligne 12- Entrée pour finir la commande ligne... Bien évidemment on peut faire beaucoup plus court, mais c'est un exemple qui montre aussi l'utilisation de l'extension dans la commande. Voilà, j'espère que tu (vous ?) verras l'utilité de cette accroche après ça ! Ici tu vois bien que j'utilise la routine au sein d'une commande existante.. C'est une routine transparente, comme tu dis. C'est bizarre, chez moi ça fonctionne bien... tu n'as pas mis de ^c^c^c avant ?? Si c'est la cas, enlève les, ça veut dire 3 fois échap... Je travaille dans l'agencement... Donc, par exemple, - je veux que ma porte ait 1,5 millimètres de jeu Tout autour du caisson. On pourrait faire un rectangle puis le décaler de 1,5mm, mais perso j'utilise (rpd) - Le fond de mon tiroir commence à x=10mm et y=8mm de la façade Plein de trucs comme ça !! Je doute que ces exemples te soient utiles, mais ils ont le mérite d'être concrets ! Bah de rien !! Ce n'est pas grand chose à coté du travail fourni par (gile) ou Patrick_35 sur ce site... Mais c'est gentil de me le dire ! :) A bientot ! Matt.
-
Salut Lili2006 ! Ok un breton de plus !! (moi aussi en même temps)... Enfin bon après de là à dire que l'Ille et vilaine est en bretagne, c'est tout un débat ! J'ai pas été assez clair... Désolé ! Personnellement je ne peux pas appeler de commande (par exemple RPD) au sein d'une autre commande. Par contre si je tape (rpd), là ça fonctionne. Vive BricsCAD !!! Mais nan, t'inquiète !! Si tu regarde comment sont appelées les accroches objets dans AutoCAD, par exemple, tu verras qu'il faut insérer une quote avant le nom de la commande... genre 'RPD (bon par contre j'ai un doute, quand même ! je ne sais plus s'il faut mettre cette quote dans le MNU ou si on peut directement le mettre dans la ligne de commande... A tester !) Oui, je sais bien... Ca il faut le paramétrer toi même, et puis Donc, procédure : 1- Tu lances une commande ligne 2- Premier point de la ligne où tu veux 3- Là tu tapes 'RPD (si tu as fait comme tu as dit, a savoir (defun c:rpd)... Si tu as laissé comme tel, tu devras entrer (rpd). La routine se lance au sein de l'autre, et tu peux choisir les points temporaires ! Lorsque ton dernier point temporaire correspond à ton extrémité de ligne, tu appuyes sur Entrée. La ligne est construite avec le dernier point que tu as choisi ! J'ai conscience que ce n'est pas très clair, et à première vue cette routine ne semble pas très pratique... Mais personnellement je l'utilise toutes les 2 minutes !!! A savoir, que cette routine utilise les repères rapides (lorsque'on "allume" une accroche sur une entité en passant dessus) N'hésite à me dire si tu n'as pas compris... J'ai conscience de ne pas être très clair ! Merci pour ces tests ! A bientot. Matt.
-
Ouverture d\'autocad sans feuille de dessin vierge
Matt666 a répondu à un(e) sujet de jo974 dans AutoCAD 2008
Vache !! La technique de sioux !!! Dément Eric !! -
handle AttributDefinitions
Matt666 a répondu à un(e) sujet de tyrese69_ dans Pour aller plus loin en LISP
C'est le code dxf 5 qui renferme le handle d'une entité. Tu as plusieurs fonctions pour les handles : (handent "5a") -> retourne le nom (ename) de l'entité (getvar "handseed") -> retourne le prochain handle disponible (cdr (assoc 5 (entget (car (nentsel))))) -> retourne le handle de la sub entité sélectionnée (cdr (assoc 5 (entget (car (entsel))))) -> retourne le handle de l'entité sélectionnée Voilà... A bientot ! Matt. -
Si les fonctions setenv/getenv t'intéressent, regarde ici... Pour retirer une variable, je sais pas du tout comment faire :casstet: A bientot ! Matt. [Edité le 8/11/2007 par Matt666]
-
D'accord, je vois un peu mieux... Ceci dit Perso j'utiliserais plutôt un (getenv) plutot qu'un simple (setq) pour ton chemin de projet... Puisque C'est une variable importante elle se place directement dans le registre....
-
FACE 3D à projeter sur le plan (z=0)
Matt666 a répondu à un(e) sujet de thom.noisemap dans AutoCAD 2006
et pour des lignes 3d, ça ne fonctionne pas ! (ex 1ere extr 10,0,10 et 2ème 20,0,20) La commande flatten de l'outil express est très adaptée à ton besoin... [Edité le 8/11/2007 par Matt666] -
Et si tu crées ta propre fonction princ ? Je ne sais pas je n'ai pas testé... (princ2 "")
-
Salut lili2006 ! merci de t'intéresser à ce post !! Bon la routine principale commence par (defun rpd...) (rapide quoi). S'il n'y a pas de c: avant le nom, il faut taper (rpd) sur la ligne de commande d'AutoCAD. Si la routine commençait par (defun C:rpd...) il aurait fallu taper rpd sur la ligne de commande. J'ai fait parce que le logiciel que j'utilise N'EST PAS AutoCAD ! C'est BricsCAD, et il ne veut pas de commande directe au sein d'une autre commande. Car c'est là l'utilité de cette routine. De créer des points temporaires au sein d'une commande. Regarde l'exemple plus haut... Il faut créer un fichier LISP avec la routine principale et les sous-routines à l'intérieur. Ensuite je pense que tu sais comment faire ;) _appload et tout le tintouin ! Voilà en espérant avoir été aidant ! A bientot. Matt.
-
Oui mais je crois que la question est : Est-ce qu'une routine lisp sait où elle est stockée et quel est son nom.... Est-ce qu'on peut retrouver ça avec une fonction lisp... Je crois, en tout cas... Dans ce cas je n'en sais rien du tout, ça me parait un peu dur... bseb67, je ne vois pas pourquoi ???
-
Bon ben je crois que j'ai trouvé !! Si, si... Encore un problème incompréhensible sur l'inertion de blocs (??? Peut être du à BricsCAD...), mais sinon ça fonctionne très bien ! Voici la routine principale, EN EXCLUSIVITE MONDIALE ( :) ) ;;; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;;; Repérage temporaire (defun rpd ( / pt1 pt2) (setq pt1 nil pt2 nil) (if (setq pt1 (getpoint "\nPremier point : ")) (progn (initget 128) (if (setq pt2 (getpoint pt1 "\nPoint de repérage temporaire : ")) (while pt2 (if (/= (type pt2) 'list) (setq pt1 (getcrd pt2 pt1)) (setq pt1 pt2) ) (initget 128) (setq pt2 (getpoint pt1 "\nPoint de repérage temporaire : ")) ) ) pt1 )) ) Ensuite viennent se greffer quelques sous-routines, assez pratiques !! ;;;**************************************************************** ;;; Read en prenant en compte le point (defun read2 (str) (if (/= str ".") (read str) str ) ) ;;;**************************************************************** ;;; Retourne les coordonnées en fonction de la casse de la chaîne de caractères (defun getcrd (str first / ) (cond ((eq (substr str 1 1) "@") (+ (str2lst (substr str 2 (strlen str)) ",") first) ) ((vl-string-position (ascii ",") str nil nil) (str2lst (substr str 1 (strlen str)) ",") ) ((vl-string-position (ascii "<") str nil nil) (polar '(0 0 0) (atof (cadr (str2lst str "<"))) (str2lst str "<") (car (str2lst str "<")) ) ) ((and (vl-string-position (ascii "<") str nil nil) (eq (substr str 1 1) "@") ) (polar first (atof (substr (str2lst str "<") 2 (strlen (car (str2lst str "<"))) )) (str2lst str "<") (car (str2lst str "<")) ) ) ((not (vl-string-position (ascii ",") str nil nil)) (polar first (angtof (itoa (proch (atoi (angtos (angle pt1 (cadr (grread 3))))) '(0 45 90 135 180 225 270 315 360) ) )) (read2 str) ) ) ) ) ;;;**************************************************************** ;;; Retourne l'élément de la liste le plus proche du nombre demandé. (defun proch (nb lst / ) (setq lst (cons (nth (1- (vl-position nb (sort (cons nb lst) '<))) lst ) (list (nth (vl-position nb (sort (cons nb lst) '<)) lst )) ) ) (if (<= (- nb (car lst)) (- (last lst) nb)) (car lst) (last lst) ) ) ;;;**************************************************************** ;;; STR2LST ;;; Retourne une liste à partir d'une chaîne de caractères concaténée avec un caratère de séparation ;;; str = Chaîne de caractères ;;; sep = caractère de séparation ;;; ;;; (str2lst "0,1,,,,2,3,4,5,6,7,8,9" ",") -> (0 1 "" "" "" 2 3 4 5 6 7 8 9) ;;; (str2lst "0,1,2,3,4,5,6,7,8,9" "" ) -> ("0" "," "1" "," "2" "," "3" "," "4" "," "5" "," "6" "," "7" "," "8" "," "9") (defun str2lst (str sep / pos lst ) (if (/= sep "") (progn (while (setq pos (vl-string-search sep str nil)) (setq lst (cons (read2 (substr str 1 pos)) lst) str (substr str (+ (strlen sep) pos 1) ) ) ) (setq lst (cons (read2 str) lst)) ) (progn (while (/= str "") (setq lst (cons (read2 (substr str 1 1)) lst) str (substr str 2) ) ) ) ) (if lst (reverse lst)) ) Voilà... Le cahier des charges initial a été quelque peu modifié... Mais sinon ça tourne plutôt po mal !!! Attention, non testé sur Autocad !! Si des testeurs sont motivés, qu'ils n'hésitent pas ! J'ai du oublier quelques "VL-" au passage... Voilà ! Dites moi ce que vous en pensez ! PS : C'est une routine d'accrochage temporaire ! par exemple on veut commencer une ligne à 2 unités en X et deux unités en Y d'une extrémité d'une ligne existante... Voilà ! A bientot. Matt.
-
Remplacement d\'un attribut de bloc par un champ
Matt666 a répondu à un(e) sujet de lesourd2 dans AutoCAD 2007
Aaaargh ! J'ai mal lu la question... Je croyais que ct supprimer un attribut ! Désolé... -
Remplacement d\'un attribut de bloc par un champ
Matt666 a répondu à un(e) sujet de lesourd2 dans AutoCAD 2007
Salut ! Dans les outils de Gile, tu as une routine "editbloc", un truc comme ça, qui te permet de faire ce que tu veux... A bientot ! Matt. -
Sélection rapide textmult en fonction de sa largeur
Matt666 a répondu à un(e) sujet de oran dans AutoCAD 2005
Salut Oran ! Ce chiffre de largeur n'est pas assez précis pour la sélection rapide. Sinon tu fais une sélection lisp... (ssget "_x" (list (cons 0 "MTEXT")(cons 41 (cdr (assoc 41 (entget (car (entsel)))))))) A + ! Matt. -
Salut BonusCAD.. Merci pour cette solution, elle fonctionne... Sur autoCAD ! Et pas sur BricsCAD :( Sniff... Mais merci quand même ! Bred, tout à fais d'accord !!
-
Ah oui ok je vois... Par un inters ! Mon problème est que ce ne sont pas forcément que des lignes... Des polylignes par exemple !! Aille.. Merci je teste ça ! Matt.
-
Salut !! Je suis bloqué sur un lisp, parce que je n'arrive pas à sélectionner plus d'un objet qui passe par un point... Je m'en remets à vous... Exemple : 4 lignes passant par un point. Je veux sélectionner ces 4 lignes en pointant sur leur point d'intersection. Normalement avec (ssget pt), on peut sélectionner l'entité au-dessus de toutes les autres. Maintenant j'aimerais sélectionner TOUTES les lignes en une seule saisie... Comment faire ?? C'est surement simple, avec le nombre de paramètres de la fonction ssget ! Merci d'avance ! Matt.
-
Salut ! ingoenius, voici un exemple de ce qu'on peut faire pour ta petite routine "Kut 2d" avec deux points, qui symboliseraient une lame de couteau... ;;; Divise une polyligne en deux, suivant les points saisis. (defun c:POLK ( / cmdecho entl pt1 pt2 sel) (setq cmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (setq entl (entlast)) (cond ((and (setq pt1 (getpoint "\nPremier point sur la polyligne à diviser : ")) (setq pt2 (getpoint pt1 "\nDeuxième point sur la polyligne à diviser : ")) (eq (ssname (setq sel (ssget pt1)) 0) (ssname (ssget pt2) 0)) (eq (cdr (assoc 0 (entget (ssname sel 0)))) "LWPOLYLINE") ) (command "_UNDO" "d") (command "_break" pt1 pt1 "_break" pt2 pt2) (command "pedit" (ssname sel 0) "f" "") (if (/= entl (entlast)) (command "pedit" (entlast) "f" "") ) (command "_undo" "F") ) ) (setvar "cmdecho" cmdecho) (princ) ) A bientot. Matt.
