Aller au contenu

insertion de bloc


Max73

Messages recommandés

Bonjour,

existe t il une lisp simple qui permet d insérer des blocs que je pourrais modifié SVP.

Je m'explique j ai des nom de bloc par exemple "coude_DN025","coude_DN032","coude_Dn100 ......" ect et je voudrais avoir une lisp qui me permet d insérer les bloc en choisissant la fin du nom de bloc, exemple "coude_DNxxx" ou "XXX" je le choisir avant d inséré mon bloc. Et ensuite l échelle reste fois 1 et que je donne la rotation.

et que cela ce relance automatiquement après.

 

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

Le problème vient essentiellement des attributs 😉
Mais là comme chat, je dirais quelques chose dans le genre ?

(defun c:FOO (/ att str suf)
  (setq str "Coude_DN") ; (setq str (getstring T "\nRenseigner le préfixe : "))
  (setq att (getvar "ATTDIA"))
  (setvar "ATTDIA" 0)
  (while (/= "" (setq suf (getstring (strcat "\nNom du bloc : " str))))
    (command "_-INSERT" (strcat str suf) pause 1 1 pause)
    (while (= 1 (getvar "CMDACTIVE")) (command ""))
  )
  (setvar "ATTDIA" att)
  (princ)
)

S'il y a des attributs, les valeurs par défaut seront renseignées, sinon bah implante le bloc en toute simplicité ^^"
J'ai laissé en commentaire la version où tu saisies aussi le préfixe pour tes blocs avant la boucle (si jamais tu as autre chose que "Coude_DN")
Tu peux changer le nom de la commande évidemment (en conservant le "C:" !)

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, 

merci c'est ce qu' il me fallait et non pas d attribut dans mes blocs.

Juste a la place de taper la valeur du préfixe il faudrait que je puisse la choisir comme cela. Mais bon je vais essaye de le modifié mois pour apprendre car j ai plein d autre idée 😉

image.png.ab5eddd8ab25dd82f136f5d4751be4fa.png

 bisous 

Lien vers le commentaire
Partager sur d’autres sites

bon je suis arrive a modifie ton lisp 🥳

par contre j ai un soucis c'est quant il relance la demande , je valide ou choisi un autre diamètre il me dit donne incorrect 😟

(defun c:FOOo (/ att str suf)
  (setq str "CPC_DN") ; (setq str (getstring T "\nRenseigner le préfixe : "))
  (setq att (getvar "ATTDIA"))
  (setvar "ATTDIA" 0)
 (initget "032 040 100")
      (while (/= "" (setq suf (getkword "\ndiametre DN [032/040/100]? <100>: ")))
    (command "_-INSERT" (strcat str suf) pause 1 1 pause)
    (while (= 1 (getvar "CMDACTIVE")) (command ""))
    )
  (setvar "ATTDIA" att)
  (princ)
)
Lien vers le commentaire
Partager sur d’autres sites

Comme j'ai dit, il faut que (getkword) soit associé à (initget) ^^"
Donc c'est plus quelque chose comme chat (avec quelques modifications en plus évidemment pour prendre en compte les différences entre (getstring) et (getkword)) :

(defun c:FOOo (/ str att lst suf break)
  (setq str "Coude_DN") ; (setq str (getstring T "\nRenseigner le préfixe : "))
  (setq att (getvar "ATTDIA"))
  (setvar "ATTDIA" 0)
  (setq lst "15 20 25 32 40 50 65 80 100 125 150 200 250 300 350 400 450 500")
  (while
    (and
      (not break)
      (null (initget lst))
      (or
        (setq suf (getkword (strcat "\nType de conduite DN [" (vl-string-translate " " "/" lst) "/Quitter] <100> : " str)))
        (setq suf "100")
      )
    )
    (if (= "Quitter" suf)
      (setq break T)
      (progn
        (command "_-INSERT" (strcat str suf) pause 1 1 pause)
        (while (= 1 (getvar "CMDACTIVE")) (command ""))
      )
    )
  )
  (setvar "ATTDIA" att)
  (princ)
)

PS: Je ne l'ai pas testé cependant donc à voir...

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

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é