Aller au contenu

INSERTION DE BLOC PUIS EXPLOSION DU BLOC


Messages recommandés

Posté(e)

Bonjours a tous,

J'aimerais savoir si quelqu'un pourrais m'aider en lisp.

Je m'explique : je veus inserer un bloc type puis pouvoir l'exploser pour changer ses dimensions.

En fait j'ai creer un fichier lisp et il ne marche pas bien.

Voisi in apperçu

;;armatures parametré

;;============================

(defun err (s)

(if (/= s "Fonction annul‚")

(princ (strcat "\nErreur: " s))

)

(setq p nil)

(setq *error* olderr)

(princ)

)

;---------------------------------

(defun c:arma ()

(setq olderr *error*

*error* err)

(setq oldcmd (getvar "cmdecho"))

(setvar "cmdecho" 0)

(textscr)

(princ "\n")

(princ "\n")

(princ "\n")

(princ "\n")

(princ "\n Diametres --> A : U")

(princ "\n B : L")

(princ "\n C : D")

(princ "\n D : I")

(princ "\n")

(princ "\n")

(initget "A B C D")

(setq choix (getkword "\n ...... Choisissez une lettre :"))

(if (= choix nil) (setq choix "A"))

(cond ((= choix "A") (U))

((= choix "B") (L))

((= choix "C") (D))

((= choix "D") (I))

)

(setvar "cmdecho" oldcmd)

;; (princ)

)

(princ)

;;-----------------------------------------

 

;;U

(defun U ()

(Utab)

)

;;-----------------------------------------

 

;;L

(defun L ()

(Ltab)

)

;;-----------------------------------------

 

;;D

(defun D ()

(Dtab)

)

;;-----------------------------------------

 

;;I

(defun I ()

(Itab)

)

;;-----------------------------------------

;;tableau U

(defun Utab ()

(initget "U6 U8 U10 U12 U14 U16 U18 U20 U25 U32")

(setq dim (getkword "\n ...... Diametre de la barre ? "))

(if (= dim nil) (setq dim "U6"))

(cond ((= dim "U6") (command "insert" "U6"))

((= dim "U8") (command "insert" "U8" ptab "1" "" "0"))

((= dim "U10") (command "insert" "U10" ptab "1" "" "0"))

((= dim "U12") (command "insert" "U12" ptab "1" "" "0"))

((= dim "U14") (command "insert" "U14" ptab "1" "" "0"))

((= dim "U16") (command "insert" "U16" ptab "1" "" "0"))

((= dim "U18") (command "insert" "U18" ptab "1" "" "0"))

((= dim "U20") (command "insert" "U20" ptab "1" "" "0"))

((= dim "U25") (command "insert" "U25" ptab "1" "" "0"))

((= dim "U32") (command "insert" "U32" ptab "1" "" "0"))

)

)

;;-----------------------------------------

;;tableau L

(defun Ltab ()

(initget "L6 L8 L10 L12 L14 L16 L18 L20 L25 L32")

(setq dim (getkword "\n ...... Diametre de la barre ? "))

(if (= dim nil) (setq dim "L6"))

(cond ((= dim "L6") (command "insert" "L6" ptab "1" "" "0" "EXPLODE"))

((= dim "L8") (command "insert" "L8" ptab "1" "" "0" "EXPLODE"))

((= dim "L10") (command "insert" "L10" ptab "1" "" "0" "EXPLODE"))

((= dim "L12") (command "insert" "L12" ptab "1" "" "0" "EXPLODE"))

((= dim "L14") (command "insert" "L14" ptab "1" "" "0" "EXPLODE"))

((= dim "L16") (command "insert" "L16" ptab "1" "" "0" "EXPLODE"))

((= dim "L18") (command "insert" "L18" ptab "1" "" "0" "EXPLODE"))

((= dim "L20") (command "insert" "L20" ptab "1" "" "0" "EXPLODE"))

((= dim "L25") (command "insert" "L25" ptab "1" "" "0" "EXPLODE"))

((= dim "L32") (command "insert" "L32" ptab "1" "" "0" "EXPLODE"))

)

)

