zizou_elec Posté(e) le 29 juillet 2008 Posté(e) le 29 juillet 2008 Bonjour,Je dois dessiné un ensemble de chemin de cable.Pour me faire gagner un temps précieux ( avant des vacances imminentes :D je souhaiterais savoir s'il existe un lisp pour faire des doubles lignes qui serait hachurée automatiquement?C'est utopique ou possible? Merci d'avance!! [Edité le 29/7/2008 par zizou_elec]
ACAD666 Posté(e) le 29 juillet 2008 Posté(e) le 29 juillet 2008 un polyligne avec largeur ne conviendrait-elle pas ? (équivalent a deux traits décales de l'axe avec hachure SOLID dedans) Et AutoCAD se tourna vers le dessinateur à bout de nerfs, et lui dit:"ERREUR FATALE: Unhandled Access Violation Reading 0x5e43dff0 Exception at 5e43dff0h"Ce à quoi le dessinateur répondit:"Ca tombe bien je vais en profiter pour écouter un peu de rock qui décrasse les esgourdes"http://www.facebook.com/pages/Ex-Voto/206836112741129?sk=wall
zizou_elec Posté(e) le 29 juillet 2008 Auteur Posté(e) le 29 juillet 2008 Non , le problème est justement qu'il me faut un hachurage type ansi!
zebulon_ Posté(e) le 29 juillet 2008 Posté(e) le 29 juillet 2008 ;;; ;;; lancer une commande autocad (defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO) (setq ETL (entlast)) (setq OLDCMDECHO (getvar "CMDECHO")) (setvar "CMDECHO" 1) (foreach CMD LCMD (command CMD) ) (while (not (zerop (getvar "cmdactive"))) (command pause) ) (setvar "CMDECHO" OLDCMDECHO) (setq LELEM nil) (if (not ETL) (setq ETL (entnext)) (setq ETL (entnext ETL)) ) (while ETL (setq LELEM (cons ETL LELEM)) (setq ETL (entnext ETL)) ) (setq RES LELEM) ) (defun c:chem_cable (/ D PLENAM PLOBJ OFFSETD OFFSETG PTOD PTFD PTOG PTFG AcDoc Space LO LF) (vl-load-com) ;; largeur de la polyligne (setq D (getreal "\nLargeur du chemin de cable : ")) ;; tracer une polyligne (setq PLENAM (car (mycmd '("_pline")))) ;; transformer en vla-object (setq PLOBJ (vlax-ename->vla-object PLENAM)) ;; faire les décallages (vla-offset PLOBJ (/ D 2.0)) ; à droite (setq OFFSETD (vlax-ename->vla-object (entlast))) (vla-offset PLOBJ (/ D -2.0)) ; à gauche (setq OFFSETG (vlax-ename->vla-object (entlast))) ; effacer la polyligne d'origine (vla-erase PLOBJ) ; fermer les extrémités avec des lignes (setq PTOD (vlax-curve-getStartPoint OFFSETD)) (setq PTFD (vlax-curve-getEndPoint OFFSETD)) (setq PTOG (vlax-curve-getStartPoint OFFSETG)) (setq PTFG (vlax-curve-getEndPoint OFFSETG)) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vla-addLine Space (vlax-3d-point PTOD) (vlax-3d-point PTOG) ) (setq LO (entlast)) (vla-addLine Space (vlax-3d-point PTFD) (vlax-3d-point PTFG) ) (setq LF (entlast)) ;; on fait un PEDIT "Joindre" avec tout ça (setvar "peditaccept" 1) (command "_pedit" "_m" LO (vlax-vla-object->ename OFFSETD) LF (vlax-vla-object->ename OFFSETG) "" "_j" 0.1 "_w" "0.0" "") ;; et enfin on y met une hachure (qu'on peut changer ici) (command "-fhach" "_p" "_u" "45" D "_n" "_s" (entlast) "" "") (princ) ) ou quelque chose dans le genre AmicalementVincent [Edité le 7/8/2008 par zebulon_] C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
zebulon_ Posté(e) le 6 août 2008 Posté(e) le 6 août 2008 Faut croire que zizou_elec est parti en vacances ;) C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lili2006 Posté(e) le 6 août 2008 Posté(e) le 6 août 2008 Bonjour à toutes et tous, Marche super zebulon_ !!! Bravo, peut servir également en bâtiment pour dessiner un voile, ou dans d'autres domaines, je suppose,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
stephane69100 Posté(e) le 7 août 2008 Posté(e) le 7 août 2008 Faut croire que zizou_elec est parti en vacances ;) je vous remercie Mr ZEBULON_ je viens de découvrire se lisp qui va me faciliter grandement mon travail (chemin de cable a dessiner souvent) encore merci j'ai quand meme une petite question je viens de creer plusieur fois le lsp pour les differentes largueur de chemin de cable mais peut on rajouter cette option a la commande d'origine style longeur du Chc et largueur [Edité le 7/8/2008 par stephane69100]
x_all Posté(e) le 7 août 2008 Posté(e) le 7 août 2008 je remonte un peu ce post car je suis moi aussi interessé par une valeur d'imput... d'abord car ce lisp me sera effectivement utile, et ensuite car ça me ferai un exemple concret pour voir comment on implémente ça et me permettra de bricoler qqs lisp avec l'appel d'une variable numérique à l'utilisateur merci quelques trucs sur autocad
stephane69100 Posté(e) le 7 août 2008 Posté(e) le 7 août 2008 perso je viens de modfie le lisp avec toutes mes largeurs donc pour cela plus de soucis sa marche super bien question quand meme peut on integrer dans le lîsp un rayon de courbure au niveau des changement de direction (courbe differente à l'interrieur qu'a l'exterieur en veriter ces la valeur du raccords decaler par la largeur du Chemin de cable) disons que pour une largeur de temps j'ai un rayon de courbure de temps donc a chaque changement de direction j'ai un rayon de courbure de temps merci encore et merci d'avance [Edité le 7/8/2008 par stephane69100]
zebulon_ Posté(e) le 7 août 2008 Posté(e) le 7 août 2008 Bonjour, je remonte un peu ce post car je suis moi aussi interessé par une valeur d'imput... j'ai modifié le lisp ci-dessus et j'ai rajouté un getreal (on peut faire mieux, mais c'est plus cher) pour que le lisp vous demande à chaque fois la largeur voulue. peut on integrer dans le lîsp un rayon de courbure au niveau des changement de direction Au départ, le lisp demande à l'utilisateur de tracer une polyligne dont il fait 2 "décaler", un à droite et un à gauche. Le lisp utilise la commande Autocad _PLINE et, de ce fait (et sans trop se fatiguer à programmer) il y a possibilité d'entrer un ou plusieurs segments courbes. Donc, il suffit de dessiner intelligemment la polyligne de construction avec les rayons qui vont bien. perso je viens de modfie le lisp avec toutes mes largeurs donc pour cela plus de soucisTu pourrais partager ta personnalisation. Cela pourrait peut être en intéresser l'un ou l'autre. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
stephane69100 Posté(e) le 7 août 2008 Posté(e) le 7 août 2008 bonjour monsieur zebulon j'ai juste multiplier le lips de facon a avoir toute les largeurs que je desirais ;;;;;; lancer une commande autocad (defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO)(setq ETL (entlast))(setq OLDCMDECHO (getvar "CMDECHO"))(setvar "CMDECHO" 1)(foreach CMD LCMD(command CMD))(while (not (zerop (getvar "cmdactive")))(command pause))(setvar "CMDECHO" OLDCMDECHO)(setq LELEM nil)(if (not ETL) (setq ETL (entnext))(setq ETL (entnext ETL)))(while ETL(setq LELEM (cons ETL LELEM))(setq ETL (entnext ETL)))(setq RES LELEM)) (defun c:99 (/ D PLENAM PLOBJ OFFSETD OFFSETG PTOD PTFD PTOG PTFG AcDoc Space LO LF)(vl-load-com);; largeur de la polyligne (à changer si nécessaire)(setq D 0.099);; tracer une polyligne(setq PLENAM (car (mycmd '("_pline"))));; transformer en vla-object(setq PLOBJ (vlax-ename->vla-object PLENAM));; faire les décallages(vla-offset PLOBJ (/ D 2.0)) ; à droite(setq OFFSETD (vlax-ename->vla-object (entlast)))(vla-offset PLOBJ (/ D -2.0)) ; à gauche(setq OFFSETG (vlax-ename->vla-object (entlast))); effacer la polyligne d'origine(vla-erase PLOBJ); fermer les extrémités avec des lignes(setq PTOD (vlax-curve-getStartPoint OFFSETD))(setq PTFD (vlax-curve-getEndPoint OFFSETD))(setq PTOG (vlax-curve-getStartPoint OFFSETG))(setq PTFG (vlax-curve-getEndPoint OFFSETG)) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object))Space (if (= (getvar "CVPORT") 1)(vla-get-PaperSpace AcDoc)(vla-get-ModelSpace AcDoc) ))(vla-addLineSpace(vlax-3d-point PTOD)(vlax-3d-point PTOG))(setq LO (entlast))(vla-addLineSpace(vlax-3d-point PTFD)(vlax-3d-point PTFG))(setq LF (entlast));; on fait un PEDIT "Joindre" avec tout ça(setvar "peditaccept" 1)(command "_pedit" "_m" LO (vlax-vla-object->ename OFFSETD) LF (vlax-vla-object->ename OFFSETG) "" "_j" 0.1 "_w" "0.0" "");; et enfin on y met une hachure (qu'on peut changer ici)(command "-fhach" "_p" "_u" "45" D "_n" "_s" (entlast) "" "")(princ)) (defun c:123 (/ D PLENAM PLOBJ OFFSETD OFFSETG PTOD PTFD PTOG PTFG AcDoc Space LO LF)(vl-load-com);; largeur de la polyligne (à changer si nécessaire)(setq D 0.123);; tracer une polyligne(setq PLENAM (car (mycmd '("_pline"))));; transformer en vla-object(setq PLOBJ (vlax-ename->vla-object PLENAM));; faire les décallages(vla-offset PLOBJ (/ D 2.0)) ; à droite(setq OFFSETD (vlax-ename->vla-object (entlast)))(vla-offset PLOBJ (/ D -2.0)) ; à gauche(setq OFFSETG (vlax-ename->vla-object (entlast))); effacer la polyligne d'origine(vla-erase PLOBJ); fermer les extrémités avec des lignes(setq PTOD (vlax-curve-getStartPoint OFFSETD))(setq PTFD (vlax-curve-getEndPoint OFFSETD))(setq PTOG (vlax-curve-getStartPoint OFFSETG))(setq PTFG (vlax-curve-getEndPoint OFFSETG)) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object))Space (if (= (getvar "CVPORT") 1)(vla-get-PaperSpace AcDoc)(vla-get-ModelSpace AcDoc) ))(vla-addLineSpace(vlax-3d-point PTOD)(vlax-3d-point PTOG))(setq LO (entlast))(vla-addLineSpace(vlax-3d-point PTFD)(vlax-3d-point PTFG))(setq LF (entlast));; on fait un PEDIT "Joindre" avec tout ça(setvar "peditaccept" 1)(command "_pedit" "_m" LO (vlax-vla-object->ename OFFSETD) LF (vlax-vla-object->ename OFFSETG) "" "_j" 0.1 "_w" "0.0" "");; et enfin on y met une hachure (qu'on peut changer ici)(command "-fhach" "_p" "_u" "45" D "_n" "_s" (entlast) "" "")(princ)) (defun c:220 (/ D PLENAM PLOBJ OFFSETD OFFSETG PTOD PTFD PTOG PTFG AcDoc Space LO LF)(vl-load-com);; largeur de la polyligne (à changer si nécessaire)(setq D 0.22);; tracer une polyligne(setq PLENAM (car (mycmd '("_pline"))));; transformer en vla-object(setq PLOBJ (vlax-ename->vla-object PLENAM));; faire les décallages(vla-offset PLOBJ (/ D 2.0)) ; à droite(setq OFFSETD (vlax-ename->vla-object (entlast)))(vla-offset PLOBJ (/ D -2.0)) ; à gauche(setq OFFSETG (vlax-ename->vla-object (entlast))); effacer la polyligne d'origine(vla-erase PLOBJ); fermer les extrémités avec des lignes(setq PTOD (vlax-curve-getStartPoint OFFSETD))(setq PTFD (vlax-curve-getEndPoint OFFSETD))(setq PTOG (vlax-curve-getStartPoint OFFSETG))(setq PTFG (vlax-curve-getEndPoint OFFSETG)) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object))Space (if (= (getvar "CVPORT") 1)(vla-get-PaperSpace AcDoc)(vla-get-ModelSpace AcDoc) ))(vla-addLineSpace(vlax-3d-point PTOD)(vlax-3d-point PTOG))(setq LO (entlast))(vla-addLineSpace(vlax-3d-point PTFD)(vlax-3d-point PTFG))(setq LF (entlast));; on fait un PEDIT "Joindre" avec tout ça(setvar "peditaccept" 1)(command "_pedit" "_m" LO (vlax-vla-object->ename OFFSETD) LF (vlax-vla-object->ename OFFSETG) "" "_j" 0.1 "_w" "0.0" "");; et enfin on y met une hachure (qu'on peut changer ici)(command "-fhach" "_p" "_u" "45" D "_n" "_s" (entlast) "" "")(princ)) (defun c:316 (/ D PLENAM PLOBJ OFFSETD OFFSETG PTOD PTFD PTOG PTFG AcDoc Space LO LF)(vl-load-com);; largeur de la polyligne (à changer si nécessaire)(setq D 0.316);; tracer une polyligne(setq PLENAM (car (mycmd '("_pline"))));; transformer en vla-object(setq PLOBJ (vlax-ename->vla-object PLENAM));; faire les décallages(vla-offset PLOBJ (/ D 2.0)) ; à droite(setq OFFSETD (vlax-ename->vla-object (entlast)))(vla-offset PLOBJ (/ D -2.0)) ; à gauche(setq OFFSETG (vlax-ename->vla-object (entlast))); effacer la polyligne d'origine(vla-erase PLOBJ); fermer les extrémités avec des lignes(setq PTOD (vlax-curve-getStartPoint OFFSETD))(setq PTFD (vlax-curve-getEndPoint OFFSETD))(setq PTOG (vlax-curve-getStartPoint OFFSETG))(setq PTFG (vlax-curve-getEndPoint OFFSETG)) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object))Space (if (= (getvar "CVPORT") 1)(vla-get-PaperSpace AcDoc)(vla-get-ModelSpace AcDoc) ))(vla-addLineSpace(vlax-3d-point PTOD)(vlax-3d-point PTOG))(setq LO (entlast))(vla-addLineSpace(vlax-3d-point PTFD)(vlax-3d-point PTFG))(setq LF (entlast));; on fait un PEDIT "Joindre" avec tout ça(setvar "peditaccept" 1)(command "_pedit" "_m" LO (vlax-vla-object->ename OFFSETD) LF (vlax-vla-object->ename OFFSETG) "" "_j" 0.1 "_w" "0.0" "");; et enfin on y met une hachure (qu'on peut changer ici)(command "-fhach" "_p" "_u" "45" D "_n" "_s" (entlast) "" "")(princ)) (defun c:412 (/ D PLENAM PLOBJ OFFSETD OFFSETG PTOD PTFD PTOG PTFG AcDoc Space LO LF)(vl-load-com);; largeur de la polyligne (à changer si nécessaire)(setq D 0.412);; tracer une polyligne(setq PLENAM (car (mycmd '("_pline"))));; transformer en vla-object(setq PLOBJ (vlax-ename->vla-object PLENAM));; faire les décallages(vla-offset PLOBJ (/ D 2.0)) ; à droite(setq OFFSETD (vlax-ename->vla-object (entlast)))(vla-offset PLOBJ (/ D -2.0)) ; à gauche(setq OFFSETG (vlax-ename->vla-object (entlast))); effacer la polyligne d'origine(vla-erase PLOBJ); fermer les extrémités avec des lignes(setq PTOD (vlax-curve-getStartPoint OFFSETD))(setq PTFD (vlax-curve-getEndPoint OFFSETD))(setq PTOG (vlax-curve-getStartPoint OFFSETG))(setq PTFG (vlax-curve-getEndPoint OFFSETG)) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object))Space (if (= (getvar "CVPORT") 1)(vla-get-PaperSpace AcDoc)(vla-get-ModelSpace AcDoc) ))(vla-addLineSpace(vlax-3d-point PTOD)(vlax-3d-point PTOG))(setq LO (entlast))(vla-addLineSpace(vlax-3d-point PTFD)(vlax-3d-point PTFG))(setq LF (entlast));; on fait un PEDIT "Joindre" avec tout ça(setvar "peditaccept" 1)(command "_pedit" "_m" LO (vlax-vla-object->ename OFFSETD) LF (vlax-vla-object->ename OFFSETG) "" "_j" 0.1 "_w" "0.0" "");; et enfin on y met une hachure (qu'on peut changer ici)(command "-fhach" "_p" "_u" "45" D "_n" "_s" (entlast) "" "")(princ)) (defun c:508 (/ D PLENAM PLOBJ OFFSETD OFFSETG PTOD PTFD PTOG PTFG AcDoc Space LO LF)(vl-load-com);; largeur de la polyligne (à changer si nécessaire)(setq D 0.508);; tracer une polyligne(setq PLENAM (car (mycmd '("_pline"))));; transformer en vla-object(setq PLOBJ (vlax-ename->vla-object PLENAM));; faire les décallages(vla-offset PLOBJ (/ D 2.0)) ; à droite(setq OFFSETD (vlax-ename->vla-object (entlast)))(vla-offset PLOBJ (/ D -2.0)) ; à gauche(setq OFFSETG (vlax-ename->vla-object (entlast))); effacer la polyligne d'origine(vla-erase PLOBJ); fermer les extrémités avec des lignes(setq PTOD (vlax-curve-getStartPoint OFFSETD))(setq PTFD (vlax-curve-getEndPoint OFFSETD))(setq PTOG (vlax-curve-getStartPoint OFFSETG))(setq PTFG (vlax-curve-getEndPoint OFFSETG)) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object))Space (if (= (getvar "CVPORT") 1)(vla-get-PaperSpace AcDoc)(vla-get-ModelSpace AcDoc) ))(vla-addLineSpace(vlax-3d-point PTOD)(vlax-3d-point PTOG))(setq LO (entlast))(vla-addLineSpace(vlax-3d-point PTFD)(vlax-3d-point PTFG))(setq LF (entlast));; on fait un PEDIT "Joindre" avec tout ça(setvar "peditaccept" 1)(command "_pedit" "_m" LO (vlax-vla-object->ename OFFSETD) LF (vlax-vla-object->ename OFFSETG) "" "_j" 0.1 "_w" "0.0" "");; et enfin on y met une hachure (qu'on peut changer ici)(command "-fhach" "_p" "_u" "45" D "_n" "_s" (entlast) "" "")(princ)) comme tu peux le voir je suis partis de ton lips et j'ai crée une version pour chaque Chemin de cable que j'utilise donc 99, 123,220,316,412 et 508 avec un appel par taille comme cela pas de soucis voila j'ai pas fait de révolution sur le script car je n'y connais rien malheureusement
x_all Posté(e) le 7 août 2008 Posté(e) le 7 août 2008 yes merci beaucoup... je vien d'apprendre ma 1ere cmd lisp: getreal:) tu dis dans tes comments :;; et enfin on y met une hachure (qu'on peut changer ici)mais je comprend pas trop la ligne qui suit... je m'attendais à voir apparaitre ansi31d'autant que je vien de tester pour une route (largeur 7m) et pour un chemin de cable (largeur .2) et les hachure ont dans les deux cas un aspect lisible... ou est donc le parametre d'echelle de la hachure??? ha les mystères de la programmation... quand on y connet rien ça ressemble a un tour de magie mais ça va deja bien me servir comme ça...pour estimer des surfaces de voirie au Km vite vite fait... encore merci [Edité le 7/8/2008 par x_all] quelques trucs sur autocad
lili2006 Posté(e) le 7 août 2008 Posté(e) le 7 août 2008 Bonsoir à toutes et tous, De mieux en mieux, merci Mr zebulon_ Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
zebulon_ Posté(e) le 7 août 2008 Posté(e) le 7 août 2008 (command "-fhach" "_p" "_u" "45" D "_n" "_s" (entlast) "" "") "-fhach" c'est la commande de hachure "_p" c'est pour avoir accès au propriétés de cette commande "_u" c'est pour faire une hachure de type "Utilisateur" "45" c'est l'angle des traits de hachure D la distance entre deux traits de hachure. D est une variable, dans laquelle on stocke la largeur du chemin. Donc plus D est grand, moins la hachure sera dense (et inversement, bien sûr) "_n" pour dire qu'on ne veut pas de hachures doubles "_s" pour sélectionner des contours à hachurer (entlast) c'est la dernière entité, fabriquée par _pedit, et qui sert de contour "" pour terminer le "choix de objets" formant les contours "" pour sortir de la commande. Si tu veux de l'ANSI, il faut modifier cette ligne. Le mieux, c'est de le faire "à la main" dans Autocad et noter tout ce qu'on tape et le reproduire dans le lisp. Personnellement, j'utilise autant que possible les hachures "utilisateur" : elles sont simples (angle + distance) et, en plus, la distance demandée est en unités de dessin. Il n'y a pas de notion d'échelle (où on n'a jamais ce qu'on veut du premier coup !) comme pour les autres types de hachures. Pour Stéphane, la duplication est à proscrire, surtout en programmation. Dupliquer tout un lisp parce qu'il y a une ligne qui change, c'est un peu violent. AmicalementVincent Et arrêtez de m'appeler Monsieur. On n'est pas à l'école. [Edité le 7/8/2008 par zebulon_] C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
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