atile Posté(e) le 26 novembre 2007 Posté(e) le 26 novembre 2007 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"? @+
Bred Posté(e) le 26 novembre 2007 Posté(e) le 26 novembre 2007 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...
atile Posté(e) le 26 novembre 2007 Auteur Posté(e) le 26 novembre 2007 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 commende2- 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 @+
Bred Posté(e) le 26 novembre 2007 Posté(e) le 26 novembre 2007 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...
atile Posté(e) le 26 novembre 2007 Auteur Posté(e) le 26 novembre 2007 Hé bien que dire sinon encore un grand MERCI.Pour l'aide et les explications détaillées. @+
lili2006 Posté(e) le 26 novembre 2007 Posté(e) le 26 novembre 2007 Bonsoir à toutes et tous, Hé bé ! "Simple et efficace l'affaire,... Merci Bred. Comment le nom du bloc se créé t-il ?? Y à t-il alors moyen de lui donner un nom (ou de le renommer ??) Bonne soirée. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 26 novembre 2007 Posté(e) le 26 novembre 2007 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 heuresJe 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...
lili2006 Posté(e) le 26 novembre 2007 Posté(e) le 26 novembre 2007 Re, Je rejoint atile, Hé bien que dire sinon encore un grand MERCI.Pour l'aide et les explications détaillées. Au plaisir Bred. Bonne nuit. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
speedy Posté(e) le 27 novembre 2007 Posté(e) le 27 novembre 2007 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
Bred Posté(e) le 27 novembre 2007 Posté(e) le 27 novembre 2007 Salut,mais comment les exporter en fichier sur disqueSi tu veux parler des "wblocs", voilà un exemple :avec : nom du bloc sous C: (tu peux le modifier)point d'insertion à 0 0 0puis 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...
speedy Posté(e) le 27 novembre 2007 Posté(e) le 27 novembre 2007 Bonjourpas 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
Bred Posté(e) le 27 novembre 2007 Posté(e) le 27 novembre 2007 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...
speedy Posté(e) le 28 novembre 2007 Posté(e) le 28 novembre 2007 Bonjour à tous Merci à Bred, ça fonctionne........ @+ Michel a
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant