(gile) Posté(e) le 24 mars 2008 Partager Posté(e) le 24 mars 2008 Salut, Bonuscad donnait ici un LISP pour décaler un segment de polyligne. En voici un autre qui permet de décaler plusieurs segments.Si les segments sélectionnés sont jointifs, il sont décalés en une seule polyligne.Arcs et largeurs sont conservés.Le LISP semble bien fonctionner quelques soient le SCU courant, le plan contenant la polyligne et la vue courante. http://pagesperso-orange.fr/gile/Images/ofsegs.gif PS : En téléchargement sur cette page EDIT: correction d'un dysfonctionnement EDIT 2 : mise en surbrillance des segments sélectionnés. ;;; OFFSEGS (gile) 25/08/2008 ;;; Décale les segments de polyligne sélectionnés. ;;; Les segments jointifs sont décalés en une seule polyligne ;;; Les arcs et les largeurs cont conservés ;;; Fonctionne quelques soient le SCU courant, la vue courante et le plan de la polyligne (defun c:ofsegs (/ space ofdist ent pline normal elevat params points side closest par bulge p1 p2 temp arc_data swid ewid tmp_pline ) (defun HighlightSegment (pl par / p1 p2 n lst) (setq p1 (trans (vlax-curve-getPointAtParam pl par) 0 1) p2 (trans (vlax-curve-getPointAtParam pl (+ par 1)) 0 1) ) (if (zerop (vla-getBulge pl par)) (grvecs (list -255 p1 p2)) (progn (setq n 0) (repeat 100 (setq lst (cons (trans (vlax-curve-getPointAtParam pl (+ n par)) 0 1) lst ) n (+ n 0.01) ) ) (grvecs (cons -255 (apply 'append (mapcar 'list lst (cdr lst)))) ) ) ) ) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (setq space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace *acdoc*) (vla-get-ModelSpace *acdoc*) ) ) (initget 6 "Par") (if (setq ofdist (getdist (strcat "\nSpécifiez la distance de décalage ou [Par] (if ( "par" (rtos (getvar "OFFSETDIST")) ) ">: " ) ) ) (if (= ofdist "Par") (setvar "OFFSETDIST" -1) (setvar "OFFSETDIST" ofdist) ) (setq ofdist (getvar "OFFSETDIST")) ) (if (and (setq ent (entsel "\nSélectionnez un segment à décaler: ")) (setq pline (vlax-ename->vla-object (car ent))) (= (vla-get-ObjectName pline) "AcDbPolyline") (setq normal (vlax-get pline 'Normal)) (setq elevat (vla-get-Elevation pline)) ) (progn (setq params (cons (fix (vlax-curve-getParamAtPoint pline (trans (osnap (cadr ent) "_nea") 1 0) ) ) params ) ) (HighlightSegment pline (car params)) (while (setq ent (entsel "\nSélectionnez le segment suivant ou [b]: ")) (if (equal (vlax-ename->vla-object (car ent)) pline) (progn (setq params (cons (fix (vlax-curve-getParamAtPoint pline (trans (osnap (cadr ent) "_nea") 1 0) ) ) params ) ) (HighlightSegment pline (car params)) ) ) ) (if (setq side (getpoint (if (minusp (getvar "OFFSETDIST")) "\nSpécifiez une valeur pour \"Par le point\": " "\nSpécifiez un point sur le côté à décaler: " ) ) ) (progn (redraw) (vla-StartUndoMark *acdoc*) (setq side (ilp (trans side 1 0) ((lambda (p) (trans (list (car p) (cadr p) (1+ (caddr p))) 2 0) ) (trans side 1 2) ) (trans (list 0 0 elevat) normal 0) normal ) closest (vlax-curve-getClosestPointTo pline side T) par (vlax-curve-getParamAtPoint pline closest) params (vl-sort params ' ) (if (minusp (getvar "OFFSETDIST")) (setq ofdist (distance side closest)) ) (cond ((equal closest (vlax-curve-getStartPoint pline) 1e-9) (setq side (trans side 0 normal)) ) ((equal closest (vlax-curve-getEndPoint pline) 1e-9) (setq par (- par 1) side (trans side 0 normal) ) ) ((= (fix par) par) (setq side (polar (trans closest 0 normal) ((if (clockwise-p (trans (vlax-curve-getPointAtParam pline (- par 0.1)) 0 normal ) (trans closest 0 normal) (trans (vlax-curve-getPointAtParam pline (+ par 0.1)) 0 normal ) ) + - ) (angle '(0 0 0) (trans (vlax-curve-getFirstDeriv pline par) 0 normal T ) ) (/ pi 2) ) ofdist ) ) ) (T (setq par (fix par) side (trans side 0 normal) ) ) ) (setq bulge (vla-getBulge pline (fix (vlax-curve-getParamAtPoint pline closest)) ) p1 (trans (vlax-curve-getPointAtParam pline (fix (vlax-curve-getParamAtPoint pline closest)) ) 0 normal ) p2 (trans (vlax-curve-getPointAtParam pline (1+ (fix (vlax-curve-getParamAtPoint pline closest))) ) 0 normal ) ) (if (zerop bulge) (if (clockwise-p side p2 p1) (setq ofdist (- ofdist)) ) (progn (setq arc_data (PolyArc-data bulge p1 p2)) (if (minusp bulge) (if ( (distance (car arc_data) side) ) (setq ofdist (- ofdist)) ) (if ( (cadr arc_data) ) (setq ofdist (- ofdist)) ) ) ) ) (while params (setq temp (cons (car params) temp) params (cdr params) ) (while (= (car params) (1+ (car temp))) (setq temp (cons (car params) temp) params (cdr params) ) ) (setq temp (reverse (cons (1+ (car temp)) temp))) (setq points (mapcar (function (lambda (pa / pt) (setq pt (trans (vlax-curve-getPointAtParam pline pa) 0 normal ) ) (list (car pt) (cadr pt)) ) ) temp ) ) (setq tmp_pline (vlax-invoke space 'addLightWeightPolyline (apply 'append points) ) ) (foreach p (cdr (reverse temp)) (vla-setBulge tmp_pline (vl-position p temp) (vla-getBulge pline p) ) (vla-getWidth pline p 'swid 'ewid) (vla-setWidth tmp_pline (vl-position p temp) swid ewid) ) (vla-put-Normal tmp_pline (vlax-3d-point normal)) (vla-put-Elevation tmp_pline elevat) (vl-catch-all-apply 'vla-Offset (list tmp_pline ofdist)) (vla-delete tmp_pline) (setq temp nil) ) (vla-EndUndoMark *acdoc*) ) ) ) (princ "\nEntité non valide.") ) (princ) ) ;;; Clockwise-p ;;; Retourne T si les points p1 p2 et p3 tournent dans le sens horaire (defun clockwise-p (p1 p2 p3) () ;;; Polyarc-data ;;; Retourne la liste des données d'un arc de polyligne (centre rayon angle). (defun polyarc-data (bu p1 p2 / ang rad cen area cg) (setq ang (* 2 (atan bu)) rad (/ (distance p1 p2) (* 2 (sin ang)) ) cen (polar p1 (+ (angle p1 p2) (- (/ pi 2) ang)) rad ) ) (list cen (abs rad) ang) ) ;;; ILP Retourne le point d'intersection de la droite définie par p1 p2 ;;; et du plan défini par un point et sa normale. (defun ilp (p1 p2 org nor / scl) (setq scl (/ (vxv nor (mapcar '- p1 org)) (vxv nor (mapcar '- p2 p1)) ) ) (mapcar (function (lambda (x1 x2) (+ (* scl (- x1 x2)) x1))) p1 p2 ) ) ;;; VXV Retourne le produit scalaire (réel) de deux vecteurs (defun vxv (v1 v2) (apply '+ (mapcar '* v1 v2)) ) [Edité le 24/3/2008 par (gile)][Edité le 25/3/2008 par (gile)][Edité le 25/3/2008 par (gile)] [Edité le 26/3/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 24 mars 2008 Partager Posté(e) le 24 mars 2008 Bonsoir à toutes et tous, Encore une invention qui va servir,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
richard-c Posté(e) le 25 mars 2008 Partager Posté(e) le 25 mars 2008 bonjour, moi aussi, j'aime bien ce programme, (j'aimas bien déjà celui de bonuscad)c'est seulement dommage que l'on ne voit pas en surbrillance les éléments que l'on clique (ou un changement de couleur provisoire) A+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 25 mars 2008 Auteur Partager Posté(e) le 25 mars 2008 Salut et merci pour ces premiers retours, J'ai modifié le code pour corriger un dysfonctionnement révélé par ElpanovEvgeniy. c'est seulement dommage que l'on ne voit pas en surbrillance les éléments que l'on clique J'en suis bien conscient, mais j'essaye d'avoir un fonctionnement "irréprochable" avant d'essayer d'améliorer l'interface. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 25 mars 2008 Auteur Partager Posté(e) le 25 mars 2008 J'ai fait une tentative de mise en surbrillance des segments sélectionnés (ça ne marche pas très bien avec les arcs). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
richard-c Posté(e) le 26 mars 2008 Partager Posté(e) le 26 mars 2008 bonjour, peut être est ce une volonté de l'auteur, quand on décale et que la polyligne est épaissit, la (les) polyligne(s) décalée(s)prenne aussi la même épaisseur. A+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 26 mars 2008 Auteur Partager Posté(e) le 26 mars 2008 bonjour, peut être est ce une volonté de l'auteur, quand on décale et que la polyligne est épaissit, la (les) polyligne(s) décalée(s)prenne aussi la même épaisseur. A+ Oui, les largeurs et arcs sont conservés, comme dans la commande DECALER Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 26 mars 2008 Auteur Partager Posté(e) le 26 mars 2008 Dernière version : le fichier PolySegments.lsp en téléchargement sur cette page. Nouveautés : - Les propriétés de la polyligne source (calque, couleur, type de ligne ...) sont conservées dans le (ou les) segment(s) décalé(s). - Cliquer sur un segment déjàs sélectionné permet de le désélectionner. - Un nouvelle commande : copsegs permet de copier. - Le fichier contient quelques sous-routines qui peuvent-être utiles aux amis lispeurs. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 26 mars 2008 Partager Posté(e) le 26 mars 2008 Bonsoir à toutes et tous, Tout simplement super ! Pas trouvé de beug après multiples essais,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
richard-c Posté(e) le 27 mars 2008 Partager Posté(e) le 27 mars 2008 Bonjour, je rejoint lili2006 et je dis CHAPEAU, comme d'abitude. A+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 27 mars 2008 Auteur Partager Posté(e) le 27 mars 2008 Merci à vous deux. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
SilvaineCad Posté(e) le 16 avril 2008 Partager Posté(e) le 16 avril 2008 Bonjour, Suis nouvelle sur ce forum, suis très intéressée par cette fonction.Par contre serait-il possible, lorsque le segment est décalé, de prolonger ou de couper les autres segments de la polyligne pour se "raccrocher" au nouveau segment créé ? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 16 avril 2008 Auteur Partager Posté(e) le 16 avril 2008 Salut et bienvenue, Je ne comprends pas bien ta demande, mais à priori ça ne me semble pas très simple quant au but à automatiser et plutôt spécifique.Ce LISP permet de faire quelque chose qu'AutoCAD ne fait pas (du moins pas encore). Pour ce que tu demandes, il me semble qu'AutoCAD fournit les outils nécessaires et sinon tu peux en trouver sur les pages suivantes :http://bruno.valsecchi.neuf.fr/index.htmlhttp://www.cadxp.com/sujetXForum-11303.htmhttp://www.cadxp.com/sujetXForum-14737.htm PS : tu peux effacer ton premier message en faisant Editer puis ! Supprimer ce message ! Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
SilvaineCad Posté(e) le 17 avril 2008 Partager Posté(e) le 17 avril 2008 Bonjour, En fait, je voudrais que lorsque le segment est décalé, il supprime le segment original et qu'il raccorde la polyligne au nouveau segment. Je sais pas si c'est plus clair ? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 17 avril 2008 Auteur Partager Posté(e) le 17 avril 2008 Salut, C'est bien ce que je pensais, ce que tu demandes n'est pas simple et nécessiterait de refaire un nouveau programme. Je n'en ai ni le temps ni le courage en ce moment, peut-être quelqu'un d'autre voudra-t-il se pencher sur la question ?...En attendant, tu as toujours les commandes COUPURE et PEDIT pour faire ce que tu désires. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité samuelM Posté(e) le 31 mai 2011 Partager Posté(e) le 31 mai 2011 Super il me va aussi cependant, je ne comprend pas pourquoi il laisse joint deux côté et le troisième qui fait pourtant parti de la même sélection . il est décalé sans être joint avec les deux autres? Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 31 mai 2011 Auteur Partager Posté(e) le 31 mai 2011 Je suis incapable de répondre à ta question.Essaye de formuler le plus clairement et le plus explicitement tes demandes... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité samuelM Posté(e) le 31 mai 2011 Partager Posté(e) le 31 mai 2011 j'ai dessiné un rectangleEnsuite avec ce programme je souhaite décaler trois coté.je lance donc le programme, j'entre la valeur de décalage, puis sélectionne mes trois cotés et indique le sens de décalage.je fais entré et là deux coté sont décalé proportionnellement et reste joint mais le troisième ne touche pas le coté avec lequel il devrait être joint. l'angle qui ne joint pas et celui où se trouve le point de base du rectangle. ça va mieux? [Edité le 31/5/2011 par samuelM] Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 31 mai 2011 Auteur Partager Posté(e) le 31 mai 2011 Je n'arrive pas à reproduire ce que tu décris, si les segments sont jointifs sur la polyligne source, les segments décalés le sont aussi.Le rectangle est-il bien dessiné avec la commande RECTANG ?As-tu bien téléchargé la dernière version (sur cette page) ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité samuelM Posté(e) le 31 mai 2011 Partager Posté(e) le 31 mai 2011 Voici si ça peu t'aider à comprendre. C'est mon programme complet avec à l'intérieur ton programme. Il sert à tracer un rectangle (qui représente une fenêtre) sur un mur avec un décalage autour. le décalage est identique sur les "droit" et "gauche" et "dessus". 1 )tu pointe un point de base2 )indique en +y3 ) exemple "2100"4 ) longueur largeur du rectangle5 )après il faut décaler les coté comme je l'ai décris (defun c:a4 (/ p1 p2 orient dist longueur largeur p3 userecho ent_select ent_pickpt ent_orig off_pt off_angle last_entity last_pt expr off_dist newoff_pt space ofdist ent pline normal elevat params points side closest par bulge p1 p2 temp arc_data swid ewid tmp_pline ) (setq p1 (getpoint "\nPoint de Base\n")) (setq orient (getorient p1 "\nIndiquer la direction\n")) (setq dist (getdist "\nIndiquer la distance :\n")) (setq p2 (polar p1 orient dist ) longueur (getdist p2 "\nLargeur tableau: ") largeur (getdist p2 "\nLongeur tableau: ") p3 (mapcar '+ p2 (list longueur largeur)) ) (command "_rectangle" "_non" p2 "_non" p3) (command "_rotate" "d" "" p2 180 "") ;;; Décalage de l'épaisseur du revêtement ;;;décalage du cadre ;;; Décale les segments de polyligne sélectionnés. ;;; Les segments jointifs sont décalés en une seule polyligne ;;; Les arcs et les largeurs cont conservés ;;; Fonctionne quelques soient le SCU courant, la vue courante et le plan de la polyligne (defun HighlightSegment (pl par / p1 p2 n lst) (setq p1 (trans (vlax-curve-getPointAtParam pl par) 0 1) p2 (trans (vlax-curve-getPointAtParam pl (+ par 1)) 0 1) ) (if (zerop (vla-getBulge pl par)) (grvecs (list -255 p1 p2)) (progn (setq n 0) (repeat 100 (setq lst (cons (trans (vlax-curve-getPointAtParam pl (+ n par)) 0 1) lst ) n (+ n 0.01) ) ) (grvecs (cons -255 (apply 'append (mapcar 'list lst (cdr lst)))) ) ) ) ) (vl-load-com) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) (setq space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace *acdoc*) (vla-get-ModelSpace *acdoc*) ) ) (initget 6 "Par") (if (setq ofdist (getdist (strcat "\nSpécifiez la distance de décalage ou [Par] <" (if (< (getvar "OFFSETDIST") 0) "par" (rtos (getvar "OFFSETDIST")) ) ">: " ) ) ) (if (= ofdist "Par") (setvar "OFFSETDIST" -1) (setvar "OFFSETDIST" ofdist) ) (setq ofdist (getvar "OFFSETDIST")) ) (if (and (setq ent (entsel "\nSélectionnez un segment à décaler: ")) (setq pline (vlax-ename->vla-object (car ent))) (= (vla-get-ObjectName pline) "AcDbPolyline") (setq normal (vlax-get pline 'Normal)) (setq elevat (vla-get-Elevation pline)) ) (progn (setq params (cons (fix (vlax-curve-getParamAtPoint pline (trans (osnap (cadr ent) "_nea") 1 0) ) ) params ) ) (HighlightSegment pline (car params)) (while (setq ent (entsel "\nSélectionnez le segment suivant ou : ")) (if (equal (vlax-ename->vla-object (car ent)) pline) (progn (setq params (cons (fix (vlax-curve-getParamAtPoint pline (trans (osnap (cadr ent) "_nea") 1 0) ) ) params ) ) (HighlightSegment pline (car params)) ) ) ) (if (setq side (getpoint (if (minusp (getvar "OFFSETDIST")) "\nSpécifiez une valeur pour \"Par le point\": " "\nSpécifiez un point sur le côté à décaler: " ) ) ) (progn (redraw) (vla-StartUndoMark *acdoc*) (setq side (ilp (trans side 1 0) ((lambda (p) (trans (list (car p) (cadr p) (1+ (caddr p))) 2 0) ) (trans side 1 2) ) (trans (list 0 0 elevat) normal 0) normal ) closest (vlax-curve-getClosestPointTo pline side T) par (vlax-curve-getParamAtPoint pline closest) params (vl-sort params '<) ) (if (minusp (getvar "OFFSETDIST")) (setq ofdist (distance side closest)) ) (cond ((equal closest (vlax-curve-getStartPoint pline) 1e-9) (setq side (trans side 0 normal)) ) ((equal closest (vlax-curve-getEndPoint pline) 1e-9) (setq par (- par 1) side (trans side 0 normal) ) ) ((= (fix par) par) (setq side (polar (trans closest 0 normal) ((if (clockwise-p (trans (vlax-curve-getPointAtParam pline (- par 0.1)) 0 normal ) (trans closest 0 normal) (trans (vlax-curve-getPointAtParam pline (+ par 0.1)) 0 normal ) ) + - ) (angle '(0 0 0) (trans (vlax-curve-getFirstDeriv pline par) 0 normal T ) ) (/ pi 2) ) ofdist ) ) ) (T (setq par (fix par) side (trans side 0 normal) ) ) ) (setq bulge (vla-getBulge pline (fix (vlax-curve-getParamAtPoint pline closest)) ) p1 (trans (vlax-curve-getPointAtParam pline (fix (vlax-curve-getParamAtPoint pline closest)) ) 0 normal ) p2 (trans (vlax-curve-getPointAtParam pline (1+ (fix (vlax-curve-getParamAtPoint pline closest))) ) 0 normal ) ) (if (zerop bulge) (if (clockwise-p side p2 p1) (setq ofdist (- ofdist)) ) (progn (setq arc_data (PolyArc-data bulge p1 p2)) (if (minusp bulge) (if (< (cadr arc_data) (distance (car arc_data) side) ) (setq ofdist (- ofdist)) ) (if (< (distance (car arc_data) side) (cadr arc_data) ) (setq ofdist (- ofdist)) ) ) ) ) (while params (setq temp (cons (car params) temp) params (cdr params) ) (while (= (car params) (1+ (car temp))) (setq temp (cons (car params) temp) params (cdr params) ) ) (setq temp (reverse (cons (1+ (car temp)) temp))) (setq points (mapcar (function (lambda (pa / pt) (setq pt (trans (vlax-curve-getPointAtParam pline pa) 0 normal ) ) (list (car pt) (cadr pt)) ) ) temp ) ) (setq tmp_pline (vlax-invoke space 'addLightWeightPolyline (apply 'append points) ) ) (foreach p (cdr (reverse temp)) (vla-setBulge tmp_pline (vl-position p temp) (vla-getBulge pline p) ) (vla-getWidth pline p 'swid 'ewid) (vla-setWidth tmp_pline (vl-position p temp) swid ewid) ) (vla-put-Normal tmp_pline (vlax-3d-point normal)) (vla-put-Elevation tmp_pline elevat) (vl-catch-all-apply 'vla-Offset (list tmp_pline ofdist)) (vla-delete tmp_pline) (setq temp nil) ) (vla-EndUndoMark *acdoc*) ) ) ) (princ "\nEntité non valide.") ) (princ) ;;; Clockwise-p ;;; Retourne T si les points p1 p2 et p3 tournent dans le sens horaire (defun clockwise-p (p1 p2 p3) (< (sin (- (angle p1 p3) (angle p1 p2))) -1e-14) ) ;;; Polyarc-data ;;; Retourne la liste des données d'un arc de polyligne (centre rayon angle). (defun polyarc-data (bu p1 p2 / ang rad cen area cg) (setq ang (* 2 (atan bu)) rad (/ (distance p1 p2) (* 2 (sin ang)) ) cen (polar p1 (+ (angle p1 p2) (- (/ pi 2) ang)) rad ) ) (list cen (abs rad) ang) ) ;;; ILP Retourne le point d'intersection de la droite définie par p1 p2 ;;; et du plan défini par un point et sa normale. (defun ilp (p1 p2 org nor / scl) (setq scl (/ (vxv nor (mapcar '- p1 org)) (vxv nor (mapcar '- p2 p1)) ) ) (mapcar (function (lambda (x1 x2) (+ (* scl (- x1 x2)) x1))) p1 p2 ) ) ;;; VXV Retourne le produit scalaire (réel) de deux vecteurs (defun vxv (v1 v2) (apply '+ (mapcar '* v1 v2)) ) ;;;Volé roulant (initget "Oui Non") (if (= (getkword "\nSouhaitez vous un volet roulant ? [Oui/Non] : ") "Oui") (progn (setq orient (getorient p2 "\nIndiquer la direction\n")) (setq dist (getdist "\nIndiquer la distance (hauteur du caisson) :")) (setq p5 (polar p2 orient dist) longueur (getdist p5 "\nLongueur du caisson VR : ") largeur (getdist p5 "\nHauteur du caisson VR : ") p6 (mapcar '+ p5 (list longueur largeur)) ) (command "_rectangle" "_non" p5 "_non" p6) (command "_rotate" "d" "" p5 180 "") (command "_move" p2 (/ new) "") ) ) );defun Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 31 mai 2011 Auteur Partager Posté(e) le 31 mai 2011 Avais-tu essayé la routine séparément avant de la coller (n'importe comment) dans ton code ?Si oui, fonctionnait-elle correctement ? Je ne pense pas que le problème vienne des routines que j'ai donné. Tu as collé au milieu de ton code les routines en modifiant la commande OFSEGS. Ça ne peut pas fonctionner comme ça (la programmation, c'est pas du patchwork). Place les routines (sans les modifier) à l'extérieur de ton programme (ou charges PolySegments.lsp avant de lancer ton programme) et appelle ofsegs dans ton programme en faisant : (c:ofsegs) PS : évite de dire qu'un programme ne fonctionne pas alors que tu l'as modifié... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité samuelM Posté(e) le 31 mai 2011 Partager Posté(e) le 31 mai 2011 Je suis désolé de t'avoir véxé mais je l'ai essayé séparément et il ne fonctionne pas non plus tout seul. Enfin il fonctionne mais pas entièrement.L'angle où se trouve le coin de base ne joint pas sur le décalage. je viens de vérifier une nouvelle fois en dessinant simplement un rectangle puis en utilisant seulement ton programme. Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 31 mai 2011 Auteur Partager Posté(e) le 31 mai 2011 Je viens de refaire plusieurs essais sur différentes versions d'AutoCAD et à chaque fois ça fonctionne comme prévu.Voir la video Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité samuelM Posté(e) le 9 juin 2011 Partager Posté(e) le 9 juin 2011 Bonjour, j'ai publié un message dans un autre sujet par rapport au programme "ofsegs" de Gile. Je vous invite à aller le voir si vous pouvez m'aider. : http:// http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=33197#pid142507 Lien vers le commentaire Partager sur d’autres sites More sharing options...
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