;;-----------------------------------------

;;tableau D

(defun Dtab ()

(initget "D6 D8 D10 D12 D14 D16 D18 D20 D25 D32")

(setq dim (getkword "\n ...... Diametre de la barre ? "))

(if (= dim nil) (setq dim "D6"))

(cond ((= dim "D6") (command "insert" "D6" ptab "1" "" "0" "EXPLODE"))

((= dim "D8") (command "insert" "D8" ptab "1" "" "0" "EXPLODE"))

((= dim "D10") (command "insert" "D10" ptab "1" "" "0" "EXPLODE"))

((= dim "D12") (command "insert" "D12" ptab "1" "" "0" "EXPLODE"))

((= dim "D14") (command "insert" "D14" ptab "1" "" "0" "EXPLODE"))

((= dim "D16") (command "insert" "D16" ptab "1" "" "0" "EXPLODE"))

((= dim "D18") (command "insert" "D18" ptab "1" "" "0" "EXPLODE"))

((= dim "D20") (command "insert" "D20" ptab "1" "" "0" "EXPLODE"))

((= dim "D25") (command "insert" "D25" ptab "1" "" "0" "EXPLODE"))

((= dim "D32") (command "insert" "D32" ptab "1" "" "0" "EXPLODE"))

)

)

;;-----------------------------------------

;;tableau I

(defun Itab ()

(initget "I6 I8 I10 I12 I14 I16 I18 I20 I25 I32")

(setq dim (getkword "\n ...... Diametre de la barre ? "))

(if (= dim nil) (setq dim "I6"))

(cond ((= dim "I6") (command "insert" "I6" ptab "1" "" "0" "EXPLODE"))

((= dim "I8") (command "insert" "I8" ptab "1" "" "0" "EXPLODE"))

((= dim "I10") (command "insert" "I10" ptab "1" "" "0" "EXPLODE"))

((= dim "I12") (command "insert" "I12" ptab "1" "" "0" "EXPLODE"))

((= dim "I14") (command "insert" "I14" ptab "1" "" "0" "EXPLODE"))

((= dim "I16") (command "insert" "I16" ptab "1" "" "0" "EXPLODE"))

((= dim "I18") (command "insert" "I18" ptab "1" "" "0" "EXPLODE"))

((= dim "I20") (command "insert" "I20" ptab "1" "" "0" "EXPLODE"))

((= dim "I25") (command "insert" "I25" ptab "1" "" "0" "EXPLODE"))

((= dim "I32") (command "insert" "I32" ptab "1" "" "0" "EXPLODE"))

)

)

(princ)

 

La partie que j'ai mis en gras est a faire exploser.

Merci d'avance pour toute l'aide que vous me fournirez.

Posté(e)

Un grand merci, ça a fonctionner.

Mais je n'arrive pas à inserer mon bloc a l'échelle 1/1.

Pourriez-vous me dire comment faire, car cela ne fait pas longtemps que je me suis mis au lisp.

Posté(e)

Salut

 

(command "_.insert" "*MonBloc" ptab 1 1 0)

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bonjour,

 

ne serait-il pas plus simple de faire dessiner une polyligne par le lisp plutôt que d'insérer un bloc ?

