Fundream Posté(e) le 14 mars 2013 Posté(e) le 14 mars 2013 Voici un lisp qui fonctionne bien pour insérer mes blocs mais en plus de ça je voudrais simplement qu'il trace un trait entre P1 et P2, je ne maitrise pas du tout le langage donc si une bonne âme pouvait me venir en aide. Merci ;Insertion de tubes en diagonale(defun c:T () ;Supprimer l'echo du deroulement de commande (setvar "cmdecho" 0) ;Mise a nil de la longueur de deplacement (setq LD nil) ;Scu general (command "scu" "g") ;Cliquer 1er et 2eme point (setq P1 (getpoint "\n1er point : ")) (setq P2 (getpoint "\n2eme point : ")) ;Recuperation des x,y,z, des points d'insertion (setq X1 (car P1)) (setq X2 (car P2)) (setq Y1 (cadr P1)) (setq Y2 (cadr P2)) (setq Z1 (caddr P1)) (setq Z2 (caddr P2)) ;Calcul de la distance entre p1 et p2 dans le scu courant (setq D (distance (trans P1 0 1) (trans P2 0 1))) ;Memorisation et Mise a zero de l'accrochage (setq accro (getvar "osmode")) (setvar "osmode" 0) ;Condition du calcul des tubes en fonction de la distance entre p1 et p2 (cond ((< D 0.40) (changscu) (command "inserer" "UC05" (trans P1 0 1) "" "" 0) (setq LD (/ (- 0.50 D) 2)) ) ((and (>= D 0.40) (< D 0.90)) (changscu) (command "inserer" "UC10" (trans P1 0 1) "" "" 0) (setq LD (/ (- 1.00 D) 2)) ) ((and (>= D 0.90) (< D 1.40)) (changscu) (command "inserer" "UC15" (trans P1 0 1) "" "" 0) (setq LD (/ (- 1.50 D) 2)) ) ((and (>= D 1.40) (< D 1.90)) (changscu) (command "inserer" "UC20" (trans P1 0 1) "" "" 0) (setq LD (/ (- 2.00 D) 2)) ) ((and (>= D 1.90) (< D 2.40)) (changscu) (command "inserer" "UC25" (trans P1 0 1) "" "" 0) (setq LD (/ (- 2.50 D) 2)) ) ((and (>= D 2.40) (< D 2.90)) (changscu) (command "inserer" "UC30" (trans P1 0 1) "" "" 0) (setq LD (/ (- 3.00 D) 2)) ) ((and (>= D 2.90) (< D 3.40)) (changscu) (command "inserer" "UC35" (trans P1 0 1) "" "" 0) (setq LD (/ (- 3.50 D) 2)) ) ((and (>= D 3.40) (< D 3.90)) (changscu) (command "inserer" "UC40" (trans P1 0 1) "" "" 0) (setq LD (/ (- 4.00 D) 2)) ) ((and (>= D 3.90) (< D 4.40)) (changscu) (command "inserer" "UC45" (trans P1 0 1) "" "" 0) (setq LD (/ (- 4.50 D) 2)) ) ((and (>= D 4.40) (< D 4.90)) (changscu) (command "inserer" "UC50" (trans P1 0 1) "" "" 0) (setq LD (/ (- 5.00 D) 2)) ) ((and (>= D 4.90) (< D 5.40)) (changscu) (command "inserer" "UC55" (trans P1 0 1) "" "" 0) (setq LD (/ (- 5.50 D) 2)) ) ((and (>= D 5.40) (< D 5.90)) (changscu) (command "inserer" "UC60" (trans P1 0 1) "" "" 0) (setq LD (/ (- 6.00 D) 2)) ) ) ;Si on passe dans une des conditions on deplace la planche sinon ;message d'erreur (if (/= LD nil) (command "deplacer" "d" "" (trans P1 0 1) (polar (trans P1 0 1) 0 ( - LD))) (alert "Tube trop long") ) ;Rebasculement sur le scu general et sur l'accrochage en memoire (command "scu" "g") (setvar "osmode" accro) ;Supprimer le message de fin du programme (princ)) Autocad 2015 - Lumion 3D - SCIA EngineerI7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
Patrick_35 Posté(e) le 14 mars 2013 Posté(e) le 14 mars 2013 Salut (command "_.line" p1 p2 "") @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Fundream Posté(e) le 14 mars 2013 Auteur Posté(e) le 14 mars 2013 Vaut mieux un qui sait que 10 qui cherchent. Merci Tu saurais la mettre dans un calque spécifique également ? Idéalement le calque "Tube" ? Et alors le top ce serait qu'il forme un nouveau bloc avec le bloc inséré. PS : J'étais pas loin il me manquait les derniers " " Autocad 2015 - Lumion 3D - SCIA EngineerI7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
Carboleum Posté(e) le 14 mars 2013 Posté(e) le 14 mars 2013 Vaut mieux un qui sait que 10 qui cherchent. Merci Tu saurais la mettre dans un calque spécifique également ? Idéalement le calque "Tube" ? PS : J'étais pas loin il me manquait les derniers " " (command "line" p1 p2 "")(command "chprop" (entlast) "" "layer" "Tube" "") Carboléüm, qui dessine aussi à la main -> Carboleum's sketchblog
VDH-Bruno Posté(e) le 14 mars 2013 Posté(e) le 14 mars 2013 Bonjour, Ou comme ceci:(entmake (list '(0 . "LINE") '(8 . "Tube") (cons 10 p1) (cons 11 p2))) A+ Apprendre => Prendre => Rendre
Fundream Posté(e) le 14 mars 2013 Auteur Posté(e) le 14 mars 2013 Merci merci, la dernière solution me plais parce quelle fait tout d'un coup est crée même le calque Tube qui n'existe pas. Autocad 2015 - Lumion 3D - SCIA EngineerI7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
Fundream Posté(e) le 15 mars 2013 Auteur Posté(e) le 15 mars 2013 Et il y a moyen d’attribuer une couleur au calque Tube créé ? Une petite idée pour faire un seul et même bloc de ce trait et du bloc inséré ? Autocad 2015 - Lumion 3D - SCIA EngineerI7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
Fundream Posté(e) le 2 août 2013 Auteur Posté(e) le 2 août 2013 Un petit up pour ce problème toujours d'actualité. Merci Autocad 2015 - Lumion 3D - SCIA EngineerI7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
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