-
Compteur de contenus
3 609 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par x_all
-
ho punaise... j'ai du boulot... pour mettre en application ces figures de styles dans mon projet. Quand on a les mains dans le cambouis, on a pas ce genre de réflexe spontanément. (à mon niveau ). Encore un merci à (gile) pour la leçon de choses récursives Du coup sans me changer fondamentalement l'algo, il faut que je révise ces apply, mapcar et compagnie. Je multiplie les boucles imbriquées il y a moyen de les compacter pas mal.
-
je sais pas vous, mais quand je n'ai que du dessin à faire, je peut très bien écouter de la musique ou des émissions TV sans trop me déconcentrer. comme c'est un peu calme je me permet qqs suggestions ayant découvert il y a peu cette chaine youtube. Le principe c'est un face cam ou les gens ont le temps de développer leur idées, les invités et les questions sont toujours éclairante. Peut etre faut il être coincé au boulot pour avoir le temps car il y a des vidéos de plus de 2h parfois... mais ça vaut le coup les hackers ( Rayna Stamboliyska) la mécanique quantique (Étienne Klein explique le boson de higgs ) un point de vue partisan sur nucléaire (ceux qui sont contre on connais leurs arguments. Jancovici est un spécialiste de l'énergie) et un point de vue opposé (José Pluki) Colapsologie (Vincent Mignerot pas si pessimiste malgré son sujet) bonne écoute...
-
Verres anti-lumière bleu : à connaitre absolument !
x_all a répondu à un(e) sujet de Aleck_Ultimate dans Organisation du travail
tu parles du trou du ver ou du trou de verre? (oui, je sais je devrai pas la ramener avec l'orthographe) :) -
ha? non non.. rien pour toi... le message était pour gégé qui veux faire une version 2019 de sa routine de 1984 en changeant les icônes :)
-
tu es développeur chez autodesk?
-
oui j'ai bien compris que les 40 et 41 suivent les 10. Mais je demandais si il y a une fonction type nth mais pour l'écriture. Apparemment non, merci pour la forme en Vlisp, mais comme je dois tester l’existence d'un bloc sur le point pour vérifier si je change l'épaisseur du segment qui suis, pas sur que je m'en sorte avec ça bon ben on va recréer la liste à mesure que je l'extrait avec un if pour les (10. et les 2 doublets qui suivent.. pour une fois que je cherchais à pas être trop lourd...
-
je ne veux pas modifier tous les 40 41, mais chaque 40 41 en fait je veux définir l'épaisseur en fonction d'un paramètre segment par segment. Je vais regarder, mais je suis pas sur qu'on puisse faire ça avec _.pedit je me demandais s'il existait un truc comme ( nth mais pour l'écriture..
-
Bonjour dans la liste dxf d'une polyligne, on trouve entre autre les séries (10 . ...) (40 ...) (41 . ...) pour chaque point.Je suis en train de la parcourir avec un compteur et donc pour un point donné, je connais la position P dans la liste dxf du point. donc à P+1 j'ai le code 40 et à P+2 le code 41 qu'il faut que je modifie.Dans une autre routine je modifiai la liste avec un (set q lstdxf (subst nouvelle-paire paire-initiale lstdxf)) Mais initialement, toutes mes valeurs pour chaque point sont à (40.0) et (41.0). Donc subst n'est a priori pas la commande adéquate puisque pour chaque point elle va être modifiée.est il possible de sen sortir sans défaire puis refaire toute la liste? merci
-
je n'ai pas dis que c'était infaisable, juste j'étais hors compétence et pas efficace . Car si tu as covadis, pour quoi réinventer la roue? le travail que tu veux faire, les profils qui suivent des polylignes 3d avec les découpes nickel aux bissectrices, covadis est fait pour ça. De toute façon, la difficulté du taff, c'est pas de poser des bordures, c'est de gérer le pente,générer les profils type suivant les tabulations etc.. bref si le taff est déja fait sur covadis, bosse tes profils plutôt que de te lancer dans la matrice. Si le projet n'est pas créé sur covadis (ou assimilé) , bon courage tout monter avec des poly 3d à la main même avec des lisp, c'est coton.
-
Je suppose qu'on parle de projet de voirie par profils type (?) Si oui la modélisation se fait toute seule à condition que tes profils types de Covadis soit suffisamment détaillés. Si non, tu crée un point type sur le profil qui va faire générer une poly3d à covadis mais pour l'habiller ça va être coton Peut etre une piste Aux vue de ton code, T1, T2, ... sont des blocs contenant la poly 2d de ton profil que tu explose avant le lissage ? Tu peux toujours sauver ton bloc avec la poly dans le plan YZ Il te faut ensuite l'orienter en fonction de la bissectrice de l'angle que fait ta poly 3d, et ça... il te faut un matheux car trouver une bissectrice sur un angle quelconque en 3d, c'est une histoire de matrice que je maitrise pas. ps lissage ou balayage tiennent compte du point 0 de la poly et de sa direction attention à la construction des poly
-
idem, quand j'avais essayer, l'impression en arrière plan était ~5 ou 10 fois moins rapide qu'une impression normale, j'ai laisser tombé. Je ne sais pas si la fonction à été améliorée depuis. J'imagine que pour une très grosse liste de feuilles il y a peut être une utilité. Donc chez nous ça ne sert à rien.
-
Commande interdites en éditeur de bloc
x_all a répondu à un(e) sujet de Aleck_Ultimate dans AutoCAD 3D
effectivement surface et maillage ne sont pas les même entités...je note l'histoire de l'association. je testerai mais pour ce coup ci c'est trop tard... je testerai.. merci du tuyau -
Commande interdites en éditeur de bloc
x_all a répondu à un(e) sujet de Aleck_Ultimate dans AutoCAD 3D
En passant, je voulais faire un garde corps 3d avec un bloc dynamique à étirer...Extruder n'est pas pris en compte par étirer... balayage pas mieux (mais celui la je peux comprendre)Il n'y a que les maillages qu'on peu bricoler... -
yep pas mieuxdans le desing center met l'onglet "dessin ouvert" Il faut que le dessin ou le bloc est à redéfinir soit actif, puis dans les blocs du dessin ou le bloc est valide (sur le DS) clic droite sur celui que tu veux mettre à jour
-
y aurai t il gourance de forum?
-
Question sur 4 code DXF d'une VIEWPORT.
x_all a répondu à un(e) sujet de DenisHen dans Débuter en LISP
avec un intitulé aussi concis, j'ai l'impression que todesk s'est pas foulé. As tu essayer de regarder en vba avec dump j'avais cette micro fonction pour comparer les retour en dxf et en vb.Peut être y trouveras tu ton bonheur? (defun c:dump (/ lstdxf ent doc-vba sel-vba ent-vba) (setq ent (ssname (ssget) 0)) ; sélection de l'entité (setq lstdxf (entget ent)) ; création de la liste (print lstdxf) ; imprimer la liste (vl-load-com) ;chargement des fonctions visual lisp (setq doc-vba (vla-get-activedocument (vlax-get-acad-object))) ;doc-vba pointe sur le document actif (setq sel-vba (vla-get-activeselectionset doc-vba)) ; sel est-vba le selection set courant de doc (setq ent-vba (vla-item sel-vba 0)) ;ent-vba est le 1er élément de sel-vba (vlax-dump-object ent-vba T) ; application du dump sur ent-vba (princ) ) -
fenetre AA "réstaurée" à chaque changement de fenetre
x_all a répondu à un(e) sujet de Demixav dans AutoCAD 2011
UCSFOLLOW ? -
FILEDIA ?
-
EXPORTER - IMPORTER des CHAMPS personnalisés !!!
x_all a répondu à un(e) sujet de rebcao dans AutoCAD LT 2010
Rebcao est un LTien... pas de lisp sur LT ...:( -
poulala, j'en sais rien, on fait pas de si gros chantier, le plus gros dossier que j'ai eu avait 150 ou 200 bouches pour 3 étages et puis ça dépend du type d'activité, des effectif de l'age de l’acousticien qui à tendance à diminuer les vitesses (edit mis à jour le chemin vers le fichier qui n'était pas bon)
-
Bonjour ça faisait un moment que je cherchais un lisp pour calculer les débits des réseaux de ventil. Alors, pour faire suite à ce message, et qqs autres discutions portant sur les fonctions récursives, J'ai fini par m'en sortir pour pondre un petit programme. Cette routine renseigne les attributs des blocs modélisant des bouches et des jonctions, Voir en entête du programme comment ça marche et ou charger les blocs. J'ai peu de test si l'utilisateur ne respecte pas les consignes ça pourrai planter... attention aux accrochage, les blocs doivent être sur des point de polyligne Comme la routine est encore un peu toute neuve, je la poste pour test car je n'ai pas encore eu le temps de la stresser. Pour l'instant, je teste tout un calque et pas une sélection, . J' m'attendais à ce qu'il ne puisse y avoir qu'un seul arbre par calque, mais appartement ça marche avec plusieurs Mais je n'ai pas encore trouvé comment cumuler des étages si ce n'est en renseignant à la main un attribut de la dernière jonction d'un arbre Merci pour vos retours si vous trouvez des Bugs Pour les puristes du lisp, ne cherchez pas, c'est codé avec les piedsIl y a encore pas mal de print de variable pour contrôle des ordres de calcul et des variables déclarées pour rien... bref, il y aura un version 5 un peu plus propre et moins disserte. Merci à Patrick 35 et à (gile) pour leur lumières récursive... ;; ; ;; Vsom V4 Somme des débits sur un calque de polyligne ; ;; ; ;; utile pour la ventil Les blocs 'bouche' et 'joncsion' sont disponible ici: ; ;; http://joch04.free.fr/soft/lisp/somme-debit-ventil-4.dwg ; ;; ; ;; cumule les Q dans l'attribut T à l'avancement d'une branche ; ;; cumule les branches dans le collecteur ; ;; une branche commence toujours par une bouche (point 1 de la poly) ; ;; elle se termine toujours par une jonction ; ;; pas de jonction intermédiaire sans sous branche ; ;; on peu rajouter des calculs sur les attributs à la fin des (cond de (traitebranche) ; ;; par exemple dans les blocs du dessin j'ai rajouté des attributs pour traiter les diamètres à l'avancement ; ;; dia est le diamètre théorique mini pour une vitesse (Q=SV) V (m/s) Q (m3/h) DIA (m) ; ;; la valeur de V (3 par défaut ) se change en dur au début du code ; ;; ; (defun c:vsom (/ ent i j n lay der sspoly poly lsvtx vtx pt ssblocs lsbloc bloc nombloc hbloc lsbranche branche tcourant ta Qt qc v doc test ) ; initialisation VL (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) ; Activer le début de l'undo (setq v 3.0 ;; 3m/s pour un auditorium 5 pour des burreaux voir 6 pour les gros diamètres n 0 test 0 ) (setq ent (car (entsel "\nChoix d'une poly du réseau\n")) lay (cdr (assoc 8 (entget ent))) ) ; liste de sélection des poly et blocs du calque (setq sspoly (ssget "X" (list (cons 0 "LWPOLYLINE") (cons 8 lay))) ssbloc (ssget "X" (list (cons 0 "INSERT") (cons 8 lay))) ) ;; création de la liste des bloc lsbloc (pt hadle nombloc) (setq j 0) (repeat (sslength ssbloc) (setq bloc (ssname ssbloc j) ) (setq j (+ 1 j) hbloc (cdr (assoc 5 (entget bloc))) PT (cdr (assoc 10 (entget bloc))) pt (reverse (cdr (reverse pt))) Vba-ent (vlax-ename->vla-object bloc) nombloc (vla-get-effectivename Vba-ent) ) (setq lsbloc (cons (cons nombloc (list pt hbloc)) lsbloc) ) ) ;fr ;;; (print lsbloc) ;;; (print (length lsbloc)) ;;; traitement des poly création de la liste des branches ;;; lsbranche de la forme ( ( nom tp handle1 ) (nom pt handle2) ...) ;;; (setq i 0) (repeat (sslength sspoly) (setq poly (ssname sspoly i) ) (setq lsvtx (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget poly) ) ) ) (princ "\n ") ;;; (print lsvtx) (foreach vtx lsvtx (foreach bloc lsbloc (setq pt (cadr bloc)) (if (equal vtx pt 0.02) (setq branche (cons bloc branche)) ;; ; ;; réinitialisation du Qt des blocs jonctions leur calcul servant de marqueur pour ordoner le parcour des branches ; ;; ; (if (= "jonction" (car bloc)) (progn (setq hbloc (caddr bloc)) (Vb-Mod-att (handent hbloc) "Qt" 0) ) ) ) ) ;fe bloc ) ;fe vtx (setq branche (reverse branche)) ;; ; ;; controle du sens des polylignes ; ;; ; (setq nombloc (car (car (reverse branche))) pt (cadr (car (reverse branche))) ) ;; Si le dernier bloc n'est pas une jonction Déssine un cercle, il faudra la retourner (if (/= nombloc "jonction") (progn (entmake (list (cons 0 "CIRCLE") (cons 8 "---EPURES") (cons 62 1) (cons 10 pt) (cons 40 0.5) ) ) (print "attention une poly à invserser") (setq n (+ 1 n)) ) ) ;fi (setq lsbranche (cons branche lsbranche)) (setq i (+ 1 i) branche nil ) ) ;fr Lsbranche prète ;; si des branches a inverser, on sort. (if (/= n 0) (progn (alert "Attention il y a des polylignes à inverser") (print n) (exit) ) ) ;;;;;;;;; ;;;;;;;; ;; ;;;;;;;; ;; Explore fonction pour calculer les branches dans l'ordre ;; ;; toute les sous branches doivent avoir été cumulées pour ;;;; ;; Qu'une branche soit traitable test sur le Qt=0 (Q transverssal remis à 0) ;; ;; ;;;;;;;; ;;;;;;;;; ;;;;;;;; (defun explore (arbre / brl bloc nombloc Nonvalide in) (setq brl (car arbre) in 0 bloc nil Qt 1 ) (setq Nonvalide 0) (setq test (+ 1 test) ) (if (> test 100) (progn (print " +100 itérations. jonction sans branche ?") (exit) ) ) ;f ;;boucle pour test si un bloc "jonction" (sauf le dernier) de la branche à Qt =0 (while (and (< in (length brl)) (/= 0 (length brl))) (setq bloc (nth in brl) hbloc (caddr bloc) nombloc (car bloc) ) ;_ Fin de setq ;; test du Qt=0 d'un bloc qui n'est pas le dernier si oui Nonvalide = 1 (if (and (/= (+ 1 in) (length brl)) (= nombloc "jonction") (= 0 (read (Vb-Val-att (handent hbloc) "Qt"))) ) (setq Nonvalide 1) ) (setq in (+ 1 in)) ) ;_ Fin de while ;; Si Nonvalide modifié a 1, on ne peut pas calculer la branche ;; on met donc ce bloc à la fin de celle ci et on rappelle explore ;; avec cette nouvelle liste en espérant que le 1er élément soit traitable (setq lg-arbre (length arbre)) (if (= Nonvalide 1) ;; permutation à (gile) le 1er devient le dernier (progn (princ "branche permutée ") (print brl) (setq arbre (append (cdr arbre) (list (car arbre)) ) ;_ Fin de append ) ;_ Fin de setq (explore arbre) ;;; récurssivité ) ;_ Fin de progn ;; ; ;; Si non Nonvalide = 0 la branche est traitable ; ;; on traite, suprime cette branche de la collection et relance sur la nouvelle liste ; ;; ; (progn (TraiteBranche brl) (print "branche traitée") (print brl) (if (setq arbre (cdr arbre)) (explore arbre) ;;; récurssivité ) ;_ Fin de if (and (/= 0 lg-arbre) ;;; (print "fin de l'arbre") ;;; (princ) ;;;;;;; par ici la sortie !!!! ) ) ;_ Fin de if ) ;_ Fin de defun ;;;fd explore ;;;fd explore ;;;fd explore ;;; (print (length lsbranche)) (foreach branche lsbranche (print branche) ) (explore lsbranche) (print "sortie normale de Vsom") ;;; Fin de l'undo (vla-endundomark doc) (princ) ) ;;fin Vsom ;; ;;;;;;;;;;;;;;;;;;; ;; fonctions ;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;; ;; Traiement d'une branche et maj Qt ;;;;;;;;;;;;;;;;;;; ;; ;;;;;;;;;;;;;;;;;;; (defun TraiteBranche (branche / i u bloc Qt qc dc dt tcourant ta) (setq i 0 bloc nil ) (while (< i (length branche)) (setq bloc (nth i branche) nombloc (car bloc) hbloc (caddr bloc) ) ;;test et mise a jour suivant le cas (cond ;;1er bloc ((= i 0) (setq ta (read (Vb-Val-att (handent hbloc) "Q")) tcourant ta ) (Vb-Mod-att (handent hbloc) "T" (rtos tcourant 2 0)) ) ;;toutes jonctions sauf la dernière ;; ((and (= nombloc "jonction") (/= (+ 1 i) (length branche))) (Vb-Mod-att (handent hbloc) "Qc" (rtos tcourant 2 0)) (setq tcourant (+ tcourant (read (Vb-Val-att (handent hbloc) "Qt")) )) (Vb-Mod-att (handent hbloc) "T" (rtos tcourant 2 0)) ;;diamètres (setq dt (rtos (sqrt (/ (* 4 tcourant) (* pi v 3600))) 2 2)) ;;nbr de décimales (Vb-Mod-att (handent hbloc) "DIA-t" dt) ) ;;dernière jonction ((and (= nombloc "jonction") (= (+ i 1) (length branche))) (Vb-Mod-att (handent hbloc) "Qt" (rtos tcourant 2 0)) ;; cas d'arrivée sur une colonne l'attribut Qetage permet de renseigner une valleur à cumuler ;; utiliser les champs pour chainer les étages (if (setq Qc (read (Vb-Val-att (handent hbloc) "Qetage"))) (progn (Vb-Mod-att (handent hbloc) "Qc" (rtos Qc 2 0)) (setq tcourant (+ tcourant Qc)) ) (Vb-Mod-att (handent hbloc) "Qc" (rtos 0 2 0)) ) ;i (Vb-Mod-att (handent hbloc) "T" (rtos tcourant 2 0)) ;;diamètres (setq dt (rtos (sqrt (/ (* 4 tcourant) (* pi v 3600))) 2 2)) (Vb-Mod-att (handent hbloc) "DIA-t" dt) (setq tcourant ta) ) ;;;débit ((= nombloc "bouche") (setq Qc (read (Vb-Val-att (handent hbloc) "Q")) tcourant (+ tcourant Qc) ) (Vb-Mod-att (handent hbloc) "T" (rtos tcourant 2 0)) ;diamètre (setq dc (rtos (sqrt (/ (* 4 tcourant) (* pi v 3600))) 2 2)) ;;nbr de décimales (Vb-Mod-att (handent hbloc) "DIA" dc) ) (t nil) ) ;fc (setq i (+ 1 i)) ) ; fw ) ;fd ;; ;; fin de traitement branche ;; ;; Vb-Val-att fonction Vlisp pour lire la valeur d'un attribut ; ent correspond au handel du bloc (codedxf 5) à utiliser comme ça ;; (setq toto (read (Vb-Val-att (handent handle) "REF"))) (defun Vb-Val-att (ent nomatt / att val) (foreach att (vlax-invoke (vlax-ename->vla-object ent) 'getattributes ) ;_ Fin de vlax-invoke (and (eq (vla-get-tagstring att) nomatt) ;comme ils disent les fou du code "tournure élégante !" (setq val (vla-get-textstring att)) ; le ET est équivalent à un si dans ce cas là ) ;car on afffecte Val que si att= nom-att bravo Patrick_35 ) ;_ Fin de foreach val ;; retour de fonction ) ;_ Fin de defun ;; fin Vb-Val-att ;; Vb-Mod-att fonction Vlisp pour modifier la valeur d'un attribut ;; à utiliser comme ça ;; (Vb-Mod-att (handent handle) "NIV" new-val) (rtos 100) ;; new-val est une string (defun Vb-Mod-att (ent nom-att nval / att inc vblst-att) (setq inc 0 vblst-att (vlax-invoke (vlax-ename->vla-object ent) 'getattributes ) ;_ Fin de vlax-invoke ) ;_ Fin de setq (while (< inc (length vblst-att)) (and (eq (vla-get-tagstring (nth inc vblst-att)) nom-att) (vla-put-textstring (nth inc vblst-att) nval) ) ;and (setq inc (+ 1 inc)) ) ;_ Fin de while ) ; ; fin Vb-Mod-att ;;;; Fdxf avec effective name VBA (defun Fdxf (entite / lstdxf) ; l'argument et la variable (setq lstdxf (entget entite)) ; liste dxf normale ;;; definition du nom vba de l'entite (setq Vba-ent (vlax-ename->vla-object entite)) ;;; récupération du effectivename et ajout à la lstdxf (setq bdn (vla-get-effectivename Vba-ent)) (setq lstdxf (cons (cons "EffNameBlDyn" bdn) lstdxf)) lstdxf ; le rappel de la variable sans rien sert ;de valeur de retour de la fonction ) ;;
-
je passe par CUIR il y a un onglet transférer en haut de la fenêtre. pas des plus ergonomique, mais on s'en sort pour exporter et importer des barres d'outils. Les rubans sont décrit dans la même interface. il n'y a pas de raison pour que ça marche pas. j'ai un fichier joe3Dbar.cuix qui passe de la maison au boulot. dans la page transférer, tu as 2 colonnes, il faut que ça passe d'un coté à l'autre.
-
pouh lala en fait c'est vrai que c'est la variable de retour qui doit être réinitialisée quand le récursivité remonte pour sortir car elle est déclaré en local dans (doublon)? ou alors ça restera un mistère Pour me passer de variable il a fallu que je me creuse...mais bon j'ai lu la réponse de (gile) tout est dit, mon code est trop moche pour être posté ...
-
harf... j'étais à 2 doigts... je vais voir ça... j'avoue que je capte pas pourquoi il passe par le 2eme If.. Ou est l'embrouille? c'est vrai ce ce pb disparait avec un (case (defun doublon (lstR / rep) (setq i (+ 1 i)) (if (and (cdr lstR) (member (car lstR) (cdr lstR))) (setq rep T) (if (/= nil (cdr lstR)) (doublon (cdr lstR ) ) ) ) rep ) Ps je sais pas ce qui se passe, mais j'ai des soucis de copier coller avec indentation... j'ai des saut de ligne qui se barrent je suis le seul?
