Invité pleche.damien Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 Bonjour, je cherche à faire fonctionner la commande "diviser" sous autocad avec une insertion de bloc (cercle) qui suit un segment. Malheuresement une érreur c'est introduit dans mon programme lisp. Je pense que c'est sur la dernière ligne de lisp. Pouvez vous m'aider..?Faut t'il également créer le bloc dans un fichier autocad DWG qui est appelé sur le chemin de parcour d'option..? (defun c:acier11 () (setq ptac3 (getpoint "/n donner le premier point")) (setq ptac4 (getpoint "/n donner le deuxieme point")) (setq d1 (distance ptac3 ptac4)) (setq nbr11 (getint "/n donner nombre acier")) (command "diviser" d1 "B" "cercle" "O" nbr11) )
capde06 Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 d1 est une distancele premier argument de la commande "diviser" doit designer un objet Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
capde06 Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 moi je ferais comme ca (defun c:acier11 () (setq nbr11 (getint "/n donner nombre acier")) (command "diviser" (pause) "B" "cercle" "O" nbr11) ) Vous fîtes ce que vous pûtes et vous m'épatâtes !!!!
Invité pleche.damien Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 OUI mais même si je mais pour l'objet: "diviser" ptac3 ptac4 ; pour désigner le segment, se dernier est bien diviser mais le bloc cercle ne s'insère pas correctement!!! comment faire je débute en lisp
wookichu Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 à peu pret la même rponse que capde06 une petite piste de réflexion: la commande diviser que tu appelle demande que tu lui donne un objet (ligne ou polyligne) alors que tu lui donne une distance (d1)... vite fait : (defun c:acier11 () (princ "choix de l'objet a diviser") (setq ss (ssget)) (setq nbr11 (getint "/n donner nombre acier")) (command "diviser" ss "B" "cercle" "O" nbr11) ) ps : le ssget te permet de faire ta sélection d'objet de plus pense que ce que tu nome cercle doit être un bloc déjà défini dans ton dessin.
Invité pleche.damien Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 MERCI pour cette piste malheuresement pour effectuer un programme rapide je ne pense pas sélectioner dans autocad le segment, je veux qu'il se sélectionne automatiquement, j'ai donc regarder l'aide autocad que pense tu de sela??? MERCI A TOUSSE (ssget [sel-method] [ptac3 [ptac4]][pt-list] [filter-list])
wookichu Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 je veux qu'il se sélectionne automatiquement ben là il faudrait qu'on ai un peu plus de renseignements sur l'objet à diviser...-est-il dans un calque spécial-a-t-il une longueur spécifique-un type de ligne spécifique-une couleur spécifique-que sait-je encore??
Invité pleche.damien Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 wookichu ton programme fonctionne bien mintenant pour l'adapter à mes souhait je ne créer pas de calque spécifique je suis seulement dans le calque 0, Ceci dit les point "ptac3" "ptac4" sont des variable qui définisse les deux extrémités du segment et donc représente une distance de segment qui varie selon le point de clic. La distance n'est doonc pas constante. VOILA je pense que c'est info sont suffisante, si tu as une piste pour m'aider? MERCI
bryce Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 Bonjour, Si tu veux quelque chose de rapide, à quoi ça sert de demander à l'utilisateur de cliquer 2 points (2 clics en étant obligé de faire attention aux accrochages), plutôt que de lui demander simplement de cliquer sur 1 objet comme te le suggèrent capde06 et wookichu ??? Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
wookichu Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 Si je comprend bien: au départ tu n'as pas d'objet existant pour appliquer ta division et tu veux juste cliquer deux points pour créer une ligne qui sera divisée avec tes bloc?
Invité pleche.damien Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 OUI BRYCE Tu a raison seulement les lignes lisp que j'ai écrite pour la command "diviser" fait partie d'un programme plus conséquent qui déssine mais fondation automatiquement, j'ai donc simplifier la lecture de mon programme dans se sens, car en effet dans mon programme d'ensemble je ne serai pas en trin de cliquer car les points ptac3 et ptac4 se positionerons automatiquement. J'espere être claire, salutations
wookichu Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 je pense que ceci devrait faire l'affaire... (defun c:acier11 () (setq ptac3 (getpoint "/n donner le premier point")) (setq ptac4 (getpoint "/n donner le deuxieme point")) (setq ptac3 (cons 10 ptac3)) (setq ptac4 (cons 11 ptac4)) (setq lin (list '(0 . "line") '(8 . "0") ptac3 ptac4)) (entmake lin) (setq d1 (entlast)) (setq nbr11 (getint "/n donner nombre acier")) (command "diviser" d1 "B" "cercle" "O" nbr11) (entdel d1) )
Patrick_35 Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 Salut Et avec polar ? (defun c:acier11 () (setq ptac3 (getpoint "/n donner le premier point")) (setq ptac4 (getpoint ptac3 "/n donner le deuxieme point")) (setq nbr11 (getint "/n donner nombre acier")) (setq d1 (/ (distance ptac3 ptac4) (1+ nbr11))) (setq dist d1) (setq ang (angle ptac3 ptac4)) (repeat nbr11 (command "_.insert" "cercle" "_none" (polar ptac3 ang dist) "1" "1" (* (/ ang pi) 180.0)) (setq dist (+ dist d1)) ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité pleche.damien Posté(e) le 16 mai 2011 Posté(e) le 16 mai 2011 MERCI PATRICK Ta routine marche nickel a+
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