nicolas2 Posté(e) le 23 avril 2009 Posté(e) le 23 avril 2009 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
nicolas2 Posté(e) le 23 avril 2009 Auteur Posté(e) le 23 avril 2009 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
nicolas2 Posté(e) le 23 avril 2009 Auteur Posté(e) le 23 avril 2009 Re-bonjour, Quand je déplace tout mon plan [surligneur] manuellement[/surligneur] à X=0 et Y=0, je me retrouve avec :X = 0Y = 0Normale X = 0Normale 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
bonuscad Posté(e) le 23 avril 2009 Posté(e) le 23 avril 2009 Lorsque je passe sur un logiciel machine, je m'aperçois qu'il a garder les coordonnés de départ, sans modifications....? Si le logiciel s'appuie sur les données DXF, il te faut savoir que celles-ci sont TOUJOURS exprimé en référence au SCG.Donc créer des SCU ne résoudra pas ton problème, les entités seront exprimé par rapport au SCG dans la base donnée d'autocad. Il te faut bouger toutes les entités vers le point d'origine souhaité dans le SCG. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
nicolas2 Posté(e) le 23 avril 2009 Auteur Posté(e) le 23 avril 2009 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
bonuscad Posté(e) le 23 avril 2009 Posté(e) le 23 avril 2009 "_gcs" A part ça, je vois pas à quoi ça correspond, la démarche est bonne.Pour le faire en toute sécurité, je l'écrirais comme ceci: (command "_.move" "_all" "" "_none" (trans p1 0 1) "_none" "*0.0,0.0,0.0") "_none" pour invalider ponctuellement l'accroche objet si actif.(trans p1 0 1) pour avoir le point dans le scu courant"*0.0,0.0,0.0" pour effectuer ver le déplacement obligatoirement vers le 0,0,0 du scg même si pas courant :équivalent à (trans '(0.0 0.0 0.0) 0 1) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
nicolas2 Posté(e) le 24 avril 2009 Auteur Posté(e) le 24 avril 2009 Merci encore Bonuscad,tout fonctionne correctement. :P
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant