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. (defun c:_PhPile () ;pour lancer la commande, supprimer le "_" devant PhPile (setvar "cmdecho" 0) (setq p1 (getpoint "\nCoin de la pile : ")) (setq Ori (getorient p1 "\nDirection de la pile : ")) (setq Lo (getdist "\nLongeur de la pile : " p1)) (setq p3 (polar p1 Ori Lo)) (setq La (getdist "\nLargeur de la pile : " p1)) ; on peut taper au clavier la largeur de la pile, ; si la largeur est négative, la pile sera à gauche des deux premier points ; sinon, elle sera à droite (if (= La 0) (setq La Lo)) (cond ((< La 0) (setq p4 (polar p3 (+ Ori (/ pi 2)) (abs La))) (setq p5 (polar p1 (+ Ori (/ pi 2)) (abs La))) ) ((or (= La 0) (= La "")) (princ "\nLa=0") (setq p4 (polar p3 (- Ori (/ pi 2)) (abs Lo))) (setq p5 (polar p1 (- Ori (/ pi 2)) (abs Lo))) ) ((> La 0) (setq p4 (polar p3 (- Ori (/ pi 2)) (abs La))) (setq p5 (polar p1 (- Ori (/ pi 2)) (abs La))) ) ) (command "-calque" "e" "Limites (Mur)" "co" "2" "" "") (command "_.pline" "_non" p1 "_non" p3 "_non" p4 "_non" p5 "c") (initget "Oui Non") (if (= (getkword "\nDessiner un croisillon ? (Oui/Non): ") "Oui") (progn (command "-calque" "e" "Limites (Mur Hachure)" "co" "8" "" "") (command "_.line" "_non" p1 "_non" p4 "") (command "_.line" "_non" p3 "_non" p5 "") ) ) ) Voilà, si quelqu'un peut l'améliorer... Ca sert à çà.... Denis...
  2. Pffffff, je cherchais "Routines" ailleurs que dans les Forums ! ! Ja prends rendez-vous chez l'ophtalmo et je reviens Bon, j'y vais... Merci encore... Denis...
  3. Ca y est, j'en ai un à poster, mais je ne trouve pas la rubrique Routine... :( Peut-u m'aider ?
  4. Des miliards de mercis à toi, (gile), :D c'est EXACTEMENT ce que je cherchais ! ! Encore merci.... Denis...
  5. Merci Patrick_35, dès qu'il seront correctes, car pour l'instant, c'est du bricolage, je les posterais.. Merci... Denis
  6. Bonsoir à tous, J'ai fais quelques petits lisp ( sans prétentions... :P ) Mais comment les faire partager à tous ?.. Les copier/coller ici ? Merci de m'indiquer.... S'entraider, c'est notre but, non ? Denis
  7. Bonsoir à tous, et un grand merci pour vos précieuses aides... Je poste ce petit texte qui, je l'espère, pourra aider beaucoup de débutants qui peuvent être dans le même cas que moi, grace aux réponses des aficionados du Lisp Je croix avoir trouvé les causes de mes problèmes avec le Lisp (que je commence à aprécier grandement). Ce sont : 1. les paranthèses (qui pullulent) 2. le nom des commandes... J'ai l'impression qu'elles ont été choisis aléatoirement... :P Je viens du VB et c'est beaucoup plus claire... (peut-être parceque j'en fais depuis une dixaine d'années) Mais moins perfectible... En effet, le VBA est plus limité dans les application, surtout avec AutoCAD... Le Lisp est, je croix, traduit en une seul expression qui est traduite en une seule "ligne de commandes" par l'"interpréteur" (=AutoCAD) J'ai donc de gros, très gros progrès à faire... Mais la motivation est présente... Ce n'est donc plus qu'une qeustion de temps... Je tenais aussi à remercier énormément tous les antagonistes de ce merveilleux site qui m'ont donné envie de faire du Lisp... (ce qui m'a poussé à être donnateur... Et soyons-le tous...) Et qui me l'apprennent... Grace à leur patience et leur envie d'enseigner, de partager leurs connaissances... Je voulais juste le souligner dans un élan de reconnaissance et d'humilité... Un merci à tous au nom de tous... Denis...
  8. Pffffffff ! ! ! J'ai encore un petit problème.... J'ai écris ça pour changer d'échelle et ça ne fonctionne pas... (je n'ai pas encore fini, mais je fais ce post pendant mon déjeuné, vite fait au cas ou quelqu'un à déjà fait un truc là-dessus...) (defun c:_PhChEch () (setvar "cmdecho" 0) (setq Ech (vlax-ldata-get "Phalene" "Echel1")) (if (= Ech nil) (progn (setq Ech (getreal "Échelle du dessin (1/")) (vlax-ldata-put "Phalene" "Echel1" Ech) (princ (strcat "Echelle = 1/" (vlax-ldata-get "Phalene" "Echel1"))) ) ) (if (/ Ech nil) (progn (setq Ech (getreal (strcat "Ancienne échelle (1/" (fix Ech) ") - Nouvelle échelle (1/"))) (vlax-ldata-put "Phalene" "Echel1" Ech) (princ (strcat "Echelle = 1/" (vlax-ldata-get "Phalene" "Echel1"))) ) ) ) Nota, j'ai mis un "_" devant la commande, sinon, çà fait çà : (defun c:PhChEch () Merci encore à tous ! !
  9. Encore un truc. Si la facede de mon bâtiment (ma Pline entre p1 et p2) fait contient plus de deux sommets, c-a-d que la pline serait composée de x sommet, je devrais donc gérer des getpoint pour nourir une liste.... Et les deux extrémités de la liste seraient le p1 et p2... Mais je ne sait pas gérer les liste en Lisp...Et je pense qu'en Lisp , çà me serait TRÈS utile, non ? Enfin, merci encore...
  10. Génial, ca marche super ! ! Merci mille fois Patrick_35 ! ! ! Denis... (<- très content) ;)
  11. Tu veux dire qu'après chaque commande qui dessine une entité, je place "(setq js (ssadd (entlast) js))" sur la ligne suivante pour qu'il ajoute l'entité créée dans la liste "js" ? J'avais pas compris comme çà... Je vais essayé de ce pas... Merci encore...
  12. Waow ! ! Merci Patrick_35... Mais cela ne me sélectionne que le dernier élément créé... Pourtant, Ca devrait marcher... Denis...
  13. Merci RebCao, c'est très astucieux... Je suis sûr de m'en servir... Notament pour des flèches... Ce site est réellement une réunion d'idées, et des bonnes ! ! Ca aide, c'est pas croyable ! ! Merci encore à tous ! ! ! ! ;) Denis
  14. Voilà, j'ai fait une petite routine qui dessine la façade d'un batiment et ses amorces de 2 mètres (une de chaque côté du bati) puis un prolongement de 3 mètres de ces deux amorces en pointillé (pour montrer que cette partie est "suposée", puis, je ferme ce bâtiment avec une polyligne qui cera dans un calque gelé à l'impression. Bref, je me retrouve avec quatre polylignes, que je ne peut joindre, qui forment à elles quatre un rectangle fermé. Ma question est donc... Comment hachurer ca batiment ? Voici ma routine : (defun c:_PhBatiOuvert () (setvar "cmdecho" 0) (setq p1 (getpoint "\nDébut du bâtiment : ")) (setq p2 (getpoint p1 "\nFin du bâtiment : ")) (setq Co (getstring "\nCoté bâti (<+> / -): ")) (cond ((= Co "-") (setq p3 (polar p1 (+ (angle p1 p2) (/ pi 2)) 2)) (setq p4 (polar p3 (+ (angle p1 p2) (/ pi 2)) 3)) (setq p5 (polar p2 (+ (angle p1 p2) (/ pi 2)) 2)) (setq p6 (polar p5 (+ (angle p1 p2) (/ pi 2)) 3)) ) (T (setq p3 (polar p1 (- (angle p1 p2) (/ pi 2)) 2)) (setq p4 (polar p3 (- (angle p1 p2) (/ pi 2)) 3)) (setq p5 (polar p2 (- (angle p1 p2) (/ pi 2)) 2)) (setq p6 (polar p5 (- (angle p1 p2) (/ pi 2)) 3)) ) ) (command "-calque" "e" "Bâtiments (Contour)" "") (command "_.pline" "_non" p3 "_non" p1 "_non" p2 "_non" p5 "") (command "-calque" "e" "Bâtiments (non levé)" "") (command "_.pline" "_non" p3 "_non" p4 "") (command "_.pline" "_non" p5 "_non" p6 "") (command "-calque" "e" "Titre Cache" "") (command "_.pline" "_non" p4 "_non" p6 "") ) Nota, Comment faire si la façade de mon batiment comporte plus que 2 sommets ? Merci d'avance... Denis...
  15. Bonsoir à tous.... Voilà, j'ai, dans mes menus, des lignes interminables de commandes...... J'ai donc décidé de me mettre au Lisp.. J'ai donc créé quelques petites routines, comme dessiner un pilier ou des amorces de bâtiments... Mais je suis tombé sur un "hic"... Je dois créer un calque (pas de problème ) de couleur jaune=2 (pareil) mais d'un type de ligne "Cloture-Piquet-Bois".... Là, je coince car je n'arrive pas à utiliser correctement "tblsearch" pour savoir si ce type de ligne existe déjà.... Et pour compliquer le tout, ce type de ligne utilise une police de "Cloture1"... Et re "tblsearch.... J'ai commencé à écrire un truc... Mais je m'emmèles les nougats... Si quelqu'un pouvait me filer un coup de mains... Je demande avant d'écrire tout le code et de le faire de travers (car çà, j'y arrive super bien ;) ) Voici ma tripatouille : ; Création d'un calque avec couleur et type de ligne------ (defun Ph_Crea_Calq (Nom Coul Lign /) (setvar "cmdecho" 0) (cond (or (= Lign "Cloture-Piquet-Bois") (= Lign "Cloture-Piquet-Fer") ) (setq Nom ("Cloture1") ; Nom de la police dans le DWG (setq Police ("simplex.shx")) ;Nom de la police windows (ttf ou shx) (setq Comp (1)) ; facteur de compression (setq Inclin (0)) ; Angle d'inclinaisonn (StylTxt (Nom Police Comp Inclin)) )) (TypLign Lign) ) ; Création d'un Type de ligne ---------------------------- (defun TypLign (Nom /) (if (not (tblsearch "LTYPE" TypLign)) (command "-typeligne" "ch" Nom "s:/config/Phalène/Phalène.lin" "" "" "" "" "" "" "" "") ) ) ; Création d'un style de texte----------------------------- (defun StylTxt (Nom Police Comp Inclin /) (setvar "cmdecho" 0) )
  16. Waow... Merci Patrick_35, j'ai compris ton code, mais de là à le créer ! ! J'ai encore le temps... Mais c'est remarquable de voir un code aussi réduit à l'essenciel... Aussi consit.... Je me l'imprime et l'encadre ;) Merci 1000 fois, Cà marche super ! ! Tu parlais de réacteur ? :o C'est quoi ? Denis...
  17. Je n'utilise pas un coeficient d'échelle pour les textes car au 50, les textes ne sont pas 10 fois plus petits qu'au 500 et pas 1000 fois qu'au 5000 Entre le 200 et le 500, c'est du pareil au même, mais du 200 au 1500, les textes n'ont pas la mêmes importances C'est surtout une question d'estétique... Le rotring est pour les trairts... le Leroy est pour le dessinateur ;) Question de gout...Je trouve ça plus beau Peut-être pour montrer aussi une échelle dans les textes... Si tous les textes ont tous la même taille quelquesoit l'échelle, on moins, je trouve, le'impression de l'échelle... Mais j'y ai longuement réfléchis... Depuis que je dessine sous AutoCAD... Une quinzaine d'années.... J'espère avoir répondu... Denis... ;)
  18. Bonsoir à tous, Je cherche comment peut-on créer des fenêtres pour du code Lisp ? ? Merci d'avance... Denis...
  19. Merci 1000 fois Patrick_35... Comme tes conseils, j'ai écris çà, qu'en dis-tu ? (defun PhEch () (setvar "cmdecho" 0) (setq Ech (vlax-ldata-get "Phalene" "Echel1")) (if (= Ech nil) (progn (setq Ech (getreal "Échelle du dessin (1/")) (vlax-ldata-put "Phalene" "Echel1" Ech) (princ (strcat "Echelle = 1/" (vlax-ldata-get "Phalene" "Echel1"))) ) ) (cond (= Ech 50) (setq HTxt .2) (= Ech 100) (setq HTxt .5) (= Ech 150) (setq HTxt .8) (= Ech 200) (setq HTxt 1.2) (= Ech 250) (setq HTxt 1.5) (= Ech 500) (setq HTxt 2) (= Ech 650) (setq HTxt 2.2) (...............) (............) ) ) Htxt est la hauteur du text moyen pour cette échelle les textes plus petit seront (* Htxt 0.9) les plus grand donneront ((*Htxt 1.1) Mais je suis devant une colle au moment d'écrire ces ligne... Si on a une drôle d'échelle comme 1/33 ? Ma (cond est inopérante... Merci encore à tous ! ! Je suis un homme comblé ! ! (ce soir... ;P ) Denis...
  20. Merci à tous... Vos posts sont super ciblé, exactement ce que je cherchais... - Pour (gile), je continu de réfléchir sur (read (cdr (assoc 1 (entget (entnext (tblobjname "block" "Constante_Echelle")))))) (si j'ai compris, mais je n'ai pas encore appronfondi la question, 1 serait la variable contenant l'échelle ?) Mais j'ai une question, pourrais-je accéder à cette donnée si le block est dans un calque gelé ? Je le gèle pour qu'il n'interfère pas lors d'un zoom étendu, surtout s'il est en 0,0,0... Et j'ai une remarque, grace au block, on peut aussi ajouter d'autre s entrées... Client, Ville...Nombre de lot.... Même question pour Bonuscad au sujet des Xdata... - Pour Patrick_35, C'est super interessant, mais y-a t'il d'autre info sur les (vlax-ldata.........) - pour ma modifier(vlax-ldata-put "Mon_appli" "Ma_cle" 200)Comme : - comment la modifier, delete, puis put ? - combien de clé sont possibles ? - est-ce que c'est immuable dans le fichier DWG ? Mais ce coup là, est tous bonnement génial... Rien qu'avec tous cà, j'ai de quoi faire... Au fait, ceux qui ont connus mes débuts (qui durent encore), constatent-ils une progression ? Merci à vous tous, vous m'avez été d'une aide sans pareille ! ! Denis...
  21. Merci Bonuscad... Pour les Xdata d'un point, ça me plait, mais ou insérer ce point, au milieu des moyennes des X et Y des entités du dessin ? Et geler ce calque ? L'aide AutoCAD est super light sur les Xdata en Lisp (en anglais !) Quelqu'un aurait un bon exemple ou une bonne adresse qui explique comment les utiliser ? Ne serait-ce pas plus simple le coup du block ? Merci.... Denis...
  22. Bonjour (gile) Merci de tes réponses En fait, j'aimerai pouvoir ne rien entrer pour la largeur ce qui induirait un carré, La = Lo... (setq Lo (getdist "\nLongeur de la pile : " p1)) [surligneur] =>Saisi de la longueur [/surligneur] (setq p3 (polar p1 Ori Lo)) (setq La (getdist "\nLargeur de la pile : " p1)) [surligneur] =>Saisi de la largeur [/surligneur] (if (= La 0) (setq La Lo)) [surligneur] =>Si la largeur est "" ou 0, alors c'est un carré donc La = Lo [/surligneur] Je pense mon code correcte, mais si rien est entré à la demande setq La, quid de La, c'est vide, nul, égal à 0, à "" ? ? (if (= La 0) (setq La Lo)) Merci encore et bon dimanche.... Denis...
  23. Je n'ai pas testé la version qui est ci-dessus... Tout fonctionne à merveille, sauf pour le cas ou "La" est nul. Il ne dessine rien, j'ai pourtant mis (if (= La 0) (setq La Lo))
  24. Merci (gile) Je vais essayer les USERs mais j'ai paur que d'autre routines Lisp ne les utilisent. Je vais voir, Mais si j'opte pour le block, faut-t'il l'insérer dans le dessin ou juste le laisser dans la base du DWG (et ne jamais le purger ;) ) Dans tous les cas, je te remerci encore... Denis...
  25. Bonjour à tous, Quelqu'un pourrait m'indiquer s'il est possible de sauvegarder quelquepart dans un DWG une constante (comme l'échelle : 200 pour du 1/200, 1250 pour du 1/1250....) qui pourra être utilisable à partir des routines Lisp... Avec VBA, je l'écrivais dans un fichier TXT dans le répertoir courant du DWG... Mais en Lisp, je ne sais pas comment faire... Si cette constante n'existe pas dans un DWG, il faut la demander au premier appel de cette Cste... Et la sauvegarder... Merci... Denis...
×
×
  • 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é