CADxp: Lisp et VBA - CADxp

Aller au contenu

  • 3 Pages +
  • 1
  • 2
  • 3
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Lisp et VBA

#1 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 10 avril 2018 - 21:11

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)
0

#2 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1838
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 10 avril 2018 - 21:35

Bonjour,

Citation

j'ai besoin de récupérer le résultat pour l'exploiter et permettre de dessiner le ferraillage


ce n'est pas d'un lisp que tu as besoin, mais d'un Ingénieur en béton armé.

Bon courage.
...plus je sais où je suis, moins je sais où je vais....
Extrait d'une double interview simultanée d'une particule élémentaire.
0

#3 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 10 avril 2018 - 21:51

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...
0

#4 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1838
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 10 avril 2018 - 21:55

je vais un peu, m'expliquer, je viens de voir que tu es étudiant.
Le calcul de ferraillage demande des connaissances approfondies en calcul de résistance des matériaux.

seul, les ingénieurs en béton armé sont habilités à le faire, surtout que cela entraîne beaucoup de responsabilités.
même, si en pratique, si tu as un niveau math sup, tu peux appliquer les bons algorithmes pour un balcon...
...plus je sais où je suis, moins je sais où je vais....
Extrait d'une double interview simultanée d'une particule élémentaire.
0

#5 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 10 avril 2018 - 21:58

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....
0

#6 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 10 avril 2018 - 22:05

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 ...
0

#7 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1838
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 10 avril 2018 - 22:09

c'etait pour te dire que je ne pense pas que si tu trouves un Lisp qui te fais cela, soit la bonne solution pour toi.
calcul, c'est plus formateur.
et tous les plans de ferraillage que j'ai pus faire, on été vérifies par l' ingénieur qui m'avait fourni une feuille de calcul avant que je fasse mes plans.
...plus je sais où je suis, moins je sais où je vais....
Extrait d'une double interview simultanée d'une particule élémentaire.
0

#8 L'utilisateur est hors-ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8095
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 10 avril 2018 - 22:12

Hello

COOL / ZEN !

SVP que les anciens Pros soient "un peu sympas / souples / gentils / etc" avec les jeunes qui manquent d'expérience !

Même si parfois les jeunes montent un peu vite dans les tours ?!

Merci, Bye, lecrabe (61 ans)
Autodesk Expert Elite Team
0

#9 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 10 avril 2018 - 22:14

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
0

#10 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 10 avril 2018 - 22:17

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

#11 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11052
  • Inscrit(e) : 02-septembre 05

Posté 11 avril 2018 - 06:02

Salut,

Personnellement j'ai toujours trouvé les liaison LISP / Excel plutôt lourdingues, aussi j'essayerais de faire les calculs directement dans le LISP.
Si le passage par Excel est vraiment incontournable, une recherche avec GetExcel te dirigeras vers plusieurs sujets qui traitent de ça.

Je n'aurais pas le temps de t'aider plus avant aujourd'hui.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#12 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6356
  • Inscrit(e) : 06-janvier 03

Posté 11 avril 2018 - 07:16

Salut

J'aurais une seule question. Quel est ton niveau en lisp ? Je pourrais te guider, mais pas te faire le lisp.
Pour répondre, regarde ce sujet.

@+
Les Lisps de Patrick
Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.
Joseph Joubert, 1754-1824
0

#13 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7908
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 11 avril 2018 - 08:20

Coucou

Ce n'est pas la première fois qu'on lit ce genre de discours, le travail de fin d'études...

Dans les faits s'il faut aller dans Excel ce qu'on aimerait bien, Theldien, c'est un exemple du code réalisé jusqu'ici et un exemple des données à transférer, ça aidera grandement à comprendre.
Créer un "simple" fichier texte formaté CSV et dans Excel trois clics ou une macro et le tour est joué est une solution, ou tu calcules dans le lisp comme te le suggère (gile).

Permets-moi de te dire que je te trouve quelque peu incisif, nous on sait faire, on partage, alors on se calme et tout le monde sera content, c'est comme le volontaire aux restos du cœur qui se fait engueuler pour la température de la soupe...

Amicalement

Éternel débutant ...
Les bases AutoLisp
0

