nicolas2
Membres-
Compteur de contenus
238 -
Inscription
-
Dernière visite
-
Jours gagnés
1
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par nicolas2
-
Capture pour enregistrement automatique
nicolas2 a répondu à un(e) sujet de nicolas2 dans Débuter en LISP
OK Patrick, juste une bricolerie, peut-on fermer le plan de départ et se retrouver sur le plan créé (-MAUS) Merci pour ton aide -
Capture pour enregistrement automatique
nicolas2 a répondu à un(e) sujet de nicolas2 dans Débuter en LISP
Salut Patrick, on s'est croisé. J'ai ajouté ton morceau de routine à ce LISP. (defun c:nettoyeur ( / ent dxf_ent js jsc n nw_js i l_dxf h) [surligneur] (setq js (ssget)) (setq nom (substr (getvar "dwgprefix") 13 5)) (setq nom (strcat nom "-MAUS.dwg")) (if (findfile nom) (command "_.wblock" "_yes" nom "" "0,0" js "") (command "_.wblock" nom "" "0,0" js "") ) (command "_.undo" "1")[/surligneur] (command "_zoom" "_e") (while (null (setq ent (entsel "\nDésigner un cercle type: ")))) (setq dxf_ent (entget (car ent))) (setq p1 (cdr (assoc 10 (entget (car ent))))) (command "_.move" "_all" "" "_none" (trans p1 0 1) "_none" "*0.0,0.0,0.0") (cond ((eq (cdr (assoc 0 dxf_ent)) "CIRCLE") (setq js (ssget "_x" (list (assoc 410 dxf_ent) (assoc 67 dxf_ent))) jsc (ssget "_x" (list (assoc 0 dxf_ent) (assoc 410 dxf_ent) (assoc 67 dxf_ent) (assoc 40 dxf_ent))) n -1 ) (repeat (sslength jsc) (ssdel (ssname jsc (setq n (1+ n))) js) ) (if (not (tblsearch "LAYER" "UT1")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "UT1") (70 . 0) (62 . 7) (6 . "Continuous") (290 . 1) (370 . -3) ) ) ) (if js (repeat (setq n (sslength js)) (entdel (ssname js (setq n (1- n)))) ) ) (if jsc (repeat (setq n (sslength jsc)) (entmod (subst '(8 . "UT1") (assoc 8 (setq dxf_ent (entget (ssname jsc (setq n (1- n)))))) dxf_ent)) ) ) ) ) (command "_zoom" "_e") (setq nw_js (ssadd) i 0) (while (setq js (ssget"_:S")) (ssadd (ssname js 0) nw_js) (setq l_dxf (entget (ssname js 0))) (setq h (* (cdr (assoc 40 l_dxf)) 0.5) i (1+ i)) (entmake (list '(0 . "TEXT") '(10 0. 0. 0.) (cons 11 (cdr (assoc 10 l_dxf))) (cons 40 h) (cons 1 (itoa i)) '(72 . 1) '(73 . 2) ) ) ) (setq js (ssget "_X")) (cond (js (repeat (setq n (sslength js)) (ssadd (ssname js (setq n (1- n))) nw_js) ) ) ) (cond (nw_js (setq n -1) (repeat (sslength nw_js) (entmake (setq l_dxf (entget (ssname nw_js (setq n (1+ n)))))) (entdel (cdar l_dxf)) ) ) ) (prin1) ) Il tourne sans message d'erreur, mais je ne le retrouve pas dans mon arborescence (voir mon message ci-dessus pour l'emplacement). Merci pour ton aide. -
Capture pour enregistrement automatique
nicolas2 a répondu à un(e) sujet de nicolas2 dans Débuter en LISP
J'ai des N° d'affaire 12305 - 12306 etc.................. Un plan 2277-2 (le -2 pour la 2ième révision du plan) pour l'affaire 12305 Un plan 2278-2 pour l'affaire 12306 etc..................... http://img35.imageshack.us/img35/9066/classeur12.jpg Sous le dossier "plan" de l'affaire 12305, je voudrais un nouveau DWG "12305-MAUS" issu du plan 2277-2 Sous le dossier 'plan" de l'affaire 12306, "12306-MAUS" issu du plan 2278-2 etc....... Merci pour ton aide -
Capture pour enregistrement automatique
nicolas2 a répondu à un(e) sujet de nicolas2 dans Débuter en LISP
OK Tramber, je suis tout ouie. -
Bonjour à tous. Voila je voudrais savoir s'il est possible d'enregister automatiquement une partie d'un plan (capture) sous un nouveau plan automatiquement nommé ? Une petite explication : - un plan "2277-2" - une capture - ma "capture" s'enregistre sous un nouveau plan nommé "12305-MAUS"" (mes affaires sont nommées 12305-12306.........et l'arborescence est toujours identique. Si je le refait sous l'affaire 12310, le nom sera "12310-MAUS" etc...) http://img15.imageshack.us/img15/824/capturepourmausf.jpg Pour l'instant : - je copie - je colle sous un nouveau plan - j'enregistre en renommant. La manip n'est pas compliquée, mais revient systématiquement. Le fait de le faire en LISP me permettrait de l'insérer dans différentes autres routines. Merci pour votre aide
-
Bonjour à tous. Peut-on, une fois la ligne tracée, modifier la "longueur du segment droit" ? Pour l'instant, si le résultat ne convient pas, j'efface et retrace. La droite n'étant pas un bloc complet, mais des segments mis les uns après les autres, cela devient moins simple. Merci pour votre aide.
-
Merci encore Bonuscad, tout fonctionne correctement. :P
-
Merci Bonuscad pour ton aide. Donc si je veux tout déplacer pour que le centre de mon cercle p1 soit sur 0,0 (command "_move" "_all" "" "_gcs" p1 0,0 ) un truc dans ce genre (merci de ne pas rigoler, mes connaissances en LISP sont plus que médiocres comme tu as pu le constater... :casstet: ) Merci pour ton aide
-
Re-bonjour, Quand je déplace tout mon plan [surligneur] manuellement[/surligneur] à X=0 et Y=0, je me retrouve avec : X = 0 Y = 0 Normale X = 0 Normale Y = 0 Avec le [surligneur] LISP[/surligneur], j'ai essayé ça (command "_ocs" "_move" (trans p1 0 1) "") (command "_ucs" "_move" (trans p1 0 1) "") mais je n'arrive pas à avoir les 4 XY à 0 :mad: Merci pour votre aide
-
Plus clairement :casstet: http://img366.imageshack.us/img366/8671/faisceau.jpg pas de soucis avec X=0 et Y=0 que je déplace tout manuellement ou avec le LISP, par contre en manuel ma Normale X=0 Y=0, mais avec le LISP, il a gardé Normale X=-401,.. et Normale Y=-999,.. (les coordonnés avant déplacement) et ma machine outil prend cela comme origine. Merci pour votre aide
-
Bonjour à tous, j'avai un LISP qui fonctionnait sur AUTOCAD 2004, je viens de passer en 2010 et un problème de déplacement de SCU est survenu. Le repère SCU se déplace bien physiquement sur le centre de mon cercle (p1) mais ce point là ne prend plus x=0, y=0. Lorsque je passe sur un logiciel machine, je m'aperçois qu'il a garder les coordonnés de départ, sans modifications....? (defun c:nettoyeur ( / ent dxf_ent js jsc n nw_js i l_dxf h) (command "_zoom" "_e") (while (null (setq ent (entsel "\nDésigner un cercle type: ")))) (setq dxf_ent (entget (car ent))) (setq p1 (cdr (assoc 10 (entget (car ent))))) [surligneur] (command "_ucs" "_move" (trans p1 0 1) "")[/surligneur] (cond ((eq (cdr (assoc 0 dxf_ent)) "CIRCLE") (setq js (ssget "_x" (list (assoc 410 dxf_ent) (assoc 67 dxf_ent))) jsc (ssget "_x" (list (assoc 0 dxf_ent) (assoc 410 dxf_ent) (assoc 67 dxf_ent) (assoc 40 dxf_ent))) n -1 ) (repeat (sslength jsc) (ssdel (ssname jsc (setq n (1+ n))) js) ) (if (not (tblsearch "LAYER" "UT1")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "UT1") (70 . 0) (62 . 7) (6 . "Continuous") (290 . 1) (370 . -3) ) ) ) (if js (repeat (setq n (sslength js)) (entdel (ssname js (setq n (1- n)))) ) ) (if jsc (repeat (setq n (sslength jsc)) (entmod (subst '(8 . "UT1") (assoc 8 (setq dxf_ent (entget (ssname jsc (setq n (1- n)))))) dxf_ent)) ) ) ) ) (command "_zoom" "_e") (setq nw_js (ssadd) i 0) (while (setq js (ssget"_:S")) (ssadd (ssname js 0) nw_js) (setq l_dxf (entget (ssname js 0))) (setq h (* (cdr (assoc 40 l_dxf)) 0.5) i (1+ i)) (entmake (list '(0 . "TEXT") '(10 0. 0. 0.) (cons 11 (cdr (assoc 10 l_dxf))) (cons 40 h) (cons 1 (itoa i)) '(72 . 1) '(73 . 2) ) ) ) (setq js (ssget "_X")) (cond (js (repeat (setq n (sslength js)) (ssadd (ssname js (setq n (1- n))) nw_js) ) ) ) (cond (nw_js (setq n -1) (repeat (sslength nw_js) (entmake (setq l_dxf (entget (ssname nw_js (setq n (1+ n)))))) (entdel (cdar l_dxf)) ) ) ) (prin1) ) Merci pour votre aide
-
Réseau au pas triangulaire
nicolas2 a répondu à un(e) sujet de nicolas2 dans Pour aller plus loin en LISP
Bonjour Bonuscad. Je vois bien la logique de ta construction (avec le triangle) et je ne là remet pas en cause. Laissons la routine se dérouler. A la suite, ce que je pensai : - Comptabilser le nombre total de cercles (je n'ai rien d'autre à l'écran, le plan est vierge. Le nombre total d'objets à l'écran moins1 pour le Grand cercle). - Si on utilise la logique du deuxième croquis (avec les cercles concentriques, bien que ta construction soit faite avec les triangles ;) ), n'y a t'il pas possibilité..... Cette logique n'est peut-être pas facilement (ou du tout) retranscriptible en LISP..., ou la démarche bien mal choisie.... je n'en sais rien, voila pourquoi je m'adresse à vous en toute sincérité. Merci pour votre aide -
Merci biagio. On se perd avec des rubans et une foultitude de trucs qui me semblent inutiles dans cette 2010 (je rejoins rebcao) du coup on en oublie les commandes de ce genre (pourtant rangées dans un coin de mon cerveau). Il y a plus de gadgets intuiles (voir encombrants) que de réelles nouveautés. :mad:
-
Je viens de passer d'AUTOCAD2004 à 2010. Lorsque je fais un miroir d'un texte, sous 2004 le texte ne subissait pas le miroir (il était toujours lisible), sous 2010 il subit le miroir. Une idée..... Merci à tous
-
Réseau au pas triangulaire
nicolas2 a répondu à un(e) sujet de nicolas2 dans Pour aller plus loin en LISP
Bonjour et Merci Bonuscad de jeter un coup d'oeil à mon soucis. Ne serait-il pas plus simple de laisser tourner ta 1ière routine jusqu'au bout et d'ensuite demander à l'utilisateur de rentrer un nombre de tubes et à ce moment là comptabiliser les tubes et les supprimer jusqu'a obtenir le nombre voulu ? En imaginant partir de 0° et du Grand Ø, on effectue le travail en sens inverse (avec des cercles concentriques de + en + petits) et les tubes rencontrés sont supprimés..... http://img21.imageshack.us/img21/6586/faisceauessai.jpg La construction étant faite avec la logique du polygone (je pense que s'est la seule possible), gardons là. Merci encore pour ton aide -
Bonjour à tous, Nous avions un programme d'importation de nomenclature qui collait une nomenclature Excel sur un plan AUTOCAD (développement fait par un pro) Nous sommes passés de la version 2004 à 2010 et ce programme ne tourne plus. Les nomenclatures font environ 100 lignes, 12 colonnes. Je pensais qu'il pouvait exister, maintenant, directement sous Autocad, une fonction permettant cet import, sans passer par un autre programme. Le développeur nous demande 3 jours de travail pour le remettre à la sauce AUTOCAD 2010. Qu'en pensez-vous ? Merci à tous
-
Réseau au pas triangulaire
nicolas2 a répondu à un(e) sujet de nicolas2 dans Pour aller plus loin en LISP
Merci Bonuscad pour ta réponse. Effectivement, j'étais arrivé à la même conclusion dans la démarche (uniquement en réfléchissant à la construction polygonale utilisée dans la routine). Si la construction se faisait sur des cercles concentriques, on pourrait la stopper sur un nombre précis, mais je ne vois pas la logique mathématique de construction dans ce cas là.... Merci pour ton aide. -
Réseau au pas triangulaire
nicolas2 a répondu à un(e) sujet de nicolas2 dans Pour aller plus loin en LISP
Juste une info oubliée dans le message ci-dessus. L'implantation se fait quand même de façon à être isncrite dans un cercle, mais le nombre de tubes prédomine sur le Ø d'inscription. Merci à tous -
Bonjour à tous, Bonuscad m'avait fait une routine pour tracer des cercles sur un pas triangulaire (ou carré d'ailleurs), limités par un Ø d'inscription. (defun c:special_array ( / pt_c s_rad g_rad pas key js tmp_rad obj e_length t_length pt) (vl-load-com) (initget 1) (setq pt_c (getpoint "\nPoint centre: ")) (initget 7) (setq s_rad (getdist pt_c "\nPetit rayon: ") g_rad s_rad) (while (<= g_rad s_rad) (initget 7) (setq g_rad (getdist pt_c "\nGrand rayon: ")) ) (initget 1 "Triangulaire Carré _Triangular Square") (setq key (getkword "\nPAs [Triangulaire/Carré]: ")) (initget 7) (setq pas (getdist (if (eq key "Triangular") "\nPas triangulaire: " "\nPas carré: ")) js (ssadd)) (setvar "cmdecho" 0) (command "_.undo" "_group") (command "_.circle" "_none" pt_c s_rad) (setq js (ssadd (entlast) js)) (command "_.circle" "_none" pt_c g_rad) (setq tmp_rad (if (eq key "Triangular") (* (sqrt 3) 0.5 pas) pas)) (while (<= (+ tmp_rad s_rad) g_rad) (command "_.polygon" (if (eq key "Triangular") "3" "4") "_none" pt_c "_circumscribed" tmp_rad) (setq obj (vlax-ename->vla-object (setq e_last (entlast))) e_length 0.0 t_length (vlax-get-property obj 'Length) ) (while (< e_length t_length) (setq pt (vlax-curve-getPointAtDist obj e_length)) (if (<= (+ (distance pt (trans pt_c 1 0)) s_rad) g_rad) (progn (command "_.circle" "_none" (trans pt 0 1) s_rad) (setq js (ssadd (entlast) js)) ) ) (setq e_length (+ e_length pas)) ) (entdel e_last) (setq tmp_rad (if (eq key "Triangular") (+ tmp_rad (* (sqrt 3) 0.5 pas)) (+ tmp_rad pas))) ) (command "_.undo" "_end") (setvar "cmdecho" 1) (command "_.rotate" js "" pt_c) (prin1) Serait-il possible d'avoir une variante avec le Nombre total de cercles et non un Ø d'inscription ? Merci à tous.
-
Re-salut, Tu copies la routine dans ton "bloc note" et tu l'enregistres (créer un dossier "Lisp" par exemple sous Autocad) avec le nom "soudure" au format .lsp ce qui donne : soudure.lsp Ensuite, (sous Autocad) tu vas dans Outil - Charger une application - (ouverture d'un fenêtre "Charger/Décharger les applications) - Contenu ("Au démarrage" avec le petit cartable) - (ouverture d'une fenêtre "Applications lancées au démarrage") Ajouter (tu lui montres le dossier que tu viens d'enregistrer) - Tu refermes toutes les fenêtres et tu relances Autocad. A l'ouverture, le fichier va être automatiquement charger. Dans la ligne de Commande: tu tapes "soudure" et tu suis ce qu'il te demande. Voila voila, cela te donne une idée de ce que l'on peut faire. Ensuite, si cela te convient, repose ta question sous le forum "LISP" et les Lispeurs se feront un plaisir de t'aider dans ta démarche.
-
Bonjour, tu peux passer par un lisp comme celui-ci par exemple: (defun c:soudure (/ l0 p1 p2 dist ang l45 esp nb extr) (initget 7) (setq l0 (getdist "\nlongueur du segment droit: ")) (initget 1) (setq p1 (getpoint "\nPoint de départ: ")) (initget 1) (setq p2 (getpoint p1 "\nSecond point: ")) (setq dist (distance p1 p2) ang (angle p1 p2) l45 (/ l0 4.0) esp (/ l0 3.0) nb (fix (/ dist (+ l0 esp))) extr (/ (+ (- dist (* nb (+ l0 esp))) l0) 2.0) ) (command "_.pline" "_non" p1 "_non" (setq p1 (polar p1 ang extr)) "_non" (polar p1 (+ ang (* pi 0.25)) l45) "" ) (setq p1 (polar p1 ang esp)) (repeat (1- nb) (command "_.pline" "_non" (polar p1 (+ ang (* 1.25 pi)) l45) "_non" p1 "_non" (setq p1 (polar p1 ang l0)) "_non" (polar p1 (+ ang (* pi 0.25)) l45) "" ) (setq p1 (polar p1 ang esp)) ) (command "_.pline" "_non" (polar p1 (+ ang (* 1.25 pi)) l45) "_non" p1 "_non" p2 "" ) (princ) ) Tu donnes un point de départ, un point d'arrivée, la longueur d'un segment. Ceci n'est pas gérer en tant que ligne, mais ça peut être une solution
-
Merci Bseb67, merci Gile tout est OK :) ------------------------------------------- Celui qui pose une question est bête 5 minutes, celui qui n'en pose jamais l'est toute sa vie
-
Bonjour à tous, je n'arrive pas à restaurer l'accrochage aux objets en fin de routine :( (defun c:FB (/ DiamExt RayInt RayCar Ep HtBD HtTot PtIns X0 X1 Y0 Y1 Ang1) [surligneur] (setq os (getvar "osmode")) ; stocker (setvar "osmode" 0) ; désactiver[/surligneur] (setq DiamExt (getreal "\nDiamètre extérieur: ") RayCar (/ DiamExt 10.0) Ep (getreal "\nEpaisseur: ") HtBD (getreal "\nHauteur du bord droit: ") HtTot (+ HtBD Ep (- DiamExt (sqrt (- (expt (- DiamExt RayCar) 2.0) (expt (- (* DiamExt 0.5) Ep RayCar) 2.0) ) ) ) ) PtIns (getpoint "\nPoint d'insertion: ") X0 (- (car PtIns) (* DiamExt 0.5)) X1 (+ (car PtIns) (* DiamExt 0.5)) Y0 (- (+ (cadr PtIns) HtTot) DiamExt Ep) Y1 (+ (cadr PtIns) HtBD) ) (command "_.PLINE" (list X1 (nth 1 PtIns)) (list X1 Y1) "_A" "_CE" ; Arc défini par son centre (list (- X1 RayCar Ep) Y1) "_A" ; Angle... (setq Ang1 (/ (* 180 (angle (list (nth 0 PtIns) Y0) (list (- X1 RayCar Ep) Y1) ) ) pi ) ) "_CE" (list (nth 0 PtIns) Y0) "_A" ; Angle... (- 180 (* 2 Ang1)) "_CE" (list (+ X0 RayCar Ep) Y1) "_A" ; Angle... Ang1 "_L" ; Ligne... (list X0 (nth 1 PtIns)) "_C" ; Ferme la polyligne [surligneur] (setvar "osmode" os) ; restaurer[/surligneur] ) ) (prompt "M.D.D. - FondB.lsp chargé.") (prompt "\nTapez FB pour dessiner un fond GRC suivant NF E 81-102." ) (princ) Merci pour votre aide
-
Bravo et Merci Gile, le résultat est là, il faut maintenant que je prenne le temps de décortiquer ta routine pour la comprendre entièrement. :D Encore Merci et à bientôt.
-
Bonjour à tous. J'ai une petite routine pour représenter une ligne de soudure. (defun c:soudure() (setq pt1 (getpoint "\n pt de départ : ")) On lance la commande en demandant le point de départ. (setq l (getreal "\nlongueur du segment droit: ")) (setq l1 (/ l 4)) le segment à 45° est égale au 1/4 du segment droit (setq pt2 (polar pt1 (* pi 1.75) l1)) trace à 45° (setq pt3 (polar pt2 (* pi 2) l)) trace à 90° (setq pt4 (polar pt3 (* pi 1.75) l1)) trace à 45° (command "_line" pt1 pt2 "") trace la ligne de la variable pt1 à pt2 (command "_line" pt2 pt3 "") trace la ligne de la variable pt2 à pt3 (command "_line" pt3 pt4 "") trace la ligne de la variable pt3 à pt4 (princ) fin ) Pour l'instant je copie/colle mon segment pour le dupliquer et je le coupe pour qu'il prenne la dimension voulue. Je ne maîtrise pas assez pour l'automatiser en vue de l'utiliser comme ceci. http://img256.imageshack.us/img256/6188/lignedesoudure.jpg L'espace entre segments est égale au 1/5 de la longueur demandée. Dans le cas 1,2 ou 3 (différence de Lg.) , les 2 extrémités sont ajustées (peu importante la distance entre le point de départ et le point d'arrivée, sur le même plan les soudures sont à la même échelle). Merci pour votre aide
