Aller au contenu

Création de blocs à la chaîne


Messages recommandés

Posté(e)

Bonjour à tous,

 

J'importe actuellement de nombreux objets issu de sketchup, je souhaite ensuite les transformer en blocs autocad. J'en ai un sacré paquet à faire, je cherche donc à optimiser un peu ma méthode.

 

En fait je souhaiterais créer des blocs par simple sélection, sans passer par la case spécification du point d'origine, spécification de l'unité, du nom etc...

 

J'utiliserais par la suite edit_bloc, puis un autre lisp de Gile pour placer le point d'insertion au "point le plus bas au centre du bloc", et encore un pour renommer l'ensemble des blocs créés par un préfixe suivi d'un incrément.

 

Vous pensez qu'il y a une méthode plus rapide pour crée ces blocs que d'en passer par la boîte de dialogue "bloc"?

 

@+

 

 

Posté(e)

Salut,

 

vite, fait, une méthode :

(defun c:bcr (/ ss p nbt)
(setq ss (ssget)
     p (getpoint "\n Point d'insert :"))
(setq NBT (itoa (fix (* (getvar "TDUSRTIMER") 10000000))))    
(command "_-block" NBT "_none" p ss "" "")  
(command "_-INSERT" NBT "_none" p "1" "1" 0)
 (princ)
 )

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

Posté(e)

Super ça fonctionne très bien :)

C'est un gain de temps colossal :)

 

Merci beaucoup.

 

Comme je suis un peu noob, je voudrais être sûr que je m'y prends bien quand même.

1-J'ai collé ton "code" dans la ligne de commende

2- Autocad m'a renvoyé un: "C:BCR"

3- J'ai donc entré BCR et j'ai pu commencer à sélectionner mes objets.

 

Puis-je transformer ce texte en lisp en le collant dans un fichier texte?

Peux-ton afficher la commande àç taper à la fin du chargement du lisp?

Ne peux t'on s'affranchir du positionnement du pt d'insertion?

 

Pour ma "culture":

Quels sont les paramètres que tu remplis avec ton code, pour unité etc...?

 

Merci encore et @+

Posté(e)

Re,

Puis-je transformer ce texte en lisp en le collant dans un fichier texte?

Ce post réponds à tout sur ce sujet : http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=14630#pid

 

Peux-ton afficher la commande àç taper à la fin du chargement du lisp?

tu rajoutes à la fin (après la parenthèse)

(princ "\n Taper bcr pour lancer la commande")

 

Ne peux t'on s'affranchir du positionnement du pt d'insertion?

cela prendras comme point de base toujours 0 0 0 :

(defun c:bcr (/ ss nbt)
(setq ss (ssget))
(setq NBT (itoa (fix (* (getvar "TDUSRTIMER") 10000000))))
(command "_-block" NBT "_none" '(0 0 0) ss "" "")
(command "_-INSERT" NBT "_none" '(0 0 0) "1" "1" 0)
 (princ)
)
(princ "\n Taper bcr pour lancer la commande")

Pour ma "culture":

Quels sont les paramètres que tu remplis avec ton code, pour unité etc...?

Si tu parles des echelles et rotations, c'est de l'autolisp, c'est assez clair en fait, puisque c'est la commande Autocad qui est lancé :

(command [b]"_-INSERT"[/b] NBT "_none" '(0 0 0) [b]"1" "1" 0[/b])

 

 

 

[Edité le 26/11/2007 par Bred]

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

Posté(e)

Bonsoir lili2006,

Comment le nom du bloc se créé t-il ??

c'est cette ligne :

(setq NBT (itoa (fix (* (getvar "TDUSRTIMER") 10000000))))

La variable système TDUSRTIMER donne la valeur en jours.

0.0855362 jours x 24 : 2.052869 heures

Je multiplie cette valeur par 10000000 et je la "fix"afin d'avoir un nombre entier.

Je la transforme en string avec "itoa", et cela me fait mon nom de bloc.

 

Y à t-il alors moyen de lui donner un nom (ou de le renommer ??)

Bien sûr.

Si tu veux lui donner un nom en passant par la ligne de commande, à la place de la ligne ci-dessus automatisant le nom, tu mets :

(while (or (equal NBT "") (equal NBT nil))
(setq NBT (getstring "\n Nom du Bloc ?" t))
   )

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

Posté(e)

Bonjour à tous

 

super ton lisp Bred, j'utilise Designcenter pour envoyer les blocs d'un fichier à l'autre, mais comment les exporter en fichier sur disque ???

 

Michel a

Posté(e)

Salut,

mais comment les exporter en fichier sur disque

Si tu veux parler des "wblocs", voilà un exemple :

avec : nom du bloc sous C: (tu peux le modifier)

point d'insertion à 0 0 0

puis réinsertion du bloc créer dans le plan.

 

(defun c:wbc (/ NBT sel)
 (while (or (equal NBT "") (equal NBT nil))
   (setq NBT (getstring "\n Nom du Bloc ?" t)))
 (setq sel (ssget))
 (setq NBT [b](strcat "C:\\" NBT ".dwg")[/b])  
 (command "wbloc" NBT ""[b] '(0 0 0)[/b] sel "")
 (command "_-INSERT" NBT "_none" '(0 0 0) "1" "1" 0)
 (princ)
 )

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

Posté(e)

Bonjour

pas mal ton lisp Bred, ce que je voulais parler c'est des blocs qui sont en mémoire dans le fichier qu'on retrouve avec Designcenter....

 

De quelle manière pourrait on faire pour les extraire.....

 

Merci

 

Michel a

Posté(e)

Re,

désolé, c'est pas trés beau... mais ça marche :

cela enlève les "wblocs" dont le chemin de support est déclaré.

ça enregistre sous c: (à modifier)

(defun c:cwb (/ ACDOC B BLOCKS I LST-B-C NBT P S X)
(setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
     Blocks (vla-get-Blocks AcDoc)
     lst-b-c nil)
(vlax-for o Blocks (if (and
		 (not (vl-string-search "*" (vla-get-name o)))			 
		 (not (findfile (strcat (vla-get-name o) ".dwg"))))
	     (setq lst-b-c (append (list o) lst-b-c))))
(repeat (setq i (length lst-b-c))
 (setq b (nth (setq i (1- i)) lst-b-c))
 (command "_-INSERT" (vla-get-name b) "_none" '(0 0 0) "1" "1" 0)
 (setq b (vlax-ename->vla-object (entlast))
p (vla-explode b)
p (vlax-safearray->list (vlax-variant-value p))
s (ssadd))
 (mapcar '(lambda (x) (ssadd (vlax-vla-object->ename x) s)) p)
 (setq NBT (strcat "C:\\" (vla-get-name b) ".dwg"))
 (command "wbloc" NBT "" '(0 0 0) s "")
 (vla-delete b)
 )
 (princ (strcat "\n" (rtos (length lst-b-c)) " Wblocs Créés"))
 (princ)
 )

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é