Aller au contenu

Assemblage de plans


Messages recommandés

Posté(e)

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 ;)

 

 

Posté(e)

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.

Posté(e)

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

 

 

 

Posté(e)

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), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Posté(e)

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

Posté(e)

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]

Posté(e)

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

Posté(e)

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....

 

Posté(e)

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~~

Posté(e)

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)

+ 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

Posté(e)

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

Posté(e)

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.

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é