philous2
Membres-
Compteur de contenus
438 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par philous2
-
non je n'ai pads le programme Bonuscad pourtant le nomme dit quelque chose. J'ai essayé d'aller sur le site du CETE Lyon mais en reconstruction c'est bien à cette adresse " [surligneur] http://www.cete-lyon.equipement.gouv.fr [/surligneur]" ! J'ai déjà eu affaire à l'assiqtance Piste du CETE Lyon avec un dénommé M. Rivière je crois ca rj'avais pas mal d ebug sur la dernière version de Piste
-
Je voudrais savoir si quelqu'un a déjà commandé sur le site internet " [surligneur] www.aicad.com[/surligneur]" le logiciel [surligneur] AIDLISP [/surligneur]pour se lancer ds la propgramation Lisp. Je l'ai fait hier soir en achetant via Internet et Paypal et jusqu'à présent aucune nouvelle en réponse me suis-je fait arnaquer ? Quelqu'un a-t-il eu ce type de soucis avec ce site ou ce logiciel ?
-
Je voudrais savoir si quelqu'un a déjà commandé sur le site internet " [surligneur] www.aicad.com[/surligneur]" le logiciel [surligneur] AIDLISP [/surligneur]pour se lancer ds la propgramation Lisp. Je l'ai fait hier soir en achetant via Internet et Paypal et jusqu'à présent aucune nouvelle en réponse me suis-je fait arnaquer ? Quelqu'un a-t-il eu ce type de soucis avec ce site ou ce logiciel ?
-
Slt Richard, C'est vrai que cela est excellent ici chez nous car on est la moité à utiliser Piste les autres travaille sur MXROAD mis depuis la dernière décentralisation on risque d ene plus continuer longtemps sur Piste car la DDE n'xistant presque plus au niveau local ds les départements leur service informatique de Lyon ne risque plus de faire d'amélioration ds l'avenir.. Par contre j'aurai juste une dernière info à te demander est-ce que ds la sélection on peut ce lisp tiens compte de clotoÏde car j'ia un autre lisp que je compte utiliser pour faire clotoïde. Car ds la commande Arc est-ce la cloto passe ! C'est ma dernière interrogation autrement parfait pour moi, très utile et surtout rapide. A+ Phil
-
Richard j'ai trouvé mon erreur j'ai fait fde spolyligne au lieu de lignes totu simplement, vraiment nickel autrement c'est exactement ça que je cherchai merci
-
reslt Richard, Je viens de réessayer, j'avais oublié le tiret 1 en fait. J'ai fait un essai avec 5 éléménts composé de 3 droites(entrée fin et intermédiaire) et 2 cercles. J'ai saisi les élémnts commes demandé ds lisp autocad puis enregistré sous un fichie *.cap, jusque là aucun soucis très simple exactement de ce que j'avais entendu parlé. C'est après que cela se gate, lorsque je lis le fichier ds pîste ds le menu Outils, 'lire un fichier de commandes", uil charge bien quelquesc hose smais que les cercles aucune droite ni points de constructions des droites, je pense que cela n'est pas normal. Moi j'ai la version Piste 5.06 la dernière, n'st-ce pas un problème de version Piste ou alors j'ai oublié de faire un truc !
-
Slt Richard, J'ai fait lisp avec ce que tu m'as donné que j'ai nommé "mpist" ( [surligneur] defun c:mpist-1 ( / js i id ic ip ir) (command "cmdecho" 0) ;;;;;MET LES UNITÉS AutoCAD => ORIGINE = EST - ANGLE = SENS TRIGO - (command "-UNITES" "2" "2" "1" "2" "0.00" "N" ) ;;;;;SE PLACE PROVISOIREMENT DANS LE SCU GÉNÉRAL - C.Richard DDE88 (command "scu" "ef" "Mpist") (command "scu" "s" "Mpist" ) (command "scu" "g") ;;;;;CHOIX DES ENTITES (alert "L'axe doit obligatoirement commencer et se terminer par une ligne.\n \nLe nom du fichier *.CAP ne comportera que 8 caractères maximum") (setq js (ssget) i 0 ir 1 ip 1 id 1 ic 1 ) ;;;;;ECRITURE DU FICHIER *.CAP POUR PISTE+ - C.Richard DDE88 (setq nf (getfiled "Ecriture de fichiers *.CAP pour PISTE+ (8 caractères maximum) " " " "CAP" 1)) (setq f (open nf "w")) (princ "REM Avertissement :\n" f) (princ "REM\n" f) (princ "REM 1) L'orientation des éléments correspond à un axe en plan\n" f) (princ "REM concu dans le sens des abscisses croissantes. Le cas échéant, \n" f) (princ "REM l'orientation d'un élément peut être modifiée avec la commande\n" f) (princ "REM INV.\n" f) (princ "REM 2) Il est préférable de saisir les éléments de l'axe dans le sens des\n" f) (princ "REM abscisses croissantes afin que le nom 'piste' de chacun d'eux \n" f) (princ "REM suive ce sens (par exemple D1 puis D2 ...)\n" f) (princ "REM 3) Le transfert de l'axe est correct si, dans AutoCAD :\n" f) (princ "REM * les angles sont orientés dans le sens trigonomètrique\n" f) (princ "REM et dont l'origine est l'EST,\n" f) (princ "REM * le système de coordonnées générales (SCG) est courant.\n" f) (princ "REM 4) La moulinette oriente uniquement les arcs de cercle et les\n" f) (princ "REM segments de droites (Cf.1), il est déconseillé de transferer\n" f) (princ "REM des cercles\n" f) (princ "REM 5) Le transfert de plusieurs axes est possible.\n" f) (princ "REM\n" f) (while (< i (sslength js)) (setq e (ssname js i) nom (cdr (assoc 0 (entget e))) ) (if (= nom "LINE") (progn (setq p1 (cdr (assoc 10 (entget e))) p2 (cdr (assoc 11 (entget e))) ) (princ "POI " f) (princ (strcat "P" (itoa ip) " ") f) (princ (rtos (car p1) 2 6) f) (princ " " f) (princ (rtos (cadr p1) 2 6) f) (princ "\n" f) (princ "POI " f) (princ (strcat "P" (itoa (1+ ip)) " ") f) (princ (rtos (car p2) 2 6) f) (princ " " f) (princ (rtos (cadr p2) 2 6) f) (princ "\n" f) (princ "DRO " f) (princ (strcat "D" (itoa id)) f) (princ " " f) (if (<= (car P1) (car P2)) (progn (princ (strcat "P" (itoa ip) " ") f) (princ (strcat "P" (itoa (1+ ip)) " ") f) ) (progn (princ (strcat "P" (itoa (1+ ip)) " ") f) (princ (strcat "P" (itoa ip) " ") f) ) ) (princ "\n" f) (setq ip (+ ip 2) id (1+ id)) ) ) (if (= nom "ARC") (progn (setq p1 (cdr (assoc 10 (entget e))) r (cdr (assoc 40 (entget e))) Ad (cdr (assoc 50 (entget e))) Aa (cdr (assoc 51 (entget e))) ) (princ "DIS " f) (princ (strcat "R" (itoa ir) " ") f) (if (<= Aa pi) (setq r (- r))) (princ r f) (princ " \n" f) (princ "POI " f) (princ (strcat "P" (itoa ip) " ") f) (princ (rtos (car p1) 2 6) f) (princ " " f) (princ (rtos (cadr p1) 2 6) f) (princ "\n" f) (princ "CER " f) (princ (strcat "CE" (itoa ic) " ") f) (princ (strcat "P" (itoa ip) " ") f) (princ (strcat "R" (itoa ir) " ") f) (princ "\n" f) (setq ip (1+ ip) ir (1+ ir) ic (1+ ic)) );;; fin progn ) (if (= nom "CIRCLE") (progn (setq p1 (cdr (assoc 10 (entget e))) r (cdr (assoc 40 (entget e))) ) (princ "DIS " f) (princ (strcat "R" (itoa ir) " ") f) (princ r f) (princ " \n" f) (princ "POI " f) (princ (strcat "P" (itoa ip) " ") f) (princ (rtos (car p1) 2 6) f) (princ " " f) (princ (rtos (cadr p1) 2 6) f) (princ "\n" f) (princ "CER " f) (princ (strcat "CE" (itoa ic) " ") f) (princ (strcat "P" (itoa ip) " ") f) (princ (strcat "R" (itoa ir) " ") f) (princ "\n" f) (setq ip (1+ ip) ir (1+ ir) ic (1+ ic)) );;; fin progn ) (setq i (1+ i)) );;; fin while (princ "GRA\n" f) (princ "REM\n" f) (close f) ;;;;;REVIENT DANS LE SCU PARTICULIER - C.Richard DDE88 (command "scu" "R" "Mpist" ) (command "cmdecho" 1) (princ) );;; fin defun[/surligneur] J'ai ensuite tapé "mpiste" comme commande d'entrée mais rien réponse commande inconnu, aurais-je fait une mauvaise manip je pense que oui. Peux-tu m'indiquer la commande d'entrée par rapport à ce que j'ai enregistré ds ton lisp. Merci d'avance Phil
-
slt richard, J'essaierai semaine prochaine car fini ma semaine ok je te dirai si c'est ok je te tiens au courant bon we
-
Je reviens sur mon sujet d'hier ou bonuscad m'avait répondu par un lisp, mais un pot d eboulot m'a indiqué avoir eu un jour mais oublié depuis un menu du type de bonuscad mais beaucoup plus facile, simple e tcomplet, il suffisait juste de sélectionner les différents élements de son axe et le menu le sauvegardait en txt que l'on reprenait ds Piste nickel, il redessinait point ligne et cercle automatiquement. Je recherche donc ce menu type très utile ds mon boulot car hyper rapide
-
bjr, j'ai essayé ce matin ca ne marche pas bien au nivea transfert. J'avais rentré ça au début "Ecriture du fichier de commande [surligneur] POI PT1 256.3599 229.1926 DIS LG1 20 DIS LG2 20[/surligneur]CER CR1 PT1 LG1' m'étant trompé puisque cela ne donnait qui point en, réalité ds piste "Point : PT1 : X= 256.360 Y= 229.193 Distances : NUL : D= 0.000 LG1 : D= 20.000 Cercle : CR1 :XC= 256.360 YC= 229.193 RC= 20.000" J'aui donc refait en mettant cela "Ecriture du fichier de commande POI PT1 28.736 294.1454 POI PT2 357.0715 262.4818 POI PT3 347.4723 162.9436 POI PT4 437.6041 206.2596 POI PT5 523.8437 26.8125 DIS LG1 -100 DRO DR1 PT1 PT2 DRO DR2 PT4 PT5 CER CR1 PT3 LG1" et je me retrouve tjrs avec Point : PT1 : X= 256.360 Y= 229.193 Distances : NUL : D= 0.000 LG1 : D= 20.000 Cercle : CR1 :XC= 256.360 YC= 229.193 RC= 20.000" j'ai dionc un soucis en fait il ne me fait qu'un point. Il ne transfert pas mes dernières donnés mlgré que je l'enregistre sous un autre fichier cap il y a un bug quelque part ou quelque chose que j'ai mal fait surement
-
ah oui j'oubliais c'est quoi le nom du lisp et de la commande d'entrée
-
Ok j"essaierai demain et c'est quoi l'extention du fichier à lire ds piste ! Ca donne quoi comme interpretation les points de construction ou les points et les lignes, cercle
-
je cherche un applicatif AutoCAD qui permet de bénéficier de la souplesse d' AutoCAD pour faciliter mes tâches vers le logiciel Piste ( Piste 4 ou Piste 5 ) du SETRA. Cela me permettrait de mfaire mes axes sur Autocad et de récupérer sous forme par exemple de fichier txt les coordonnés de contruction (ligne , cercle, etc...),, gain important de temps et manipulaton beaucoup plus facile.
-
Merci Patrick, effectivement suis passé à coté
-
Je crois avoir lu quelque chose à ce sujet, je souhaiterais avoir si un ilsp existe ppour modifier le point de base d'inserttion d'un bloc sans le décomposer systématiquement
-
Ok merci j'avais un ancien fichier qui trainait ça rectifié, marche
-
Bjr, A propos de ce sujet, j'ai téléchargé la version beta 5 de LXL V5 ce midi. Il y a quelque temps j'avais téléchargé et ouvert la version LXL V2. Et en ouvrant et chrgeant le lisp de la version beta 5 de LXL V5 et en entrant la comme LXL j'ai tjrs la boite ou le menu d ela version 2 que dois-je faire pour bien, avoir le menu de la version beta 5 de LXL V5
-
pour construire une clotoïde on a besoin de 2 éléments sur 3 entre la longueur de la clotoïde, le diamètre du cercle et le déport. l'idéal serait de pouvoir imposer ces éléments, le diametre on peut, mais le deport ou la longueur ! d'ou effectivement comme tu le dis mettre une clotoîde à l'avancement mais comment as-tu une idée sur le sujet !
-
Bjr, Je cherche à améliorer une routine pour calculer une clotoïde en pouvant indiquer la longueur, le rayon ou le déport il me faut 2 de ces 3 éléments pour calculer plus précisement à la façon de Piste mais sur Autocad. J'ai un lisp clotoïde(ci-après) mais qui calcule seulement par le pas. Comment transformer et améliorer ce lisp pour calculer soit par pas, par déport ou longueur si c'est possible. Lisp Clotoïde: [surligneur] (defun factor (y / ) (cond ((= 0 y) 1) (t (* y (factor (1- y)))) ) ) (defun fact (nbr / x) (setq x nbr) (factor (float x)) ) (defun serie (rep / mark rp resul) (setq mark 1 rp rep som 0 ) (repeat (fix (* l 10)) (setq resul (/ (expt tau rp) (* (1+ (* 2 rp)) (fact rp)))) (if (/= (rem mark 2) 0) (setq resul (- resul)) ) (setq som (+ resul som) rp (+ rp 2) mark (1+ mark) ) ) ) (defun cloun (l / k som) (setq r (/ 1 l) tau (/ l (* 2 r)) k (sqrt (* 2 tau)) ) (serie 2) (setq x (* k (+ 1 som))) (serie 3) (setq y (* k (+ (/ tau 3) som)) xm (- x (* r (sin tau))) ym (+ y (* r (cos tau))) dltr (- ym r) ) ) (defun matrix (pt / t_x t_y t_z t_v t_zo nw_x nw_y nw_z) (setq t_x (trans '(1 0 0) 0 1 T) t_y (trans '(0 1 0) 0 1 T) t_z (trans '(0 0 1) 0 1 T) t_v (trans '(0 0 0) 1 0) t_zo (trans '(0 0 0) 0 1) ) (setq nw_x (+ (* (car pt) (car t_x)) (* (cadr pt) (cadr t_x)) (* (caddr pt) (caddr t_x)) (car t_v) ) ) (setq nw_y (+ (* (car pt) (car t_y)) (* (cadr pt) (cadr t_y)) (* (caddr pt) (caddr t_y)) (cadr t_v) ) ) (setq nw_z (+ (* (car pt) (car t_z)) (* (cadr pt) (cadr t_z)) (* (caddr pt) (caddr t_z)) (caddr t_v) ) ) (list nw_x nw_y nw_z) ) (defun c:clothoide ( / d ent_d c ent_c dxf_10 dxf_11 dxf_r dxf_m dxf_g pt_per dxf_ym dxf_dltr lg_clo a_clo l_u lst_r cnt tstd tstl choix p_inf resol_cl l x y xm ym r tau dltr lst_som ) (if (= (getvar "worlducs") 1) (progn (setvar "cmdecho" 0) (setvar "blipmode" 0) (setvar "orthomode" 0) (setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384))) (if (= (getvar "limcheck") 1) (setvar "limcheck" 0)) (command "_.undo" "_control" "_all") (command "_.undo" "_group") (while (not (setq d (nentsel"\nChoix de la droite: ")))) (setq ent_d (entget (car d))) (cond ((and (equal (assoc 210 ent_d) '(210 0.0 0.0 1.0)) (eq (cdr (assoc 0 ent_d)) "LINE")) (while (not (setq c (nentsel"\nChoix du cercle: ")))) (setq ent_c (entget (car c))) (cond ((and (equal (assoc 210 ent_c) '(210 0.0 0.0 1.0)) (or (eq (cdr (assoc 0 ent_c)) "CIRCLE") (eq (cdr (assoc 0 ent_c)) "ARC"))) (setq dxf_10 (trans (cdr (assoc 10 ent_d)) 1 0) dxf_11 (trans (cdr (assoc 11 ent_d)) 1 0) dxf_r (cdr (assoc 40 ent_c)) dxf_m (trans (cdr (assoc 10 ent_c)) 1 0) dxf_g (angle dxf_10 dxf_11) pt_per (inters (list (car dxf_10) (cadr dxf_10)) (list (car dxf_11) (cadr dxf_11)) (list (car dxf_m) (cadr dxf_m)) (list (car (polar dxf_m (+ (/ pi 2) dxf_g) dxf_r)) (cadr (polar dxf_m (+ (/ pi 2) dxf_g) dxf_r)) ) nil ) dxf_ym (distance dxf_m pt_per) dxf_dltr (- dxf_ym dxf_r) ) (cond ((and (not (minusp dxf_dltr)) (<= dxf_dltr (* 4.0 dxf_r))) (setq lg_clo (sqrt (+ (* 24 dxf_dltr dxf_r) (* 6 (expt dxf_dltr 2)))) a_clo (sqrt (* lg_clo dxf_r)) ) (setq l_u (/ lg_clo a_clo)) (cond ((<= l_u (* 4 (sqrt pi))) (cloun l_u) (setq lst_r (mapcar '(lambda (ww) (* ww a_clo)) (list x y xm ym dltr))) ;(prompt "\nErreur commise sur Delta R (en m.) = ") (prin1 (abs (- dxf_dltr (last lst_r)))) ;(prompt "\nDelta R reel : ") (prin1 (rtos dxf_dltr 2 5)) ;(prompt "\nDelta R calcule : ") (prin1 (rtos (last lst_r) 2 5)) (setq cnt 0) (while (not (equal (last lst_r) dxf_dltr 0.00001)) (setq cnt (1+ cnt)) (if (= (rem (1+ cnt) 2) 0) (setq tstd (last lst_r) tstl lg_clo) ) (if (= (rem cnt 2) 0) (setq lg_clo (* (/ dxf_dltr (/ (+ tstd (last lst_r)) 2)) (/ (+ lg_clo tstl) 2))) (setq lg_clo (* (/ dxf_dltr (last lst_r)) lg_clo)) ) (setq a_clo (sqrt (* lg_clo dxf_r))) (setq l_u (/ lg_clo a_clo)) (cloun l_u) (setq lst_r (mapcar '(lambda (ww) (* ww a_clo)) (list x y xm ym dltr))) ;(prompt "\nDelta R calcule : ") (prin1 (rtos (last lst_r) 2 5)) ) (setq choix (mapcar '(lambda (ww) (polar pt_per ww (caddr lst_r))) (list dxf_g (+ pi dxf_g)))) (if (> (distance (car choix) (cadr d)) (distance (cadr choix) (cadr d))) (setq dxf_g (+ pi dxf_g)) ) (setq p_inf (polar pt_per dxf_g (caddr lst_r)) dxf_g (+ pi dxf_g) ) (prompt (strcat "\nPas de résolution de la clothoïde <" (rtos (* 0.1 (sqrt lg_clo)) 2) "> :" ) ) (initget 6) (setq resol_cl (getdist)) (if (not resol_cl) (setq resol_cl (* 0.1 (sqrt lg_clo)))) (command "_.ucs" "_new" "_3point" p_inf pt_per dxf_m) (setq lst_som (list (matrix (list (car lst_r) (cadr lst_r) 0.0))) l (- lg_clo resol_cl)) (while (> l 0.0) (cloun (/ l a_clo)) (setq lst_som (cons (matrix (list (* x a_clo) (* y a_clo) 0.0)) lst_som) l (- l resol_cl)) ) (setq lst_som (cons (trans (list 0.0 0.0 0.0) 1 0) lst_som)) (command "_.ucs" "_world") (if (null (tblsearch "appid" "ID_CLOTHOIDE-BONUSCAD$2002")) (regapp "ID_CLOTHOIDE-BONUSCAD$2002") ) (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") (cons 8 (getvar "CLAYER")) '(100 . "AcDbPolyline") (cons 90 (length lst_som)) ) (mapcar '(lambda (x) (cons 10 (list (car x) (cadr x)))) lst_som) (list (list -3 (list "ID_CLOTHOIDE-BONUSCAD$2002" (cons 1000 "ID_CLOTHOIDE") (cons 1002 "{") (cons 1040 dxf_g) (cons 1010 p_inf) (cons 1040 a_clo) (cons 1040 dxf_dltr) (cons 1040 tau) (cons 1040 lg_clo) (cons 1040 dxf_r) (cons 1010 dxf_m) (cons 1010 (matrix (list (car lst_r) (cadr lst_r) 0.0))) (cons 1002 "}") ) ) ) ) ) (command "_.undo" "_end") (alert (strcat "\nLES ANGLES SONT EXPRIME DANS LES UNITES UTILISES" "\n______________________________" "\nOrientation de l'infini\t: " (angtos dxf_g (getvar "aunits") 4) "\nOrigine clothoïde \t: X= " (rtos (car p_inf) 2 3) " Y= " (rtos (cadr p_inf) 2 3) "\n Rayon a l'origine \t: ...infini..." "\n Parametre A \t: " (rtos a_clo 2 3) "\n Delta R \t: " (rtos dxf_dltr 2 3) "\n Angle TAU \t: " (angtos tau (getvar "aunits") 4) "\n Developpement \t: " (rtos lg_clo 2 3) "\n Rayon du cercle \t: " (rtos dxf_r 2 3) "\n Centre du cercle \t: X= " (rtos (car dxf_m) 2 3) " Y= " (rtos (cadr dxf_m) 2 3) "\nFin le la clothoïde \t: X=" (rtos (car (matrix (list (car lst_r) (cadr lst_r) 0.0))) 2 3) " Y= " (rtos (cadr (matrix (list (car lst_r) (cadr lst_r) 0.0))) 2 3) "\n______________________________" ) ) ) (T (prompt "\nLongueur de clothoïde trop importante pour être résolue") (command "_.undo" "_end") (command "_.u") ) ) ) (T (prompt "\nLa droite coupe le cercle ou ripage trop important; pas de solution .") ) ) ) (T (prompt "\nEntité sélectionnée n'est ni un cercle, ni un arc, ou n'est pas parallèle au SGC!") (command "_.undo" "_end") (command "_.u") ) ) ) (T (prompt "\nEntité sélectionnée n'est pas une ligne, ou n'est pas parallèle au SGC!") (command "_.undo" "_end") (command "_.u") ) ) ) (prompt "\nVous n'êtes pas dans le systeme de coordonnées général ! RECTIFIEZ S.V.P") ) (setvar "cmdecho" 1) (prin1) )[/surligneur]
-
Bjr, Je suis à la recherche dune routine pour calculer une clotoïde en pouvant indiquer la longueur, le rayon ou le déport il me faut 2 de ces 3 éléments pour calculer plus précisement à la façon de Piste mais sur Autocad. Je suis tombé sur un lisp clotoïde(ci-après) mais qui calcule seulement par le pas. Comment transformer ce lisp pour calculer soit par pas, par déport ou longueur si c'est possible. Lisp Clotoïde: [surligneur] (defun factor (y / ) (cond ((= 0 y) 1) (t (* y (factor (1- y)))) ) ) (defun fact (nbr / x) (setq x nbr) (factor (float x)) ) (defun serie (rep / mark rp resul) (setq mark 1 rp rep som 0 ) (repeat (fix (* l 10)) (setq resul (/ (expt tau rp) (* (1+ (* 2 rp)) (fact rp)))) (if (/= (rem mark 2) 0) (setq resul (- resul)) ) (setq som (+ resul som) rp (+ rp 2) mark (1+ mark) ) ) ) (defun cloun (l / k som) (setq r (/ 1 l) tau (/ l (* 2 r)) k (sqrt (* 2 tau)) ) (serie 2) (setq x (* k (+ 1 som))) (serie 3) (setq y (* k (+ (/ tau 3) som)) xm (- x (* r (sin tau))) ym (+ y (* r (cos tau))) dltr (- ym r) ) ) (defun matrix (pt / t_x t_y t_z t_v t_zo nw_x nw_y nw_z) (setq t_x (trans '(1 0 0) 0 1 T) t_y (trans '(0 1 0) 0 1 T) t_z (trans '(0 0 1) 0 1 T) t_v (trans '(0 0 0) 1 0) t_zo (trans '(0 0 0) 0 1) ) (setq nw_x (+ (* (car pt) (car t_x)) (* (cadr pt) (cadr t_x)) (* (caddr pt) (caddr t_x)) (car t_v) ) ) (setq nw_y (+ (* (car pt) (car t_y)) (* (cadr pt) (cadr t_y)) (* (caddr pt) (caddr t_y)) (cadr t_v) ) ) (setq nw_z (+ (* (car pt) (car t_z)) (* (cadr pt) (cadr t_z)) (* (caddr pt) (caddr t_z)) (caddr t_v) ) ) (list nw_x nw_y nw_z) ) (defun c:clothoide ( / d ent_d c ent_c dxf_10 dxf_11 dxf_r dxf_m dxf_g pt_per dxf_ym dxf_dltr lg_clo a_clo l_u lst_r cnt tstd tstl choix p_inf resol_cl l x y xm ym r tau dltr lst_som ) (if (= (getvar "worlducs") 1) (progn (setvar "cmdecho" 0) (setvar "blipmode" 0) (setvar "orthomode" 0) (setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384))) (if (= (getvar "limcheck") 1) (setvar "limcheck" 0)) (command "_.undo" "_control" "_all") (command "_.undo" "_group") (while (not (setq d (nentsel"\nChoix de la droite: ")))) (setq ent_d (entget (car d))) (cond ((and (equal (assoc 210 ent_d) '(210 0.0 0.0 1.0)) (eq (cdr (assoc 0 ent_d)) "LINE")) (while (not (setq c (nentsel"\nChoix du cercle: ")))) (setq ent_c (entget (car c))) (cond ((and (equal (assoc 210 ent_c) '(210 0.0 0.0 1.0)) (or (eq (cdr (assoc 0 ent_c)) "CIRCLE") (eq (cdr (assoc 0 ent_c)) "ARC"))) (setq dxf_10 (trans (cdr (assoc 10 ent_d)) 1 0) dxf_11 (trans (cdr (assoc 11 ent_d)) 1 0) dxf_r (cdr (assoc 40 ent_c)) dxf_m (trans (cdr (assoc 10 ent_c)) 1 0) dxf_g (angle dxf_10 dxf_11) pt_per (inters (list (car dxf_10) (cadr dxf_10)) (list (car dxf_11) (cadr dxf_11)) (list (car dxf_m) (cadr dxf_m)) (list (car (polar dxf_m (+ (/ pi 2) dxf_g) dxf_r)) (cadr (polar dxf_m (+ (/ pi 2) dxf_g) dxf_r)) ) nil ) dxf_ym (distance dxf_m pt_per) dxf_dltr (- dxf_ym dxf_r) ) (cond ((and (not (minusp dxf_dltr)) (<= dxf_dltr (* 4.0 dxf_r))) (setq lg_clo (sqrt (+ (* 24 dxf_dltr dxf_r) (* 6 (expt dxf_dltr 2)))) a_clo (sqrt (* lg_clo dxf_r)) ) (setq l_u (/ lg_clo a_clo)) (cond ((<= l_u (* 4 (sqrt pi))) (cloun l_u) (setq lst_r (mapcar '(lambda (ww) (* ww a_clo)) (list x y xm ym dltr))) ;(prompt "\nErreur commise sur Delta R (en m.) = ") (prin1 (abs (- dxf_dltr (last lst_r)))) ;(prompt "\nDelta R reel : ") (prin1 (rtos dxf_dltr 2 5)) ;(prompt "\nDelta R calcule : ") (prin1 (rtos (last lst_r) 2 5)) (setq cnt 0) (while (not (equal (last lst_r) dxf_dltr 0.00001)) (setq cnt (1+ cnt)) (if (= (rem (1+ cnt) 2) 0) (setq tstd (last lst_r) tstl lg_clo) ) (if (= (rem cnt 2) 0) (setq lg_clo (* (/ dxf_dltr (/ (+ tstd (last lst_r)) 2)) (/ (+ lg_clo tstl) 2))) (setq lg_clo (* (/ dxf_dltr (last lst_r)) lg_clo)) ) (setq a_clo (sqrt (* lg_clo dxf_r))) (setq l_u (/ lg_clo a_clo)) (cloun l_u) (setq lst_r (mapcar '(lambda (ww) (* ww a_clo)) (list x y xm ym dltr))) ;(prompt "\nDelta R calcule : ") (prin1 (rtos (last lst_r) 2 5)) ) (setq choix (mapcar '(lambda (ww) (polar pt_per ww (caddr lst_r))) (list dxf_g (+ pi dxf_g)))) (if (> (distance (car choix) (cadr d)) (distance (cadr choix) (cadr d))) (setq dxf_g (+ pi dxf_g)) ) (setq p_inf (polar pt_per dxf_g (caddr lst_r)) dxf_g (+ pi dxf_g) ) (prompt (strcat "\nPas de résolution de la clothoïde <" (rtos (* 0.1 (sqrt lg_clo)) 2) "> :" ) ) (initget 6) (setq resol_cl (getdist)) (if (not resol_cl) (setq resol_cl (* 0.1 (sqrt lg_clo)))) (command "_.ucs" "_new" "_3point" p_inf pt_per dxf_m) (setq lst_som (list (matrix (list (car lst_r) (cadr lst_r) 0.0))) l (- lg_clo resol_cl)) (while (> l 0.0) (cloun (/ l a_clo)) (setq lst_som (cons (matrix (list (* x a_clo) (* y a_clo) 0.0)) lst_som) l (- l resol_cl)) ) (setq lst_som (cons (trans (list 0.0 0.0 0.0) 1 0) lst_som)) (command "_.ucs" "_world") (if (null (tblsearch "appid" "ID_CLOTHOIDE-BONUSCAD$2002")) (regapp "ID_CLOTHOIDE-BONUSCAD$2002") ) (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") (cons 8 (getvar "CLAYER")) '(100 . "AcDbPolyline") (cons 90 (length lst_som)) ) (mapcar '(lambda (x) (cons 10 (list (car x) (cadr x)))) lst_som) (list (list -3 (list "ID_CLOTHOIDE-BONUSCAD$2002" (cons 1000 "ID_CLOTHOIDE") (cons 1002 "{") (cons 1040 dxf_g) (cons 1010 p_inf) (cons 1040 a_clo) (cons 1040 dxf_dltr) (cons 1040 tau) (cons 1040 lg_clo) (cons 1040 dxf_r) (cons 1010 dxf_m) (cons 1010 (matrix (list (car lst_r) (cadr lst_r) 0.0))) (cons 1002 "}") ) ) ) ) ) (command "_.undo" "_end") (alert (strcat "\nLES ANGLES SONT EXPRIME DANS LES UNITES UTILISES" "\n______________________________" "\nOrientation de l'infini\t: " (angtos dxf_g (getvar "aunits") 4) "\nOrigine clothoïde \t: X= " (rtos (car p_inf) 2 3) " Y= " (rtos (cadr p_inf) 2 3) "\n Rayon a l'origine \t: ...infini..." "\n Parametre A \t: " (rtos a_clo 2 3) "\n Delta R \t: " (rtos dxf_dltr 2 3) "\n Angle TAU \t: " (angtos tau (getvar "aunits") 4) "\n Developpement \t: " (rtos lg_clo 2 3) "\n Rayon du cercle \t: " (rtos dxf_r 2 3) "\n Centre du cercle \t: X= " (rtos (car dxf_m) 2 3) " Y= " (rtos (cadr dxf_m) 2 3) "\nFin le la clothoïde \t: X=" (rtos (car (matrix (list (car lst_r) (cadr lst_r) 0.0))) 2 3) " Y= " (rtos (cadr (matrix (list (car lst_r) (cadr lst_r) 0.0))) 2 3) "\n______________________________" ) ) ) (T (prompt "\nLongueur de clothoïde trop importante pour être résolue") (command "_.undo" "_end") (command "_.u") ) ) ) (T (prompt "\nLa droite coupe le cercle ou ripage trop important; pas de solution .") ) ) ) (T (prompt "\nEntité sélectionnée n'est ni un cercle, ni un arc, ou n'est pas parallèle au SGC!") (command "_.undo" "_end") (command "_.u") ) ) ) (T (prompt "\nEntité sélectionnée n'est pas une ligne, ou n'est pas parallèle au SGC!") (command "_.undo" "_end") (command "_.u") ) ) ) (prompt "\nVous n'êtes pas dans le systeme de coordonnées général ! RECTIFIEZ S.V.P") ) (setvar "cmdecho" 1) (prin1) )[/surligneur]
-
ok meci, en fait je ne sais pas trop comment faire ce que je souhaiterai. Ma demande est simple je dois établir un fichier gagarit avec légende et tout dispositif d'assainissement pour TP. Je vais donc avoir différents types de buse de longueru variable. Mon souhait serait d'avoir une sorte de bloc dynamique avec étiquette/attirbuts, ds ce bloc il y aurait une polyligne dynamique avec attribut pour indiquer automatiquement sa longueur suivant tts les cas de figures présents ds un projet, avec à chaque extrémité la possibilité d'insérer au choix suivant cas différentes pièces(grille, regard, tête debuse etc..) indépendamment. Au final j'aurais une buse modulable avec x longeur et étiquettes appropriée indiquant( diamètre, repère, longueur, fee fes,etc...) tout cela pouvant être exploitable sous excel par extraction attirbuts. Pour mes différents objets de'extrémités de buse j'ai pensé au principe de ces blocs dynamiques multi vue masi je ne sais pas trop comment cela fonctionne et si cela peut marcher sur un plan entier de projet d'assainissement. Comment cela fonctionne--il esty-ce difficile ou compliqué à établir ? Beaucoup de question que je me pose car jamais approché le domaine de ce coté là. Donc si quelqu'un à des infos, des pistes ou voies exploitable cela m'intéresse pour tenter d'avancer car suis en panne. Merci d'avance
-
je pose une question car j'ai entnedu parler de "blocs dynamiques multi vue" et je voudrais savoir en quoi cela consiste et comme ca marche. en fait je voudrais faire un bloc assainissement ou j'aurais une ligne d'un certain type et a chaque extrémité différents types de pièces soit par exemple grille, tetet de buse etc... mon but c'est de pouvoir choisir à l'insertion de mon bloc le type de pièce à chaque extrémité suivant menu d'ou j'ai entendu parler de "blocs dynamiques multi vue" qUelqu'un aurait-il un eidée à ce sujet
-
bjr, J'a un petit problème, j'essaie de faire un bloc dynamique d'assainissement buse et je ne sais pas trop comment faire. Je souhaiterai faire une polilygne avec attirburt de sa longueur, la pas des oucis, mais au bout de chaque coté je voudrais pouvoir incérer à la demande plusieurs solutions suivant configuration plan, soit t^éte d ebuse classique soit grille etc... e tlà es tmon problème. J'ai pensé au lisp pline_block mais je ns ais pas trop comment procéder . Quelqu'un aurait-il une idée comment procéder merci d'avance de vos lumières Peut-être que toi Gile aurais-tu une solution le spécialiste en la matière
-
Bjr, Je souhaiterai faire un bloc dynamique pour mon assainissement en TP du style bloc dynamique avec attribut pour les réfs et longueurs avec gestion général sur excel. Par exemple je voudrai faire un bloc dynamique avec une longueur vartiable(polaire) qui me permettrait à chaque insertion d'ajuster la longueur de chaque buse en fonction, en dehors de c ebolc je souhaierais lui associer des attributs comme un n° X avec si possible la valuer de longueur automatique suivant que j'étire ma buse ou non. et tout cela pour gestion ds excel ave cextraction de tte mes buses de mon plans automatiquement ce qui me ferait gagner du temps pour calculer l'ensemble des longuerus totales de buse spar catégorie. J'espère avoir été sssez explicite. En gros pour résumer je voudrais insérer des blocs dynamiques en jouant sur la longueur en ayant immédiament la longueur de chaque buse automatiquement. pour extraction ensuite vers excel. En fait le plus dure c'est de faire rentrer et évoluer la valeur de la longueur de chaque buse par un attribut automatique ss rentrer du texte.manuellemment Est-ce faisable ? Merci d'avance de vos lumières, indices, solutions facile Phil
-
Bjr, J'ia reçu de sfichisrs MXD et je ne sais pas avec quel logicile je pourrais les ouvrir les lires et éventuellement les renregister soius un autre format exploitable sous Autocad.ou Mapinfo Si quelqu'un a une idée merci d'avance.
