Aller au contenu

Bred

Membres
  • Compteur de contenus

    2 764
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Bred

  1. Alors : Je me suis fait un lisp qui incrémente les attributs de mes flèches de repères de coupes. Donc c'est génial quand on a par exemple qu'une vue en plan... Par contre, lorsque j'ai plusieurs vue qui reprenne exactement le même "groupe" de ligne de repère, et que je veux modifier les repères, il faut que je le fasse pour chaque copie de ce groupe (ou que je suprime les copies et que je re-colle les nouveaux... tiens....j'écrie ça à la volée mais je me demande si la solution ne serait pas là...) Je sais qu'avec le lisp de Patrick_35 "LATT" je pourrais y arriver, mais cela amème à "lier" tout les repères ensemble... ce qui me semble assez long si j'en ai beaucoup... tandis que si j'ai un groupe de repère de base, et que les autre en sont une copie, la mise à jour se ferait d'après la réference, sans avoir à lier chaque flèche une par une ....
  2. Salut, Pour que tu ais une réponse rapide, je me permet de te présenter le super outil de (gile) à sa place (j'espère qu'il ne m'en voudra pas ! ;) ): Téléharges Edit_Bloc Ceci te permet de passer (entre-autre) tout les blocs sur le calque 0, avec la couleur "ducalque", que tu pourras changer à loisir ensuite ...!
  3. Salut, Existe t'il une "trace" dans un objet copié de l'objet de référence ? (une logique dans le nom d'entité, un code dxf, .... et en évitant les réacteurs... :casstet: ) Merci !!! [Edité le 14/11/2006 par Bred]
  4. merci Patrick_35... (par curiosité, "Patrick_35" : le 35, c'est quoi la raison ? 35 ans ? 35 cm. ? :o ) L'idée qui me vient pour faire "propre" pour l'utilisation du réacteur de commande, ce serait de n'en créer qu'un seul qui ferait appel à un code ne contenant que des tests (if ....) lançant alors la routine correspondante !... :casstet: Exemple : ;;; Création réacteur pour lancement du lisp test de commande. (setq Rea_Impression_CutePDF (vlr-command-reactor nil (list (cons :vlr-commandWillStart (function Test_Commande))))) (defun Test_Commande (Rea Cde) (if (eq (car Cde) "PLOT") (Chem_File_CutePDF)) (if (eq (car Cde) "_line") (Lisp_Line)) (if (eq (car Cde) "_circle") (Lisp_Circle)) [i]...etc...[/i] ) [Edité le 21/12/2006 par Bred]
  5. Salut, j'avoue ne pas comprendre ce que tu veux... Si "Layer Manager" = "Gestionnaire Propriété des Calques", tu peux gérer les états des claques en faisant une selection de plusieurs calque et en changeant l'état d'un seul, cela changeras l'état de tout les calques selectionnés....
  6. Salut, Tu peux rentrer comme macro-bouton : ^C^CZBA4; Le lisp crée une commande, donc tu peux l'appeller par un bouton.. Si tu veux absolument une macro tel que j'ai l'impression que tu connais : ^C^C-inserer;Mon_Bloc;\1;1;0;_zoom;_ob;d;; Je ne te garantie pas de la "propreté" du script. Certains dans ce forum pourront corrigé.... Tiens moi au courant si c'est ce que tu voulais... on pourrait peut-être l'améliorer si besoin ! [Edité le 21/12/2006 par Bred]
  7. Salut, j'espère que c'est ça (fait rapidement) : Insertion d'un bloc ("Mon_Bloc") à l'echelle 1 / 1 et rotation 0. ; Zoom objet sur bloc insérer (defun c:ZBA4 () (command "-inserer" "Mon_Bloc" pause 1 1 0 "_zoom" "_o" (entlast) "") (princ) ) - change "Mon_Bloc" par le Nom de ton Bloc (ex : "Cartouche A4") - Si tu n'as pas ce bloc dans la collection, ou que tes fichiers supports ne dirige pas vers tes blocs, il faut que tu rentre le nom en chemin complet (ex :"C:\\Mon rep\\blocs\\Cartouche A4.dwg") -c'est un lisp, tu aurais peut-être préférer en diesel... - tu n'as qu'à le copier à la suite du lisp que tu as enregistrer précedement (dans ton fichier .lsp), tu relance un nouveau dessin et tu lances la commande "ZBA4".
  8. Alors... :casstet: Pour mon problème, si j'ai bien compris la logique : Je crées un réacteur lors du chargement de mon dessin (dans AutoCAD.lsp par ex) : ;;; Création réacteur pour lancement de Chem_File_CutePDF. (setq Rea_Impression_CutePDF (vlr-command-reactor nil (list (cons :vlr-commandWillStart (function Chem_File_CutePDF))))) Et je fais un test sur la commande lancé pour lancer ou pas mon lisp : ;;; Proposition Chemin et Nom pour impression avec CutePDF. (defun Chem_File_CutePDF (Rea Cde / New_Filname_PDF x) [b](if (equal (getcname (strcat "_" (car Cde))) "TRACEUR")[/b] (progn (setq New_Filname_PDF (vl-string-subst "" ".dwg" (vlax-get-property (vla-get-activedocument (vlax-get-acad-object)) 'FullName)) x 1) (While (findfile (strcat New_Filname_PDF " - " (rtos x) ".pdf")) (setq x (+ x 1)) ) (setq New_Filname_PDF (strcat New_Filname_PDF " - " (rtos x) ".pdf")) ; écriture nouveau nom (.pdf) (vl-registry-write "HKEY_CURRENT_USER\\SOFTWARE\\ACRO SOFTWARE INC\\CPW" "FILENAME" New_Filname_PDF) ) ) ) Par contre cela veut dire que pour n'importe quel fonction Autocad lancé, le test se fait.... N'est-ce pas un peu lourd ? ? tu veux dire que le réacteur ne fait pas partie QUE du dessin actif ? si c'est le cas je dois donc uriliser le "réacteur de fin" afin de les supprimers de la mémoire lors de (la fin de la) commande "quitter" ? merci
  9. :o ... Par mon Autocad.... J'ai juste chargé ta démonstration et je l'ai testé.... C'est FABULEUX !!!! ça ouvre des possibilités infini !!!! Merci ! :D
  10. Salut, Lorsque l'on imprime avec "CutePDF", je me suis écrit un petit lisp permettant de proposer le chemin et le nom du fichier (incrémenter " - +1") correspondant au chemin et au nom du dessin actif. (le lisp n'a pas l'air de fonctionner pareil selon les versions de cutePDF : il propose bien le répertoire où est enregistrer le plan, mais il ne propose pas automatiquement le nom du fichier... c'est bizarre.... mais ce n'est pas mon problème actuel) (defun Chem_File_CutePDF (/ New_Filname_PDF x) (setq New_Filname_PDF (vl-string-subst "" ".dwg" (vlax-get-property (vla-get-activedocument (vlax-get-acad-object)) 'FullName)) x 1) (While (findfile (strcat New_Filname_PDF " - " (rtos x) ".pdf")) (setq x (+ x 1)) ) (setq New_Filname_PDF (strcat New_Filname_PDF " - " (rtos x) ".pdf")) ; écriture nouveau nom (.pdf) (vl-registry-write "HKEY_CURRENT_USER\\SOFTWARE\\ACRO SOFTWARE INC\\CPW" "FILENAME" New_Filname_PDF) ) Mon "problème" vient du fait que je voudrais que ce lisp ce lance au moment où la commande de tracer est activer (_plot ou TRACEUR)... j'étais partis sur : (defun c:_plot () (FileName_CutePDF) (command "traceur") (princ) ) (defun-q S::STARTUP () (command "undefine" "_plot") ) ... mais ça ne fonctionne bien sûr pas vu que je lance la commande "traceur" qui est une commande traduite de _plot .... donc je pense qu'avec les réacteurs... :casstet: Mais l'aide Autolisp est pour moi imcompréhensible, j'ai aperçu : :vlr-commandWillStart ... mais alors l'exploiter :( :casstet: :P .. merci de votre aide !
  11. Salut, pour comprendre : tu veux qu'en inserant ton bloc "Cartouche A4" il se mette à l'echelle de ta fenêtre (dans l'espace présentation...) ? ... j'avoue que si c'est ça quelque chose m'échappe sur la logique de la chose ... :casstet: [Edité le 10/11/2006 par Bred]
  12. Désolé, un copier/coller/corrigé trop rapidement fait... lisp corrigé : (defun c:InsertBlocsel (/ bloc_sel) (princ "\nInsertion Bloc Sélectionné :") (while (= bloc_sel nil) (setq bloc_sel (ssget "_:S:E" '((0 . "INSERT"))))) (command "-inserer" (cdr (assoc 2 (entget (ssname bloc_sel 0)))) pause 1 1 pause) (princ) )
  13. Bred

    Perspective .... grrrr !!!!

    En fait, c'est bien de pouvoir travailler si l'on veut dans une vue en perspective, mais ce que je trouve décevant c'est qu'ils auraient pû laisser l'ancienne fonction en parrallèle... Personnellement je suis un gros gourmant en ressource, et j'ai de trés gros volume à travailler, donc travailler sur la vue en perspective ne m'est vraiment pas utile. C'est trés bien pour la conception de pièce ou de petit assemblage, mais en gros volume la fonction de perspective précedente pour la mise en page était parfaite !... [Edité le 21/12/2006 par Bred]
  14. Salut, J'ai encore une grosse mauvaise surprise sur la 2007 : les perspectives !... :mad: Avant (2006 et anterieur), la vue en perspective n'était en fait "qu'une" image, que l'on pouvait afficher en filaire 2D, avec impossibilité de travailler dedans... Maintenant, avec la 2007, la vue en perspective est une vue à part entière... et avec comme affichage "minimum" le filaire 3D.... ce qui veut dire que le calcul pour une vue en perspective est immense par rapport au versions précedente... et je rame sec !!!...* :mad: :mad: :mad: J'avais justement opté pour Autocad qui permettait avec cette vue 3D perspective en filaire 2D de ne pas trop manger de ressource... maintenant ça devient l'égal de logiciel type Inventor ou TopSolid, et je ne peut plus bosser !!!! (avec la 2007 en tout cas.) C'est vraiment un immense pas en arrière que nous a fait là Autodesk avec la 2007... :casstet: .... sauf si une "petite" variable permet de retrouver cette chère perspective précedente ??? :casstet: Quelqu'un la connaitrait ??? ---------------------------- * pour info, j'ai un Bi-Xeon 2.8 Ghz, 2Go de RAM DDR, et carte matrox 128 Mo.... un petit truc quoi.... [Edité le 8/11/2006 par Bred]
  15. Salut, l'une de manière : (la + "simple" pour débuter) Tu copies le code dans un bloc note que tu nommes et enregistre comme tu veux en mettant comme extension .lsp Puis tu vas dans Autocad, tu va dans Outils / Charger une Application Dans la boite de dialogue tu as une valise : tu delectionne "contenu" ... et là tu vas chercher le fichier .lsp que tu as enregistrer precedement. Tu auras dorénavant une nouvelle commande dans autocad nommé "InsertBlocsel" (tape là au clavier) Le lisp sera alors charger à chaque démarage. Il y a d'autre manières.... Pour info, si tu veux raccourcir le nom de la commande au clavier tu met ce que tu veux comme commande à la place de "InsertBlocsel" dans (defun c:[b]InsertBlocsel[/b] (/ bloc_sel)............... (laisse le c: )
  16. Bred

    polyligne 3d avec arc

    Je suis triste de l'apprendre. Je te souhaite toutes la chance que tu mérites pour ton emplois futur ! Bon courage.
  17. Salut, Le copier+rotation existe de lui même sur 2006 : quand tu fais une rotation, tu rentre l'option "C" quand il te le demande. par contre, pour les wblocs, je me suis fait un petit lisp qui te récupère un bloc déjà insérer en le selectionnant : tu l'as ensuite au bout du curseur et tu n'as plus qu'à le ré-insérer où tu veux, en lui donnant une orientation. (l'echelle du bloc et la même). Cela revient à faire un copier/rotation de bloc... Le lisp : (defun c:InsertBlocsel (/ bloc_sel) (princ "\nInsertion Bloc Sélectionné :") (while (= bloc_sel nil) (setq bloc_sel (ssget "_:S:E" '((0 . "INSERT"))))) (command "-inserer" (cdr (assoc 2 (entget (ssname bloc_sel 0)))) pause 1 1 pause) (princ) ) [Edité le 9/11/2006 par Bred]
  18. Salut (gile), je me suis permis de rajouter à ton lisp la récupération du calque et de la couleur. Dailleur j'imagine qu'il y a une écriture plus "propre" que mon "(vlax-put-property (vlax-ename->vla-object (entlast)) 'Layer lay)" ... J'ai aussi déplacer le "(mapcar 'vla-delete lst)" en fin de code, car seul les lignes d'un seul objet modifié était suprimé. (defun c:pl2r (/ AcDoc Space ss wid lst reg pt1 pt2 Lay col) (vl-load-com) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) )) (if (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . ">") (43 . 0)))) (progn (vla-StartUndoMark AcDoc) (foreach pl (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) (setq pl (vlax-ename->vla-object pl) wid (vla-get-ConstantWidth pl) ;larg polyligne [i] Lay (vla-get-Layer pl) ; Calque col (vla-get-Color pl)) ; Couleur[/i] (setq lst (append (vlax-invoke pl 'Offset (/ wid 2)) (vlax-invoke pl 'Offset (/ wid -2)))) ;décalages (mapcar '(lambda (x) (vla-put-ConstantWidth x 0.0)) lst) ;polyligne décalé à largeur 0 (if (= (vla-get-Closed pl) :vlax-true) (progn (setq reg (vlax-invoke Space 'addRegion lst)) (if (< (vla-get-Area (car reg)) (vla-get-Area (cadr reg))) (vla-Boolean (cadr reg) acSubtraction (car reg)) (vla-Boolean (car reg) acSubtraction (cadr reg)) ) [i] (vlax-put-property (vlax-ename->vla-object (entlast)) 'Layer lay) (vlax-put-property (vlax-ename->vla-object (entlast)) 'Color col)[/i] ) (progn (mapcar '(lambda (sym obj) (set sym (2d-coord->pt-lst (vlax-get obj 'Coordinates) (vlax-get obj 'Elevation) (vlax-get obj 'Normal)))) '(pt1 pt2) lst) (setq lst (append (list (vla-addLine Space (vlax-3d-point (car pt1)) (vlax-3d-point (car pt2)))) (list (vla-addLine Space (vlax-3d-point (last pt1)) (vlax-3d-point (last pt2)))) lst)) (vlax-invoke Space 'addRegion lst) ) ) [i](vlax-put-property (vlax-ename->vla-object (entlast)) 'Layer lay) (vlax-put-property (vlax-ename->vla-object (entlast)) 'Color col)[/i] (vla-delete pl) [b](mapcar 'vla-delete lst)[/b] ) (vla-EndUndoMark AcDoc) ) ) (princ) ) merci !!! [Edité le 21/12/2006 par Bred]
  19. Re-merci (gile).... :D
  20. J'ai éditer le code car j'avais un bug que je ne comprend pas : :casstet: Le décalage se faisait quelquefois dans le même sens !... (j'ai l'impression selon le sens déssiné de la polygne...) J'ai donc fait un test sur le périmètre, et si j'ai égalité je refait un décalage en négatif.... ... pas trés jolie, mais ça fonctionne... :exclam:
  21. Et bien (gile), je pense que tu seras fière de l'un de tes nombreux éleve ;) : j'ai réparé le bug en récupérant le périmètre des polylignes... merci pour tout !!! édition modif : - récupération calque + couleur - correction bug par rapport au sens de décalage (?) (defun c:pl2r (/ os ec ss1 elst wid p1 p2 ang ss2 pl1 pl2 reg1 per1 reg2 per2) (setq os (getvar "osmode") ec (getvar "cmdecho")) (if (setq ss1 (ssget '((0 . "LWPOLYLINE") (-4 . ">") (43 . 0)))) (progn (setvar "osmode" 0) (setvar "cmdecho" 0) (foreach pl (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1))) ;(setq pl (ssname ss1 0)) (setq elst (entget pl) wid (/ (cdr (assoc 43 elst)) 2) p1 (trans (append (cdr (assoc 10 elst))(list (cdr (assoc 38 elst)))) pl 1) p2 (trans (append (cdr (assoc 10 (cdr (member (assoc 10 elst) elst)))) (list (cdr (assoc 38 elst)))) pl 1) ang (angle p1 p2) ss2 (ssadd) lay (cdr (assoc 8 elst)) col (cdr (assoc 62 elst))) (command "_.offset" wid pl (polar p1 (+ ang (* pi 0.5)) 1.0) "") (setq pl1 (entlast))(entmod (subst '(43 . 0) (assoc 43 (entget pl1)) (entget pl1))) (ssadd pl1 ss2) (if (equal (cdr (assoc 70 elst)) 1) (progn (setq sel1 pl1) (command "_.area" "_o" sel1) (setq per1 (getvar "perimeter")))) (command "_.offset" wid pl (polar p1 (+ ang (* pi 1.5)) 1.0) "") (setq pl2 (entlast))(entmod (subst '(43 . 0) (assoc 43 (entget pl2)) (entget pl2))) (ssadd pl2 ss2) (if (equal (cdr (assoc 70 elst)) 1) (progn (setq sel2 pl2) (command "_.area" "_o" sel2) (setq per2 (getvar "perimeter")) [b] (if (= per1 per2) (progn (command "_.offset" (* 2 wid) pl2 (polar p1 (+ ang (* pi -1.5)) 1.0) "") (ssadd pl2 ss2) (setq sel2 pl2) (command "_.area" "_o" sel2) (setq per2 (getvar "perimeter")) ) )[/b] ) ) (if (equal (cdr (assoc 70 elst)) 1) (progn (command "_.region" pl1 "")(setq reg1 (entlast)) (command "_.region" pl2 "")(setq reg2 (entlast)) (if (> per1 per2) (command "_subtract" reg1 "" reg2 "") (command "_subtract" reg2 "" reg1 "") ) (command "_change" (entlast) "" "p" "ca" lay "co" col "") ) (progn (command "_.line" (trans (append (cdr (assoc 10 (entget pl1))) (list (cdr (assoc 38 (entget pl1))))) pl1 1) (trans (append (cdr (assoc 10 (entget pl2))) (list (cdr (assoc 38 (entget pl2))))) pl2 1) "") (ssadd (entlast) ss2) (command "_.line" (trans (append (cdr (assoc 10 (reverse (entget pl1)))) (list (cdr (assoc 38 (entget pl2))))) pl1 1) (trans (append (cdr (assoc 10 (reverse (entget pl2)))) (list (cdr (assoc 38 (entget pl2))))) pl2 1) "") (ssadd (entlast) ss2) (command "_.region" ss2 "") (command "_change" (entlast) "" "p" "ca" lay "co" col "") ) ) (command "_.erase" ss2 "") ) ) ) (command "_.erase" ss1 "") (setvar "osmode" os) (setvar "cmdecho" ec) (princ) ) [Edité le 4/11/2006 par Bred]
  22. mmmmm.... je pense avoir décelé le bug : c'est au moment de la soustration des régions, elles s'annulent !!!...
  23. merci (gile). j'ai legerement modifié ton lisp pour qu'il fonctionne avec les polylignes fermées, mais j'ai un bug que je ne comprend pas : :casstet: Lorsque j'ai UNE polyligne fermée, ça fontionne. Par contre, quand j'ai plusieurs polylignes (certaines fermées et d'autre non), cela me suprime les formes fermée... (ce que j'ai rajouté est en gras) (defun c:pl2r (/ os ec ss1 elst wid p1 p2 ang ss2 pl1 pl2) (setq os (getvar "osmode") ec (getvar "cmdecho")) (if (setq ss1 (ssget '((0 . "LWPOLYLINE") (-4 . ">") (43 . 0)))) (progn (setvar "osmode" 0) (setvar "cmdecho" 0) (foreach pl (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1))) (setq elst (entget pl) wid (/ (cdr (assoc 43 elst)) 2) p1 (trans (append (cdr (assoc 10 elst))(list (cdr (assoc 38 elst)))) pl 1) p2 (trans (append (cdr (assoc 10 (cdr (member (assoc 10 elst) elst)))) (list (cdr (assoc 38 elst)))) pl 1) ang (angle p1 p2) ss2 (ssadd)) (command "_.offset" wid pl (polar p1 (+ ang (* pi 0.5)) 1.0) "") (setq pl1 (entlast))(entmod (subst '(43 . 0) (assoc 43 (entget pl1)) (entget pl1))) (ssadd pl1 ss2) [b](if (equal (cdr (assoc 70 elst)) 1) (setq sel1 pl1))[/b] (command "_.offset" wid pl (polar p1 (+ ang (* pi 1.5)) 1.0) "") (setq pl2 (entlast)) (entmod (subst '(43 . 0) (assoc 43 (entget pl2)) (entget pl2))) (ssadd pl2 ss2) [b](if (equal (cdr (assoc 70 elst)) 1) (setq sel2 pl2))[/b] [b](if (equal (cdr (assoc 70 elst)) 1) (progn (command "_.region" pl1 "")(setq reg1 (entlast)) (command "_.region" pl2 "")(setq reg2 (entlast)) (command "_subtract" reg1 "" reg2 "") )[/b] (progn (command "_.line" (trans (append (cdr (assoc 10 (entget pl1))) (list (cdr (assoc 38 (entget pl1))))) pl1 1) (trans (append (cdr (assoc 10 (entget pl2))) (list (cdr (assoc 38 (entget pl2))))) pl2 1) "") (ssadd (entlast) ss2) (command "_.line" (trans (append (cdr (assoc 10 (reverse (entget pl1)))) (list (cdr (assoc 38 (entget pl2))))) pl1 1) (trans (append (cdr (assoc 10 (reverse (entget pl2)))) (list (cdr (assoc 38 (entget pl2))))) pl2 1) "") (ssadd (entlast) ss2) (command "_.region" ss2 "") ) ) (command "_.erase" ss2 "") ) ) ) [b](command "_.erase" ss1 "")[/b];;;supression polylignes (setvar "osmode" os) (setvar "cmdecho" ec) (princ) )
  24. merci (gile) ! (c'est même mieux que je ne l'espérait : le lisp prend en compte les polylignes à plusieurs sommets !) :D :D :D
  25. merci... mais ça n'est pas ça !!! =>ex : j'ai une polyligne "simple" de 1.00 de longueur, et de 0.2 de largeur (uniforme) et je voudrais : une région qui soit une surface rectangulaire de 1.00 x 0.20 ....
×
×
  • 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é