#14 L'utilisateur est hors-ligne   didier 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 7908
  • Inscrit(e) : 18-décembre 02
  • LocationPlanète : Terre

Posté 11 avril 2018 - 08:38

Coucou

Pour la petite histoire et nous informer de ce qui se passe aujourd'hui :
C'est quoi le programme d'une licence "pro CAO DAO" ?

Merci

Éternel débutant ...
Les bases AutoLisp
0

#15 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 11 avril 2018 - 18:57

Je vais essayer de répondre à tout le monde, donc ça va faire un gros pavé :D

Citation

aussi j'essayerais de faire les calculs directement dans le LISP.

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é.

Citation

J'aurais une seule question. Quel est ton niveau en lisp ?

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).

Citation

Je pourrais te guider, mais pas te faire le lisp.

Ç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

Citation

Dans les faits s'il faut aller dans Excel ce qu'on aimerait bien, Theldien, c'est un exemple du code réalisé jusqu'ici et un exemple des données à transférer, ça aidera grandement à comprendre.


(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.noelsh...alcul-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.noelsh...ase-donnees.png
Et le résultat final c'est ça :
https://www.noelshac...26-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

Citation

Permets-moi de te dire que je te trouve quelque peu incisif

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é.


Citation

C'est quoi le programme d'une licence "pro CAO DAO" ?

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
0

#16 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1838
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 11 avril 2018 - 20:27

Bonjour,

A mon tour de m'excuser, voila.

du coup me lance le 1er, je vais etre suivis par les masters.

tout d'abord, bravo pour ton courage, le lisp n'est pas si facile, tu verras.

1er truc qui me gène, est le non encapsulage des variables.
quand tu créé une variable avec setq il faut les déclarées aussi comme cela

defun c:trace_relevé(/ acob unitang ...)


sinon elles deviennent globales.
et il faut mettre un espace après ta variable
(setq acob (getvar "osmode"))

tu as aussi clos tes if trop tôt, du coup le else (non ecrit en lisp) s'effectue a tout les coup, et les conditions sont mal présentées. if test suffit normalement

(if  test  ;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" "" "")
)


n'hesite pas à aller consulter l'aide des développer

pas testé l'algo, et ne me sert jammais du dcl

à pluch
...plus je sais où je suis, moins je sais où je vais....
Extrait d'une double interview simultanée d'une particule élémentaire.
0

#17 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 11 avril 2018 - 20:37

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

Citation

tout d'abord, bravo pour ton courage, le lisp n'est pas si facile, tu verras

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)
0

#18 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1838
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 11 avril 2018 - 20:57

commence déjà par ceux là

Gile
Didier
Les Marais
...plus je sais où je suis, moins je sais où je vais....
Extrait d'une double interview simultanée d'une particule élémentaire.
0

#19 L'utilisateur est hors-ligne   Thelduin 

  • ceinture orange
  • Groupe : Membres
  • Messages : 29
  • Inscrit(e) : 22-février 18

Posté 11 avril 2018 - 21:01

Super merci !
0

#20 L'utilisateur est hors-ligne   Fraid 

  • ceinture noire 3em dan
  • Groupe : Membres
  • Messages : 1838
  • Inscrit(e) : 08-août 05
  • LocationST Malo 35

Posté 11 avril 2018 - 21:05

Une variable globale est disponible tout le temps.
Elle reste stockée dans la ram, et peux devenir génante.
Exemple tu as appeler une variable TEXT.
et que tu lance un lisp qui se sert aussi de la variable text, au départ elle n'est pas nil.
il y a d'autres conséquences qui me viennent pas à l'esprit vu l'heure et que suis en bretagne...
par contre depuis mes debut j'ecrit comme cela pendant mes phases de teste

(defun c:trace_relevé(/ ;acob unitang ...
                             )

car tu peux appeler ta variable globale en faisant simplement !TEXT dans la barre de commande d'autocad, très pratique pour débugguer, quand ta finis t'enleve ;
...plus je sais où je suis, moins je sais où je vais....
Extrait d'une double interview simultanée d'une particule élémentaire.
0

Partager ce sujet :


  • 3 Pages +
  • 1
  • 2
  • 3
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)