Aller au contenu

DenisHen

Membres
  • Compteur de contenus

    4 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    21

Tout ce qui a été posté par DenisHen

  1. @(gile) : Que l'angle demandé doit être en radian. Et je demande en degrés... Je commence à comprendre... @didier : ça fonctionne super ! ! Ok, je viens de comprendre (grâce à vous deux) que getangle demande des radians, et je demandais des degrés... D'où le getreal de didier... Un énorme merci à vous deux...
  2. Bonjour (gile), et merci pour ton aide. Voici la réponse d'AutoCAD :
  3. Effectivement, j'ai oublié le principal. Excuse-moi s'il te plaît. En fait, j'entre l'angle (AngBeche) à 35° par exemple, exprimé en degrés, et j'obtient 81.13° au lieu de 35°. En fait, le résultat devrait ressembler à mon premier schéma. Encore une fois, je suis à fond dans mon truc et j'oublie parfois que je suis le seul, désolé. Et merci pour ton aide.
  4. Bonjour didier, et merci pour ton aide, j'ai pourtant fais des efforts pour l'explication : petit schéma... Mais ça ne suffisait pas ? Je ferais mieux la prochaine fois. J'étais pourtant allé faire un tour dans l'aide, qui me donnait ça : J'ai donc essayé ton code, que je ne comprend pas tellement, mais ça donne ça : Encore merci pour ton aide.
  5. Bonjour à la communauté. Je tente désespérément de dessiner une simple polyligne, mais je n'arrive à rien. Je pense que ce doit être une question d'angle. Voici mon code : (defun c:Radier () (setq PtA (getpoint "\nPoint bas gauche (PtA) : ")) (setq PtB (getpoint PtA "\nPoint bas droit (PtB) : ")) (setq PtC (getpoint PtA "\nPoint haut gauche (PtC) : ")) (setq EpDalle (getdist "\nÉpaisseur de la dalle (cm) : ")) (setq AngBeche (getangle "\nAngle de la bèche (degrés) : ")) (setq PtCa (polar PtC (angle PtA PtB) (* (distance PtA PtB) 3))) (setq PtDb (polar PtCa (angle PtC PtA) EpDalle)) (setq Pt2 (polar PtDb (angle PtB PtA) (distance PtA PtB))) (setq Ang (* pi (/ AngBeche 180.0))) (setq Pt1 (polar PtB (- (angle PtA PtB) Ang) EpDalle)) (setq PtDa (inters PtDb Pt2 PtB Pt1 nil)) (command-s "_pline" PtCa PtC PtA PtB PtDa PtDb "") ) ;_ Fin de defun Et voici ce que j'aimerais faire : Si quelqu'un pouvais me donner un coup de pouce 👍. Denis...
  6. Salut Phil. Merci beaucoup pour ton retour, je regarde ça dès que possible. Denis...
  7. Bonjour à tous. Effectivement, j'avais oublié cette notion de radian... J'ai donc modifié un peu mon code, sui fonctionne parfaitement maintenant, grace à vous... Encore merci à vous... Je vous donne le code et le bloc... ;;; ******************************************* ;;; Dessine un zigzag à la fin d'un mur coupé ;;; ******************************************* (defun c:MurCoupe (/ p1 p2 pM) (princ "\n\tDéveloppé par Denis H. (1.0)") ;;; Nom du bloc = "TraitCoupeMur.dwg" (setq old_Osmode (getvar 'osmode)) (if (and (setq p1 (getpoint "\nPremier point: ")) (setq p2 (getpoint p1 "\nDernier point: "))) (progn (setq rot (* 180.0 (/ (angle p1 p2) pi)) ech (distance p1 p2) pM (polar p1 (angle p1 p2) (/ ech 2)) ) ;_ Fin de setq (setvar 'osmode 0) (command "inserer" "TraitCoupeMur" pM ech ech rot) ) ;_ Fin de progn ) ;_ Fin de if (setvar 'osmode old_Osmode) (princ) ) ;_ Fin de defun TraitCoupeMur.dwg
  8. DenisHen

    optimisation de barre

    Salut PhilPhil. Personnellement, j'utiliserais les (vlax-ldata, que tu peut attribuer à chaque entité du dessin ou au dessin même, ce que je suis en train de faire... Tu peux attribuer n'importe quel valeur, et plusieurs fois, des valeurs à n'importe quelles entités. En gros, tu as deux champs, un "général" et un plus "ciblé". Du coup, Tu finis par fouiller la totalité du dessin en cherchant les (vlax-data qui t'intéressent. Je cherche actuellement à faire ce genre de programme, j'utilise ces (vlax-data depuis des années, et c'est le miracle, mais il y a aussi les dictionnaires, que j'ai tenté d'essayer, mais je n'arrive pas à les maitriser autant. Bien à toi. Denis.
  9. Salut à la communauté. Et juste un changement de propriété avec (entlast) après la création de chaque parallèle ?
  10. Chose plus inquiétante, voici quand les fins du mur "vertical" ne sont pas alignées horizontalement (en épais). J'avoue ne plus rien comprendre...
  11. Salut JPhil. Merci pour ton intérêt. Curieusement, ça donne ça :
  12. Salut PhilPhil. Extrêmement intéressant, mais je n'ai pas "GC:GETCUSTOMBYKEY", qui doit être de (gile) je présume. Et aurais-tu fais un escalier avec palier ou 2/4 tournants ? Encore un grand merci pour ce partage ! Denis...
  13. Bonjour à la communauté. Aujourd'hui, je tente de faire une petite macro qui insert un bloc (le petit zigzag), à la fin d'un mur "coupé" (voir image). J'ai écris ce petit bout de code, mais il fonctionne quand le mur est vertical (hachures possibles) mais pas quand il est horizontal (le bloc est joint). ;;; ******************************************* ;;; Dessine un zigzag à la fin d'un mur coupé ;;; ******************************************* (defun c:FinMur (/ p1 p2 pM) (princ "\n\tDéveloppé par Denis H. (1.0)") ;;; Nom du bloc = "TraitCoupeMur.dwg" (setq old_Osmode (getvar 'osmode)) (if (and (setq p1 (getpoint "\nPremier point: ")) (setq p2 (getpoint p1 "\nDernier point: "))) (progn (setq rot (* 180.0 (/ (angle p1 p2) pi)) ech (distance p1 p2) pM (polar p1 rot (/ ech 2)) ) ;_ Fin de setq (setvar 'osmode 0) (command "inserer" "TraitCoupeMur" pM ech ech rot) ) ;_ Fin de progn ) ;_ Fin de if (setvar 'osmode old_Osmode) (princ) ) ;_ Fin de defun Quelqu'un aurait une idée, une astuce, un conseil ? Bonne journée à la communauté. Denis. TraitCoupeMur.dwg
  14. Chalut Luna. Merci pour ton aide, j'avais fini par réussir à le faire. Voici donc mon code, si ça intéresse quelqu'un, dans le futur. (defun c:SymbOuverture () (princ "\n\tDéveloppé par Denis H. (1.0)") (if (and (setq ptHG (getpoint "\nPoint en haut à gauche : ")) (setq ptHD (getpoint ptHG "\nPoint en haut à droite : ")) (setq ptBG (getpoint ptHG "\nPoint en bas à gauche : ")) ) ;_ Fin de and (progn (setq old_Osmode (getvar 'osmode)) (setvar 'osmode 0) (setq DistH (distance ptHG ptHD)) (setq DistV (distance ptHG ptBG)) (setq EnrobH (/ DistH 10)) (setq EnrobV (/ DistV 10)) (if (< EnrobV EnrobH) (setq EnrobH EnrobV) (setq EnrobV EnrobH) ) ;_ Fin de if (setq PtEnrobHG (list (+ (car ptHG) EnrobH) (- (car (cdr ptHG)) EnrobV))) (setq PtEnrobHD (list (- (car ptHD) EnrobH) (- (car (cdr ptHD)) EnrobV))) (setq PtEnrobBG (list (+ (car ptBG) EnrobH) (+ (car (cdr ptBG)) EnrobV))) (setq PtEnobMid (list (+ (car ptHG) EnrobH EnrobH) (- (car (cdr ptHG)) EnrobV EnrobV))) (command-s "_pline" PtEnrobBG PtEnrobHG PtEnrobHD PtEnobMid PtEnrobBG "") (command-s "-hachures" "P" "S" "TRAN" "85" "T" "E" "s" (entlast) "" "") ;; Ecrire ici le code pour les coffrets volets roulants ****************************************** (setq ExistCVR (vlax-ldata-get "DenisH" "SymbOuv_ExistCVR")) (if (/= ExistCVR "Oui") (vlax-ldata-put "DenisH" "SymbOuv_ExistCVR" "Non") (setq ExistCVR "Non") ) ;_ Fin de if (setq DistCVR (vlax-ldata-get "DenisH" "SymbOuv_DistCVR")) (if (= DistCVR nil) (vlax-ldata-put "DenisH" "SymbOuv_DistCVR" 1.5) ) ;_ Fin de if (setq HautCVR (vlax-ldata-get "DenisH" "SymbOuv_HautCVR")) (if (= HautCVR nil) (vlax-ldata-put "DenisH" "SymbOuv_HautCVR" 32) ) ;_ Fin de if (setq DebCVR (vlax-ldata-get "DenisH" "SymbOuv_DebCVR")) (if (= DebCVR nil) (vlax-ldata-put "DenisH" "SymbOuv_DebCVR" 0) (setq DebCVR 0) ) ;_ Fin de if (setq Rep (Msgbox "SymbOuverture :" "Placer un coffret volet roulant ?" (+ 4 32))) (cond ((= Rep 6) (vlax-ldata-put "DenisH" "SymbOuv_ExistCVR" "Oui") ) ((= Rep 7) (vlax-ldata-put "DenisH" "SymbOuv_ExistCVR" "Non") )) (setq CVR (vlax-ldata-get "DenisH" "SymbOuv_ExistCVR")) (if (/= CVR "Non") (progn (vlax-ldata-put "DenisH" "SymbOuv_ExistCVR" "Oui") (initget 4) (setq DistCVR (getdist (strcat "\nDistance entre ouverture et coffret volet roulant <" (rtos (vlax-ldata-get "DenisH" "SymbOuv_DistCVR") 2 1) "> : " ) ;_ Fin de strcat ) ;_ Fin de getdist ) ;_ Fin de setq (if (= DistCVR nil) (setq DistCVR (vlax-ldata-get "DenisH" "SymbOuv_DistCVR")) ) ;_ Fin de if (vlax-ldata-put "DenisH" "SymbOuv_DistCVR" DistCVR) (princ "\nDistCVR=") (princ DistCVR) (initget 4) (setq HautCVR (getdist (strcat "\nHauteur coffret volet roulant <" (rtos (vlax-ldata-get "DenisH" "SymbOuv_HautCVR") 2 1) "> : " ) ;_ Fin de strcat ) ;_ Fin de getdist ) ;_ Fin de setq (if (= HautCVR nil) (setq HautCVR (vlax-ldata-get "DenisH" "SymbOuv_HautCVR")) ) ;_ Fin de if (vlax-ldata-put "DenisH" "SymbOuv_HautCVR" HautCVR) (initget 4) (setq DebCVR (getdist (strcat "\nDisqtance des débords du coffret volet roulant <" (rtos (vlax-ldata-get "DenisH" "SymbOuv_DebCVR") 2 1) "> : " ) ;_ Fin de strcat ) ;_ Fin de getdist ) ;_ Fin de setq (if (= DebCVR nil) (setq DebCVR (vlax-ldata-get "DenisH" "SymbOuv_DebCVR")) (vlax-ldata-put "DenisH" "SymbOuv_DebCVR" DebCVR) ) ;_ Fin de if (vlax-ldata-put "DenisH" "SymbOuv_DebCVR" DebCVR) (setq PtCVRBG (list (- (car ptHG) DebCVR) (+ (car (cdr ptHG)) DistCVR))) (setq PtCVRHG (list (- (car ptHG) DebCVR) (+ (car (cdr ptHG)) DistCVR HautCVR))) (setq PtCVRBD (list (+ (car ptHD) DebCVR) (+ (car (cdr ptHD)) DistCVR))) (setq PtCVRHD (list (+ (car ptHD) DebCVR) (+ (car (cdr ptHD)) DistCVR HautCVR))) (command-s "_pline" PtCVRBG PtCVRHG PtCVRHD PtCVRBD PtCVRBG "") (setq PtInsTxt (list (+ (car PtCVRBG) (/ (distance PtCVRBG PtCVRBD) 2)) (+ (car (cdr PtCVRBG)) (/ (distance PtCVRBG PtCVRHG) 2)))) (command "-style" "CofVolRoul" "ARIAL" "A" "Oui" "Non" 2.5 1 0 "Non" "Non") (command "_text" "J" "MC" PtInsTxt 0 "CVR") ) ;_ Fin de progn (vlax-ldata-put "DenisH" "SymbOuv_ExistCVR" "Non") ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de if (setvar 'osmode old_Osmode) (princ) ) ;_ Fin de defun ;;;********************************************* ;;; MsgBox sans VBA ;;; de (gile), il me semble, ;;; mais je n'en suis pas certain, ;;; car ça ressemble à du Patrick ou Tramber ;;;********************************************* (defun msgbox (titre message bouton / wsh) ; Types de bouton ; Valeur Description ; 0 Affiche le bouton OK. ; 1 Affiche les boutons OK et Cancel. ; 2 Affiche les boutons Abort, Retry et Ignore. ; 3 Affiche les boutons Yes, No et Cancel. ; 4 Affiche les boutons Yes et No. ; 5 Affiche les boutons Retry et Cancel. ; Types d'icônes ; Valeur Description ; 16 Affiche l'icône "Stop". ; 32 Affiche l'icône "Point d'interrogation". ; 48 Affiche l'icône "Point d'exclamation". ; 64 Affiche l'icône "Informations". ; Valeurs de retour ; Valeur Description ; 1 Bouton OK ; 2 Bouton Cancel ; 3 Bouton Abort ; 4 Bouton Retry ; 5 Bouton Ignore ; 6 Bouton Yes ; 7 Bouton No ; ; Exemple : (msgbox "Mon alerte" "Autocad coule..." (+ 2 16)) (setq wsh (vlax-create-Object "WScript.Shell") res (vlax-invoke wsh 'popup message nil titre bouton) ) ;_ Fin de setq (vlax-release-Object wsh) res ) ;_ Fin de defun ;|«Visual LISP© Format Options» (199 2 2 2 T "Fin de " 100 9 0 0 nil nil nil nil T) ;*** NE PAS AJOUTER de texte au-dessous du commentaire! ***|; Pour bien faire, il aurait fallu que je remette les paramètres de nom de hachure et de transparence tels qu'ils étaient avant, mais je n'ai pas trop le temps. Encore merci à vous. Denis.
  15. Par contre, pour hachurer cette polyligne, j'ai du mal... Voici mon bout de code : (command-s "-hachures" "TRAN" "80" "T" "E" "P" "S" (entlast) "")
  16. A force de chercher, je viens de trouver, c'était le (command en dehors du (progn... Grrrrrrr ! ! ! ! ! Je me giflerais parfois...
  17. Bonsoir à toute la communauté. Voilà, je pensais le truc facile, mais pas du tout, ça fait une heure que je tourne en rond, j'essais de dessiner ce qui est en rouge, pour l'instant, je ne m'occupe de la hachure, mais juste de la polyligne. J'ai écris ça, avec des (princ pour regarder les "calculs" : (defun c:SymbOuverture () (if (and (setq ptHG (getpoint "\nPoint en haut à gauche : ")) (setq ptHD (getpoint ptHG "\nPoint en haut à droite : ")) (setq ptBG (getpoint ptHG "\nPoint en bas à gauche : ")) ) (progn (setq old_Osmode (getvar 'osmode)) (setvar 'osmode 0) (setq DistH (distance ptHG ptHD)) (setq DistV (distance ptHG ptBG)) (princ "\nDistH = ") (princ DistH) (princ "\nDisV = ") (princ DistV) (setq EnrobH (/ DistH 10)) (setq EnrobV (/ DistV 10)) (princ "\nEnrobH = ") (princ EnrobH) (princ "\nEnrobV = ") (princ EnrobV) (setq PtEnrobHG (list (+ (car ptHG) EnrobH) (- (car (cdr ptHG)) EnrobV) ) ) (princ "\nPtEnrobHG = ") (princ PtEnrobHG) (setq PtEnrobHD (list (- (car ptHD) EnrobH) (- (car (cdr ptHD)) EnrobV) ) ) (princ "\nPtEnrobHD = ") (princ PtEnrobHD) (setq PtEnrobBG (list (+ (car ptBG) EnrobH) (+ (car (cdr ptBG)) EnrobV) ) ) (princ "\nPtEnrobBG = ") (princ PtEnrobBG) ;;(setq PtEnobMid (/ DistV 10)) (setq PtEnobMid (list (+ (car ptHG) EnrobH EnrobH) (- (car (cdr ptHG)) EnrobV EnrobV) ) ) (princ "\nPtEnrobHG = ") (princ PtEnrobHG) ) (command "_pline" PtEnrobBG PtEnrobHG PtEnrobHD PtEnobMid "_clore") (setvar 'osmode old_Osmode) ) (princ) ) Loes points saiss sont les point du cadre vert, HG=Haut Gauche... Mais je ne sais absolument pas pourquoi : aucune erreur, aucune polyligne. Je pensais avoir fais des progrès avec les listes, en tous cas, je tente. Qu'ai-je mal fais ? Une idée ?
  18. Bonsoir Luna, et merci pour toutes tes observations. Oui, le rayon, le prolongement, le diamètre, l'encombrement... Tout ça dépend du HA, je n'arrivais juste pas à créer les Pt1 et Pt2 (donc, les 5 et 6 aussi). Car je lis aussi que je me suis très mal expliqué, j'ai oublié de dire qu'il peut il y avoir 4 enrobages différents, et les angles de crosses différentes aussi... Maintenant que (gile) m'a fait un super code, qu'il faut encore que je le domestique (le code, pas gile), je peux commencer à mieux envisager mes macros, pour l'instant, je fais mon mode d'emploi et l'interface utilisateur. Surtout que je ne compte pas me limité aux barres droites, je vais aussi faire mon code pour les épingles, les cadres, les U (tu trouveras en pièces jointes mes aides graphiques qui serviront aux futurs utilisateurs)... J'ai testé le programme de Zébulon, qui est franchement impressionnant, et carrément incroyable ! ! Mais je dois faire le mien, car je vais ajouter le métré des armatures (linéaire HA8, HA10, cadre HA6, épingles pour en faire des tableaux...), gérer les calques utilisés, et des (vlax-ldata que je collerais aux éléments créé, pour faire ce métré grâce à d'autres routines (que j'ai déjà partiellement pour d'autre macros)... Mais je te remercie encore pour ton aide et tes judicieuses observations. Bisous à toi aussi... Denis.
  19. Oui, je pensais que c'était une vieille macro de moi à cause de son nom, mais tu as raison, le nom de la commande n'a aucune importance... Par contre, ça fonctionne nickel, des tonnes de mercis à toi ! ! !
  20. Bonsoir (gile), alors là, je ne sais pas comment tu as fais... Je ne me souvient tellement pas de cette routine que je ne sais même plus à quoi elle sert... Certes, elle se nomme "denish", mais je n'ai pas le souvenir d'avoir créé une commande à mon pseudo (si non, il y a des dizaines d'années, voir plus), en plus, il y a des "mapcar"... J'ai peur des mapcar... Mais si j'ai fais un truc pareil, je devrais pouvoir le refaire... Et ta mémoire éléphantesque pourrait me dire de quand ça date ? En tous cas, merci à toi, je vais creuser... Denis...
  21. Bonsoir (gile). Oui, je ne sais pas pourquoi, mais en ferraillage, on parle de l'angle complémentaire... Donc, on saisi "135" pour que le véritable angle soit "45". C'est donc un angle droit (le plus grand, 90°) jusqu'à un angle "demi-tour" (le plus "petit", mais en fait, ils disent "180°" au lieu de "0°") Bien vu Monsieur, je n'avais pas précisé ce détail...
  22. Chalut Luna. Mille mercis pour cette aide précieuse et détaillée... Dans ton schéma, il y a deux fois "en" et pas "ep", mais ne t'inquiète pas, je ferais avec sans problèmes, j'ai compris le principe... Encore un grand merci à toi... Je posterais mon résultat, au cas où... Bisous aussi... Denis...
  23. Bonjour à tous et mille mercis pour vos réponses. Je pense m'être mal fais comprendre, je n'arrive pas à calculer les points Pt1a, Pt2a, Pt5a et Pt6a.
  24. Salut à la communauté. Je connais ATTSYNC depuis que j'utilise le gabarit de mon nouvel employeur. Mais je n'avais jamais utilisé cette commande avant, le bloc se mettait à jour automatiquement... Est-ce dû à une variable ?
  25. Salut. Je n'ai pas tout saisi, tu voudrais faire un agrandissement d'une zone et il faudrait que les deux cercles (EO et EP) soient les mêmes ?
×
×
  • 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é