philsogood Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 helloil y a quelques années de ça "j"'avais fait un lisp pour faire des cotes NGFle lisp de mémoire (voila des années que je ne l'ai aps utilisé) marchait aps trop malbon les grandes lignes c'est toujours OK mais pour le reste ya encore du boulotla cote s'affiche correctement mais :je n'ai aps l'insertion de mon bloc flèchele lisp ne me demande pas l'ajout de préfixeet ya un autre truc que j'avais pas fait à l'époque et qui pourrait être judicieux : répéter la commande sans avoir besoin de respécifier point_zero et zero, pouvoir enchainer plusieurs cotes à la suite sans relancer la commandeça fait tellemnt longtemps que je n'ai asp touché le lisp qu'il me faudrait 3 jours pour m'y remettre :(si une bonne âme passait par là... le code;; philsogood avec l'aide de rebcao, (gile), VDH-bruno, bryce & much more (defun c:niv (/) ;(/ *error* oldlayer oldcolor unite echelle oldceltype oldweight oldstyle point_zero zero rot xscu yscu xbase ybase xtxt ytxt x_fleche_SCG y_fleche_SCG distance_OA teta beta x_fleche_SCU y_fleche_SCU) ;; stocker les valeurs initiales dans des variables LOCALES (setq oldlayer (getvar "clayer") oldcolor (getvar "cecolor") oldceltype (getvar "celtype") oldweight (getvar "celweight") oldstyle (getvar "dimstyle") unite (getvar "insunits") ) ;; Redéfinition LOCALE de *error* au début de la routine ;; Restaure les valeurs initiales des variables (defun *error* (msg) (if msg (princ (strcat "\nErreur: " msg)) ) (setvar "clayer" oldlayer) (setvar "cecolor" oldcolor) (setvar "celtype" oldceltype) (command "_celweight" oldweight) (command "_-dimstyle" "_r" oldstyle) (princ) ) ;; prise en compte de l'unité de travail (cond ((= unite 4) (setq echelle 1000)) ;unité de travail en mm ((= unite 5) (setq echelle 100)) ;unité de travail en cm ((= unite 6) (setq echelle 1)) ;unité de travail en m ) ;cond ;; modif des paramètres pour une cotation conforme (setvar "clayer" "SOCEH-GC-Neuf-annotation") (setvar "cecolor" "bylayer") (setvar "celtype" "bylayer") (command "_celweight" "-1") (command "_-dimstyle" "_r" "COTES") (setq point_zero (getpoint "\nIndiquer le point de repère")) (initget 1) (setq zero (getdist "\nIndiquer l'altimétrie de ce repère (en mètre) : ")) (command "_ucs" "_o" (list (car point_zero) (- (cadr point_zero) (* echelle zero)) ) ) (while T (command "_dimordinate" pause "_y" pause) (setq x_scu (cadr (assoc 10 (entget (entlast)))) ;;coordonnées alti zéro y_scu (caddr (assoc 10 (entget (entlast)))) ;;coordonnées alti zéro x_basecot (cadr (assoc 13 (entget (entlast)))) ;;base de la cote y_basecot (caddr (assoc 13 (entget (entlast)))) ;;base de la cote x_txtcot (cadr (assoc 14 (entget (entlast)))) ;;texte de la cote y_txtcot (caddr (assoc 14 (entget (entlast)))) ;;texte de la cote x_fleche_SCG (- x_txtcot x_scu) y_fleche_SCG (- y_basecot y_scu) distance_OA (sqrt(+ expt(x_fleche_scg 2) expt(y_fleche_scg 2))) teta (atan (/ y_fleche_SCG x_fleche_SCG)) beta (- (angle '(0. 0. 0.) (getvar 'ucsxdir)) teta) ;; (angle '(0. 0. 0.) (getvar 'ucsxdir)) <<< représente l'angle entre SCG et SCU (en radian) x_fleche_SCU (* distance_OA (cos beta)) y_fleche_SCU (* distance_OA (sin beta)) ) ;setq ;ajout d'un signe négatif pour des valeurs en dessous de 0.00 (if (< y_basecot y_scu) (command "_dimedit" "_n" "- <>" "_l" "") ) ;if ;édition de la cote (rajout d'un préfixe manuel (command "_ddedit" "_l" "") ;rajout du bloc fleche (if (> y_txtcot y_basecot) (setq ROT "0") (setq ROT "180") ) ;_ if (command "_INSERT" "NIVCS" ;nom du bloc (flèche) "_r" ROT ;rotation du bloc si nécessaire (list x_fleche_SCU y_fleche_SCU) ;coordonnées "1" ;echelle bloc X "1" ;echelle bloc Y ) ) ;while ;; Appel de la fonction locale *error* avec nil comme paramètre ;; pour restaurer les valeurs initiales des variables (*error* nil) ; (princ) ) Projeteur Revit Indépendant - traitement des eaux/CVC
didier Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 Coucou Ce que tu ne dis pas mais dont on se doute c'est que tu veux coter ces valeurs sur une vue en élévation ou en coupe c'est OK ?Comme ce que fait la commande native "cotation de l'ordonnée" mais tu veux le faire en lisp toujours OK ? Suivant ta réponse je te proposerai quelque chose. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
La Lozère Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 Je ne suis pas sur de comprendre l’esprit de la demande. Mais voilà, pour mes élévation (ou coupes ) j'utilise un bloc avec attribut contenant un champ Ce champ calcul la distance entre 2 valeur y et ajoute la valeur du plan de comparaison. Il fonctionne avec en parallèle avec un bloc contenant un attribut correspondant à l'alti du plan de référence.Ainsi, à chaque copie du bloc cote de niveau, la valeur se met à jour. Voici le dwg: TELECHARGEMENT Et si on veut avoir un nouveau plan de comparaison, il suffit de copier une cote de niveau et le bloc plan de référence sur le nouveau plan de comparaison. Mais bon pas sur d'avoir tout compris. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
GEGEMATIC Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 salut,J'utilise la même méthode que La Lozère,avec 1 bloc référence, et un autre bloc satellite,qui a chaque copie pointe vers le bloc référencedans le boc référence, je met l'altitude et l'échelle.j'en ai 2 version, une pour l'axe y, et une pour l'axe x (coupe dessinée à la perpendiculaire)a+gégé ----------------------------------------------------------------------Site: https://www.g-eaux.frBlog: http://g-eaux.over-blog.com
philsogood Posté(e) le 8 mars 2019 Auteur Posté(e) le 8 mars 2019 hello@ didier, t'as tout compris, je mets bien ces cotation ordonnées sur des coupes@ la lozère, je jete un oeil sur ton truc, ça à l'air sympa dans le genre... j'avais vu un truc de x_all (encore lui!!!!) il y a 5 ans de ça... aurais-je tant de retard que ça?? j'ai zyeuté ça... c'est pas mal, mais j'aimais bien la version avec les cotord... pour une fois que cette fonction sert à qqch!! :PPhil Projeteur Revit Indépendant - traitement des eaux/CVC
philsogood Posté(e) le 8 mars 2019 Auteur Posté(e) le 8 mars 2019 @la lozère et gégédésole mais ça marche pas votre truc!! :)enfin pas avec ma méthode de travailun exemple avec le vue du fichier sur lequel je travailleles coupes sont sur les cotésj'ai testé le bloc de la lozère et il aime aps trop les coupes sur le cotés avec un SCU différent!! :)moi je kiffe mon lisp mais je sais pas le modifier!! :/ Projeteur Revit Indépendant - traitement des eaux/CVC
La Lozère Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 Effectivement, vu comme ça :(rires forts): Non, sinon comme l'indique gégé, en adaptant le bloc pour qu'il vienne chercher les X à la place des Y, on doit pouvoir faire quelque chose. Mais c'est peut-être moins adapté, j'en conviens. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
didier Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 Coucou Et avec des SCU nommés ? Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 Coucou Autre question que je me pose car Philsogood est toujours aussi avare de renseignements (hihi).Est-ce qu'il faut écrire des "altitudes" dans une des "coupe/élévation" depuis la vue générale, je m'explique :Faut-il écrire des valeurs dans la coupe de gauche, alors que cette dernière n'a pas l'axe des X de son SCU de définition parallèle à l'écran et que ces écritures soient parallèles à la coupeIl va falloir gérer des transformations de coordonnées dans ce cas. Comme toujours je ne suis pas enclin à faire des efforts quand ça risque d'être inutile alors j'attends la confirmation ...Ce qui me permet de demander aux "questionneurs" de se mettre à la place de ceux qui lisent et souhaitent aider, de préciser les cas particuliers qui changent complètement les données du problème, en l'occurrence il fallait poster l'image dès le premier message à mes yeux. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
x_all Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 je veux pas insister, mais le lisp auquel tu fait référence marche (il faut se placer dans le bon SCU, lancer le lisp avec un bloc de ref et au moins un bloc de niveau à mettre à jour et ça renseigne les altimétries).Le principe est le même que pour les champs on calcule la différence en Y suivant le SCU. Donc tu monte ta coupe et place un bloc ref sur une ligne de base connue, tu place des blocs NIV sur les points à coter. Le filtre de sélection fait que tu lances le bousin et tu fait une fenêtre qui englobe toute la coupe ou la ref et les niveaux sont placés et roule ma poule..c'est toujours làhttp://joch04.free.fr/achtml/lisps-bloc-dyn.htmaprès c'est vrai que je ne gère pas les préfixes suffixe et compagnie, mais avec des attributs supplémentaire on doit pouvoir s'en passer quelques trucs sur autocad
didier Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 Coucou Voici ce que je voulais expliquer mais en animation : Éternel débutant... Mon site perso : Programmer dans AutoCAD
bonuscad Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 Il y avait cette discussion de 2012, peut être que... Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
x_all Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 @didierque ce cache t il derrière ton "test" ? tu utilises _dimordinate?J'aime pas top cette fonction car vivant à la montagne ça me fait placer mes projets à 600m du dessin si je doit coter en NGF...et puis quand on cote les coupes, on utilise généralement un symbole avec les flèches que je n'arrive pas à faire avec ce type de cotation. Mais je suis curieux du... "test" ?ça ressemble pas au cotes coordonnées quelques trucs sur autocad
didier Posté(e) le 8 mars 2019 Posté(e) le 8 mars 2019 Coucou Non c'est un lisp lilliputien (quatre lignes) qui tient compte de la réponse donnée à "Quel SCU ?"Il y a trois SCU nommés dans le fichier, ces SCU sont les bases des coupes (point 0 0 0)Simple, efficace... Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
philsogood Posté(e) le 11 mars 2019 Auteur Posté(e) le 11 mars 2019 hellocomme indique plus haut je "tourne" mon EO suivant les coupes que je souhaite coterje ne cote qu'une coupe à la foisce qui me surprend c'est qu'aux dernières nouvelles (il y a 5 ans) ce lips marchait parfaitement bien!!++Phil Projeteur Revit Indépendant - traitement des eaux/CVC
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