Joffoon Posté(e) le 15 mai 2007 Posté(e) le 15 mai 2007 Bonjour, Quelque fois je dois décaler des cercles et polylignes... avec la commande Décaler, mais c'est fatiguant de toujours reclicker sur l'objet précédent pour la décaler encore et encore... Ce serai génial de juste pouvoir clicker, vers la direction ou l'on veut que l'objet ce décale, au tant de fois que l'on souhaite sans etre obligé de revenir ckicker sur l'objet précedent... Peut-être que cela existe?? Si c'est le cas, j'aimerai savoir comment faire.. A+, Joff [Edité le 15/5/2007 par Joffoon] Le ridicule ne tue pas, il te rend plus fort!
bonuscad Posté(e) le 15 mai 2007 Posté(e) le 15 mai 2007 Il y avait eu ce sujet , Il peut de pas fonctionner correctement, s'il faut on améliora (tout peu évoluer dans les sujet ancien) ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Joffoon Posté(e) le 15 mai 2007 Auteur Posté(e) le 15 mai 2007 Merci Bonuscad, Je vais y jeter un oeil de suite... Joff Le ridicule ne tue pas, il te rend plus fort!
Joffoon Posté(e) le 15 mai 2007 Auteur Posté(e) le 15 mai 2007 Je viens de tester ce Lisp, et il répond bien à mon attente, c'est vraiment super :thumbup: s'il faut on améliora (tout peu évoluer dans les sujet ancien) Justement peut-etre qu'il pourrait il y avoir amélioration, car lorsque l'on décale l'objet on peut les compter si on veut décaler l'objet 10 fois, mais si c'est une centaine.. ça devient la croix et la bannière pour les yeux ;) , donc si il pouvait y avoir une ligne de commmande en plus qui demanderait de combien de fois on veut décaler l'objet, ce serait génial, peut-etre que je demande trop?? De toute façon meme si cela n'est pas faisable, c'est pas grave car ton Lisp me dépanne superbement bien.... Merci de votre interessement, Joff [Edité le 15/5/2007 par Joffoon] Le ridicule ne tue pas, il te rend plus fort!
rebcao Posté(e) le 15 mai 2007 Posté(e) le 15 mai 2007 ça existe depuis la version 2006 :( La commande décaler s'est enrichie de plusieurs options : EFFACER, CALQUE, et MULTIPLE Une fois la valeur entrée, puis l'objet sélectionné, il suffit de faire bouton droit et choisir l'option MULTIPLE ! 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 @)
Joffoon Posté(e) le 15 mai 2007 Auteur Posté(e) le 15 mai 2007 Merci Christian, Je ne le savais pas du tout du fait que ça aller faire presque 8 ans que je n'avais pas toucher à Autocad et j'ai remis la main dessus cela va faire un an pile poil en version map 2007.. (reference à ton smyley) ;) J'ai essyé de chercher aussi si on pouvait donner un nombre de decalage de l'objet, peut-etre es-tu au courant?? Merci encore pour tes précisions, A+, Joff Le ridicule ne tue pas, il te rend plus fort!
rebcao Posté(e) le 15 mai 2007 Posté(e) le 15 mai 2007 NON ! ça manque... c'est une sorte de "réseau" ! mais la commande réseau ne peut s'appliquer à des formes complexes ou simplement à un cercle 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 @)
Joffoon Posté(e) le 15 mai 2007 Auteur Posté(e) le 15 mai 2007 Ok et merci Christian, Je relance tout de meme le sujet (Réponse n°3) au niveau de ligne de commande qui pourrait etre utile pour pouvoir donner le nombre de decalage pour l'objet... Si quelqu'un a une idée?? Merci encore,A+, Joff [Edité le 15/5/2007 par Joffoon] Le ridicule ne tue pas, il te rend plus fort!
nazemrap Posté(e) le 15 mai 2007 Posté(e) le 15 mai 2007 Bonjour, vraiment vite fait un vba qui permet de décaler avec une distance et le nombre de fois, sur les objets indiqués dans le code.J' ai pas tout testé... Public Sub dc_nbfois() Dim obj As AcadEntity Dim reseau As Variant Dim distance As Double Dim combien As Double Dim n As Integer ThisDrawing.Utility.GetEntity obj, pt, "Sélectionnez l' objet" If obj.ObjectName = "AcDbArc" Or _ obj.ObjectName = "AcDbCircle" Or _ obj.ObjectName = "AcDbEllipse" Or _ obj.ObjectName = "AcDbLine" Or _ obj.ObjectName = "AcDbLightweightPolyline" Or _ obj.ObjectName = "AcDbPolyline" Or _ obj.ObjectName = "AcDbSpline" Or _ obj.ObjectName = "AcDbXLine" Then distance = InputBox("Quelle est la valeur du décalage," & vbLf & "négative ou positive," & vbLf & vbLf & "décimales avec la virgule clavier") combien = InputBox("Combien d' objets désirés") End If For n = 1 To combien reseau = obj.Offset(distance * n) Next End Sub
bonuscad Posté(e) le 15 mai 2007 Posté(e) le 15 mai 2007 Bon ben moi j'ai par encore gouter a celles nouvelles options de "décaler" en 2006 :( Je reviens à ton sujet Joffoon, vu que tu veux un nombre précis de décalage, j' ai revu entièrement le lisp: (grread) n'est plus d'aucune utilité pour avoir un effet visuel. Voici à quoi j'arrive, en espérant qu'il n'a pas trop de défaut. :P (defun C:Mul_Offset ( / obj ent vla-ent pt_sel param deriv alpha dis_offset where_pt v1 v2 det_or e_last) (while (not (setq obj (entsel "\nSélectionner l'objet à décaler: ")))) (setq ent (car obj) vla-ent (vlax-ename->vla-object ent)) (cond ((member (vlax-get-property vla-ent 'ObjectName) '("AcDbLine" "AcDbXline" "AcDbPolyline" "AcDb2dPolyline" "AcDbSpline" "AcDbEllipse" "AcDbArc" "AcDbCircle") ) (setq pt_sel (vlax-curve-getClosestPointTo vla-ent (trans (cadr obj) 1 0)) param (vlax-curve-getparamatpoint vla-ent pt_sel) deriv (vlax-curve-getfirstderiv vla-ent param) alpha (atan (cadr deriv) (car deriv)) ) (redraw ent 3) (initget "Par _Through") (setvar "OFFSETDIST" (if (not (setq dis_offset (getdist (strcat "\nSpécifiez la distance de décalage ou [Par] <" (if (< (getvar "OFFSETDIST") 0) "Par" (rtos (getvar "OFFSETDIST"))) ">: ")))) (progn (if (< (getvar "OFFSETDIST") 0) (setq dis_offset "Through")) (getvar "OFFSETDIST")) (if (eq dis_offset "Through") -1 dis_offset) ) ) (if (< (getvar "OFFSETDIST") 0) (princ "\nAttribuez une valeur à \"Par le point\": ") (princ "\nSpécifiez un point sur le côté à décaler: ") ) (initget 9) (setq where_pt (getpoint)) (if (< (getvar "OFFSETDIST") 0) (setvar "OFFSETDIST" (distance (vlax-curve-getClosestPointToProjection vla-ent (trans where_pt 1 0) (mapcar '- (trans (getvar "VIEWDIR") 1 0) (trans '(0 0 0) 1 0)) T ) (list (car (trans where_pt 1 0)) (cadr (trans where_pt 1 0))) ) ) ) (redraw ent 4) (setq alpha (atan (cadr deriv) (car deriv))) (setq v1 (mapcar '- (polar pt_sel alpha 1.0) pt_sel) v2 (mapcar '- (trans where_pt 1 0) pt_sel) ) (setq det_or (apply '(lambda (x1 y1 z1 x2 y2 z2) (- (* x1 y2) (* y1 x2))) (append v1 v2))) (cond ((> det_or 0.0) (setvar "OFFSETDIST" (- (abs (getvar "OFFSETDIST"))))) ((< det_or 0.0) (setvar "OFFSETDIST" (abs (getvar "OFFSETDIST")))) ) (if (member (vlax-get-property vla-ent 'ObjectName) '("AcDbLine" "AcDbXline")) (setvar "OFFSETDIST" (abs (getvar "OFFSETDIST")))) (setq e_last ent) (initget 7) (repeat (getint "\nNombre de répétition : ") (if (and e_last (vl-catch-all-error-p (vl-catch-all-apply 'vla-Offset (list (vlax-ename->vla-object e_last) (getvar "OFFSETDIST") ) ) )) (progn (setq e_last nil) (princ "\nL'objet ne peut pas être décalé.")) (setq e_last (entlast)) ) ) ) (T (princ "\nL'objet ne peut pas être décalé.")) ) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Joffoon Posté(e) le 16 mai 2007 Auteur Posté(e) le 16 mai 2007 Salut Bonuscad, Merci d'avoir revu ton Lisp, il est magnifique :thumbup: , il fonctionne super bien.. c'est fort.. C'est vraiment génial d'etre sur un site tel que cadxp... ;) c'est clair qu'il y a des grosses pointures :cool: .. Merci encore.. Salut Nazemrap, Merci pour ton code mais je ne sais pas sous quelle extension l'enregistrer (je n'ai jamais touché au VBA) ?? J'aimerai l'essayer aussi.. A+, Joff Le ridicule ne tue pas, il te rend plus fort!
nazemrap Posté(e) le 16 mai 2007 Posté(e) le 16 mai 2007 Bonjour, Quel dommage (!!!!!):exclam: Copier le code présent ci-dessus.Dans autocad ouvert appuyer sur "ALT" et "F11"(ouverture de vba)menu "insértion" > "module"Coller le code dans le module ouvert.Pour le conserver,"enregistrer" (l' extension sera dvb) Pour l' exécuterretour dans le dessin autocad."ALT" et "F8"Choisir le nom de la macrobouton "exécuter" J 'espère ne rien avoir oublié ... [Edité le 16/5/2007 par nazemrap]
Joffoon Posté(e) le 16 mai 2007 Auteur Posté(e) le 16 mai 2007 Ok et merci Nazemrap, Je vien de le tester, il fonctionne bien.. :) Bonne journée à touttes et à tous.. A+, Joff Le ridicule ne tue pas, il te rend plus fort!
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