Fraid Posté(e) le 15 novembre 2010 Partager Posté(e) le 15 novembre 2010 Bonjour, Un dossier contenant un certain nombre de dxf ou de dwg (soit l'un ou l'autre) Ils sont incrementés (*01.dxf, *02.dxf, ...) Le dessin *02.dxf a obligatoirement une polyligne en commun avec le dessin *01.dxf. et ainsi de suite. Comment assembler les differents dessins par rapport a leur polyligne commune grace a un lisp ? Je n'ai pas le niveau pour l'ecrire moi meme et surtout pas le temps de me lancer dedans. (j'ai l'impression que personne n'a tenu compte du pont dans leur planning, ils veulent tous des plans ce soir :( ) Peut etre qu'il existe quelque chose ... Et je suis curieux de voir par quelle methode on peut y arriver ;) https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 15 novembre 2010 Partager Posté(e) le 15 novembre 2010 coucou puisqu'ils ont une polyligne en communc'est qu'ils sont dans le même système de coordonnées, non ? il suffit de les insérer avec le point 0,0,0 ou bien je n'ai pas compris. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 15 novembre 2010 Auteur Partager Posté(e) le 15 novembre 2010 Bonjour Didier Non, ils ne sont pas géoréférencés, mais on la même echelle et meme rotation c'est déja cela... je pourrai fournir un exemple, mais une routine qui fonctionne dans un sens large est plus profitable a tout le monde. Ce n'est pas la premiere fois que je me pose le probleme. Par exemple pour des planches cadastrales vectorisées sous Illustrator. https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 15 novembre 2010 Partager Posté(e) le 15 novembre 2010 coucou d'accord, je comprends mieux il faudrait au moins pouvoir isoler cet objet communpar son calque, sa couleur, enfin quelque chose qui permettede noter ses coordonnées.un exemple serait le bienvenu amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 16 novembre 2010 Auteur Partager Posté(e) le 16 novembre 2010 Bonjour, Voici 4 planches cadastrales en exemple. http://dl.free.fr/g7fDThREC https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 17 novembre 2010 Auteur Partager Posté(e) le 17 novembre 2010 Je vois que l'assemblage de plans n'interresse pas grand monde :question: je ne dois pourtant pas etre le seul a avoir quelque fois une centaine de fichiers a réunir. j'ai reflechis a un organigrame 1- faire l'assemblage dans le premier fichier 2- inserer le prochain en bloc n'importe ou (0,0) 3- parcourir le bloc et chercher une polyligne identique au dessin (je n'ai as encore eu le temps d'exploiter les reponses que j'ai eu dans ce post http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=30377 ) 4- déplacer le bloc en superposant cette polyligne et l'exploser (je sais pas comment calculer ce déplacement a cause du scu et sco) 5-retour au 2 https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
RhymOne Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 Si fraid c'est trés interressant!!Mais c'est l'inverse qui me preocuperais plus....J'ai un plan de dingue le diviser en x plans..... Pour ma part sur ton projets:1.A partir d'un dessin vierge appelé 1ere et 2ème XREF.Les placées selon l'entité en commun.2.Recommencer avec 2ème et 3ème XREF..etc.... Et tout sa peut être en lisp et laisser la main à l'utilisateur pour le calage(entité en commmun). Mais je pense que tout sa tu y avais déjà réflechit... DAO: AutoCAD(2D & 3D), CovadisCAO: 3D's MAX, Rhinoceros 3D, REVITGeoModeliSation: AutoCAD MEP, RhinoTerrainRendu: Vray for Rhino, Keyshot, LumionProgrammation: Grasshopper, Dynamo, VisualStudio C.V.Profil LinkedInBookSite web http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 Salut, Rhymone, Fais une recherche avec wxref Fraid, Un peu de patience...Ceux qui, sur CADxp, pourraient t'aider ont peut être aussi d'autres choses à faire ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 17 novembre 2010 Auteur Partager Posté(e) le 17 novembre 2010 Tu as raison Gile, je suis complètement "speedé" en ce moment 😛 Sinon Rhinome, le problème en prenant la main, c'est l'éventuelle complexité de la polyligne et surtout le zoom qui bloque en cas d'objet immense (comme c'est le cas dans les exemples fournis. Une raison supplémentaire qui a motivé cette demande. [Edité le 17/11/2010 par Fraid] https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 18 novembre 2010 Partager Posté(e) le 18 novembre 2010 Salut, J'ai essayé quelque chose avec les fichiers que tu as postés.Ça semble marcher mais il m'a fallu monter la tolérance à une unité dans la comparaison des polylignes pour retrouver la polyligne de référence dans les autres dessin et je n'arrive pas à accéder aux dxf. (defun c:MergeDwg (/ pl_ref pts_ref acdoc ms axdoc got pts vec lst dep) (vl-load-com) (if (setq pl_ref (car (entsel "\nSélectionnez la polyligne de référence: "))) (progn (setq pts_ref (gc:Poly-Pts pl_ref) acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) ms (vla-get-ModelSpace acdoc) ) (foreach file (vl-directory-files (getvar 'dwgprefix) "*.dwg" 1) (if (and (/= (getvar 'dwgname) file) (setq axdoc (gc:GetAxDbDoc (strcat (getvar 'dwgprefix) file))) ) (progn (setq lst nil got nil) (vlax-for o (vla-get-ModelSpace axdoc) (if (and (not got) (= "AcDbPolyline" (vla-get-ObjectName o)) (setq pts (gc:Poly-Pts o)) (setq vec (mapcar '- (car pts_ref) (car pts))) (equal pts_ref (mapcar '(lambda (p) (mapcar '+ p vec)) pts) 1.0) ) (setq dep vec got T ) (setq lst (cons o lst)) ) ) (if got (foreach obj (vlax-invoke axdoc 'CopyObjects lst ms) (vla-move obj (vlax-3d-point '(0. 0. 0.)) (vlax-3d-point dep)) ) ) (vlax-release-object axdoc) ) ) ) ) ) (princ) ) ;;; gc:Poly-Pts (gile) ;;; Retourne la liste des coordonnées SCG des sommets d'une polyligne (tous types) ;;; ;;; Argument ;;; pl : la polyligne (ename ou vla-object) (defun gc:Poly-Pts (pl / n p l) (vl-load-com) (setq n (fix (vlax-curve-getEndParam pl))) (or (vlax-curve-IsClosed pl) (setq n (1+ n))) (while (setq p (vlax-curve-getPointAtParam pl (setq n (1- n)))) (setq l (cons p l)) ) ) ;;; gc:GetAxDbDoc ;;; Accéder à un dessin fermé ;;; ;;; Retourne : ;;; un objet IAxDbDocument si le document est trouve ;;; nil si le document n'a pu être trouvé ou s'il est ouvert ;;; ;;; Argument : ;;; Le chemin complet du fichier (defun gc:GetAxDbDoc (filename / axdbdoc release) (setq axdbdoc (vlax-create-object (if ( "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) ) (if (vl-catch-all-apply 'vla-open (list axdbdoc filename) ) (not (vlax-release-object axdbdoc)) axdbdoc ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 18 novembre 2010 Auteur Partager Posté(e) le 18 novembre 2010 Merci Gile. Tu as sorti l'artillerie lourde J'etais tombé sur un post sur les objetdbx de Patrick35 me semble t'il ou Bonuscad.. Je m'y etais mis pensant avoir trouver les Incantations Ultimes. Aprés moult essais et autant de message d'erreur j'etais passé a autre chose... Faut dire que la doc est pas facile a trouver a ce sujet. Sinon des petits coquins de Smilies sont venus s'inserer dans le code Peut tu confirmer que c'est :p qui a ete remplacé? j'ai le doute. De mon coté j'avais essayé comeme quelque chose avec une autre approche ;|¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø ;¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø ¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø ASBL.lsp : Assemble tout les dessins d'un répertoire par leur plus longue Polylignes Communes Dépendance : Doslib ¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø ;¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø |;¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø (defun c:Asbl ( / CourantPath ListeDWG ;Variables Locales Cont1 Cont2 NbDWG NextDWG ListPolyIn NbPol NextPol MaxPolin MaxpolOn LongPol ListPolyOn) ;~~~~~~~~~~~~~~~~~; (vl-load-com) (setvar "CMDECHO" 0) (command "_UNDO" "_BE") (setvar "osmode" (logior (getvar "osmode") 16384)) ;~~~~~~~~~~~~~~~~~; (setq CourantPath (getvar "dwgprefix") ListeDWG (dos_find (strcat CourantPath "*.dwg")) Cont1 1 NbDWG (sslenght ListeDWG) MaxPolin 0 );EndSetq ;~~~~~~~~~~~~~~~~~; (repeat NbDWG ;sur chaque dessin présent dans le répertoire courant (setq NextDWG (ssname ListeDWG Cont1) ListPolyIn (ssget "_x" (list (cons 0 "LWPOLYLINE"))) Cont2 0 NbPol (sslenght ListPolyIn) );EndSetq ;~~~~~~~~~~; (repeat NbPol ;Recherche de la plus grande Polyligne dans le Dessin (setq NextPol (ssname ListPolyIn Cont2)) (setq LongPol (vla-get-length (vlax-ename->vla-object NextPol))) (if (> LongPol MaxpolIn) (setq Maxpolin LongPol PolIn NextPol ) );EndIf (setq Cont2 (1+ Cont2)) );Endrepeat ;~~~~~~~~~~; (command "_-insert" NextDWG "0,0" "" "" "") ;Insertion du prochain dessin (command "_explode" NextDWG) ;puis explosion ;~~~~~~~~~~; (setq ListPolyOn (ssget "_p" (list (cons 0 "LWPOLYLINE"))) ;selection des objets dernierement crées ;(c'est l'idée qui m'a fait ecrire le code) Cont2 0 NbPol (sslenght ListPolyOn) MaxpolOn 0 );EndSetq ;~~~~~~~~~~; (repeat NbPol ;Recherche de la plus grande Polyligne dans le Bloc explosé (setq NextPol (ssname ListPolyOn Cont2)) (setq LongPol (vla-get-length (vlax-ename->vla-object NextPol))) (if (> LongPol MaxpolOn) (setq MaxpolOn LongPol PolOn NextPol ) );EndIf (setq Cont2 (1+ Cont2)) );Endrepeat ;~~~~~~~~~~; ;Récuperer les coordonnées des premieres poignées des 2 polylignes ;~~~~~~~~~~; ;Déplacer la Selection ListPolyOn selon la difference des 2 poignées (setq Cont1 (1+ Cont1)) );Endrepeat ;~~~~~~~~~~~~~~~~~; (setvar "osmode" (logand (getvar "osmode") 16383)) (command "_UNDO" "_E") (setvar "CMDECHO" 1) (princ) );EnDefun et oui je suis encore au ras des paquerettes et quand je li cela (equal pts_ref (mapcar '(lambda (p) (mapcar '+ p vec)) pts) 1.0) j'avoue que cela me depasse Avec les post de Bruno il me semble que cela devient mystique le Tao du Lisp.... https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 18 novembre 2010 Auteur Partager Posté(e) le 18 novembre 2010 sa marche nickel impressionnant de rapidité :exclam: https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 18 novembre 2010 Auteur Partager Posté(e) le 18 novembre 2010 J'ai reçu un message personnel me demandant comment j'obtenais ces planches cadastrales et si on avait le droit de le faire. Le droit? Vu quelle sont en libre disposition sur Internet, cadastre.gouv.fr je ne vois pas pourquoi nous n'aurions pas le droit de la vectorisée. La recette: Les ingrédiants : Acrobat pro, Illustrator, Autocad, Internet Sur le site du Cadastre choisir les outils Avancé puis Imprimer Extrait de plan Choisir l'echelle et le format voulu puis cliquer sur Aperçu et edition (pdf) Annulé l'impression et enregistrer le PDF sur votre disque dur Dans l'explorateur windows clic droit sur le pdf / ouvrir avec Illustrator Dans Illustrator Fichiers/Exporter choisir dxf puis dans la fenetre des options choisir R14/LT98/LT97 laissé le reste par defaut OK Ouvrir le dxf avec Autocad exploser les blocs et metre a sa charte graphique. je livre un lisp qui fonctionne 9 fois sur 10 (il y a des blocs inatendus quelque fois) ;|¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø Cada.lsp : Mise a la charte LD-COM d'un extrait cadastral Dépendance : Xb.lsp Explose tout les blocs sp.lsp super purge (tout les deux disponible sur le forum) |;¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:cada (/ i spoly ent) (vl-load-com) (setvar "CMDECHO" 0) (command "_UNDO" "_BE") (setvar "osmode" (logior (getvar "osmode") 16384)) (IBloc&Explos "Calques") (Del&explos "BLOCK_3") (Del&explos "BLOCK_4") (Del&explos "BLOCK_5") (ErsasPolOfLong 812.96 812.98) (setq spoly (ssget "_x" (list (cons 0 "LWPOLYLINE")))) (changLay spoly "EN_40_LIM-CADASTRE") (Command "_.-LAYER" "v" "EN_40_LIM-CADASTRE" "") (setq spoly (ssget "_x" (list (cons 62 40)))) (changLay spoly "EN_32_construction") (setq spoly (ssget "_x" (list (cons 62 41)))) (changLay spoly "EN_32_construction") (Command "_.-LAYER" "v" "EN_32_construction" "") (c:xb) (ChangLayOfLong 15000 "EN_15_commune200") (Command "_.-LAYER" "v" "EN_15_commune200" "") (ChangLayOfLong 1500 "EN_40_lim-secada") (Command "_.-LAYER" "v" "EN_40_lim-secada" "") (command "_erase" (ssget "_x") "") (DeverLay) (c:sp) (setvar "osmode" (logand (getvar "osmode") 16383)) (command "_UNDO" "_E") (setvar "CMDECHO" 1) (princ) ) ;;=========================================================;; (defun IBloc&Explos (NomBloc) (command "_-insert" NomBloc pause "" "" "") (ExploseBloc NomBloc) ) ;;==========================================================;; (defun ExploseBloc (Nombloc) (setq sblk (ssget "_x" (list (cons 2 NomBloc)))) (if sblk (command "_explode" sblk) ) ) ;;==========================================================;; (defun Del&explos (nombloc) (setq sdel (ssget "_x" (list (cons 410 "model") (cons -4 "")))) (command "_erase" sdel "") (ExploseBloc NomBloc) ) ;;=========================================================;; (defun ChangLayOfLong ( Long Lay / i ent peri spol) (setq spol (ssget "x" (list (cons 0 "LWPOLYLINE")))) (setq i 0) (if spol (repeat (sslength spol) (setq ent (ssname spol i)) (setq PERI (vla-get-length (vlax-ename->vla-object ent))) (if (> PERI Long)(changLay ent Lay) ) (setq i (1+ i)) ) ) ) ;;=========================================================;; (defun changLay ( Sel Lay) (if Sel (command "_chprop" Sel "" "ca" Lay "co" "ducalque" "ep" "ducalque" "t" "ducalque" "") ) ) ;;=========================================================;; (defun ErsasPolOfLong ( LongMin LongMax) (setq spoly (ssget "_x" (list (cons 0 "LWPOLYLINE")))) (setq i 0) (if spoly (repeat (sslength spoly) (setq ent (ssname spoly i)) (setq PERI (vla-get-length (vlax-ename->vla-object ent))) ;(&& "1") (if (and(< PERI LongMax) (> PERI LongMin)) (command "_erase" ent "") ) (setq i (1+ i)) ) ) (command "_explode" sblk) ) ) ;;=========================================================;; (defun DeverLay (/ n AcDoc Lay) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))) (repeat (setq n (vla-get-count (vla-get-Layers AcDoc))) (setq lay (vla-item (vla-get-Layers AcDoc) (setq n (1- n)))) (if (= :vlax-true (vla-get-lock lay) ) (progn (vla-put-lock lay :vlax-false) (setq l_lst (cons lay l_lst)) ) ) ) (Princ "\nTout les Calques sont Dévérouillés !") (princ) ) Il ne reste plus qu'a adapter le nom des calques Aprés t'enchaine avec le Lisp de Gile plus haut et hop hpopohopophop~~ https://github.com/Fraiddd Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 19 novembre 2010 Partager Posté(e) le 19 novembre 2010 Tu as sorti l'artillerie lourde J'etais tombé sur un post sur les objetdbx de Patrick35 me semble t'il ou Bonuscad.. Je m'y etais mis pensant avoir trouver les Incantations Ultimes. Aprés moult essais et autant de message d'erreur j'etais passé a autre chose... Faut dire que la doc est pas facile a trouver a ce sujet Oh, pas si lourd que ça ;) ObjectDBX permet d'accéder à la base de données d'un fichier fermé sans l'ouvrir dans AutoCAD (c'est ce qui permet d'accélérer notablement un traitement par lot).L'inconvénient c'est qu'on accède qu'à la base de donnée, pas à "l'éditeur" donc pas moyen de faire un jeu de sélection d'utiliser command, etc. Mais il reste tout de même beaucoup de possibilités à condition d'utiliser Visual LISP.Pour essayer ObjectDBX, tu peux essayer la routine gc:GetAxDbDoc ci-dessus (ou d'autres données par Patrick_35 par exemple). Cette routine retourne un objet "AxDbDocument" (un document ouvert est un objet "AcadDocument") ou nil si le fichier n'a pas été trouvé ou s'il est ouvert.Tu fais donc :(setq doc (gc:GetAxDbDoc "UnFichier.dwg"))Pour connaitre les propriétés et les méthodes applicables, tu peux faire :(vlax-dump-object doc)Et tu verras qu'on accède à pas mal de choses (les tables, les dictionnaires, les espaces, etc.)Dans le cas qui nous préoccupe, l'accès au ModelSpace est suffisant puis qu'il faut en récupérer tous les objets.Quand on a fini d'utiliser l'objet AxDbDocument, ilne faut pas oublier de libérer les ressources :(vlax-release-object doc) et quand je li cela (equal pts_ref (mapcar '(lambda (p) (mapcar '+ p vec)) pts) 1.0) j'avoue que cela me depasse Ce n'est pas si compliqué. La fonction mapcar (fondamentale dans le traitement des listes) applique la fonction qui lui est passée comme premier argument à tous les éléments de la (ou des) liste(s) qui lui est (sont) passée(s) comme argument(s) suivant(s) et retourne la liste des résultats. Décortiquons cette expression en partant de l'expression la plus imbriquée. (mapcar '+ p vec)où + est la fonction, p la première liste (un point 3d) et vec la seconde (un vecteur).p prendra tour à tour la valeur de chaque point contenu dans pts la liste des sommets de la polyligne.vec est le vecteur qui décrit le déplacement du premier sommet de la polyligne traitée vers le sommet de la polyligne de référence. Ce vecteur est calculé avec une expression similaire un peu avant dans le code : (setq vec (mapcar '- (car pts_ref) (car pts))) Comment fonctionne mapcar. Soit x, y et z les coordonnées de p et u, v, w celles de vec.(mapcar '+ p vec) applique + à chacune des coordonnées correspondantes de p et vec ce qui équivaudrait à :(list (+ x u) (+ y v) (+ z w))C'est la manière dont, en LISP on ajoute un vecteur à un point, autrement dit on déplace le point suivant le vecteur.Donc cette expression retourne le point p déplacé par vec.Ce résultat est retourné à l'intérieur d'une autre expression mapcar :(mapcar '(lambda (p) (mapcar '+ p vec)) pts)Cette fois c'est une fonction anonyme (lambda) qui est utilisée.On aurait pu définir une fonction nommée (avec defun) puis l'utiliser avec mapcar :(defun depVec (p) (mapcar '+ p vec))puis :(mapcar 'depVec pts)Cette expression applique depVec (ou la fonction lambda qui est équivalente) à tous les points contenus dans pts. Elle retourne la liste des sommets de la polyligne traitée déplacés de la valeur de vec ce qui permet de les comparer avec ceux de la polyligne de référence avec equal et une tolérance (ici 1.0). Cette opération est effectuée avec toutes les polylignes dans le document AxDbDocument, jusqu'à ce que soit trouvé une polyligne qui corresponde à la polyligne de référence. quand cette polyligne est trouvée la valeur du vecteur est conservée, elle servira à déplacé les entités importées (soit toutes les entités de l'espace objet du document moins cette polyligne). En espérant ne pas avoir été trop confus. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
bonuscad Posté(e) le 19 novembre 2010 Partager Posté(e) le 19 novembre 2010 En espérant ne pas avoir été trop confus. Du tout ! très bon exposé. Je reprends même ta citation. Comment fonctionne mapcar. Soit x, y et z les coordonnées de p et u, v, w celles de vec. (mapcar '+ p vec) applique + à chacune des coordonnées correspondantes de p et vec ce qui équivaudrait à : (list (+ x u) (+ y v) (+ z w)) qui a mon gout est l'essentiel à comprendre pour bien intégré cette fonction.Une fois qu'on visualise bien cette mécanique, ça roule.... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fraid Posté(e) le 20 novembre 2010 Auteur Partager Posté(e) le 20 novembre 2010 Merci :D C'est vrais que je n'est par encore etudié la fonction mapcar, ni lamda d'ailleur je risquai donc pas de comprendre. Donc avant de relire et experimenter tout cela je vais devoir m'y mettre. Mais j'ai beaucoup de mal avec la théorie. Je comprend les choses que lorsque je les met en pratique. A l'école je n'ai compris le nombre PI que lorsque l'on me la expliqué avec un bout de ficelle... :P Mais j'ai fini par comprendre et m'en souviendrai toute ma vie. https://github.com/Fraiddd 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