Aller au contenu

yb1971

Membres
  • Compteur de contenus

    32
  • Inscription

  • Dernière visite

Tout ce qui a été posté par yb1971

  1. yb1971

    Modification d'un LISP

    Merci déjà GEGEMATIC. Donc après avoir essayer, cela ne fonctionne plus! Ce Lisp nous sert effectivement à plusieurs choses: -commande (sc) : qui nous permet de faire des courbes de virage suivant un empattement défini et un point de navigation avec un Bloc. - commande (cl) : idem que "sc" mais pour un changement d'axe. - commande (cible) : c'est celle-ci que je voudrais qui soit modifiee! donc celle-ci nous permet d'extraire la position x,y d'un bloc (qui sont des réflecteurs pour nous); d'extraire le contenu d'un calque (des murs pour nous) et le contenu d'un autre calque (des trajectoires pour nous). Donc 3 fichiers (1 dessin.txt / 2 mur.txt / 3 Mark_1.dat). Ces fichiers sont ensuite utilisés avec un autre logiciel. Mon souci en fait, c'est que suivant la taille de l'affaire sur-laquelle nous bossons, quand on traite les données extraites, cela peut-être très long... D'où mon souhait de pouvoir selectionner juste une partie du plan, plutôt que de calculer toute l'affaire. Bonne fin de journée et encore merci
  2. yb1971

    Modification d'un LISP

    Cela n'est pas glané sur internet déjà mais un Lisp du boulot, le soucis est que l’auteur n'est plus là!
  3. yb1971

    Modification d'un LISP

    Personne pour m'aider? :(
  4. yb1971

    Modification d'un LISP

    j'ai modifier mon message du coup :)
  5. Bonjour, je suis à recherche de quelqu'un qui pourrait me modifier un LISP. Ce LIPS me sert à plusieurs choses, notamment celle d'extraire des coordonnées de blocs et le contenu de certains calques (commande (cible)). Pour l'instant il me fait ça sur la totalité du dessin, et je voudrais pouvoir faire de même mais qu'il me propose de selectionner une zone du dessin avant. Si quelqu'un sait comment faire, me contacter et je lui transmettrai les fichier, car il y a un .lsp et un .dcl Merci d'avance ;; script Autolisp v8.0 - ;; 18.02.2010 - NMB ;; utilitaires AutoCAD ;; pour configuration laser ;; ;; But : ;; - dessin des trajectoires laser ;; - exportation des coordonnees des cibles ;; ------------------------------------------------------- ;; trajectoires : ;; trajectoires disponnibles : ;; - Virage Traine : (vt) ;; - virage SurCompense : (sc) ;; - Changement de Ligne (surcompense) : (cl) ;; ;; ------------------------------------------------------- ;; cibles ;; exportation dans 2 fichiers : ;; - mark_1.dat (au format IML) ;; - mur.txt (au format ligne a ligne x1 y1 x2 y2) ;; - dessin.txt (au format ligne a ligne x1 y1 x2 y2) ;; ces fichiers sont prets a l'emploi pour utilisation les utilitaires windows ;; IML et PsiNav ;; ;;----------------------------------------------------------------------------- ;; Initialisation et gestion de l'IHM ;; -------------------------------------------------------- ;; fonction cree pour gere l'action accept trajectoire ;; (recuperation des valeurs du dialogue) ;; parametres : ;; AUCUN ;; valeur retournee : ;; AUNCUNE (defun action_accept_traj () (setq n_bloc_agv (get_tile "liste_agv")) (setq s_empattement (get_tile "edit_empattement")) (done_dialog) ) ;; ------------------------------------------------------------------------ ;; initialisation du script ;; mise a jour des variables globales ;; saisie des plans, des noms blocs, empattement avec boite de dialogue ;; parametres ;; AUNCUN ;; valeur retournee ;; AUCUNE ;; (defun init () ;; mise du SCU dans quelque chose de correct ; (command "_UCS" "G") (setq script_init 0) ;; vrai si import troncon en cours ... (setq import_tronc 0) (while (/= script_init 1) ;; creation d'une liste contenant les noms de blocs (setq liste_bloc (liste_mot_clef "BLOCK")) (setq liste_bloc_simul ( filter match_simul_block liste_bloc )) ;; initialisation de la boite de dialogue ;; (setq dcl_id (load_dialog "laser8.dcl")) ;; charge fichier DCL (if (NOT (new_dialog "laser_traj" dcl_id)) ( alert "erreur ouverture fichier dcl" ) ) ;; initialisation des listes (start_list "liste_agv") (mapcar 'add_list liste_bloc_simul) (end_list) ;; recuperation des valeurs precedentes si elles existent ;; attention, comme des blocs ou des plans ont pu etre crees ;; il faut chercher le numero de la precedente selection ;; dans la liste... ;; les fonctions suivantes remplissent : ;; n_bloc_agv ;; n_plan_simu ;; n_plan_cote ;; n_plan_traj ;; n_plan_carf ;; -> en valeur numerique ;; -> les valeurs seront ensuite ;; -> converties en chaine (setq n_bloc_agv (cherche_liste liste_bloc_simul nom_bloc_agv) ) (if (/= n_bloc_agv nil) (set_tile "liste_agv" (itoa n_bloc_agv)) ) (if (/= s_empattement nil) (set_tile "edit_empattement" s_empattement) ) (action_tile "accept" "(action_accept_traj)" ) (start_dialog) ;; recuperation des valeurs (setq nom_bloc_agv (nth (atoi n_bloc_agv) liste_bloc_simul)) (setq E (atoi s_empattement)) (unload_dialog dcl_id) (if (= E 0) (alert "Empattement non correct!") ) (setq script_init 1) ) ) ;; insert a block ;; @param ;; blockname block name ;; x pos in x ;; y pos in y ;; theta orientation in degree ( defun insert_block (blockname x y theta) (command "_insert" blockname "_non" (list x y) "" "" (rad2deg theta) ) ) ;; -------------------------- ;; renvoi le nom du bloc ou nil si l'entite n'est pas un bloc (defun nom_bloc (entite) (setq choix (entget (car entite))) (if (= (cdr (assoc 0 choix)) "INSERT") (cdr (assoc 2 choix)) nil ) ) ;; performs a filter on list ;; @param ;; f filter function, (if f elmt) is used to select elements ;; l list to filter (defun filter (f l / a) (foreach i l ( if ( f i ) (setq a (append a (list i) )) nil ) ) a ) ;; returns if block name corresponds to simulation ;; (defun match_simul_block ( blockname ) (wcmatch blockname "*SI") ) ;; "safe" itoa ;; @return itoa(i) or nil if str is nil (defun itoa_safe (i) ( if i (itoa i) nil ) ) ;; ------------------------------------------------------------------------- ;; sauvegarde des parametres qui vont etre modifies pendant le script et ;; modification des valeurs necessaire ;; parametres ;; AUCUN ;; valeur retournee : ;; AUCUNE ;; (defun contexte_debut () ;; sauvegarde du plan courant (setq sauve_clayer (getvar "CLAYER")) ) ;; ------------------------------------------------------------------------- ;; restauration du contexte ;; remise du layer a la valeur sauvegardee ;; parametres ;; AUCUN ;; valeur retournee : ;; AUCUNE ;; (defun contexte_restaure () ;; restauration du plan (command "_layer" "CH" sauve_clayer "") ) ;;----------------------------------------------------------------------------- ;; Fonctions utilitaires pour AutoCAD ;;----------------------------------------------------------------------- ;; ------------------------------------------------------------------------- ;; conversion angle en radians en degres ;; parametre ;; a : angle en radians ;; valeur retournee ;; angle en degres ;; (defun rad2deg (a) (* 180 (/ a pi)) ) ;; ------------------------------------------------------------------------- ;; calcul d'une tangeante ;; parametre ;; a : angle en radians ;; valeur retournee ;; tangeante de l'angle ;; ou erreur si a = 0 mod pi ;; (defun tan (a) (/ (sin a) (cos a)) ) ;; ------------------------------------------------------------------------- ;; calcul d'un angle en radians entre -pi et +pi ;; a : angle en radians ;; valeur retournee ;; a : angle raporte entre -pi et +pi (defun mod2pi (a) (while (> a pi) (setq a (- a (* 2.0 pi))) ) (while (< a (- pi)) (setq a (+ a (* 2.0 pi))) ) a ) ;; ------------------------------------------------------------------------- ;; calcul d'un carre ;; parametre ;; a : valeur ;; valeur retournee ;; a : carre ( a*a ) ;; (defun carre (a) (* a a) ) ;; fonction qui recherche des valeurs dans les tables d'AutoCAD ;; le resultat est une liste, qui contient toutes les valeurs trouvees ;; classees par ordre alphabetique ;; ;; exemple d'utilisation : liste_mot_clef( "LAYER" ) renvoie une liste contenant tous ;; les plans du dessin. ;; ;; cette fonction peut etre utilisee pour : ;; LAYER, BLOCK, ... ;; ;; parametres ;; mot_clef : chaine contenant un mot clef d'une table AutoCAD ;; valeur retournee ;; liste contenant l'ensmble des identifiant pour cette clef (cf exemple) ;; (defun liste_mot_clef (mot_clef) (setq liste_mot nil) (setq l (tblnext mot_clef 1)) (while l (setq liste_mot (cons (cdr (assoc 2 l)) liste_mot ) ) (setq l (tblnext mot_clef)) ) (reverse liste_mot) (setq liste_mot (acad_strlsort liste_mot)) ) ;; -------------------------------------------------------- ;; renvoie le premier numero de article si il est present dans la liste ;; parametre ;; liste : liste a examiner ;; article : element a rechercher ;; valeur retournee : ;; indice (dans la liste) de article s'il existe ;; nil si l'article n'est pas dans la liste ;; (defun cherche_liste (liste article) (if ( /= (setq l2 (member article liste)) nil ) (- (length liste) (length l2)) nil ) ) ;; ------------------------------------------------------------------------ ;; Fonctions de recherche des elements du plan (defun liste_magnet () (liste_bloc_attr 1 nil nom_bloc_magnet) ) ;; ------------------------------------------------------------------------ ;; exportation ;; ecriture d'une liste sur le disque formattee avec des espaces ;; paramatres : ;; - fichier : descripteur de fichier ;; - debut ligne : chaine a mettre en debut de chaque ligne ;; - list : liste a ecrire ;; - separ : caractere ou chaine de separation (defun export_liste (fichier debut_ligne liste separ) (foreach article liste (setq debut 1) (if debut_ligne (progn (princ debut_ligne fichier) (princ separ fichier) ) ) (foreach attr article (if debut (setq debut nil) (princ separ fichier) ) (princ attr fichier) ) (princ "\n" fichier) ) ) ;; ------------------------------------------------------------------------ ;; retourne une liste de bloc avec attributs presents sur le dessin ;; la liste comprend en final ;; la position d'insertion du bloc ( optionnel ) ;; la liste des attributs ;; parametres ;; insert_pos ( different de nil si la position d'insertion doir etre ;; ajoutee dans la liste ) ;; attr_name ( si different de nil, le nom des champs est mis dans la ;; liste ) ;; nom_bloc nom du bloc ;; valeur retournee : ;; liste ;; format du retour : ;; ( ( attribut1, attribut2, ... <x1, y1, theta1> ), ;; ( attribut1, attribut2, ... <x2, y2, theta2> ), ;; ... ;; ) ;; (defun liste_bloc_attr (insert_pos attr_name nom_bloc) ;; initialisation liste ensmble troncon (setq ensemble_bloc nil) ;; parcours de la liste des blocs (setq selection (ssget "X" (list (cons 0 "INSERT") (cons 2 nom_bloc)) ) ) (if (/= selection nil) (progn ;; parcours de la selection (setq i 0) (setq n (sslength selection)) (while (< i n) (setq entite (entget (ssname selection i))) ;; l'entite selectionnee est un bloc compose d'attributs ;; on va parcourir l'entite a la recherche des attributs (setq id_entite (cdar entite)) (setq attribut id_entite) ;; initialisation bloc courant (setq bloc nil) ;; test de la presence d'attributs en suite... (if (= (cdr (assoc 66 entite)) 1) (setq fin 0) (setq fin 1) ) ;; principe : ;; extraction de la prochaine entite : si nil, ;; cond arrete le traitement ;; test si entite est "SEQ END" : si oui, cond arrete ;; traitement ;; test si entite est "ATTRIB" : extraction des donnees ;; sinon, rien (while (AND ;; extraction entite du bloc (/= (setq attribut (entnext attribut)) nil) (= fin 0) ) (if (/= (cdr (assoc 0 (entget attribut))) "SEQEND" ) (progn ;; ajout du nom de l'attribut ( si attr_name ) (if attr_name (setq bloq ( append bloc (list (cdr (assoc 2 (entget attribut)))) ) ) ) ;; ajout de la valeur de l'attribut (setq bloc ( append bloc (list (cdr (assoc 1 (entget attribut)))) ) ) nil ) (setq fin 1) ;; pour passer a l'objet suivant ) ) ;; point d'insertion ? (if insert_pos (progn (setq point_insertion (cdr (assoc 10 entite))) (setq x (car point_insertion)) (setq y (cadr point_insertion)) (setq theta (cdr (assoc 50 entite))) (if attr_name (setq bloc (append bloc (list "x" x "y" y "theta" theta))) (setq bloc (append bloc (list x y theta))) ) ) ) (setq ensemble_bloc ( append ensemble_bloc (list bloc) ) ) (setq i (+ 1 i)) ) ensemble_bloc ) nil ) ) ;; ------------------------------------------------------------------------- ;; conversion angle en degre en radians ;; parametre ;; a : angle en degres ;; valeur retournee ;; angle en radians ;; (defun deg2rad (a) (* pi (/ a 180.0)) ) ;; ------------------------------------------------------------------------- ;; calcul du premier arc du surcompense ;; parametre ;; s : represente l'avancement dans le virage ;; il doit varier entre 0 et 0.5 ;; valteur retournee : (liste) ;; ( xav(mm) yav(mm) xar(mm) yar(mm) theta(rad) ) ;; (defun calcul_surcompense_arc1 (s) ;; -----> prevoir gestion d'erreur si s<0 et s>0.5 ;; affectation de xar_t ;; pendant que s varie de 0 a 0.5, xar_t varie de 0 a xm (setq xar_t (* 2 s xm)) (setq yar_t (* k xar_t xar_t xar_t)) ;; calcul du vecteur norme tangeant a la courbe decrite par les roues ar (setq u 1) (setq v (* 3.0 k xar_t xar_t)) (setq norme ( distance (list u v) (list 0 0) ) ) (setq u (/ u norme)) (setq v (/ v norme)) ;; calcul position roue avant dans repere troncon (setq xav_t (+ xar_t (* E u))) (setq yav_t (+ yar_t (* E v))) ;; calcul position roue avant dans repere absolu (setq xav (- (+ x1 (* xav_t (cos angle1))) (* yav_t (sin angle1)) ) ) (setq yav (+ (+ y1 (* xav_t (sin angle1))) (* yav_t (cos angle1)) ) ) ;; calcul position roue arriere dans repere absolu (setq xar (- (+ x1 (* xar_t (cos angle1))) (* yar_t (sin angle1)) ) ) (setq yar (+ (+ y1 (* xar_t (sin angle1))) (* yar_t (cos angle1)) ) ) (setq cap ( angle (list 0 0) (list u v) ) ) (list xav yav xar yar (+ cap angle1) ) ) ;; ------------------------------------------------------------------------- ;; calcul du deuxieme arc du surcompense ;; parametre ;; s : represente l'avancement dans le virage ;; il doit varier entre 0 et 0.5 ;; valteur retournee : (liste) ;; ( xav(mm) yav(mm) xar(mm) yar(mm) theta(rad) ) ;; (defun calcul_surcompense_arc2 (s) ;; -----> prevoir gestion d'erreur si s<0.5 et s>1 ;; affecation de z ;; s varie de 0.5 a 1 et z varie de xm a 0 (setq z (* (- 1 s) 2 xm)) (setq t (* k z z z)) ;; calcul du vecteur norme tangeant a la courbe decrite par les roues ar (setq u 1) (setq v (* 3.0 k z z)) (setq norme ( distance (list u v) (list 0 0) ) ) (setq u (/ u norme)) (setq v (/ v norme)) (setq u_2 (+ (* u (cos beta)) (* v (sin beta)))) (setq v_2 (- (* u (sin beta)) (* v (cos beta)))) ;; calcul position roue ar dans repere troncon (setq xar_t (- (- xf (* z (cos beta)) ) (* t (sin beta)) ) ) (setq yar_t (+ (- yf (* z (sin beta)) ) (* t (cos beta)) ) ) ;; calcul position roue avant dans repere troncon (setq xav_t (+ xar_t (* E u_2))) (setq yav_t (+ yar_t (* E v_2))) ;; calcul position roue avant dans repere absolu (setq xav (- (+ x1 (* xav_t (cos angle1))) (* yav_t (sin angle1)) ) ) (setq yav (+ (+ y1 (* xav_t (sin angle1))) (* yav_t (cos angle1)) ) ) ;; calcul position roue arriere dans repere absolu (setq xar (- (+ x1 (* xar_t (cos angle1))) (* yar_t (sin angle1)) ) ) (setq yar (+ (+ y1 (* xar_t (sin angle1))) (* yar_t (cos angle1)) ) ) (setq cap ( angle (list 0 0) (list u_2 v_2) ) ) (list xav yav xar yar (+ cap angle1) ) ) ;; ------------------------------------------------------------------------- ;; routine de precalcul pour un surcompense ;; calcul des differents parametres de la cubique... ;; ------------------------------------------------------------------------- ;; routine de calcul pour un surcompense ;; parametres ;; s : represente l'avancement dans le virage ;; il doit varier entre 0.0 et 1.0 ;; valeur retournee : (liste) ;; ( xav(mm) yav(mm) xar(mm) yar(mm) theta(rad) ) ;; (defun calcul_surcompense (s) (if (< s 0.5) (calcul_surcompense_arc1 s) (calcul_surcompense_arc2 s) ) ) ;; ------------------------------------------------------------------------- ;; SC : surcompense ;; saisie et trace d'un surcompense ;; parametres ;; AUCUN ;; valeur retournee : ;; AUCUNE ;; (defun sc () (init) ;; ;; SAISIE DES POINTS ;; (setq p1 (getpoint "\nSC point 1:")) (setq p2 (getpoint "\nSC point 2:")) (setq p3 (getpoint "\nSC point 3:")) ;; saisie de l'encombrement (setq enc (getdist "\nSC Encombrement du virage (mm) :")) ;; apres la saisie des points, on peut changer les parametres de snap (contexte_debut) ;; ;; CALCUL DES PARAMETRES ;; ;; extraction des coordonnees (setq x1 (car p1)) (setq x2 (car p2)) (setq x3 (car p3)) (setq y1 (cadr p1)) (setq y2 (cadr p2)) (setq y3 (cadr p3)) ;; calcul de l'angle de depart (setq angle1 (atan (- y2 y1) (- x2 x1))) ;; calcul de l'angle final (setq angle2 (atan (- y3 y2) (- x3 x2))) ;; modification de x1 et y1 pour tenir compte de l'encombrement du virage ;; d est utilise temporairement (setq d (distance p1 p2)) (setq x1 (+ x2 (/ (* (- x1 x2) enc) d))) (setq y1 (+ y2 (/ (* (- y1 y2) enc) d))) ;; modification de x3 et y3 pour tenir compte de l'encombrement du virage ;; d est utilise temporairement (setq d (distance p2 p3)) (setq x3 (+ x2 (/ (* (- x3 x2) enc) d))) (setq y3 (+ y2 (/ (* (- y3 y2) enc) d))) ;; angle du virage (setq beta (- angle2 angle1)) ;; on veut beta dans [-pi, pi] (while (> beta pi) (setq beta (- beta (* 2 pi))) ) (while (< beta (- pi)) (setq beta (+ beta (* 2 pi))) ) (dessin_sc Enc beta x1 y1 angle1) ;; restauration du contexte (contexte_restaure) (princ) ) ;; ------------------------------------------------------------------------- ;; calcul_param_sc ;; calcul des parametres d'un virage surcompense (defun calcul_param_sc (_Enc _beta _x1 _y1 _angle1 ) ;; sauvegarde des parametres (setq Enc _Enc) (setq beta _beta) (setq x1 _x1) (setq y1 _y1) (setq angle1 _angle1) ;; calcul de la fin du virage ;; calcul de la fin du virage en fin de troncon (setq xf (* (+ 1 (cos beta)) Enc)) (setq yf (* (sin beta) Enc)) ;; calcul de x3 et y3 : position de fin dans rep abs (setq x3 ( + x1 ( - (* xf (cos angle1)) (* yf (sin angle1)) ) ) ) (setq y3 ( + y1 ( + (* yf (cos angle1)) (* xf (sin angle1)) ) ) ) ;; variable intermediaire (setq tb2 (tan (/ beta 2.0))) ;; tan( beta/ 2 ) ;; rayon des roues arrieres (setq rar (/ Enc tb2)) ;; parametres de la cubique ;; on calcul morceau par morceau... (setq k (* tb2 tb2)) ;; (tan( beta/2) )^2 (setq k (+ 3 k)) ;; 3 + (tan( beta/2) )^2 (setq k (* k k)) ;; ( 3 + (tan( beta/2) )^2 )^2 (setq k (/ k (* 27 rar rar tb2))) ;; coordonnees de fin de virage dans le repere troncon (setq xf (* enc (+ 1 (cos beta)))) (setq yf (* enc (sin beta))) ;; coordonnees de changement d'arc dans le repere troncon (setq xm (sqrt (abs (/ tb2 (* 3.0 k))))) (setq ym (* xm xm xm k)) ;; calcul de la longeur theorique (setq longueur_troncon (abs (* rar beta))) ) ;; chagne the layer, if exists otherwise an error message (defun change_layer_safe (layername) ( if ( member layername (liste_mot_clef "LAYER") ) ;;( setvar "CLAYER" layername ) (command "_layer" "E" layername "") ( alert (strcat "Unable to find layer:" layername) ) ) ) ;; dessin d'une polyline ;;le parametre doit etre une list de type ( ( x1 y1) (x2 y2) ... ) (defun draw_traj (lst) (change_layer_safe "ba-trajectoire") (command "_.pline" (foreach pt lst (command "_non" pt)) ; draw each point from the list ) ; draw the polyline (princ ) ) ;; extract rear point from traj point, which is index 3 and 4 in list ;; @param : ;; l : list as (xav xar yav yar theta) ;; @return (xar yar) (defun extrat_rear_point (l) (list (nth 2 l) (nth 3 l)) ) ;; extract rear point from traj point, which is index 3 and 4 in list ;; @param : ;; @return (xar yar theta) (defun extrat_rear_pose (l) (list (nth 2 l) (nth 3 l) (nth 4 l)) ) ;; draw agv pose ;; @param: ;; l : list as (xav xar yav yar theta) (defun draw_agv_pose (agv_pose) (change_layer_safe "ba-AGV\ simul") (insert_block nom_bloc_agv (nth 0 agv_pose) (nth 1 agv_pose) (nth 4 agv_pose) ) ) ;; ------------------------------------------------------------------------- ;; dessin_sc : dessin d'un virage surcompense ;; parametres : ;; Enc : encombrement du virage ;; beta : angle du virage ;; x1,y1, angle1 : parametres du repere absolu (defun dessin_sc (Enc beta x1 y1 angle1 ) (calcul_param_sc Enc beta x1 y1 angle1 ) (setq traj (mapcar 'calcul_surcompense ss) ) (draw_traj (mapcar 'extrat_rear_point traj)) (mapcar 'draw_agv_pose traj) ) ;; ------------------------------------------------------------------------- ;; calcul du premier arc d'un changement de ligne ;; parametres ;; s : represente l'avancement dans le virage ;; il doit varier entre 0.0 et 0.5 ;; valeur retournee : (liste) ;; ( xav(mm) yav(mm) xar(mm) yar(mm) theta(rad) ) ;; (defun calcul_chgtligne1 (s) ;; xar_t varie de 0 a l pendant que s varie de 0 a 0.5 (setq xar_t (* 2.0 s l)) (setq yar_t (/ (* d xar_t xar_t xar_t (- 2.0 (/ xar_t l))) (* l l l) ) ) (setq cap ( atan (/ (* 2 d xar_t xar_t (- (* 3 l) (* 2 xar_t))) (* l l l l) ) ) ) ;; calcul position roue avant dans repere troncon (setq xav_t (+ xar_t (* E (cos cap)))) (setq yav_t (+ yar_t (* E (sin cap)))) ;; nouvelle version sur roue AR ;; calcul position roue avant dans repere absolu (setq xav (- (+ x1 (* xav_t (cos angle1))) (* yav_t (sin angle1)) ) ) (setq yav (+ (+ y1 (* xav_t (sin angle1))) (* yav_t (cos angle1)) ) ) ;; calcul position roue arriere dans repere absolu (setq xar (- (+ x1 (* xar_t (cos angle1))) (* yar_t (sin angle1)) ) ) (setq yar (+ (+ y1 (* xar_t (sin angle1))) (* yar_t (cos angle1)) ) ) (list xav yav xar yar (+ cap angle1) ) ) ;; ------------------------------------------------------------------------- ;; calcul du deuxieme arc d'un chagnement de ligne ;; parametres ;; s : represente l'avancement dans le virage ;; il doit varier entre 0.5 et 1.0 ;; valeur retournee : (liste) ;; ( xav(mm) yav(mm) xar(mm) yar(mm) theta(rad) ) ;; (defun calcul_chgtligne2 (s) ;; z varie de l a 0 pendant que s varie de 0.5 a 1.0 (setq z (* (- 1 s) 2 l)) (setq t (/ (* d z z z (- 2.0 (/ z l))) (* l l l) ) ) (setq cap ( atan (/ (* 2 d z z (- (* 3 l) (* 2 z))) (* l l l l) ) ) ) (setq xar_t (- (* 2.0 l) z)) (setq yar_t (- (* 2.0 d) t)) ;; calcul position roue avant dans repere troncon (setq xav_t (+ xar_t (* E (cos cap)))) (setq yav_t (+ yar_t (* E (sin cap)))) ;; calcul position roue avant dans repere absolu (setq xav (- (+ x1 (* xav_t (cos angle1))) (* yav_t (sin angle1)) ) ) (setq yav (+ (+ y1 (* xav_t (sin angle1))) (* yav_t (cos angle1)) ) ) ;; calcul position roue arriere dans repere absolu (setq xar (- (+ x1 (* xar_t (cos angle1))) (* yar_t (sin angle1)) ) ) (setq yar (+ (+ y1 (* xar_t (sin angle1))) (* yar_t (cos angle1)) ) ) (list xav yav xar yar (+ cap angle1)) ) ;; ------------------------------------------------------------------------- ;; routine de calcul pour un changement de ligne ;; parametres ;; s : represente l'avancement dans le virage ;; il doit varier entre 0.0 et 1.0 ;; valeur retournee : (liste) ;; ( xav(mm) yav(mm) xar(mm) yar(mm) theta(rad) ) ;; (defun calcul_chgtligne (s) (if (< s 0.5) (calcul_chgtligne1 s) (calcul_chgtligne2 s) ) ) ;; ------------------------------------------------------------------------- ;; CL : changement de ligne ;; saisie et trace d'un changement de ligne surcompense ;; parametres ;; AUCUN ;; valeur retournee : ;; AUCUNE ;; (defun cl () (init) ;; ;; SAISIE DES POINTS ;; (setq p1 (getpoint "\nCL point 1:")) (setq p2 (getpoint "\nCL point 2:")) (setq p3 (getpoint "\nCL point 3:")) ;; extraction des coordonnees (setq x1 (car p1)) (setq x2 (car p2)) (setq x3 (car p3)) (setq y1 (cadr p1)) (setq y2 (cadr p2)) (setq y3 (cadr p3)) ;; recalcul de x2 et y2 pour avoir un rectangle ;; k est utilise temporairement (setq k (+ (* (- x2 x1) (- x3 x1)) (* (- y2 y1) (- y3 y1)) ) ) (setq k (/ k (+ (* (- x2 x1) (- x2 x1)) (* (- y2 y1) (- y2 y1)) ) ) ) (setq x2 (+ x1 (* k (- x2 x1)))) (setq y2 (+ y1 (* k (- y2 y1)))) ;; apres la saisie des points, on peut changer les parametres de snap (contexte_debut) ;; ;; CALCUL DES PARAMETRES ;; ;; calcul angle de depart (setq angle1 (atan (- y2 y1) (- x2 x1))) ;; calcul de la DEMI longueur du changement de ligne (setq l (* 0.5 (sqrt (+ (carre (- x2 x1)) (carre (- y2 y1))))) ) ;; calcul de la DEMI largeur du changement de ligne (setq d (* 0.5 (sqrt (+ (carre (- x3 x2)) (carre (- y3 y2))))) ) ;; changement de signe de d dans le cas d'un virage a droite ;; tres elegamment, on utilise le signe du produit vectoriel... (if (< (- (* (- x2 x1) (- y3 y1)) (* (- x3 x1) (- y2 y1)) ) 0 ) (setq d (- 1.0 d)) ) (dessin_cl l d x1 y1 angle1) ;; restauration du contexte (contexte_restaure) (princ) ) ;; ------------------------------------------------------------------------- ;; calcul des parametres du virage changement de ligne ;; parametres ;; _l : demi longueur cl ;; _d : demi largeur cl ;; _x1,_y1,_ angle1 : parametres du repere absolu (defun calcul_param_cl (_l _d _x1 _y1 _angle1 ) ;; sauvegarde des parametres (setq l _l) (setq d _d) (setq x1 _x1) (setq y1 _y1) (setq angle1 _angle1) ;; calcul de la fin du virage en fin de troncon (setq xf (* 2.0 l)) (setq yf (* 2.0 d)) ;; calcul de x3 et y3 : position de fin dans rep abs (setq x3 ( + x1 ( - (* xf (cos angle1)) (* yf (sin angle1)) ) ) ) (setq y3 ( + y1 ( + (* yf (cos angle1)) (* xf (sin angle1)) ) ) ) ;; calcul de la longeur theorique (setq longueur_troncon (* 2 l)) ) ;; ------------------------------------------------------------------------- ;; dessin_cl : dessin d'un changement de ligne ;; parametres ;; l : demi longueur cl ;; d : demi largeur cl ;; x1,y1, angle1 : parametres du repere absolu (defun dessin_cl (l d x1 y1 angle1 ) (calcul_param_cl l d x1 y1 angle1 ) (setq traj (mapcar 'calcul_chgtligne ss) ) (draw_traj (mapcar 'extrat_rear_point traj)) (mapcar 'draw_agv_pose traj) ) ;; ------------------------------------------------------------------------- ;; routine de calcul pour un virage traine ;; parametres ;; s : represente l'avancement dans le virage ;; il doit varier entre 0.0 et 1.0 pour le virage traine ;; lorsqu'il est superieur a 1 on calcul la traine pour le troncon droit suivant ;; valeur retournee : (liste) ;; ( xav(mm) yav(mm) xar(mm) yar(mm) theta(rad) ) ;; (defun calcul_viragetraine (s) ;; initialisation (alpha2 memorise l'ancien alpha pour ne pas avoir a gerer le pas ici) (if (= s 0.0) (progn (setq phi 0) (setq cap 0) (setq alpha2 s) ) ) (setq alpha (abs (* s beta))) ;; angle realise dans le virage ;; distance parcourue depuis dernier appel (setq dist (abs (* rayon (- alpha alpha2)))) ;; distance parcourue dans la ligne droite apres le virage (if (> s 1.01) (setq dist2 (+ dist2 dist)) (setq dist2 0) ) ;; calcul de la position de la roue avant dans le repere du troncon (if (<= s 1.01) (progn ;; le virage est en cours (setq xav_t (* rayon (sin alpha))) (setq yav_t (* rayon (- 1.0 (cos alpha)))) ) (progn ;; le virage est termine (setq xav_t (+ (* rayon (sin (abs beta))) (* dist2 (cos (abs beta))) ) ) (setq yav_t (+ (* rayon (- 1.0 (cos (abs beta)))) (* dist2 (sin (abs beta))) ) ) ) ) (if (= sens_virage "D") (setq yav_t (* -1 yav_t)) ) ;; simulation de l'angle de tourelle... (if (<= s 1.01) (if (= sens_virage "G") (setq phi (- alpha cap)) ;; alpha - cap (setq phi (- 0 alpha cap)) ;; -alpha - cap ) (if (= sens_virage "G") (setq phi (- (abs beta) cap)) ;; alpha - cap (setq phi (- 0 (abs beta) cap)) ;; -alpha - cap ) ) ;; variation de cap (setq cap (+ cap (/ (* dist (sin phi)) E))) ;; memorisation ancien alpha (setq alpha2 alpha) ;; calcul de la position des roues arrieres dans le repere du troncon (setq xar_t (- xav_t (* E (cos cap)))) (setq yar_t (- yav_t (* E (sin cap)))) ;; calcul position roue avant dans repere absolu (setq xav (- (+ x1 (* xav_t (cos angle1))) (* yav_t (sin angle1)) ) ) (setq yav (+ (+ y1 (* xav_t (sin angle1))) (* yav_t (cos angle1)) ) ) ;; calcul position roue arriere dans repere absolu (setq xar (- (+ x1 (* xar_t (cos angle1))) (* yar_t (sin angle1)) ) ) (setq yar (+ (+ y1 (* xar_t (sin angle1))) (* yar_t (cos angle1)) ) ) (list xav yav xar yar (+ cap angle1) ) ) ;; ------------------------------------------------------------------------- ;; traiter_choix_vt ;; routine de traitement de l'arc selectionne ;; Parametre : entite selectionnee ;; retour ;; 0 si succes (defun traiter_choix_vt (choix) ;; verifier que c'est un arc (if (/= (cdr (assoc 0 choix)) "ARC") (setq res 1) (progn ;;extraction du centre... (setq centre_cercle (cdr (assoc 10 choix))) ;;extraction du rayon (setq rayon (cdr (assoc 40 choix))) ;; extraction des angles (setq angle1 (cdr (assoc 50 choix))) (setq angle2 (cdr (assoc 51 choix))) ;; angle1 et angle2 sont comptes (par AutoCAD) ;; pour un arc oriente dans le sens trigo ;; entre 0 et 2 pi. ;; Comme on souhaite toujours avoir angle1 < angle2 ;; on modifie eventuellement angle1 (if (> angle1 angle2) (setq angle1 (- angle1 (* 2 pi))) ) ;; savoir si c'est un virage a droite ou a gauche... (if (= mode_choix_sens_virage 1) (progn (initget 1 "Droite Gauche") (setq sens_virage (getkword "VT Sens du virage (Droite Gauche)") ) (setq sens_virage (substr sens_virage 1 1)) ) (setq sens_virage "G") ) ;; permuter les angles si besoin (if (= sens_virage "D") (progn ;; echange de angle1 et angle2 (setq temp angle1) (setq angle1 angle2) (setq angle2 temp) ) ) ;; calcul de x1 y1 : point de depart du virage (setq x1 (+ (car centre_cercle) (* rayon (cos angle1)))) (setq y1 (+ (cadr centre_cercle) (* rayon (sin angle1)))) ;; calcul de x3 et y3 : point d'arrivee du virage (setq x3 (+ (car centre_cercle) (* rayon (cos angle2)))) (setq y3 (+ (cadr centre_cercle) (* rayon (sin angle2)))) ;; angle1 represente maintenant le cap du chariot en entree de virage ;; et angle2 le cap en fin de virage... (if (= sens_virage "G") (progn (setq angle1 (+ angle1 (/ pi 2))) (setq angle2 (+ angle2 (/ pi 2))) ) (progn (setq angle1 (- angle1 (/ pi 2))) (setq angle2 (- angle2 (/ pi 2))) ) ) (setq beta (- angle2 angle1)) ;; angle1 n'est peut-etre pas dans le bon interval (setq angle1 (mod2pi angle1)) (dessin_vt rayon beta x1 y1 angle1) (setq res 0) ) ) res ) ;; ------------------------------------------------------------------------- ;; VT : virage traine (nouvelle version : selection d'un arc) ;; saisie et trace d'un virage traine ;; parametres ;; AUCUN ;; valeur retournee : ;; AUCUNE ;; (defun vt () (init) (contexte_debut) ;; demander une selection (setq entite nil) (while (= entite nil) (setq entite (entsel "\n VT : cliquer sur un arc")) ) (setq mode_choix_sens_virage 1) ;; extraire l'entite choisie (setq choix (entget (car entite))) (if (= (traiter_choix_vt choix) 1) (princ "\n ce n'est pas un arc !!") ) (contexte_restaure) ) ;; ------------------------------------------------------------------------- ;; calcul_param_vt ;; calcul des parametres du virage traine (defun calcul_param_vt (_rayon _beta _x1 _y1 _angle1 ) ;; sauvegarde des parametres (setq rayon _rayon) (setq beta _beta) (setq x1 _x1) (setq y1 _y1) (setq angle1 _angle1) ;; calcul de la fin du virage ;; calcul de la fin du virage en fin de troncon (if (= sens_virage "G") (progn (setq xf (* (sin beta) rayon)) (setq yf (* (- 1 (cos beta)) rayon)) ) (progn (setq xf (* (- (sin beta)) rayon)) (setq yf (* (- (cos beta) 1) rayon)) ) ) ;; calcul de x3 et y3 : position de fin dans rep abs (setq x3 ( + x1 ( - (* xf (cos angle1)) (* yf (sin angle1)) ) ) ) (setq y3 ( + y1 ( + (* yf (cos angle1)) (* xf (sin angle1)) ) ) ) ;; calcul de la longeur theorique (setq longueur_troncon (abs (* rayon beta))) ) ;; ------------------------------------------------------------------------- ;; dessin_vt : dessin d'un virage traine ;; parametres : ;; rayon : rayon du virage ;; beta : angle du virage ;; x1,y1, angle1 : parametres du repere absolu (defun dessin_vt (rayon beta x1 y1 angle1 ) (calcul_param_vt rayon beta x1 y1 angle1) (setq traj (mapcar 'calcul_viragetraine ss) ) (draw_traj (mapcar 'extrat_rear_point traj)) (mapcar 'draw_agv_pose traj) ) ;; ------------------------------------------------------------------------- ;; fonction cree pour gerer l'action accept cible ;; (recuperation des valeurs du dialogue) ;; parametres ;; AUCUN ;; valeur retournee : ;; AUCUNE ;; (defun action_accept_cible () (setq n_bloc_cible (get_tile "liste_cible")) (setq n_plan_mur (get_tile "liste_mur")) (setq n_plan_dessin (get_tile "liste_dessin")) (done_dialog) ) ;; ------------------------------------------------------------------------- ;; fonction cree pour gere l'action accept cible ;; (recuperation des valeurs du dialogue) ;; parametres ;; AUCUN ;; valeur retournee : ;; AUCUNE ;; (defun action_accept_cible () (setq n_bloc_cible (get_tile "liste_cible")) (setq n_plan_mur (get_tile "liste_mur")) (setq n_plan_dessin (get_tile "liste_dessin")) (done_dialog) ) ;; ------------------------------------------------------------------------- ;; fonction d'exortation de traits vers un fichier texte ;; le nom du fichier est fichier ;; l'exportation se fait sur la selection passee en parametre ;; parametres : ;; nom plan : nom du plan a filtrer ou vide ;; valeur retournee ;; AUCUNE (defun export_trait (nom_plan) (setq selection (ssget "X" '((0 . "LINE")))) (setq i 0) (setq n (sslength selection)) (princ "export_trait( nom plan = ") (princ nom_plan) (princ " )\n") (princ " lg selection = ") (princ n) (princ " \n") ;; parcours des entites (while (< i n) (setq entite (entget (ssname selection i))) (if (or (= nom_plan "*") (= (cdr (assoc 8 entite)) nom_plan) ) (progn (setq x1 (cadr (assoc 10 entite))) (setq y1 (caddr (assoc 10 entite))) (setq x2 (cadr (assoc 11 entite))) (setq y2 (caddr (assoc 11 entite))) ;; ecriture dans le fichier (write-line (strcat (rtos x1) " " (rtos y1) " " (rtos x2) " " (rtos y2) "\n" ) fichier ) ) ) (setq i (+ i 1)) ) ) ;; ------------------------------------------------------------------------- ;; fonction qui gere l'exportation des cibles au format IML ;; - saisie du nom du bloc qui definit les cibles (DCL) ;; - parcours de la base de donnee pour extraire les blocs cibles ;; - ecriture du fichier cible ;; - ecriture du fichier mur ;; - ecriture du fichier dessin ;; parametres ;; AUCUN ;; valeur retournee : ;; AUCUNE ;; (defun cible () ;; initialisation du script, gestion de la boite de dialogue ;; creation d'une liste contenant ;; les noms des layer et des blocks (setq liste_layer (liste_mot_clef "LAYER")) (setq liste_bloc (liste_mot_clef "BLOCK")) ;; initialisation de la boite de dialogue ;; (setq dcl_id (load_dialog "laser8.dcl")) ;; charge fichier DCL (if (NOT (new_dialog "laser_cible" dcl_id)) (exit) ) ;; initialisation des listes (start_list "liste_cible") (mapcar 'add_list liste_bloc) (end_list) (start_list "liste_mur") (mapcar 'add_list liste_layer) (end_list) (start_list "liste_dessin") (mapcar 'add_list liste_layer) (end_list) ;; recuperation des valeurs precedentes si elles existent (if (/= n_bloc_cible nil) (set_tile "liste_cible" n_bloc_cible) ) (if (/= n_plan_mur nil) (set_tile "liste_mur" n_plan_mur) ) (if (/= n_plan_dessin nil) (set_tile "liste_dessin" n_plan_dessin) ) ;; que se passe-t-il lorsque l'on clique sur OK ? (action_tile "accept" "(action_accept_cible)" ) (start_dialog) ;; recuperation des valeurs (setq nom_bloc_cible (nth (atoi n_bloc_cible) liste_bloc)) (setq nom_plan_mur (nth (atoi n_plan_mur) liste_layer)) (setq nom_plan_dessin (nth (atoi n_plan_dessin) liste_layer)) (unload_dialog dcl_id) ;; --------------------------------------------------------------- ;; gestion des cibles ;; ouverture d'un fichier (setq fichier (open "c:\\prog_las\\mark_1.dat" "w")) ;; cela serait beaucoup mieux, mais je ne sais pas comment le faire marcher ;; ( setq selection ( ssget "X" '(( 2 . nom_bloc_cible )) ) ) (setq selection (ssget "X" '((0 . "INSERT")))) ;; parcours de la selection (setq i 0) (setq n (sslength selection)) ;; indice dans le fichier (setq j 0) ;; parcours des entites (while (< i n) (setq entite (entget (ssname selection i))) ;;if ( /= ( cdr ( assoc 2 entite ) ) nul ) (setq nom_bloc (cdr (assoc 2 entite))) (if (= nom_bloc nom_bloc_cible) (progn (setq x (cadr (assoc 10 entite))) (setq y (caddr (assoc 10 entite))) (setq theta (cdr (assoc 50 entite))) ;; ecriture dans le fichier (setq j (+ j 1)) (write-line (strcat (itoa j) " " (rtos x) " " (rtos y) " " (rtos (/ (* 180 theta) 3.1415926)) " " " 1 1" ) fichier ) ) ) (setq i (+ i 1)) ) (close fichier) ;; ------------------------------------------------------------------ ;; gestion des murs ;; ouverture d'un fichier (setq fichier (open "c:\\prog_las\\mur.txt" "w")) (export_trait nom_plan_mur) (close fichier) ;; ------------------------------------------------------------------ ;; gestion du dessin sur le plan ;; ouverture d'un fichier (setq fichier (open "c:\\prog_las\\dessin.txt" "w")) (export_trait nom_plan_dessin) (close fichier) ) ;; ------------------------------------------------------------------------- ;; revoie true si caractere est un separateur ;; parametres ;; aucun ;; valeur retournee : ;; aucune (defun separateur (char) (or (= char (ascii " ")) (= char (ascii "\n")) (= char (ascii "\t")) (= char 13) (= char 10) ) ) (setq script_init 0) (command "ATTREQ" 1) (command "ATTDIA" 1) ;; force saisie attributs insertion bloc ;; ------------------------------------------------------------------- ;; affichage de depart (princ "\nScripts Laser LASER.LSP v8.0 NMB (c)2001-2010 B.A Systemes. Chargement OK" ) (princ "\n Traj: (VT) (SC) (CL) Cibles: (CIBLE):Export. cibles murs" ) (princ) ;; Creates here the list for the acisses in the curve (20 points) (setq ss (list)) (setq s 0.0) (while (<= s 1.001 ) (setq ss (append ss (list s) )) (setq s ( + s 0.05 ) ) ) ;; default values ;; simulation (setq s_empattement "2000" ) ;; cibles (setq n_bloc_cible ( itoa_safe ( cherche_liste ( liste_mot_clef "BLOCK" ) "ba-cible") ) ) (setq n_plan_mur ( itoa_safe ( cherche_liste ( liste_mot_clef "LAYER" ) "ba-laser-mur") ) ) (setq n_plan_dessin ( itoa_safe ( cherche_liste ( liste_mot_clef "LAYER" ) "ba-trajectoire") ) ) ;; ecriture du fichier magnet.txt (defun export_magnet () (setq fichier (open "c:\\prog_las\\magnet.txt" "w")) (if (= nom_bloc_magnet nil) (setq nom_bloc_magnet (getstring "\n Nom du bloc magnet :")) ) ;; liste_magnet sort ( ID, Enabled, X, Y, theta) (foreach magnet (liste_magnet) (progn ;; ID (princ (nth 0 magnet) fichier) (princ " " fichier) ;; x (princ (nth 2 magnet) fichier) (princ " " fichier) ;; y (princ (nth 3 magnet) fichier) (princ " " fichier) ;; Enabled (princ (nth 1 magnet) fichier) (princ "\n" fichier) ) ) (close fichier) (princ "\nExportation magnet terminee") ) LASER8.DCL
  6. yb1971

    Inserer Plusieurs DXF

    Si Si excuse moi et merci ça marche. Merci encore
  7. yb1971

    Inserer Plusieurs DXF

    je ne comprend ce que tu me dit!!! "" ajuster la variable directory à un de mes chemin valable (en doublant les barres inversées)"" je suis sur autocad map
  8. yb1971

    Inserer Plusieurs DXF

    Ca change rien Tjrs erreur de syntaxe!! et sinon pour l'autre lips, je n'y arrive pas non plus. Je m'y prend peut-être comme un manche... normaement en faisant juste un copier coller des lignes de commandes dans autocad cela fonctionne! sinon tu le copie dans un fichier du bloc note et tu changes l'extention en .lsp! on est bien d'accord? Merci
  9. yb1971

    Inserer Plusieurs DXF

    Merci pour ton Lips, je vais essayer ça. Pour la conversion c'est parce que en TOPO ça travail en CC48!
  10. Bonjour, je suis à la recherche d'une personne qui pourrais me faire un LISP voir deux ou les deux en un! dans un premier temps: Il s'agit d'insérer plusieurs fichiers .dxf qui sont des planches de cadastres pour en faire un fichier .dwg le point d'insert est tjrs 0.0.0 pas de mis à l'échelle pas de rotation.. purger et enregistrer. j'ai trouver des lignes de programmation sur le net ______________________________________________________________________________________________ (defun c:Test (/ directory files) (setq directory "C:\Users\vpeter\Documents\DXF") (if (setq files (vl-directory-files directory "*.dxf" 1)) (foreach dxf files (command "_.-insert" (strcat directory "\\" dxf) '(0. 0. 0.) "" "" "" ) ) (princ "\n No DXF files found into that folder !") ) (princ) ) ________________________________________________________________________________________ Mais je n'y arrive pas cela e dit erreur de syntaxe quand j'essai de lancer le lisp!!! Et dans un deuxième temps (c'est pour ça que j'ai mis ce sujet dans autocad 3d) je voudrais aussi automatiser le passage du LAMBERT93 au CC48. cette fonction es possible que sur autocad3D il me semble en passant par le volet des tâches et lui demandant d'exécuter une requête. Donc je sais pas si on peux faire un Lisp pour ça?? Merci d'avance
  11. yb1971

    Création de Bloc

    j'avais pas vu!! c'est pas mal ça dans l'idée. Bonne journée
  12. yb1971

    Création de Bloc

    Excellent Le crabe (ton pseudo me fait rire: on m’appelais comme ça car j'ai une main handicapé et on dirais une pince de crabe :) ) Bref excellent ton PDF. j'avais fais des essai avec ma maison pendant ma formation sur Révit. Tu n'a plus qu'a passer ça sur live, et tu fais une visite virtuel avec le casque :) j'aurais bien voulu trouver une boite qui bosse comme ça. Après effectivement autant de détails est-ce utile pour la "vraie" vie sur le chantier, dans la tranchée, les gars ils s'en foutent pas mal de ton plan 3D avec des ombres :) eux ce qu'il veulent, c'est avoir les bonne pièces. mais entre ce que tu as fais et ça: https://www.cjoint.com/c/HCmredO1YKX il y a quand même un juste milieu :) D'après ce que je comprend Didier et le crabe, vous travaillez aussi dans la distribution eau? Pour revenir à ta réflexion Didier, à mon grand étonnement (j'avais pas appris ça comme ça dans le batiment!) les EXE sont (dans la boite ou je me trouve) pas très précis, il y a juste les nœuds de pièces qui sont détaillés, sur fond cadastral (plus ou moins vrais, c'est encore un autre sujet)et avec la nature des conduite existantes.Comme tu le vois dans le fichier au dessus c'est un premier jet pour une future résidence. - ensuite les chef de travaux font un attachement à l'EXE en précisant exactement ce qu'ils sont mis,un relevé topo est fais (tranchée ouverte normalement;idem si j'ai bien compris c'est une obligation maintenant), retour de tous ça au bureau pour faire un récolement avec géo-référencement des pièces niveau class A. (d’où mon premier sujet sur les étiquettes, elle est fais un copier-coller du x,y,z qui son dans les propriété :) ) qui part être archivé dans les syndicats des eaux! d'après ce que j'ai compris. Comme je vous le disais il y a un mois je ne savais ce qu'étais un Adaptateur Quick VI ou du PEHD qui entre nous est ce que ils posent le plus souvent. Il viennent d’investir dans du matos de géo-localisation qui tourne avec géopixel et mensura mais cela m’a l'air pas simple d'utilisation!! je sais pas, j'ai pas eu le droit de toucher au joujou :) on verra le rendu en retour... Donc moi je fais des copier coller toute la journée à partir d'un fichier autocad ou il y un tableau avec toute les pièces que l'on utilise et je pioche :) j'ai voulu dès la première semaine faire au moins des blocs dynamique genre une pièce et toutes ces tailles, mais houlala non non tu fais comme je fais, que l'on répondu...tu ne vas pas changer mes habitudes de travail, moi je fais comme ça depuis 8 ans et çà marche très bien...(une nana plus jeune que moi pourtant :) ) bref voilà pour la petite histoire... voilà donc j’essaie de me trouver des petits outil qui me rendrais service sans perturber madame :) Merci bon week-end
  13. yb1971

    Création de Bloc

    :) Je ne suis pas si jeune non plus... Bref Pour revenir à ce que tu dis Didier je suis 500% d'accord avec toi, mais je fais ce que l'on me dis de faire et je ferme ma g... car en fait (pour la petite histoire) j'ai entrepris en 2015 de me reconvertir pour des raisons de santé, bref, et j'ai fais une formation en "technicien du cadre bâtit". C'était sur AutoCAD, et un survole de Archicad, Allplan... J'ai appris que "Le BIM" allait être LA REVOLUTION, donc ensuite j'ai fais une formation de 3 mois sur Revit, et depuis fin 2016, je galère pour trouver du taf (trop vieux;pas asser d'experience; etc...) Je viens de trouver ça (qui n'a rien à voir avec le bâtiment je sais, mais mon banquier il s'en fout :) ). Donc voilà je me retrouve sur un AutoCAD 2016 LT et je fais ce que l'on me dit de faire, mais ici ils sont du style à encore utiliser la chignole pour percer 300 trous... donc je me débrouille sans vouloir changer les manières de travailler des "vieux" de trouver des solutions pour moi :. Voilà voilà ... Merci à vous encore
  14. yb1971

    Création de Bloc

    Pas la peine de monter sur tes grands chevaux Didier!!! Effectivement ce sont des CANALISATIONS, mais tout le monde ne connais pas le jargons de ton métier (moi le premier) je débute ce fait 1 moi que je suis dans ce domaine, si tu veux je peux te donner des leçon dans les métiers de spectacle j'y ai bosse pendant 26 ans.... Que ce soit une barre, un tube, des tablettes de chocolats, le problème de ma demande reste le même! Pour ce qui est du "Z" je ne m'en occupe pas je suis sous LT et je fais des EXE pour l'instant (pas de 3D). Le crabe je ne connais pas PAMCAD et j'ai cherché vite fais, mais je ne trouve pas d'info? aurais-tu un lien à me donner que je regarde? Merci à tous
  15. yb1971

    Création de Bloc

    Merci REBCAO Effectivement il y a de l'idée, mais (faut tjrs qu'il y ai un "mais") comme le dit Didier et Dilack, c'est entre chaque conduite, qu'il y a une tolérance de jeux. Par-contre Dilack si tu as le courage de m'expliquer ta façon de faire, je suis preneur. Merci encore
  16. yb1971

    Création de Bloc

    Bonjour, Merci déjà j'ai mis un exemple, j'espère que vous comprendrez :) https://www.cjoint.com/c/HCCm4l0xrUd Merci
  17. Bonjour, est-ce que quelqu'un aurais une idée pour créer un bloc qui représenterai une plolyligne de 6m de long 40cm de large, qui quand on tire le bloc "les barre" s'allonge (comme un gros pointillé), et c'est là que ça se corse, que les barre puisse avoir un jeu entre 0 et 7° des deux coté !! Je sais pas si je suis très claire! En faite ce sont des barres que l'on emboitent bout à bout qui peuvent jouer sur 7° à chaque emboitement. Je dis qu'avec un bloc comme ça je pourrais en tirer des kilomètres :) Merci
  18. Bonjour christian Je ne comprend pas ce que tu veux me dire!! ton astuce servirai à supprimer les hachures qui son en fond de bulle de détails? Afin d'alléger le dessin (car les hachures et autocad, ne sont pas amis?) Merci
  19. Je suis désolé, mais, je me suis TRES mal exprimé!! rien est dessiné dans l'espace papier!! tous est dans l'espace objet... excusez moi encore
  20. Ben voilà c'est comme ça qu'ils bossent ou je viens d'atterrir!! Je trouve pas ça terrible non plus... Bref donc les bulles sont des "zoom" des accessoires qui sont posés, donc les accessoires sont des blocs,mais pas les tuyaux pas contre ce sont des simple polyligne misent à l'épaisseur correspondant au tuyau. Pourquoi cela changerais quoi si c'était des blocs? c'est quand même dingue que depuis que des gens essaient de faire ce que je veux, autodesk, n'est pas mis une pauvre case à cocher pour rendre le fond de ta fenêtre de présentation opaque!!! Il yt aurais pas un petit génie qui pourrait faire un petit programme ou un plug-in ou je sais quoi?? :) Merci
  21. Je vous joint un fichier pour mieux comprendre. https://www.cjoint.com/c/HCmredO1YKX Déjà, je viens de commencer dans une nouvelle boite où ils travaillent de cette façon: -ils dessinent sur l'espace papier leurs réseau avec les différentes pièces à l'échelle, puis font des bulles (tjrs sur l'espace papier) de détaille (échelle fois 4 ou 8 suivant l'échelle d'impression). - ils n'utilise pas le system annotatif! donc déjà pour toutes les écritures, si ils faut changer l'échelle d'impression, ben ils se retapent tous en augmentant ou diminuant la taille des textes... je trouve que cela serait plus judicieux: 1: d'utiliser les textes annotatif. 2- de faire les détailles dans l'espace présentation en mettant l'échelle que l'on souhaite! surtout en cas d'erreurs ou de changement, tu n'as qu'une manipulation à faire dans l'espace objet! Quand je dis que c'est laborieux, c'est qu'il y a beaucoup de détails :) Merci
  22. Bonjour, je me permet de vous contacter afin de savoir si depuis dans autocad 2016LT, n'a pas mis en place un system plus simple pour pouvoir superposer deux fenêtre de présentation en rendant celle du premier plan opaque afin de ne pas voir la partie de la première fenêtre qui ce trouve dessous? dans mon cas avec le system de faire des région avec des polylignes et les transformer en fenêtre par la suite, c'est laborieux à mettre en place. Sinon est-ce qu'une autre version le fait? J'ai essayé avec des hachure dans la présentation en mode papier à l'écran les hachures son tjrs dessus,par contre quand on fais un aperçu d'impression elle passe dessous!! ça sent le bug cette méthode donc aléatoire... Merci
  23. Bonjour Merci bien pour votre aide, excusez moi de ne pas avoir répondu plus tôt!!! j'ai réussi à faire ce que je voulais je m'y prenais mal... Merci encore
  24. Bonjour et merci, excuse de n'avoir répondu plus tôt!!! Je ne comprend pas !! là j'ai pris un cercle et pris sont centre comme référence.ça fonctionne mais dés que je veux le passer en bloc, les champs ne suivent plus!! j'ai essayer en le faisant depuis le fichier dessin, dans l'éditeur de bloc et tjrs idem! je ne comprend pas je dois pas faire un truc. voici un lien vers mon fichier. https://www.cjoint.com/c/HBqoUR8vMoX
  25. Bonjour et merci Moi quand j'enregistre mon bloc, toutes les valeurs se mettent à 0000?
×
×
  • 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é