Aller au contenu

Thelduin

Membres
  • Compteur de contenus

    42
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Thelduin

  1. Thelduin

    Lisp et VBA

    Je savais pas du tout qu'il fallait déclarer les variables comme tu me le dis ! Merci Mais du coup, c'est quoi une variable globale ? Pour le if, je l'avais fermé comme toi, sauf que j'avais une erreur, qui me disait qu'il y avait trop d'arguments. Après, j'avais peut être mal écrit la ligne de code (je me souviens plus de ce que j'avais mis), mais je testerai dès que possible ce que tu me dis :D Je profite de ton encouragement (que j'apprécie, merci !) pour demander si quelqu'un a un ouvrage à me recommander pour apprendre le LISP (si cela existe)
  2. Thelduin

    Lisp et VBA

    Je vais essayer de répondre à tout le monde, donc ça va faire un gros pavé :D J'aimerais vraiment pouvoir faire le calcul dans le lisp, seulement, je sais pas si il est possible de créer une base de données, ou en tout cas quelques chose qui s'en rapproche, dans laquelle je vais pouvoir aller "piocher" le ferraillage qui correspond à ce qui a été calculé. Je ne saurais pas te dire. Je sais pas vraiment jusqu'où on peut aller avec le lisp, donc je n'arrive pas à me "jauger". Je peux tout de même te passer quelques codes que j'ai fait jusque là (dont la plupart fait dans le cadre d'exercice pour l'IUT). Ça tombe bien, je n'ai pas envie qu'on me donne le lisp déjà fait. Je suis venu sur ce forum pour chercher de l'aide et apprendre :D (defun c:trace_relevé() (setq acob(getvar "osmode")) (setq unitang(getvar "aunits")) (command "_-dimstyle" "_r" "COT25") (setvar "osmode" 0) (setvar "aunits" 3) (setq kw "Oui") (while ( = kw "Oui") (setq dclid (load_dialog "relevé.dcl")) (new_dialog "trace" dclid) (action_tile "accept" "(recup)") (action_tile "cancel" "(done_dialog)") (start_dialog) ;calcul des paramètres utiles (setq niv_inf_dalle(- brut epdalle)) (setq x_insert(car(getpoint "\nSpécifiez le point d'insertion du point inférieur droit (seul le x est retenu) : "))) ;à revoir (setq p1(list (+ x_insert eprel 50) brut 0)) (setq p2(list (+ x_insert eprel 50) niv_inf_dalle 0)) (setq p3(polar p1 (+ 0 pi) 50)) (setq p4(polar p2 (+ 0 pi) (+ 50 eprel))) (setq p5(list (car p4) arase_sup 0)) (setq p6(list (+ (car p5) eprel) (- (cadr p5) 1) 0)) (setq diff_niv(- fini brut)) (setq p7(polar p3 (/ pi 2) diff_niv)) (setq p8(polar p1 (/ pi 2) diff_niv)) (setq test(tblsearch "LAYER" "01_BA_Coupe")) (if not (= test nil) ;test la présence du calque de coupe (setvar "clayer" "01_BA_Coupe") ) (command "-calque" "e" "01_BA_Coupe" "CO" 6 "" "EP" 0 "" "TL" "Continuous" "" "") (command "_pline" p1 p3 p6 p5 p4 p2 "") (setq test(tblsearch "LAYER" "01_BA_Fini")) (if not (= test nil) ;test de présence (setvar "clayer" "01_BA_Fini") ) (command "-calque" "e" "01_BA_Fini" "co" 3 "" "ep" 0 "" "tl" "AXES" "" "") (command "ligne" p7 p8 "") (setq test(tblsearch "LAYER" "01_BA_Cotation")) (if not (= test nil) ;test de présence (setvar "clayer" "01_BA_Cotation") ) (command "-calque" "e" "01_BA_Cotation" "co" 2 "" "ep" 0 "" "tl" "Continuous" "" "") (command "cotord" p7 "TE" "<>f" (polar p7 0 30)) (command "cotord" p3 "TE" "<>b" (polar p3 0 30)) (command "cotlin" p2 p1 (polar p1 0 10) "cotcont" p8 p6 p5 "" "") (command "cotord" p5 (polar p5 0 (+ eprel 30))) (initget 1 "Oui Non") (setq kw(getkword "\nVoulez-vous tracer un autre relevé/garde-corps/acrotère ? [Oui/Non]")) ) (setvar "clayer" "0") (setvar "osmode" acob) (setvar "aunits" unitang) ) ;=========Fonction de récupération DCL========; (defun recup() (setq epdalle(get_tile "epdalle")) (setq epdalle(atof epdalle)) (setq brut(get_tile "brut")) (setq brut(atof brut)) (setq fini(get_tile "fini")) (setq fini(atof fini)) (setq eprel(get_tile "eprel")) (setq eprel(atof eprel)) (setq arase_sup(get_tile "arase_sup")) (setq arase_sup(atof arase_sup)) (done_dialog) ) Le DCL : trace : dialog{ label = "Données"; : edit_box { label = "Epaisseur de la dalle"; key = "epdalle"; } : edit_box { label = "Niveau brut"; key = "brut"; } : edit_box { label = "Niveau fini"; key = "fini"; } : edit_box { label = "Epaisseur du relevé"; key = "eprel"; } : edit_box { label = "Arase supérieure du relevé"; key = "arase_sup"; } : row { : button { label = "OK"; is_default = true; key = "accept"; } : button { label = "Annuler"; is_default = false; is_cancel = true; key = "cancel"; } } } Voilà l'état de mon code à l'heure actuelle. Je pense qu'il y a moyen de l'optimiser. Les données que je voudrais envoyer sur excel c'est l'épaisseur de mon relevé, l'arase sup du relevé, le niveau fini, le brut et l'épaisseur de la dalle (en gros, toutes les données :D ) plus la longueur que je demanderais à l'utilisateur au moment d'envoyer les données (ou avant, je sais pas encore). Ces données vont me servir à calculer le ferraillage nécessaire, à l'aide de cette feuille de calcul : https://image.noelshack.com/fichiers/2018/15/3/1523468551-partie-calcul-excel.png Les cellules vertes correspondent aux données entré par l'utilisateur, les bleus c'est du calcul, et le jaune c'est le résultat. Ensuite, je me sers de cette petite base de données (que je compte alimenter encore), qui reprends les ferraillages les plus communs : https://image.noelshack.com/fichiers/2018/15/3/1523468654-base-donnees.png Et le résultat final c'est ça : https://www.noelshack.com/2018-15-3-1523468726-resultat.png Tout se fait automatiquement (à part l'entrée des données dans les cellules vertes). Le résultat que j'ai à la fin, ici 2Ha14, je voudrais le rebalancer sur Autocad pour tracer le ferraillage. J'espère que ça vous éclairera sur mon projet :D J'ai très clairement sur réagit, et c'était absurde et idiot de ma part de réagir comme ça. Je suis vraiment désolé. On fait beaucoup d'info. On a vu excel, access, un peu de vba, et du LISP. On fait aussi du web (je sais pas trop pourquoi mais bon :D ), ainsi que de la "maintenance informatique". En gros on nous montre ce qu'il y a dans un PC, et comment le monter. Ensuite, on fait pas mal de dessin, sur plusieurs logiciel (mais aussi à la main, mais trop peu). Autocad, Covadis ou encore Revit font partie des logiciels qu'on utilise. A côté de ça, on a aussi un peu de mécanique des structures. On utilise notamment SCIA pour faire de la maquette analytique et faire du calcul avec. (beaucoup moins poussé qu'en DUT Génie Civil ou il fallait réellement dimensionner les éléments). Cette année, il y a une nouveauté, c'est ce qu'ils appellent le "Projet BIM". En gros, on part d'une maquette Revit type archi (qu'on fait nous même), et de cette maquette, on extrait le gros oeuvre pour faire des plans de coffrage, mais aussi des modèles analytiques qu'on transfert sur SCIA. Et ensuite, on a aussi un peu de matières générales (math, com, anglais). Je pense avoir tout dit, j'ai peut-être zappé deux trois modules :D J'espère avoir répondu à tout le monde :D
  3. Thelduin

    Lisp et VBA

    Bref, on peut en revenir au sujet ? :D J'aimerais bien avancer sur cette liaison autocad/excel :D
  4. Thelduin

    Lisp et VBA

    Oui voilà, moi aussi mes détails de ferraillage sont systématiquement vérifié, moi aussi j'ai une feuille de calcul pour les relevés, j'en ai aussi une pour les renforts de dalles au droit des trémies etc... Mais le projet que je fais, c'est vraiment que pour les études, je suis quasi-certain qu'il ne sera jamais utilisé au bureau. Mais c'est juste que je dois le faire, pour mes études, mais que c'est quand même quelque chose qui m'intéresse. J'aime pas mal coder sous autocad (un peu moins excel mais j'essaye de faire de mon mieux :D ), et je me dis qu'en pratiquant, je finirai bien par trouver des routines qui seront vraiment utile ! Sur ce, je vous demande quand même pardon pour m'être emporté, c'était idiot
  5. Thelduin

    Lisp et VBA

    J'aurais mieux fais de poser ma question comme cela : Bonjour, J'ai fait un lisp pour dessiner un truc, je voudrais balancer certaines données de ce truc sur excel pour faire un calcul, et rebalancer le résultat sur autocad pour l'exploiter Merci d'avance C'est mieux ? Désolé si je parais désinvolte, mais je n'aime pas qu'on vienne me faire une pseudo morale dans un français bancal, sans pour autant répondre à ma question ...
  6. Thelduin

    Lisp et VBA

    Ouai bon bref, là n'est pas la question. Mon projet est validé par deux des ingénieurs du bureau, et l'idée m'a été présentée par un projeteur qui me forme. Pendant les phases exe, on va pas aller embêter l'ingé juste pour un garde-corps au bout d'un balcon, il a autre chose à faire de bien plus complexe. Donc je comprends pas pourquoi vous venez me faire un discours là dessus, me faisant comprendre que je n'ai pas à le faire, sous couvert de responsabilités que je n'ai pas, sachant qu'un projeteur est tout aussi responsable que l'ingé sur certaines grosses affaires....
  7. Thelduin

    Lisp et VBA

    Je sais exactement comment calculer le ferraillage d'un relevé/garde-corps/acrotère, sinon je ne ferais pas ça comme projet de fin d'étude ! Je fais justement mon alternance dans un bureau d'étude structure BA, et j'ai eu l'occasion, et même à plusieurs reprises, de demander comment cela se calcule et pourquoi (DTU sous les yeux) En attendant, tu réponds pas tellement à ma question...
  8. Bonjour (ou bonsoir :D ) à tous ! Je suis en licence pro CAO DAO, et j'ai un projet de fin d'étude à réaliser. Je me tourne vers vous car j'ai un soucis. Mon projet consiste à tracer et ferrailler (donc calculer) automatiquement un relevé/garde-corps/acrotère en béton armé. J'ai écris un lisp permettant de dessiner le relevé, j'ai donc toutes les données du relevé (hauteur, largeur etc...). Seulement, pour le calcul du ferraillage, j'ai besoin de balancer ces données sur une feuille excel. Et une fois le calcul fait, j'ai besoin de récupérer le résultat pour l'exploiter et permettre de dessiner le ferraillage (le résultat de ma feuille excel c'est 2Ha10 par exemple). Je voulais donc savoir si quelqu'un pouvait m'éclairer sur la liaison autocad/excel et/ou lisp/vba. Merci d'avance ! :D Ah oui, et je voulais aussi savoir comment gérer des blocs dynamiques avec le lisp (je ferais sûrement un autre sujet sur le forum, mais si quelqu'un a quelques pistes que je peux explorer concernant la manipulation des propriétés des blocs dynamiques, je suis preneur, parce que je me suis rendu compte que ces dites propriétés (liés au paramètres dynamiques) n'apparaissent pas dans les clés dxf de l'objet, et je ne sais donc pas comment faire)
  9. Thelduin

    barre d'outils

    C'est quoi un fichier mnl ? Il y a quoi dedans ? :unsure:
  10. Bonjour ! J'ai fait quelques lisp différents, et j'ai eu l'idée de créer des boutons pour lancer mes lisp. Je voulais savoir, une fois la barre d'outils créée avec mes icônes, comment faire pour que la barre d'outils s'ajoute automatiquement aux barres déjà présentes quand on charge le lisp dans autocad. Un peu à la manière de Adfer, quand on le charge, on a plein de barre d'outils en plus, propre à adfer. Merci d'avance ! Guillaume
  11. Thelduin

    dxf/lisp

    Bonjour ! Je reviens vers vous (encore :D) car j'aimerais changer l'echelle du type de ligne d'une ligne ou polyligne. Je sais que le code dxf 48 correspond à l'echelle du type de ligne, seulement, il apparaît uniquement si l'echelle est différente de 1. J'ai donc voulu ajouter à la liste dxf, la clé 48 avec une valeur quelconque pour pouvoir la changer par la suite avec subst. Le couple (48 . x) s'ajoute bien à la liste dxf, j'arrive à changer le x avec subst, mais quand je lance entmod, ça ne change rien, comme si ça ne prenait pas en compte l'echelle. (setq dxlist(entget(entlast))) (setq dxlist(cons 48 1.0)(cons dxlist)) (subst (cons 48 3) (assoc 48 dxlist) dxlist)) (entmod dxlist) J'arrive à changer d'autres paramètres avec subst puis entmod, je vois le changement se faire, mais là vraiment, pour l'echelle du type de ligne, je sèche complètement ... Merci d'avance, Guillaume
  12. Thelduin

    Bloc et lisp

    Merci !
  13. Super, merci beaucoup à vous deux !
  14. Thelduin

    Bloc et lisp

    Merci beaucoup pour votre aide à tous ! J'ai suivi la méthode de (gile) et Tramber, qui me semblait être la plus simple. J'ai cependant une dernière question : Voici mon code : (defun c:cloture() (setq acob(getvar "osmode")) (setvar "osmode" 0) (setq pts nil) (command "_pline") (while(setq p2(getpoint "\nPremier point ou Point suivant :")) (command p2) (setq pts (cons p2 pts)) ) (command "") (setq name(entlast)) (setq lg(getpropertyvalue name "Length")) (command "_.text" pause "15" "" (strcat "longueur de la clôture : " (rtos lg))) (command) (foreach p pts (command "-inserer" "poteau" p 1 1 0)) (setvar "osmode" acob) ) Pour l'instant, je peux pas vraiment clôturer ma polyligne. Comment je peux faire pour ajouter une option permettant de clore la poly ? Je sais faire plusieurs options dans une fonction (initget etc..) mais là, je vois pas où je peux le placer pour pas avoir d'erreur.
  15. Bonjour, Je sais que par la fonction entget on peut obtenir des données sur des entités. Est-il possible, par cette fonction ou une autre, de récupérer la longueur d'une polyligne ? J'ai fais un lisp pour tracer différents réseau etc...et j'aimerais, qu'en plus de me tracer une simple polyligne, que le lisp insert un texte, donnant la longueur de la dite polyligne. Merci d'avance, Guillaume
  16. Thelduin

    Bloc et lisp

    Merci pour ta réponse, ça marche nickel pour la polyligne Mais comment je peux faire ma polyligne et insérer les blocs en même temps sur les sommets ?
  17. Bonjour, Dans le cadre de ma licence pro CAO/DAO, j'ai un lisp à faire, et j'ai besoin de votre aide ! Je dois faire un programme permettant de tracer un PIC (grue, zone de stockage, clotûre etc...). Je dois notamment insérer un bloc avec attribut (panneau de chantier). Sauf que je sais pas comment m'y prendre. Est-ce que le bloc doit être un bloc externe, auquel cas il faudrait que mon lisp aille chercher le fichier du bloc, mais ce qu'il voudrait dire que l'utilisateur doit avoir ce fichier, ou bien intégrer ce bloc à un gabarit (je sais pas si c'est possible, à vrai dire, j'ai jamais vraiment su ce qu'il y avait dans un gabarit :unsure: ). Le fait de faire un gabarit me permettrait aussi d'intégrer des types de ligne utile pour le tracé des réseaux (EP, EU, ELEC) et de la clôture. Je sais pas si j'ai été assez clair dans ma demande, n'hésitez pas à demander plus de précision si vous avec besoin. Merci d'avance :D Guillaume PS: pour pas créer plusieurs sujets sur le forum, j'en profite pour vous demander si il est possible d'inclure la commande polyligne dans une boucle ? Par exemple, pour le tracé de la clôture, je ne connais pas les points à l'avance, donc j'ai pensé à faire un while. Donc ce que je voudrais, c'est qu'à chaque nouveau point cliqué, la polyligne se prolonge, mais en plus, que ça m'insert un bloc choisi (ici, juste un cercle représentant un "poteau"). Un extrait du code : (setq p2 0) (while p2 (setq p2(getpoint "\nPoint suivant :")) (command "polylign" p1 p2) (command "-insérer" "poteau" p2 1 1 0) (setq p1 p2) ) J'arrive pas à comprendre comment faire, car dans ce cas, j'ai une erreur, et ça me sors de mon programme pour lancer la commande polyligne comme si je n'avais jamais lancé mon lisp, Soit je rajoute "c" après "polylign" p1 p2, ce qui donnerait (command "polylign" p1 p2 "c") Ce qui clore ma poly, m'insert le bloc où je veux, mais ça fait plusieurs polyligne. Le problème, c'est que je voudrai une seule polyligne, pour pouvoir en faire le métré.
×
×
  • 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é