Aller au contenu

Commande de création de bloc


yann69690

Messages recommandés

Bonjour,

Ma problématique :  j'ai un certain grand nombre de fichiers (1 panneau par fichier) qui ne sont pas en bloc donc quand je le ré-importe dans mes dessins cela importe un ensemble (typiquement hachure, texte, rond, etc) donc pas très interessant.

J'aurais souhaité par exemple via SuperAutoScript par exemple suivant un dossier,  ouvrir le fichier, convertir en bloc (mais en conservant le dessin) avec le nom du fichier, et passer au suivant.

Je suis à la partie script SCR :
 

(setq fichier (getvar "dwgname"))
  ;;(setq nomdoc (car (split-string fichier "\\."))) A modifier pour enlever les 4 derniere caractère qui correspond à l'extension
  (setq nombloc (strcat "BLOC_" fichier))
  (setq jeusel (ssget "_C" '(0 0) '(10 10)))
  (command "_-block" nombloc "0,0" jeusel "")

 Mon problème pour l'instant se situe avec la commande _block qui prend comme paramètre suppression des objets convertis hors j'aurais aimé juste les conservé, impossible de trouver la doc de la fonction block

Merci par avance

Cordialement

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Normalement, avec la commande INSERER, si tu fais : Parcourir... (ou onglet Bibliothèques et le bouton en haut à droite) et que tu choisis un fichier DWG, il est automatiquement inséré en tant que bloc. 
Tu devais pouvoir faire ça directement en LISP :
 

(foreach fichier listeFichiers
  (if (setq filename (findfile fichier))
    (progn
      (command "_INSERT"
	       (strcat "BLOC_" (vl-filename-base filename) "=" filename)
      )
      (command)
    )
  )
)

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @yann69690

Je confirme les propos, en appelant un fichier externe avec la commande "insérer" ou bien en glissé-déposé depuis l'Explorer
le "fichier externe" se voit transformé en bloc dans le dessin d'accueil, et le nom du bloc est le nom du fichier importé.

Il n'est pas nécessaire que ce soit un bloc dans le fichier à insérer.

Amicalement

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bonjour à vous deux, et tous biensur,

Je vous remercie d'avoir répondu, de mon coté j'ai fais pas mal de test avant de vous répondre. 

Je sais pas si je l'avais dit avant, mais mon but final est grâce à un plugin autocad (non développé par moi biensur) pouvoir incorporer les blocs, avec une multitude d'option (un peu comme la bibliothéque d'autocad mais avec plus d'option et de rangement, recherche, etc). Il me permet d'importer des dessins ou des blocs, et on en revien à ma demande initial car c'est plus simple et compréhensible pour mes dessins d'avoir des blocs de panneaux. J'ai déjà réalisé un script python qui m'importe les "futur" blocs dans ce plugin via un XML.

@(gile) J'ai essayé de me dépatouillé avec ton script mais j'avoue ne pas avoir réussi (bien que j'ai compris que je dois définir les variable fichier et listeFichiers mais pas réussi). Ce que je me suis dis pour me servir de ton script c'était plutot de creer un dwg vide puis importer ta lips et automatiquement déplacer chaque panneau d'une valeur en x pour pas que cela se superpose. Ce que j'ai essayé (via MacLee lips) car je ne voyais pas comment fournir une liste deFichier:

 

(defun LM:directoryfiles (dir typ sub)
(setq dir (vl-string-right-trim "\" (vl-string-translate "/" "\" dir)))
(append
(mapcar '(lambda (x) (strcat dir "\" x)) (vl-directory-files dir typ 1))
(if sub
(apply 'append
(mapcar
'(lambda (x)
(if (not (wcmatch x ".,.`."))
(LM:directoryfiles (strcat dir "\" x) typ sub)))
(vl-directory-files dir nil -1)))
nil)))

(defun C:ImportFiles ()
(cond
((null (setq dir (LM:browseforfolder "Select a directory to list drawing files" nil 0)))
(princ "\nCancel"))
((null (setq lst (LM:directoryfiles dir "*.dwg" t)))
(princ "\nNo drawing files found in the selected directory or subdirectories."))
(t
(setq listeFichiers (vl-directory-files dir ".dwg"))
(foreach dwg lst
(if (setq filename (findfile (strcat dir "\" dwg)))
(progn
(command "INSERT" filename
(cons (strcat "BLOC" (vl-filename-base filename)) 1)))))
)))

 

@didierDonc je confirme bien que l'inserer fonctionne bien mais ce n'est pas forcement ce que je recherche ici

 

Meri à vous deux, je vais continuer à bosser dessus (meme si une petite aide serait top si vous etes d'accord)

Lien vers le commentaire
Partager sur d’autres sites

Le LISP que j'ai posté plus haut importe de fichier DWG dans la table des blocs sans l'insérer dans le dessin.

Comme quand tu lances la commande INSERER, puis Parcourir..., tu sélectionnes le fichier et quand AutoCAD te demandes le point d'insertion, tu fais Echap.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é