... du genre :

 

 
(defun c:ancfer ()
 (setq PT1 (getpoint "\n1er Point : "))
 (setq PT2 (getpoint PT1 "\2ème Point : "))
 (setq PHIEXT 0.030) ; diamètre extérieur d'un HA25 par exemple
 (setq PHIN 0.025) ; diamètre nominal d'un HA 25
 (setq RM (/ 0.250 2)) ; rayon du mandrin de cintrage

 (setq PT1G (trans PT1 1 0)) ; conservation des coordonnées en scu général
 (setq PT2G (trans PT2 1 0))

 (setq OLDOS (getvar "OSMODE"))
 (setvar "OSMODE" 0) ;supprimer accroche aux objets


 (command "_ucs" "_3p" PT1 PT2 "") ; dans le scu aligné avec les 2 points
 (setq PT1 (trans PT1G 0 1)) ; coordonnées dans le scu local
 (setq PT2 (trans PT2G 0 1))

 (setq PT1 (polar PT1 (/ PI 2) (* 0.5 PHIEXT))) ; décalage d'un demi diamètre
 (setq PT2 (polar PT2 (/ PI 2) (* 0.5 PHIEXT)))


 ; calcul des points pour construire la barre
 (setq PT13 (polar PT1 0.00 (+ RM PHIEXT)))
 (setq PT14 (polar PT2 PI (+ RM PHIEXT)))

 (setq R1 (polar PT13 (/ PI 2) (+ RM (* 0.5 PHIEXT))))
 (setq R2 (polar PT14 (/ PI 2) (+ RM (* 0.5 PHIEXT))))

 (setq PT12 (polar R1 (/ (* 3 PI) 4)  (+ RM (* 0.5 PHIEXT))))
 (setq PT15 (polar R2 (/ PI 4)  (+ RM (* 0.5 PHIEXT))))

 (setq PT11 (polar PT12 (/ PI 4)  (* 10 PHIN)))
 (setq PT16 (polar PT15 (/ (* 3 PI) 4)  (* 10 PHIN)))

 (setq OLDWID (getvar "plinewid"))
 (setvar "plinewid" PHIEXT) ; on fixe l'épaisseur de la polyligne

 ; dessiner la barre
 (command "_pline" PT11 PT12 "_a" PT13 "_l" PT14 "_a" PT15 "_l" PT16 "")

 (command "_ucs" "_p") ; on revient au scu précédent
 (setvar "OSMODE" OLDOS) ; on remet les accroches objets
 
 (setvar "PLINEWID" OLDWID) ; on remet l'épaisseur de polyligne
 (princ)  
) 

 

Et on peut imaginer la même chose pour l'ensemble des façonnages standards (cadres, U, barres droites, frettes, étriers ...), le tout agrémenté avec une boîte de dialogue pour permettre à l'utilisateur de choisir le type d'acier (HA ou DX) et son diamètre, par exemple.

 

C'est beaucoup plus souple d'utilisation que les blocs explosés.

 

Amicalement

 

Zebulon_

 

 

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Au sujet du bloc inséré et décomposé tout de suite, Bred suggère la syntaxe suivante

 

(command "_.insert" "*MonBloc" ptab 1 1 0)

 

Un bloc décomposé directement à l'insertion ne peut avoir qu'une echelle uniforme, donc la commande _insert ne demande pas de facteur d'échelle en Y, mais uniquement en X

 

Essaye la syntaxe

 

 
(command "_.insert" "*MonBloc" ptab 1 0)

 

Amicalement

 

Zebulon_

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Je ne comprend pas.... chez moi ça marche...

 

 (setq ptab '(0 0 0))
(command "_.insert" "*MonBloc" ptab 1 1 0)

 

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Je ne comprend pas.... chez moi ça marche...

 

Tu es sûr ?

 

(command "_.insert" "*MonBloc" ptab 1 1 0)

 

A mon avis, le bloc est inséré avec une echelle uniforme de 1 et un angle de rotation de 1 puis le lisp essaye de lancer une commande 0 qui n'est pas reconnue.

 

Essaye de faire

 

(command "_.insert" "*MonBloc" ptab 10 10 0)

 

tu verras mieux la rotation de 10, car celle de 1 peut passer inapperçue

 

Je persiste donc a dire que la syntaxe est

 

(command "_.insert" "*MonBloc" ptab FACECH ANGLEROT )

 

Amicalement

 

Zebulon_

 

[Edité le 3/10/2006 par zebulon_]

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

En effet, tu as raison, je n'avais pas vu qu'il me faisait une rotation de 1.....

Donc tu as raison, c'est bien ce que tu propose qui fonctionne.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

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é