lili2006 Posté(e) le 18 octobre 2007 Auteur Posté(e) le 18 octobre 2007 Bonsoir à toutes et tous, La seule remarque que je pourrait formuler c'est que tu pourrait utiliser la même variable car celles que tu as donné ne servent qu'une fois Ah, une autre, tu ne verifies pas si un point d'insertion n'a pas été saisi (style faire entrée invonlontairement lors de la question) Patrick_35, cela te dérangerais de développer un peu ? Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 18 octobre 2007 Posté(e) le 18 octobre 2007 Par exemple (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert"" nom barre droite " p3 1 1 "") (command "_.explode" "d") (setq p2 (getpoint "\pt d'insertion bloc : ")) (command "_.insert"" ha barre droite " p2 1 1"") (setq p4 (getpoint "\pt d'insertion repere acier : ")) (command "_.insert"" rep acier barre " p4 1 1 "") pourrait être(setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert"" nom barre droite " p3 1 1 "") (command "_.explode" "d") (setq p3 (getpoint "\pt d'insertion bloc : ")) (command "_.insert"" ha barre droite " p3 1 1"") (setq p3 (getpoint "\pt d'insertion repere acier : ")) (command "_.insert"" rep acier barre " p3 1 1 "") et pour tester la saisie(setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert"" nom barre droite " p3 1 1 "") (command "_.explode" "d") pourrait être(if (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (progn (command "_.insert"" nom barre droite " p3 1 1 "") (command "_.explode" "d") ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lili2006 Posté(e) le 18 octobre 2007 Auteur Posté(e) le 18 octobre 2007 Re, Merci pour ces remarques Patrick_35, je vais modifier le code et tester. Comment ferais-tu maintenant pour assembler les deux lisps en exemple qui bientôt se transformeront en une trentaine ? Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 21 octobre 2007 Auteur Posté(e) le 21 octobre 2007 Bonjour à toutes et tous, J'ai bien réussi à faire les modifs proposées par Patrick_35. J'ai maintenant, sous le même modèle une quarantaine de fichiers Lisps concernant le ferraillage MAIS, je n'arrive pas à regrouper l'ensemble sur un seul fichier,ce qui serait moins lourd et éviterai surement des doublons en écriture, non ? Quelqu'un peut-il m'aiguiller ? Merci d'avance et bon dimanche. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 21 octobre 2007 Posté(e) le 21 octobre 2007 Salut, Je n'ai pas regardé dans le détail, mais il semble que tes 2 LISP font la même chose exepté les blocs inséré. Tu peux donc faire choisir le type de blocs par l'utilisateur (il suffit d'entre b ou c): (Initget 1 "Barre Crochet") (setq opt (getkword "\nChoix du type de bloc [barre/Crochet]: ")) (if (= opt "Barre") (setq bloc1 " nom barre droite " bloc2 " ha barre droite ") (setq bloc1 " NOM BD4545 " bloc2 " HA crochet double 45° 45° ") ) et ensuite : (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert" bloc1 p3 1 1 "") (command "_.explode" "d") (setq p2 (getpoint "\pt d'insertion bloc : ")) (command "_.insert" bloc2 p2 1 1"") Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 21 octobre 2007 Auteur Posté(e) le 21 octobre 2007 Re, Oui (gile), chacun des Lisps est destiné à insérer la ligne de nomenclature correspondante au blocs dynamique à utiliser dans la zone de dessin. Je pense que l'idée de choisir le bloc à insérer est la bonne, par contre, j'ai fait une barre d'outils pour choisir le bloc utile, est-ce que ce que tu proposes ci-dessus permet cette utilisation ? Visualisons : 1er ETAPE : Je choisi sur la barre d'outils l'éléments de ferraillage et viens ensuite remplir la ligne de la nomenclature : <!--url{0}--> 2ème ETAPE : Je positionne mon bloc dynamique dans la zone de dessin : <!--url{1}--> 3ème ETAPE : Je choisi un point sur le bloc pour mettre le symbole du repère de l'acier : <!--url{2}--> 4ème ETAPE : je choisi l'endroit de positionnement de mon N° de repère. La routine se termine là et je n'ai plus qu'à utiliser les fonctions dynamiques de mon bloc conformément à mes besoins : <!--url{3}--> Voilà l'idée de ce travail. Pour le moment, j'ai une quarantaine de Lisp (la barre d'outils n'est pas terminé,..),c'est à dire un par fonction MAIS le fonctionnement est identique (on retrouve les étapes ci-dessus) pour chacun. Que veux-tu dire (gile) par : (il suffit d'entre b ou c): Merci d'avance et bon dimanche. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 21 octobre 2007 Auteur Posté(e) le 21 octobre 2007 Rere, J'ai compris pour b (barre) ou c (crochet). Mais pour choisir directement le bouton radio et rassemblé tous les lisps, je n'y arrive pas pour le moment,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Patrick_35 Posté(e) le 21 octobre 2007 Posté(e) le 21 octobre 2007 Salut lili L'appel au lisp dans ta barre d'outils peut contenir le nom du bloc par exemple, dans la barre d'outil^C^C(mon_lisp mon_symbole) Et le lisp(defun mon_lisp (bloc) le lisp ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lili2006 Posté(e) le 21 octobre 2007 Auteur Posté(e) le 21 octobre 2007 Re, Merci Patrick_35 , donc, je peux copier les uns aprés les autres sur le même fichier les différents lisps juste en lui donnant comme nom en début : (defun mon_lisp (bloc)le lisp) Exemple pour les deux premiers : ; ******************************************************************* ; ARMATURES.LSP ; ;(modes '("CMDECHO" "ATTDIA" "ATTREQ" "GRIDMODE" "UCSFOLLOW")) ;(setvar "cmdecho" 0) ; turn cmdecho off ;(setvar "attdia" 0) ; turn attdia off ;(setvar "attreq" 1) ; turn attreq on ;(setvar "gridmode" 0) ; turn gridmode off ;(setvar "ucsfollow" 0) ; turn ucsfollow off (defun bdh (bloc) le lisp ) (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert"" nom barre droite " p3 1 1 "") (command "_.explode" "d") (setq p2 (getpoint "\pt d'insertion bloc : ")) (command "_.insert"" ha barre droite " p2 1 1"") (setq p4 (getpoint "\pt d'insertion repere acier : ")) (command "_.insert"" rep acier barre " p4 1 1 "") (setq p5 (getpoint "\pt intermediere de ligne de repere : ")) (command "_.pline" p4 p5 "") (command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "") (setq p6 (getpoint "\pt insertion numero de repere : ")) (command "_.pline" p5 p6 "") (command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "") (command "_.insert"" numerorepere " p6 1 1 "") (command "_.explode" "d")) (defun bcs45d (bloc) le lisp ) (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert"" nombcd45 " p3 1 1 "") (command "_.explode" "d") (setq p2 (getpoint "\pt d'insertion bloc : ")) (command "_.insert"" ha crochet simple 45°d " p2 1 1"") (setq p4 (getpoint "\pt d'insertion repere acier : ")) (command "_.insert"" rep acier barre " p4 1 1 "") (setq p5 (getpoint "\pt intermediere de ligne de repere : ")) (command "_.pline" p4 p5 "") (command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "") (setq p6 (getpoint "\pt insertion numero de repere : ")) (command "_.pline" p5 p6 "") (command "CHANGER" "d" "" "p" "ca" "BAC FERRAILLAGE REPERE PLAN" "") (command "_.insert"" numerorepere " p6 1 1 "") (command "_.explode" "d")) Même principe pour les suivants ? Ou pui-je encore raccourcir les écritures identiques ? PS : Je n'ai pas encore remis à jour ces fichiers en fonction de tes remarques et celles de (gile), j'attend d'être sûr du principe à adopter. Merci encore. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 21 octobre 2007 Posté(e) le 21 octobre 2007 Salut, Comme tout tes LISPs font la même chose, seuls les noms des blocs insérés diffèrent. Tu fais une seule routine avec 2 arguments (les noms des blocs) : (defun insert-feraillage ([b]bloc1 bloc2[/b] / p3 p4 p5 p6) (setq p3 (getpoint "\pt d'insertion nomenclature : ")) (command "_.insert" [b]bloc1[/b] p3 1 1 "") (command "_.explode" "d") (setq p2 (getpoint "\pt d'insertion bloc : ")) (command "_.insert" [b]bloc2[/b] p2 1 1"") (setq p4 (getpoint "\pt d'insertion repere acier : ")) (command "_.insert"" rep acier barre " p4 1 1 "") (setq p5 (getpoint "\pt intermediere de ligne de repere : ")) (command "_.pline" p4 p5 "") (command "_.chprop" "_l" "" "_la" "BAC FERRAILLAGE REPERE PLAN" "") (setq p6 (getpoint "\pt insertion numero de repere : ")) (command "_.pline" p5 p6 "") (command "_.chprop" "_l" "" "_la" "BAC FERRAILLAGE REPERE PLAN" "") (command "_.insert"" numerorepere " p6 1 1 "") (command "_.explode" "d") ) tu peux ensuite faire comme dit Patrick_35, appeler la routine depuis les macros en rensignant les arguments :^C^C(insert-ferraillage " nom barre droite " " ha barre droite ");^C^C(insert-ferraillage " nombcd45 " p3 1 1 " " ha crochet simple 45°d " p2 1 1") ou encore, définir en LISP autant de commandes que tu as de "couples" de bloc qui chacune appelle la routine insert-ferraillage : (defun c:barre_droite () (insert-ferraillage " nom barre droite " " ha barre droite ") (princ) ) (defun c:crochet () (insert-ferraillage " nombcd45 " p3 1 1 " " ha crochet simple 45°d " p2 1 1") (princ) ) tu pourras appeler ces commandes directement à la ligne de commande et les mettre dans tes macros : ^C^Cbarre_droite;^C^Ccrochet; EDIT : j'ai "internationnalisé" la commande de changement de calque et utilise la commande _CHPROP (CHPROP) au lieu de CHANGER (_CHANGE). [Edité le 21/10/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 21 octobre 2007 Auteur Posté(e) le 21 octobre 2007 Re, Une fois de plus un grand merci à vous deux. Je regarde cela en fin de semaine prochaine et vous tiend au courant, mais j'le sens bien cette fois,... Bonne semaine et au plaisir. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
lili2006 Posté(e) le 4 novembre 2007 Auteur Posté(e) le 4 novembre 2007 Bonsoir à toutes et tous, Je n'ai malheuresement pas encore eu le temps de me pencher sérieusement sur vos dernières réponses car je pense que je peux encore aboutir la démarche. Je m'explique : Aujourd'hui, la nomenclature est un texte ainsi que le N° de repérage. C'est balot, il suffit de dire, eh, mais moi, je veux que la nomenclature soit en champs et qu'elle se renseigne lorsque le blocs dyn est en place avec ces dimensions réelles et avec le choix du diamètre grace à l'état de visibilité, bref, toutes les infos pour qu'elles se remplissent toutes seules et surtout, surtout, conformément à la représentation réelle, puisque à l'échelle un. Je ne sais pas si il y à moyen de s'en sortir sans la programmation, qu'en pensez-vous ? Ci-dessous, l'état actuel (du texte dans la nomenclature et pas d'incrémentation pour les N° de repère, bref, trés pauvre, MAIS, fonctionnel,.... <!--url{0}--> Ci-dessous, renseignement du diamètre, la longueur dynamique étant définie.(Exemple sur un autre type d'acier). <!--url{1}--> Bonne fin de soirée. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant