-
Compteur de contenus
4 029 -
Inscription
-
Dernière visite
-
Jours gagnés
21
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par DenisHen
-
Salut. Aurais-tu un exemple concret à mettre en ligne ? Quelle est ta version d'Excel ? Et si tu plaçais tout dans deux feuilles distinctes dans un même classeur Excel ?
-
Tu veux parler du code, ou de la représentation du levé qui ne serait pas "conforme" à la réalité ?
-
Salut (gile). C'est exactement ça... Merci, c'est nickel, une fois de plus... ;)
-
Bonjour à tous. J'ai fini un petit Lisp qui insert un bloc en 3D dans la "moyenne" des trois points nécessaires au levé. Je cherche maintenant toutes les cotes des plaques que mes collègues peuvent trouver sur le terrain pour nos plans topo (Télécom, Vidéo, EDF, Eaux usées, pluviales,...), pour les tampons carrés, les plaques L2T, L3T... En fait, seules les dimensions m'intéressent vraiment... Denis...
-
Pour ceux que ça peut intéresser, voici le code en entier : ;;;*********************************************** ;;; Insertion d'un bloc par trois points moyennés ;;;*********************************************** (defun c:InsBlk3Pt (Bloc / Pt1 Pt2 Pt3 pt4 Pt5 Larg Long) ;;;(c:InsBlk3Pt "BlkTest") (setvar "osmode" 8) (setq Pt1 (getpoint "\nPoint d'insertion du bloc : ")) (setq Pt2 (getpoint "\nOrientation et échelle en X du bloc : ")) (setq Pt3 (getpoint "\nEchelle en Y du bloc : ")) (setvar "osmode" 0) (setq Larg (dist2d Pt3 Pt1 Pt2)) (setq Long (distance Pt1 Pt2)) ;;; Point au milieu de Pt1 Pt2 (setq Pt4 (polar Pt1 (angle Pt1 Pt2) (/ (distance Pt1 Pt2) 2))) ;;; Point d'insertion (setq Pt5 (polar Pt4 (+ (angle Pt1 pt2) (/ pi 2)) (/ Larg 2))) (command-s "_insert" Bloc Pt5 "_x" Long "_y" Larg "_z" 1 "_rotation" (angtos (+ (angle pt1 pt2) (/ pi 2)))) ;;; (princ) ) ;_ Fin de defun ;;;********************************* ;;; Calcul la distance Point/Droite ;;;********************************* (defun dist2d (pt p1 p2 / a b ) (if (= (car p2) (car p1)) ; droite vericale : x = constante (abs (- (car pt) (car p1))) (progn ;; valeurs a et b de l'équation de la droite y = ax + b (setq a (/ (- (cadr p2) (cadr p1)) (- (car p2) (car p1))) b (- (cadr p1) (* a (car p1))) ) (/ (abs (+ (* a (car pt)) (- (cadr pt)) b )) (sqrt (+ (* a a) 1.)) ) ) ) )
-
Salut lrdb@home Mais ça ne représente absolument pas la réalité, si les plaques sont de travers sur le terrain, le plan DOIT les représenté tel-quel... Tu ne croix pas ?
-
Merci (gile) pour ton aide... Encore une fois, ton intervention est une leçon pour nous... Mais la définition de mon bloc fonctionne mieux avec : (command-s "_insert" Bloc Pt5 "_x" Long "_y" Larg "_z" 1 "_rotation" (angtos (+ (angle pt1 pt2) (/ pi 2)))) Heureusement que tu étais là... Maintenant, je peut me pencher sur le reste du code, qui est, le choix des longueurs et largeur "corrigées" pour palier le fait que le levé engendre une longueur et/ou une largeur différentes de la réalité, comme nous le précisait Didier... Il ne me reste plus qu'à faire une liste des entités (plaques PTT, EDF, fibre, gaz, vidéo, eaux potables, usées, pluviales...) pour choisir les vrais valeurs de leurs échelles... Une plaque de 80x40 DOIT resté à 80x40, même si elle est levée en 79x42, par exemple... Tout ça pour respecter, ce que disait Didier est avec lequel je suis entièrement d'accord... ;) Encore merci à Maitre (gile)... Et Didier... Denis...
-
Aucun problème Didier, et merci pour votre aide Messieurs... Voici le lien WeTransfer. Il y a le fichier et le bloc...
-
merci (gile) pour ce complément... Mais ça ne fonctionne pas comme je le voudrais (aucun rapport avec dist2d) Voilà, ça fait 2 heures que je m'acharne, mon problème est encore ce foutu angle d'insertion du bloc... J'ai écrit ça dans un fichier "test" : ;;;*********************************************** ;;; Insertion d'un bloc par trois points moyennés ;;;*********************************************** (defun c:InsBlk3Pt (Bloc / x_angle Pt1 Pt2 Pt3 pt4 Pt5 Pt6 Larg Long) ;;;(c:InsBlk3Pt "BlkTest") (setvar "osmode" 8) (setq Pt1 (getpoint "\nPoint d'insertion du bloc : ")) (setq Pt2 (getpoint "\nOrientation et échelle en X du bloc : ")) (setq Pt3 (getpoint "\nEchelle en Y du bloc : ")) (setvar "osmode" 0) (setq Larg (dist2d Pt3 Pt1 Pt2)) (setq Long (distance Pt1 Pt2)) ;;; Point au milieu de Pt1 Pt2 (setq Pt4 (polar Pt1 (angle Pt1 Pt2) (/ (distance Pt1 Pt2) 2))) ;;; Point d'insertion (setq Pt5 (polar Pt4 (+ (angle Pt1 pt2) (/ pi 2)) (/ Larg 2))) ;;; Orientation du bloc (setq Pt6 (polar Pt5 (angle Pt1 Pt2) (distance Pt1 Pt4))) ;;; Angle d'insertion (setq x_angle (angle Pt1 Pt2)) (command-s "_insert" Bloc Pt5 Long Larg 1 Pt6) ;;; (command-s "texte" "j" "mc" Pt4 0.1 100 "Pt4") (command-s "point" Pt4) (command-s "texte" "j" "mc" Pt5 0.1 100 "Pt5") (command-s "point" Pt5) (command-s "texte" "j" "mc" Pt6 0.1 100 "Pt6") (command-s "point" Pt6) ;;;(CtrlSvGrd) (princ) ) ;_ Fin de defun Tous les points sont correctement calculés, contrôlés avec les (command-s "texte", les échelles sont bonnes... Mais l'angle d'insertion est systématiquement faux... Je me perd encore et toujours avec les angles, j'ai essayé avec des angles en radian, avec (angtos Pt1 Pt2), avec un point (Pt6) Rien n'y fait ! ! ! J'en rage ! ! ! :huh: Si vous avez la solution, l'apéro est pour moi... :)
-
Didier : Je pense que le plus responsable dans cette histoire, je veux dire, la façon dont mes collègues de terrain saisissent leur levé, vient du logiciel topo LAND2MAP d'ATLOG qui tourne sous un AutoCAD OEM. Il travaillent sur tablettes et les options de saisies ne permettent pas, ou très difficilement, un levé "strique" qui correspondrait à un levé "exacte". J'entend par là, le lever d'une plaque de 80x40 pile-poil, me parait pas évident sur le terrain... Personnellement, je prendrais la moyenne entre Pt1 et Pt2 et la moyenne entre Pt3 et la droite Pt1/Pt2 comme point d'insertion, avec des échelles "normalisées"... Comme par exemple, si le levé me donne une largeur de 78cm, je corrigerai cette distance en 80cm et insérerai le bloc avec cette échelle de 80 en Y... Mais il faut savoir si c'est une plaque EDF, PTT, Fibre, Vidéo... Car elle n'ont pas toutes les mêmes caractéristiques... Mais le levé se fait comme ça... Raison pour laquelle, j'aimerai passer par le LISP pour faire ce que je pense le mieux, à savoir, ma "logique" de transcription entre le levé et le plus proche de la réalité... Ne t'inquiète pas pour ça, je ne suis pas susceptible, et depuis le temps, on commence à connaitre ton humour... (gile) : mille mercis... je vais continuer ma routine en toute quiétude... Merci encore à vous deux... Denis...
-
Après réflexion, il faudrait créer un point Pt4 sur la droite Pt1/Pt2 à la perpendiculaire de Pt3...
-
Re. Mon problème est que le troisième point de levé se trouve quelque-part sur le coté opposé à Pt1/Pt2. Pt1/Pt3 ne représente donc pas l'exacte diagonale. Et la distance Pt2/Pt3 ne représente pas non plus la largeur du bloc...Par contre, la distance point/droite entre Pt3 et Pt1/Pt2 est la largeur levée du bloc. Je ne peut pas m'en tirer, comme tu me l'indiques, avec les deux moitiés de la longueur et de la largeur puisque Pt3 n'est pas "bien placé"... Je me suis relu et ne suis pas sûr d'avoir été très clair... :huh:
-
Salut didier, et merci pour tes remarques, judicieuses comme toujours... Je suis entièrement d'accord avec toi, un tampon de Ø 65 restera toujours de Ø 65... Pourquoi les plaques levés en plusieurs points ne suivraient pas la même logique ? Mais dans mon cas, je ferais comme toi, une plaque de 80 doit restée à 80, mais si la distance entre mon poit Pt3 et la droite Pt1/Pt2 est de 79, j'arrondirais à 80 (selon une certaines cotes) et insérerais mon bloc au milieu de la diagonale Pt1/Pt3 orientée Pt1/Pt2 et avec les bonnes échelles "telles" que sur le terrain et non selon le levé. Résultat, mon bloc ne sera pas forcément sur les points levés, mais il sera au meilleur emplacement tel qu'il aurait été levé "théoriquement" et avec des cotes "réelles". Au final, je trierais les cotes levées avec les cotes réelles des blocs selon plusieurs critères (EDF, PTT, Fibre...) pour une insertion plus vrai que le levé... Je ne sais pas encore comment je vais faire, mais j'ai une petite idée. Donc, je suis toujours à la recherche d'un calcul point/droite... Et bon week-end à tous... Denis...
-
Bonjour à tous. Voilà, aujourd'hui, je cherche à insérer un bloc suivant 3 points (Pt1, Pt2 et Pt3). Ces points me servent ainsi : Pt1 = point d'insertion du bloc, Pt2 = orientation du bloc, Distance Pt1 à Pt2 = échelle en X du bloc Distance Pt3 à la droite Pt1/Pt2 = échelle en Y du bloc... Vous l'aurez sans doute compris, j'insert un bloc type plaque d'égout, avaloir... Si quelqu'un a une solution, une idée, une astuce... je suis preneur... Denis...
-
Dans ma boite, la direction OBLIGE les topos en déplacement d'aller à l’hôtel plutôt que de passer la nuit chez des parents (qui sont plus proche de l’hôtel). Et ils baissent tout le temps le tarif des frais remboursés...
-
+1 avec lecrabe et La Lozère... On est plusieurs à lire le journal de CadErix... ;)
-
Merci Aleck, c'est devenu une question d'habitude maintenant... ;)
-
Salut à tous... NDA = National Design Academy ?
-
Je ne pense pas que ça fasse partie de leur critères...
-
Salut, et merci pour ces précisions... Comme je l'ai déjà dis sur un autre sujet, AutoDe$k ressemble de plus en plus à Micro$oft...
-
Salut. Bon, alors voilà mon dernier code qui fonctionne nickel chez moi... : ;;;******************************************************************** ;;; Function: insert un bloc avec attributs "Rep-Menuis-V4.dwg" ;;; aprés selection de plusieurs text or mtext et prend la ;;; valeur/index du text/mtext et la mettre dans l'attribut REP-MENUIS ;;; Développé par DenisHen de CadXP.com pour azzeddine EL HACHIMI ;;;******************************************************************** (defun c:Menuis (/ lay lay-col Sel_All Sel_Comp Sel_Num elst Pt Ht-txt RO-txt RO CHAMP4) (princ "\nVersion 1.0") (setvar "ATTDIA" 0) (setvar "ATTREQ" 0) (setvar "angbase" 0) (setvar "angdir" 0) (command "-unites" "2" "2" "1" "2" "0,0" "@0,1" "O") (setq lay "SMEC-MENUIS-REP") (if (tblsearch "LAYER" lay) (setvar "CLAYER" lay) (progn (initget (+ 1 2 4)) (setq lay-col (getint (strcat "\nEntrez la couleur du calque '" lay "' :"))) (command "-calque" "e" lay "_color" lay-col "" "EP" "0.8" "" "") ) ;_ Fin de progn ) ;_ Fin de if (setq Sel_All (ssget '((0 . "TEXT,MTEXT")))) (setq Sel_Cour (sslength Sel_All)) (setq Sel_Num 0) (while (< Sel_Num Sel_Cour) (setq elst (entget (ssname Sel_All Sel_Num))) (setq Val-txt (cdr (assoc 1 elst)) Pt (cdr (assoc 11 elst)) Ht-txt (cdr (assoc 40 elst)) RO (+ (cdr (assoc 50 elst)) (/ pi 2)) CHAMP4 (cdr (assoc 5 elst)) ) ;_ Fin de setq (Command "_insert" "Rep-Menuis-V4" Pt Ht-txt Ht-txt (angtos RO)) (vl-catch-all-apply 'setpropertyvalue (list (entlast) "Num-Menuis" (rtos (vlax-ldata-get "DenisH" "NumMenuis" 1) 2 0))) (vlax-ldata-put "DenisH" "NumMenuis" (+ (vlax-ldata-get "DenisH" "NumMenuis" 1) 1)) (vl-catch-all-apply 'setpropertyvalue (list (entlast) "Rep-Menuis" Val-txt)) (vl-catch-all-apply 'setpropertyvalue (list (entlast) "Champ.4" CHAMP4)) (setq Sel_Num (+ Sel_Num 1)) ) ;_ Fin de while (princ) ) Tiens-nous au courant s'il fonctionne...
-
Salut, je pense qu'Open-Mind souhaite changer l'angle entre l'axe des X et l'axe des Y. Changer de l'angle droit entre ces deux axes... Je ne sais pas si c'est possible... Perso, lorsque j'ai des vues "multiples", j'utilise un petit code de mon cru : ;;;*************************************************** ;;; Variables type "Géomètre" + Rotation de vue ;;;*************************************************** (defun c:DHOrientSCU (/ p1 p2 Echo vortho Angscu p3) (princ "\nDéveloppé par Denis H.") (command "-unites" "2" "2" "3" "2" "0,0" "@0,1" "O") (command "_ucs" "_w") (setvar "angbase" (/ pi 2)) ; origine au nord (setvar "angdir" 1) ; sens horaire (setvar "aunits" 2) ; grade (while (and (/= p1 "Horizontale") (/= (type p1) 'LIST)) (initget 1 "Horizontale") (setq p1 (getpoint "\nPoint de départ ou orientation [Horizontale] <Horizontale> : " ) ;_ Fin de getpoint ) ;_ Fin de setq (if (= p1 "Horizontale") (progn (initget 7) (command "-vue" "g" "h") (command "snapang" "100") (vlax-ldata-put "DenisH" "AngSCU" 0) ) ;_ Fin de progn (progn (setq vortho (getvar "orthomode")) (setvar "orthomode" 0) (setq p2 (getpoint p1 (strcat "\tDirection des X :"))) (setvar "orthomode" vortho) (setvar "snapang" (angle p1 p2)) (setq Angscu (- 500 (* 200 (/ (angle p1 p2) pi)))) (if (<= Angscu 400) (- Angscu 400) ) ;_ Fin:if (setq p3 (polar p1 (+ (angle p1 p2) (/ pi 2)) 1000)) (vlax-ldata-put "DenisH" "AngSCU" Angscu) (command "_ucs" "_z" p1 p3) (command "_plan" "courant") (command "_ucs" "_w") (setvar "snapmode" 0) (setvar "cmdEcho" Echo) (command "zoom" "_w" p1 p2) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de while (princ) ) ;_ Fin:defun On sélectionne deux point, en gros, la direction de l'axe X, mais reste en SCU général... Attention, dans ce code, on passe en grade, le 0 zénithal...2 décimales...
-
Salut. Relis mon dernier code, tu verras que le point d'insertion d'un TEXT ou d'un MTEXT n'est pas (setq Pt (cdr (assoc 10 ent1))) mais (setq Pt (cdr (assoc 11 ent1))) Ensuite, le reste n'est qu'une question de petits réglages. Ma routine fait tout ce que tu demande dans ton message 13 sauf qu'il faut sélectionner les TEXT/MTEXT l'un après l'autre... Denis...
-
Du cinquantième étage au premier, c'est, "jusque-là, tout vas bien"... Mais au rez-de-chaussée... "Oops... On n'a pas prévu un truc là, parce-que ça devient urgent..." Cela symbolise bien mon boulo, enfin, la politique de ma direction... On me pose la question sur des appels d'offre, je leur répond que "tout est faisable, mais il faut s'y préparer, étudier les différentes phases, nos compétences..."... On me répond : "on verra le temps venu", et je leur rétorque : "donc, quand il sera trop tard..." et j'ajoute régulièrement : "Comment notre commerciale (je dis bien commercial, il vendrait des roues de bagnoles ou des carottes rappées que ce serait pareil) peut estimer un temps de travail sur un truc dont on ne sait encore rien..." Généralement, on ne me répond rien et, quelque mois plus-tard, je me retrouve dans la merde avec un dossier sur mon bureau que je ne sais pas faire (ou trop peu car la dernière fois que j'en ai fais un, c'était il y a 20 ou 30 ans) mais que je dois livrer la veille... Et je pense que cette pratique de la direction résume bien une des phases du BurnOut... En gros, on me pose la question, mais on ne veut pas de ma réponse... C'est très frustrant...
-
EXTRACDONNEES, format .txt et formatage Excel
DenisHen a répondu à un(e) sujet de Aleck_Ultimate dans CAO, généralités
As-tu essayé LibreOffice ? Je pense que Calc résoudrait ton problème d'Excel...
