ardiemus Posté(e) le 19 juin 2008 Posté(e) le 19 juin 2008 Bonjour à vous, J'aimerais faire un lisp de façon à pouvoir dire tel ou tel bloc qui ont été insérer dans un claque asoit déplacer dans un calque b. :(
Arcasdk Posté(e) le 19 juin 2008 Posté(e) le 19 juin 2008 Coucou, si je ne me trompe pas, tu trouveras ça ici <IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG> <a href=www.formu-lan.net>www.FormuLan.net</a>
(gile) Posté(e) le 19 juin 2008 Posté(e) le 19 juin 2008 Salut, Edit_bloc permet de changer les propriétés des composant d'une définition de bloc, pas les propriétés des références. Pour changer les références insérées de calque, pas besoin de LISP, une Sélection rapide (SELECTRAP ou _QSELECT) des blocs d'après leur nom devrait suffire. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
ardiemus Posté(e) le 19 juin 2008 Auteur Posté(e) le 19 juin 2008 en fait j'essai de modifier un programme qui permet d'inserer des blocs Ces blocs se trouvent dans un fichier $elec.dwgDans le programme les fichiers sont inserer par defaut dans un calque elec (defun insertum (nombloc typebloc echelle ori suite / e cour acrob ort) (setq *error* PV_error) (command "_undo" "_be") (setq cour (getvar "clayer")) (setvar "clayer" "ELECTRICITE") (command "_ucs" "_w") (setq acrob (getvar "osmode")) (setq ort (getvar "orthomode")) (setvar "orthomode" 0) (setvar "osmode" 0) (setvar "attdia" 0) (if ori (command "_insert" nombloc pause echelle echelle pause (strcase typebloc)) ;_ end of command (command "_insert" nombloc pause echelle echelle 0.0 (strcase typebloc)) ;_ end of command ) ;_ end of if (setq e (entlast)) (setq pcentre (cdr (assoc 10 (entget e)))) (command "_move" e "" pcentre pause) ;_ end of command (if suite (progn (entmake (list (cons 0 "TEXT") (cons 100 "AcDbEntity") (cons 67 0) (cons 8 "ELECTRICITE") (cons 62 256) (cons 100 "AcDbText") (cons 10 (list 0.0 0.0 0.0)) (cons 40 (* 3 omega)) (cons 1 (strcase suite)) (cons 50 0.0) (cons 41 0.7) (cons 51 0.0) (cons 7 "STANDARD") (cons 71 0) (cons 72 1) (list 11 0.0 0.0 0.0) (list 210 0.0 0.0 1.0) (cons 100 "AcDbText") (cons 73 2) ) ;_ end of list ) ;_ end of entmake (setq e (entlast)) (command "_move" e "" (list 0.0 0.0 0.0) pause) ) ;_ end of progn ) ;_ end of if (command "_ucs" "_P") (setvar "osmode" acrob) (setvar "orthomode" ort) (setvar "clayer" cour) (command "_undo" "_E")) ;_ end of defun j'ai créer un fichier $ssi.elec et j'aimerais que les blocs soient insérer dans un calque ssij'ai reussi a ce que le calque ssi soit créer et les blocs $.ssi.dwg soit chargermais comment faire en sorte pour que tel bloc aille dans ce calque et un autre bloc dans un autre calque....
mdsv31 Posté(e) le 19 juin 2008 Posté(e) le 19 juin 2008 Boujour, Dans le programme d'origine ton bloc est inséré dans le calque elec ou ELECTRICITE? Car si c'est dans le calque ELECTRICITE tu change dans ton lisp (setq cour (getvar "clayer")) (setvar "clayer" " [surligneur] ELECTRICITE[/surligneur]") (command "_ucs" "_w") par (setq cour (getvar "clayer")) (setvar "clayer" " [surligneur] ssi[/surligneur]") (command "_ucs" "_w") et (cons 67 0) (cons 8 " [surligneur] ELECTRICITE[/surligneur]") (cons 62 256) par (cons 67 0) (cons 8 " [surligneur] ssi[/surligneur]") (cons 62 256) @+MDSV31 Dessinateur Indépendant
ardiemus Posté(e) le 19 juin 2008 Auteur Posté(e) le 19 juin 2008 les blocs sont insérer dans le calques electricité Mais j'aimerais que certains blocs aillent dans le calque electricité et d'autres dans le calque ssi
Patrick_35 Posté(e) le 19 juin 2008 Posté(e) le 19 juin 2008 SalutComme le précise (gile), pas besoin de lisp. Les filtres permettent de le faire facilement.Maintenant, si tu veux automatiser la tâche, je peux te donner les grandes lignes. 1) tu crées une liste pour définir quel bloc sur quel calque.(setq lst '(("bloc1" "calque1") ("bloc2" "calque2") ("bloc3" "calque3") ("bloc4" "calque4"))) 2) tu crées un jeu de sélection sur les blocs.(setq js (ssget "x" '((0 . "INSERT")))) 3) tu crées une boucle pour parcourir le jeu de sélection.(setq n 0) (while (setq ent (ssname js n)) ... (setq n (1+ n)) ) 4) Dans ta boucle, tu fais le changement de calque du bloc concerné.a) Tester si le bloc est dans la liste.(if (setq res (assoc (cdr (assoc 2 (setq bl (entget (ssname js n))))) lst)) (progn ... ) )b1) Oui, on le change de calque(setq bl (subst (cons 8 (cadr res)) (assoc 8 bl) bl)) (entmod bl)b2) Et on met à jour graphiquement le bloc dans le dessin(entupd (cdr (assoc -1 bl))) On peut aussi faire quelque chose de beaucoup plus pointu comme de forcer lors que chaque copier, insérer, réseau, etc... les blocs définis dans la liste sur les bons calques. Mais c'est plus ardu à mettre en place, et on abandonne l'autolisp pour le vlisp. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ardiemus Posté(e) le 19 juin 2008 Auteur Posté(e) le 19 juin 2008 oula suis une grosse quiche....... Pas évident le lisp.... Ca ne fait rien quand je lance le prog......J'ai mis le nom d'un bloc et ca ne fait rien ....
ardiemus Posté(e) le 19 juin 2008 Auteur Posté(e) le 19 juin 2008 ce que je ne comprend pas ou se trouve le nom du calque destinataire? Une grosse quiche ...
rebcao Posté(e) le 19 juin 2008 Posté(e) le 19 juin 2008 c'est un problème qui se présente très souvent ??? Parce que si c'est occasinnel on peut tout simplement utiliser la commnde FILTER... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
Patrick_35 Posté(e) le 24 juin 2008 Posté(e) le 24 juin 2008 Re, Une grosse quiche ... Non, on est tous passé par-là ;)Pas simple au début. Dît-nous où tu bloques, afin que l'on puisse t'aider @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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