Aller au contenu

Question sur les fillets !


Messages recommandés

Posté(e)

Bonjour a tous,

 

Me voila encore coincer avec un petit problem.

 

Je ne sait pas pourquoi cela se passe. Mais aussitot que mon code arrive au fillet il arret de fonctionné et m'indique

 

Lines belonging to polylines must be consecutive or separated by one segment

 

Et voici mon code :

 

;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
;¦¦¦                   CE PROGRAM EST CONÇU POUR DESSINER                    ¦¦¦;
;¦¦¦                      UNE BOITE AUTOUR D'UN MTEXT                        ¦¦¦;
;¦¦¦ _______________________________________________________________________ ¦¦¦;

;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
;¦¦¦                   AUTEUR : CadFrank, Copyright ® 2012                   ¦¦¦;
;¦¦¦ _______________________________________________________________________ ¦¦¦;

;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
;¦¦¦                   Ce sous-program défini les calques                    ¦¦¦;
;¦¦¦ _______________________________________________________________________ ¦¦¦;

(defun NouveauCalque(/ lay)

 (foreach lay '("-LU POUTRE")
    (if (not (tblsearch "LAYER" lay))
        
      (progn
        (command "_layer" "_n" "-LU POUTRE" "_C" "96" "-LU POUTRE" "" "")  
      )
     
    );if

 );foreach

); fin NouveauCalque
;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
;¦¦¦                        Ce sous-program défini les                       ¦¦¦;
;¦¦¦                            parametres initial                           ¦¦¦;
;¦¦¦ _______________________________________________________________________ ¦¦¦;

(defun Parametreinitial ()

 (setq retour (list
                (cons "osmode" (getvar 'osmode))
                (cons "clayer" (getvar 'clayer))
	 (cons "filletrad" (getvar 'filletrad))
              )
 )
 (setvar 'OSMODE 0)
   
 retour ; la dernière expression est retournée par la fonction

); fin parametreinitial

;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
;¦¦¦                        Ce sous-program remet les                        ¦¦¦;
;¦¦¦                            parametres initial                           ¦¦¦;
;¦¦¦ _______________________________________________________________________ ¦¦¦;

(defun Parametrefin (retour)

 (foreach p retour
   (setvar (car p) (cdr p))
 )

);fin parametrefin

;¦¦¦ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¦¦¦;
;¦¦¦                  Ce sous-program défini une Polyligne                   ¦¦¦;
;¦¦¦ _______________________________________________________________________ ¦¦¦;

(defun _Poly (po1 po2 po3 po4 po5 po6 po7 po8 po9 po10 po11 po12 po13 w)
   (entmakex (list '(0 . "LWPOLYLINE")
                   '(100 . "AcDbEntity")
                   '(100 . "AcDbPolyline")
                   '(90 . 14)
                   '(70 . 1)
                   '(8 . "-LU POUTRE")
                   (cons 10 po1)
                   (cons 10 po2)
                   (cons 10 po3)
                   (cons 10 po4)
	    (cons 10 po5)
	    (cons 10 po6)
	    (cons 10 po7)
	    (cons 10 po8)
	    (cons 10 po9)
	    (cons 10 po10)
	    (cons 10 po11)
	    (cons 10 po12)
	    (cons 10 po13)
                   (cons 43 w)
             )
   )
)

(defun c:pt (/ rep nom O L H EA ES k k1 R1 R2 os ent1 Frad init
     pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12)
 
  (if (= H nil)(setq H 533))
  (if (= L nil)(setq L 209))
  (if (= EA nil)(setq EA 10.2))
  (if (= ES nil)(setq ES 15.6))
  (if (= k nil)(setq k 34))
  (if (= k1 nil)(setq k1 22))
  (if (= nom nil)(setq nom "W530 x 92"))

  (initget 1 "O N")
  (setq rep(getkword"\n voulez vous changer les paramètres [O/N] : "))
     (if(= rep "O")
        (progn
        
        (setq nom (getstring T "\nDonnez le nom du profilé : "))   
        (setq H (getreal "\nDonnez la hauteur du profilé [d] : "))
        (setq L (getreal "\nDonnez la largeur du profilé [b] : "))
        (setq EA (getreal "\nDonnez l'épaisseur de l'âme [w] : "))
        (setq ES (getreal "\nDonnez l'épaisseur de la semelle [t] : "))
        (setq k (getreal "\nDonnez la distance du [k] : "))
 (setq k1 (getreal "\nDonnez la distance du [k1] : "))
        
        );progn
       
     );if end


  (setq O (getpoint "\nPointez le point d'origine : "))
  (setq pt1 (polar O pi (/ L 2)))
  (setq pt2 (polar pt1 (/ pi 2)ES))
  (setq pt3 (polar pt2 0 (/(- L EA) 2)))
  (setq pt4 (list (car pt3)(+ (cadr O) (- H ES))))
  (setq pt5 (list (car pt1)(cadr pt4)))
  (setq pt6 (list (car pt1) (+ (cadr pt5) ES)))
  (setq pt7 (polar pt6 0 L))
  (setq pt8 (list(car pt7) (cadr pt5)))
  (setq pt9 (list(+ (car pt4) EA) (cadr pt8)))
  (setq pt10 (list (car pt9) (cadr pt3)))
  (setq pt11 (list (car pt8) (cadr pt10)))
  (setq pt12 (list (car pt11) (cadr pt1)))
  (setq R1 (* ES 0.4))
  (setq R2 (/ (+ (- k ES) (- k1 (/ EA 2))) 2))
  

  (NouveauCalque)
  (setq init (Parametreinitial))

  (_Poly O pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 0)
  (setq Frad (getvar 'filletrad))
  (command "_.fillet" pt1 pt2 "")
  (setvar 'filletrad R1)
  (command "_.fillet" pt2 pt3 "")
  (setvar 'filletrad R2)
  (command "_.fillet" pt3 pt4 ""
  "_.fillet" pt4 pt5 "")
  (setvar 'filletrad R1)
  (command "_.fillet" pt5 pt6 "")
  (setvar 'filletrad Frad)
  (command "_.fillet" pt6 pt7 "")
  (command "_.fillet" pt7 pt8 "")
  (setvar 'filletrad R1)
  (command "_.fillet" pt8 pt9 "")
  (setvar 'filletrad R2)
  (command "_.fillet" pt9 pt10 "")
  (command "_.fillet" pt10 pt11 "")
  (setvar 'filletrad R1)
  (command "_.fillet" pt11 pt12 "")

  (setq ent1(entlast))
  
  
  (command "block" nom O ent1 O "")
  (command "insert" nom O "" "1" "" 0 "") 
  
  (parametrefin init)

 (princ)

);defun c:

 

Quelqu'un pourrait-il m'expliquer se que je fais de pas correct

 

Merci !

Posté(e)

la selection sur le point de création de la polyligne doit prendre le segment précédent à chaque fois.

Tente de remplacer :

 

(command "_.fillet" pt1 pt2 "")

 

Par un truc du genre :

 

 (command "_.fillet" (list (/ (+ (car pt1) (car pt2))2) (/ (+ (cadr pt1) (cadr pt2))2)) (list (/ (+ (car pt2) (car pt3))2) (/ (+ (cadr pt2) (cadr pt3))2)) "")

 

et ainsi de suite dans le code.

 

Tu peu aussi tenter tracer des lignes dont tu récupérera le nom avec un entlast.

Il ne te restera plus qu'a faire des raccord entre les entités par leur nom.

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité