Aller au contenu

DenisHen

Membres
  • Compteur de contenus

    4 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    21

Tout ce qui a été posté par DenisHen

  1. Salut, j'étais persuadé que c'était toi, désolé. Non, ce n'était pas Christian...
  2. @lecrabe C'était une formation rapide en Lisp, il y a 4 ou 5 ans, environ à LA CHAPELLE SAINT LUC, à coté de TROYES.
  3. Oui, la nouvelle vague ! ! ! Je garde un bon souvenir de toi, Monsieur lecrabe... Tu m'avais fait une formation avec plein d'échange, à Troyes...
  4. Coucou @Luna, je voulais juste ajouter des "(vlax-ldata à toutes les polylignes créées... Mais ton code me donne beaucoup de réflexion... Je ne sais pas si je vais m'en sortir, mais tu me donnes une foule de perspectives... Et j'ai encore beaucoup de mal avec (lambda et (mapcar... Je sais, c'est cruel en lisp, voir un gros default, mais c'est comme ça.... 😒 Mon cerveau n'y arrive pas... En tous cas, mille mercis à toi... On pensait CadXP perdu par manque de nouveaux arrivant (les anciens se fatiguent, sauf certain, dont je cacherais le nom)... Tu représentes un nouvel espoir... Et j'espère te seconder, pour des trucs simples, évidement. Tu représentes le nouvel espoir, pour la section Lisp de CadXP et aussi pour le site... Et c'est un plaisir partagé par beaucoup d'autres anciens, qui se manifesteront, je l'espère, pour te soutenir... You are the new wave ! ! ! And it's so good... Bisous de loin... Denis...
  5. Merci @Luna pour ton aide extraordinaire. Un très grand merci et de très gros bisous de loin... En fait, à chaque ligne créées, je lui attribut des Xdata pour un métré ultérieure : Je partagerais ma suite de programmes (VBA, Lisp, palette...) quand tout sera bien fait. Mais j'aimerais attribuer quelques XData après la création de chaque LWPOLILINE, genre : (vlax-ldata-put (entlast "MetreHAHo" MetreHAHo) C'est pour cela que ton code me pose problème, il est beaucoup trop évolué pour moi. Mais je continu à le dire, un énorme merci à toi. Denis...
  6. Oui, c'est exactement ça, je ne suis pas @VDH-Bruno ni Maître @(gile), la récursivité vient d'un autre monde pour moi...
  7. Coucou @Luna, je ne comprends pas du tout ton code... Je ne pense pas réussir à l'adapter à mes besoin... C'est dommage, car il fait exactement ce que je cherchais à faire, mais il faudrait que je l'adapte à mes besoin, et je n'y arrive pas... En tous cas, un très grand merci à toi... Mais je ne perd pas espoir... Je suis en plein (mapcar et (lambda;,mais j'ai mal à la tête... Encore merci à toi... Bisous de loin...
  8. Coucou @Luna, mais tu es une vilaine en fait ! ! ! Ton code fonctionne super bien, et il est impressionnant par sa "simplicité", mais je ne le comprends pas beaucoup (je suis encore un débutant). De ce fait, tu me donnes du travail en plus (le coté vilaine), et pour cela, je t'en remercie, je vais peut-être progresser en Lisp grâce à toi... C'est exactement ce que je cherchais à faire. Maintenant, je vais devoir digérer ton code pour l'adapter à mes besoins... Par contre, effectivement, je n'ai pas compris le "d"... Et les (mapcar et (lambda... Je vais devoir chercher où sont créées les lignes, car j'ai des xdata à leur attribuer Et oui, la récursivité est mon ennemi, contrairement à d'autre, comme Bruno ou Maître (gile)... Coucou à eux... Encore un million de mercis à toi... Bisous de loin. Denis...
  9. Coucou JPhil, et je m'excuse encore, j'ai toujours eu du mal pour m'exprimer... Toutes les polylignes sont égale à 600cm, sauf la dernière qui serait plus courte, ou égale à 600cm... C'est juste une question de chevauchement de 40cm avec, admettons un recouvrement de 40cm... J'ai refais un petit schéma, qui parle toujours plus qu'un long discours...
  10. Coucou la communauté, c'est encore moi. J'ai écris ce bout de code, mais je n'arrive à rien... Sachant que la variable Recouvre est égale à 40cm, pour cet exemple. (cond ((<= LongTot 600) (setq PtA1 (polar PtA (angle PtA PtC) (/ (distance PtA PtC) 2)) PtB1 (polar PtA1 (angle PtA PtB) (distance PtA PtB)) ) ;_ Fin de setq (command-s "_pline" PtA1 PtB1 "") ) ((> LongTot 600) (setq Cote "G") (setq PtA1 (polar PtA (angle PtA PtC) (/ (distance PtA PtC) 3))) (setq PtB1 (polar PtA1 (angle PtA PtB) 600)) (setq LontTot (- LongTot 600)) (command-s "_pline" PtA1 PtB1 "") (setq LongTot (- Longtot 600)) (while (>= LongTot 600) (if (= Cote "G") (setq Ang (angle PtA PtC)) (setq Ang (angle PtC PtA)) ) ;_ Fin de if (setq PtA1t (polar PtA1 Ang (/ (distance PtA PtC) 3)) PtA1a (polar PtA1t (angle PtB PtA) Recouvre) PtB1 (polar PtA1 (angle PtA PtB) 600) LontTot (- LongTot 600) ) ;_ Fin de setq (command-s "_pline" PtA1a PtB1 "") (if (= Cote "G") (= Cote "D") (= Cote "G") ) ;_ Fin de if ) ;_ Fin de while ) (if (>= LontTot 0) (progn (if (= Cote "G") (= Cote "D") (= Cote "G") ) ;_ Fin de if (setq PtA1t (polar PtA1 Ang (/ (distance PtA PtC) 3)) PtA1a (polar PtA1t (angle PtB PtA) Recouvre) PtB1 (polar PtA1 (angle PtA PtB) 600) LontTot (- LongTot 600) ) ;_ Fin de setq (command-s "_pline" PtA1a PtB1 "") ) ;_ Fin de progn ) ) Désolé pour le coté "débutant", mais je fais avec mon humble cerveau. 😊 Mais je sais que je me fourvoie dans les détails du diable, comme disait Nietzche...
  11. @JPhil: Désolé pour ce mal entendu. @Luna : - le nombre de barre est déterminé par la longueur total (LongTot), - la longueur des barres sera toujours de 600cm, sauf la dernière qui sera plus courte, - l'écart entre les barres sera d'un tiers de la distance PtA PtC, - la longueur de recouvrement dépendra d'une autre variable, que j'ai ailleurs, mais on peut partir sur 40cm. Denis.
  12. Bonjour @Luna , je crois que nos postes se sont croisés 😄
  13. Pour préciser, j'ai commencé la saisie des point, la longueur est de PtA à PtB (LongTot). Voici un schéma plus détaillé ; Et j'ai écris ça pour débuter : (setq PtA (getpoint "\nDébut du filant (PtA) : ") PtB (getpoint PtA "\nFin du filant (PtB) : ") PtC (getpoint PtA "\nPoint opposé (PtC): ") LongTot (distance PtA PtB) LargTot (distance PtA PtC) )
  14. Bonjour JPhil, et merci de ton aide. Pour répondre à tes question : - ce sont des LWPOLYLINE, - pas de courbes, - ça peut être dans toutes les direction. Je vais tenté de suivre ta proposition, mais je ne sais pas trop où attaquer. Encore merci à toi.
  15. Bonjour à la communauté. Je cherche à dessiner une suite de lignes parallèles avec une distance de "recouvrement" (exemple 40cm) uniquement si la longueur totale est supérieure à 600cm, comme sur ce schéma : Mais je ne vois pas comment faire. L'écart entre les lignes sera d'environ 5cm et les longueurs des lignes seront de 600cm, sachant que la dernière sera plus courte. Je pense à un (while. Petite précision, je ne sais pas utiliser (lambda et (mapcar...
  16. Merci pour ton aide, mais j'avais déjà dis à mes collègues de ne pas mettre de caractères spéciaux dans les noms des calques (ni ailleurs Styles de texte, de ligne, de côtes...) Je vais corrigé ces noms... Encore merci à toi...
  17. Un milliard de merci, je ne comprenais plus rien ! ! ! Je pensais avoir fais une bêtise. Heureusement il y a CadXP et ses merveilleux membres ! ! ! Encore merci Luna.
  18. Je viens d'essayer avec ton (ssget : (if (setq Select (ssget "_X" (list '(0 . "LWPOLYLINE") (cons 8 layer) '(410 . "Model")))) Et AutoCAD me répond : Et je n'arrive à rien avec (lambda et (mapcar, j'aurais du mal à retoucher ton code. 😪
  19. Bonjour Luna, et merci pour ton aide. Je vais regarder ton code avec le plus grand intérêt. Voici mon DWG. CadXP_(cons 8 Calq).zip
  20. Bonjour à la communauté. J'ai fais un lisp pour cumuler les longueurs des LWPOLYLINE. Si j'enlève le (cons 8 Calq), ça fonctionne, mais tout calques confondus. Si je le replace, je n'ai plus de calcul... Voici mon code : (defun MetreArmatTxt (/ MetreHaHo MetreNivHo MetreNbHo ArmatObj dxf_ent CalqObj Calq) (setq MetreHaHo "" i 0 HA6Tot 0.0 HA8Tot 0.0 HA10Tot 0.0 ;;;;;;; je n'ai pas tout collé HA40Tot 0.0 Text "" ) ;_ Fin de setq ;; Sélectionner le calque pour le calcul... (setq Obj (entget (car (entsel "\nSélectionner le calque pour le métré :")))) (setq Calq (cdr (assoc 8 Obj))) (princ (strcat "\nCalque du calcul : " Calq "\n")) (if (setq Select (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 Calq) (cons 410 "Model")))) ;;(cons 8 Calq) (progn (while (setq ent (ssname Select i)) ;;(princ "\nDrapeau 02") (setq MetreHaHo (vlax-ldata-get ent "MetreHAHo")) (setq MetreNivHo (vlax-ldata-get ent "MetreNivHo" "1")) (setq MetreNbHo (vlax-ldata-get ent "MetreNbHo")) ;;(princ "\nDrapeau 05") (if (/= MetreHaHo nil) (cond ((= MetreHaHo "HA6") (princ "\nDrapeau HA6") (setq HA6Tot (+ HA6Tot (* (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)) (atoi MetreNbHo)))) ;;(princ (strcat "\nHa=" MetreHaHo "\tNb=" MetreNbHo "\tNiveau=" MetreNivHo)) ) ((= MetreHaHo "HA8") (princ "\nDrapeau HA8") (setq HA8Tot (+ HA8Tot (* (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)) (atoi MetreNbHo)))) ;;(princ (strcat "\nHa=" MetreHaHo "\tNb=" MetreNbHo "\tNiveau=" MetreNivHo)) ) ((= MetreHaHo "HA10") (princ "\nDrapeau HA10") (setq HA10Tot (+ HA10Tot (* (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)) (atoi MetreNbHo)))) ;;(princ (strcat "\nHa=" MetreHaHo "\tNb=" MetreNbHo "\tNiveau=" MetreNivHo)) ) ;;;;;;;;;;;;;;;;;;;;;;;; je n'ai pas tout collé ((= MetreHaHo "HA40") (princ "\nDrapeau HA40") (setq HA40Tot (+ HA40Tot (* (vlax-curve-getDistAtParam ent (vlax-curve-getEndParam ent)) (atoi MetreNbHo)))) ;;(princ (strcat "\nHa=" MetreHaHo "\tNb=" MetreNbHo "\tNiveau=" MetreNivHo)) ) ) ;_ Fin de cond ) ;_ Fin de if (setq MetreHaHo nil) (setq i (1+ i)) ) ;_ Fin de while ) ;_ Fin de progn ) ;_ Fin de if (if (not (tblsearch "style" "ChainH")) (command "-style" "ChainH" "arial.ttf" "" "" "" "" "" "") (command "textstyle" "ChainH") ) ;_ Fin de if (setq NbDec (getvar "luprec")) ;;(setq Pt_ins_Txt (getpoint "\nPoint d'insertion du texte : ")) (setq Text "\\LLinéaire total des chaînages horizontaux :\\l\\P\\Q15(Hors recouvrement)\\Q0\\P") (if (/= HA6Tot 0) (setq Text (strcat Text "- HA6=" (rtos (/ HA6Tot 100) 2 NbDec) " m\n")) ) ;_ Fin de if (if (/= HA8Tot 0) (setq Text (strcat Text "- HA8=" (rtos (/ HA8Tot 100) 2 NbDec) " m\n")) ) ;_ Fin de if (if (/= HA10Tot 0) (setq Text (strcat Text "- HA10=" (rtos (/ HA10Tot 100) 2 NbDec) " m\n")) ) ;_ Fin de if ;;;;;;;;;;;;;;;;;;;;;;;; je n'ai pas tout collé (if (/= HA40Tot 0) (setq Text (strcat Text "- HA40=" (rtos (/ HA40Tot 100) 2 NbDec) " m")) ) ;_ Fin de if (princ) ) Quelqu'un pourrait me dire où j'ai fais une erreur ?
  21. Bonjour Luna. Mille mercis pour ton aide.
  22. Bonjour à la communauté. J'ai un petit soucis pour changer le type de ligne d'une polyligne. J'ai écris ceci : (while (/= (setq ArmatObj (car (entsel "\nSélectionner une armature :"))) nil) (setq MetreHaHo (vlax-ldata-get ArmatObj "MetreHAHo" "")) (princ (strcat "\nType de ligne : Chain" MetreHaHo)) (setq elst (entget ArmatObj)) (setq elst (subst (cons 6 (strcat "Chain" MetreHaHo)) (assoc 6 elst) elst)) (entmod elst) ) ;_ Fin de while Sachant que MetreHAHo correspond à "HA6", "HA12" "HA..." et que les types de ligne "ChainHA..." sont toutes chargées. Quelqu'un aurait une idée ? Denis.
  23. Bonjour à la communauté. Mille mercis à vous deux, ça fonctionne très bien pour ma part. Denis...
  24. Bonjour à la communauté. J'ai créé plein de lisp pour mes collègues, mais il remplissent la ligne de commande. Comment rendre la ligne de commande sans "échos", comme dans le temps, avec "Echo Off" sous "MS-DOS" ? Mais là, je sais bien que les moins de vingt ans ne peuvent pas connaître... 😉 Bien à toi la communauté. Denis...
  25. Oui, aussi, mais il me semble que les get* (getangle, getdist... ) attendent une saisie graphique ou une saisie au clavier, non ? Donc, comme je saisissais 30, c'était converti en radians, me trompe-je ?
×
×
  • 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é