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. Salut. En fait, je cherche, via un (sslength de mon jeu de sélection (zone de mon futur casé), s'il y a au moins une entité dans la case dont je connais les coordonnées. Si oui, je créé la case avec cartouche... Si non, je passe a la case prochaine. Mon Lisp est déjà fait, mais je ne gérais pas les cases vides... Grossière erreur j'en conviens... ;)
  2. Bonjour à tous... J'ai un petit problème avec un (ssget, en effet, j'ai une erreur Avec ce code donné en exemple dans l'excellent "Introduction à AutoLisp" de Maître (gile) : (setq JeuSel (ssget "_W" '(2 5) '(30 18))) (princ "\n(sslength JeuSel)=") (princ (sslength JeuSel)) Sachant qu'il n'y a rien dans cette fenêtre. Mon code d'origine est : (setq JeuSel (ssget "_W" XYMinSel XYmaxSel)) avec
  3. Salut. Merci pour ce code, mais sans le savoir, j'ai déjà écris le mien :( qui, en résumé, fait la même chose que "makegrid.lsp"... :blink: je cherche maintenant à ne pas créer la case s'il n'y a rien dedans... J'ai bien tenté un (ssget, mais j'ai quelques problèmes avec... C'est l'objet d'un autre post...
  4. Salut. Oui, je cherche bien à dessiner un damier... Je n'ai pas dis que tu m'avais répondu à coté... Loin de là, mais ton code me donne du fils à retordre. ;) Je vais étudier de près le lisp "makegrid.lsp" que je ne connaissais pas... Mais après quelques recherches, je ne l'ai pas trouvé... Encore merci à toi...
  5. Salut Ô Décapode... Je fais un code pour faire des cases, je cherche donc à ne pas créer une case vide. Mais je vais étudier ta proposition de code... Merci pour ton aide...
  6. Bonjour à tous. J'aimerais, avant de créér un cadre (une polyligne rectangulaire), savoir si il y a des entités dans ce secteur. Sachant que j'ai les coordonnées minimum (point bas gauche) et maximum (point haut droit). Il serait préférable que je le sache avant de créer ce rectangle. Si quelqu'un a une astuce, un conseil... je suis preneur...
  7. DenisHen

    enregistrer et MOVEBAK

    SalutDemixav. Entièrement d'accord, c'est pour cette raison que je lance ce .bat que de temps en temps... En gros, avant mes sauvegardes, car tu peux remplir ton serveur vite fait avec ce genre de fichiers... Mais tu peux toujours supprimer cette ligne. Au fait, Demixav, c'est pas un Xav entier ça ;)
  8. DenisHen

    enregistrer et MOVEBAK

    Salut. Personnellement, j'utilise un petit .bat de ma création que je place dans le répertoire racine de mes dossiers contenant mes .dwg, voici son contenu, à enregistrer dans un fichier "Suppression indésirables.bat" par exemple : erase *.bak /q /s erase *.dwl /q /s erase *.dwl2 /q /s erase *.tmp /q /s erase *.$$$ /q /s erase *.dwk /q /s erase *.jbf /q /s erase ac*.sv$ /q /s erase ac*.bk* /q /s erase ac*.xlg /q /s erase ac*.cdc /q /s erase *._ls /q /s erase *._dc /q /s erase *.qgs~ /q /s erase plot.log /q /s erase ac*.err /q /s erase ac*.dmp /q /s erase Thumbs.db /q /s pause Attention, ne marche pas sur le réseau (\\serveur\...)
  9. Salut. Effectivement, je n'avais pas saisi cette astuce... Après quelques testes dans la console, je comprend mieux, et je l'ai intégré à mon code... Encore merci...
  10. Salut. Merci pour ta proposition, je vais faire avec... Mais c'est tout de même curieux ce comportement de ce (vlax-ldata... Du coup, voici mon code : (if (= (setq def (vlax-ldata-get "DenisH" "EtiqPRD_OptionIns" "Automatiquement")) nil) (setq def "Automatiquement") ) ;_ Fin de if (initget "Automatiquement Manuellement Gauche Droite Non") (setq OptionIns (getkword (strcat "\nPlacement des textes [Automatiquement/Manuellement/Gauche/Droite/Non] <" def "> : ") ;_ Fin de strcat ) ;_ Fin de getkword ) ;_ Fin de setq (if (= OptionIns nil) (vlax-ldata-put "DenisH" "EtiqPRD_OptionIns" def) (vlax-ldata-put "DenisH" "EtiqPRD_OptionIns" OptionIns) ) ;_ Fin de if
  11. DenisHen

    Lisps de DenisHen

    Salut. Non, les dwg que je reprojete ne sont pas dans un répertoire connu d'AutoCAD. Je ne peux rien changer dans mon lisp car je ne gère absolument pas les lecteurs ou chemin, sauf celui du dessin. je ne pense pas que ce soit à cause de cette variable que ça ne fonctionne pas. Voici le programme corrigé pour que la variable "CMDDIA" soit conservée : ;;;******************************** ;;; Changer la projection d'un DWG ;;;******************************** (defun c:DHReProjection (/ app cdoc LstProject Projection fichier dwg_id FileSave ProjSource PhraseA) (setq app (vlax-get-acad-object) cdoc (vla-get-activedocument app) ) ;_ Fin de setq (vla-purgeall cdoc) ;;; Sélection de la projection courante (setq LstProject '((1 . "Lambert 1 NORD") (2 . "Lambert 2 CENTRE") (3 . "Lambert 3 SUD") (4 . "Lambert 4 CORSE") (5 . "Lambert Étendu") (6 . "Lambert 93") (7 . "RGF93-CC42") (8 . "RGF93-CC43") (9 . "RGF93-CC44") (10 . "RGF93-CC45") (11 . "RGF93-CC46") (12 . "RGF93-CC47") (13 . "RGF93-CC48") (14 . "RGF93-CC49") (15 . "RGF93-CC50") ) ) ;_ Fin de setq (setq Projection (ListBox "Attention..." "Choix de la projection source :" LstProject 1)) ;;; Choix de la projection du plan source (cond ((= Projection nil) (princ "\nOpération annulée") (setq PositionERR (+ "Génère une erreur" 18))) ((= Projection 1) (setq Phrase "Sélection du plan en Lambert 1 nord" ProjSource "NTF.Lambert-1-ClrkIGN" NomPrjS "L1N" SysProj "système LAMBERT I" ) ;_ Fin de setq ) ((= Projection 2) (setq Phrase "Sélection du plan en Lambert 2 CENTRE" ProjSource "NTF.Lambert-2-ClrkIGN" NomPrjS "L2C" SysProj "système LAMBERT II" ) ;_ Fin de setq ) ((= Projection 3) (setq Phrase "Sélection du plan en Lambert 3 SUD" ProjSource "NTF.Lambert-3-ClrkIGN" NomPrjS "L3S" SysProj "système LAMBERT III" ) ;_ Fin de setq ) ((= Projection 4) (setq Phrase "Sélection du plan en Lambert 4 CORSE" ProjSource "NTF.Lambert-4-ClrkIGN" NomPrjS "L4C" SysProj "système LAMBERT IV" ) ;_ Fin de setq ) ((= Projection 5) (setq Phrase "Sélection du plan en Lambert Étendu" ProjSource "NTF.Lambert-E" NomPrjS "L2E" SysProj "système LAMBERT II Étendu" ) ;_ Fin de setq ) ((= Projection 6) (setq Phrase "Sélection du plan en Lambert 93" ProjSource "Lambert93" NomPrjS "L93" SysProj "système LAMBERT 93" ) ;_ Fin de setq ) ((= Projection 7) (setq Phrase "Sélection du plan en Lambert Conique Conforme 42 (zone 1) Corse" ProjSource "RGF93.CC42" NomPrjS "CC42" SysProj "système LAMBERT 93-Zone 1 (CC42)" ) ;_ Fin de setq ) ((= Projection 8) (setq Phrase "Sélection du plan en Lambert Conique Conforme 43 (zone 2)" ProjSource "RGF93.CC43" NomPrjS "CC43" SysProj "système LAMBERT 93-Zone 2 (CC43)" ) ;_ Fin de setq ) ((= Projection 9) (setq Phrase "Sélection du plan en Lambert Conique Conforme 44 (zone 3)" ProjSource "RGF93.CC44" NomPrjS "CC44" SysProj "système LAMBERT 93-Zone 3 (CC44)" ) ;_ Fin de setq ) ((= Projection 10) (setq Phrase "Sélection du plan en Lambert Conique Conforme 45 (zone 4)" ProjSource "RGF93.CC45" NomPrjS "CC45" SysProj "système LAMBERT 93-Zone 4 (CC45)" ) ;_ Fin de setq ) ((= Projection 11) (setq Phrase "Sélection du plan en Lambert Conique Conforme 46 (zone 5)" ProjSource "RGF93.CC46" NomPrjS "CC46" SysProj "système LAMBERT 93-Zone 5 (CC46)" ) ;_ Fin de setq ) ((= Projection 12) (setq Phrase "Sélection du plan en Lambert Conique Conforme 47 (zone 6)" ProjSource "RGF93.CC47" NomPrjS "CC47" SysProj "système LAMBERT 93-Zone 6 (CC47)" ) ;_ Fin de setq ) ((= Projection 13) (setq Phrase "Sélection du plan en Lambert Conique Conforme 48 (zone 7)" ProjSource "RGF93.CC48" NomPrjS "CC48" SysProj "système LAMBERT 93-Zone 7 (CC48)" ) ;_ Fin de setq ) ((= Projection 14) (setq Phrase "Sélection du plan en Lambert Conique Conforme 49 (zone 8)" ProjSource "RGF93.CC49" NomPrjS "CC49" SysProj "système LAMBERT 93-Zone 8 (CC49)" ) ;_ Fin de setq ) ((= Projection 15) (setq Phrase "Sélection du plan en Lambert Conique Conforme 50 (zone 9)" ProjSource "RGF93.CC50" NomPrjS "CC50" SysProj "système LAMBERT 93-Zone 9 (CC50)" ) ;_ Fin de setq ) ) ;_ Fin de cond (setq fichier (getfiled Phrase (strcat (vl-filename-directory (vla-get-fullname cdoc)) "/") "dwg" 4)) (setq old_cmddia (getvar "cmddia")) (setvar "CMDDIA" 0) (command "ADESETCRDSYS" "" fichier ProjSource "_ex") ;;; (princ "\nFin de la sélection du système source...") (setq Projection (ListBox "Attention..." "Choix de la projection cible :" LstProject 1)) ;;; Choix de la projection du plan source (cond ((= Projection nil) (princ "\nOpération annulée") (setq PositionERR (+ "Génère une erreur" 18))) ((= Projection 1) (setq Phrase "Sélection du plan en Lambert 1 nord" ProjSource "NTF.Lambert-1-ClrkIGN" NomPrjC "L1N" ) ;_ Fin de setq ) ((= Projection 2) (setq Phrase "Sélection du plan en Lambert 2 CENTRE" ProjCible "NTF.Lambert-2-ClrkIGN" NomPrjC "L2C" ) ;_ Fin de setq ) ((= Projection 3) (setq Phrase "Sélection du plan en Lambert 3 SUD" ProjCible "NTF.Lambert-3-ClrkIGN" NomPrjC "L3S" ) ;_ Fin de setq ) ((= Projection 4) (setq Phrase "Sélection du plan en Lambert 4 CORSE" ProjCible "NTF.Lambert-4-ClrkIGN" NomPrjC "L4C" ) ;_ Fin de setq ) ((= Projection 5) (setq Phrase "Sélection du plan en Lambert Étendu" ProjCible "NTF.Lambert-E" NomPrjC "L2E" ) ;_ Fin de setq ) ((= Projection 6) (setq Phrase "Sélection du plan en Lambert 93" ProjCible "Lambert93" NomPrjC "L93" ) ;_ Fin de setq ) ((= Projection 7) (setq Phrase "Sélection du plan en Lambert Conique Conforme 42 (zone 1) Corse" ProjCible "RGF93.CC42" NomPrjC "CC42" ) ;_ Fin de setq ) ((= Projection 8) (setq Phrase "Sélection du plan en Lambert Conique Conforme 43 (zone 2)" ProjCible "RGF93.CC43" NomPrjC "CC43" ) ;_ Fin de setq ) ((= Projection 9) (setq Phrase "Sélection du plan en Lambert Conique Conforme 44 (zone 3)" ProjCible "RGF93.CC44" NomPrjC "CC44" ) ;_ Fin de setq ) ((= Projection 10) (setq Phrase "Sélection du plan en Lambert Conique Conforme 45 (zone 4)" ProjCible "RGF93.CC45" NomPrjC "CC45" ) ;_ Fin de setq ) ((= Projection 11) (setq Phrase "Sélection du plan en Lambert Conique Conforme 46 (zone 5)" ProjCible "RGF93.CC46" NomPrjC "CC46" ) ;_ Fin de setq ) ((= Projection 12) (setq Phrase "Sélection du plan en Lambert Conique Conforme 47 (zone 6)" ProjCible "RGF93.CC47" NomPrjC "CC47" ) ;_ Fin de setq ) ((= Projection 13) (setq Phrase "Sélection du plan en Lambert Conique Conforme 48 (zone 7)" ProjCible "RGF93.CC48" NomPrjC "CC48" ) ;_ Fin de setq ) ((= Projection 14) (setq Phrase "Sélection du plan en Lambert Conique Conforme 49 (zone 8)" ProjCible "RGF93.CC49" NomPrjC "CC49" ) ;_ Fin de setq ) ((= Projection 15) (setq Phrase "Sélection du plan en Lambert Conique Conforme 50 (zone 9)" ProjCible "RGF93.CC50" NomPrjC "CC50" ) ;_ Fin de setq ) ) ;_ Fin de cond ;;; (setq NomFichProj (substr fichier 1 (- (strlen fichier) 4))) (setq NomProjCC (substr NomFichProj (- (strlen NomFichProj) 3) 4)) (setq NomProjLB (substr NomFichProj (- (strlen NomFichProj) 2) 4)) (if (and (/= NomProjCC NomPrjS) (/= NomProjLB NomPrjS)) (alert "Attention, la projection du fichier source est mal nommée...") ) ;_ Fin de if (cond ((or (= NomProjCC "CC42") (= NomProjCC "CC43") (= NomProjCC "CC44") (= NomProjCC "CC45") (= NomProjCC "CC46") (= NomProjCC "CC47") (= NomProjCC "CC48") (= NomProjCC "CC49") (= NomProjCC "CC50") ) ;_ Fin de or (setq NomFichProj (substr fichier 1 (- (strlen fichier) 4))) (setq FileSave (strcat (substr fichier 1 (- (strlen fichier) 8)) NomPrjC)) ) ((or (= NomProjLB "L1N") (= NomProjLB "L2C") (= NomProjLB "L3S") (= NomProjLB "L4C") (= NomProjLB "L2E") (= NomProjLB "L93") ) ;_ Fin de or (setq NomFichProj (substr fichier 1 (- (strlen fichier) 3))) (setq FileSave (strcat (substr fichier 1 (- (strlen fichier) 7)) NomPrjC)) ) ) ;_ Fin de cond ;;; (ade_projsetwscode ProjCible) (princ "\nFin de la sélection du système cible...") (setq dwg_id (ade_dsattach fichier)) (if dwg_id (progn ;tout (ade_qrydefine '("" "" "" "Location" ("All") "")) ;;;dessine (ade_qrysettype "draw") ;;;execute (ade_qryexecute) ;;;detach file (ade_dsdetach dwg_id) ) ;_ Fin de progn (print "Erreur lors de l'ouverture du dession source") ) ;_ Fin de if ;(princ "\nFichier :") ;(princ fichier) (command "-unites" "2" "2" "3" "2" "0,0" "@0,1" "O") (princ "\nInsUnits...") (setvar "insunits" 4) (princ "terminé") (command "_zoom" "et") (command "_saveas" "" FileSave) (setvar "cmddia" old_cmddia) (princ "\n\tProjection terminée.") (princ) ) ;_ Fin de defun ;;; *************************************************** ;; ListBox (gile) ;; Boite de dialogue permettant un ou plusieurs choix dans une liste (defun ListBox (title msg keylab flag / tmp file dcl_id choice) (setq tmp (vl-filename-mktemp "tmp.dcl") file (open tmp "w") ) ;_ Fin de setq (write-line (strcat "ListBox:dialog{label=\"" title "\";") file) (if (and msg (/= msg "")) (write-line (strcat ":text{label=\"" msg "\";}") file) ) ;_ Fin de if (write-line (cond ((= 0 flag) "spacer;:popup_list{key=\"lst\";") ((= 1 flag) "spacer;:list_box{key=\"lst\";") (T "spacer;:list_box{key=\"lst\";multiple_select=true;") ) ;_ Fin de cond file ) ;_ Fin de write-line (write-line "}spacer;ok_cancel;}" file) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "ListBox" dcl_id)) (exit) ) ;_ Fin de if (start_list "lst") (mapcar 'add_list (mapcar 'cdr keylab)) (end_list) (action_tile "accept" "(or (= (get_tile \"lst\") \"\") (if (= 2 flag) (progn (foreach n (str2lst (get_tile \"lst\") \" \") (setq choice (cons (nth (atoi n) (mapcar 'car keylab)) choice))) (setq choice (reverse choice))) (setq choice (nth (atoi (get_tile \"lst\")) (mapcar 'car keylab))))) (done_dialog)" ) ;_ Fin de action_tile (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) choice ) ;_ Fin de defun As-tu suivi les conseils d'Olivier pour créer un Alias ?
  12. Salut Patrick_35, et merci pour ta réponse. Normalement, si la clef du dictionnaire est vide, (vlax-ldata-get "DenisH" "EtiqPRD_OptionIns" "Automatiquement") devrait retourner "Automatiquement" et non nil... D'après ce que j'ai compris sur l'aide en ligne... En anglais...
  13. DenisHen

    Lisps de DenisHen

    Je ne comprend pas non plus, mais je ne pense pas que ce soit mon code qui est en question. Nous sommes plusieurs à l'utiliser dans mon bureau (différentes versions d'AutoCAD) et je n'ai jamais eu ce genre de problème... Je suis désolé, je ne vois pas ce que je peux faire pour toi... Et si tu essaye un changement de projection par AutoCAD directement, te pose-t-il le même problème ?
  14. DenisHen

    Lisps de DenisHen

    Salut. Philous2 : essaye de le faire sur ton C:, juste pour voir... oton : désolé, j'avais oublié cette sous-routine. Je l'ai ajouté au post d'origine.
  15. Bonjour à tous. J'ai un petit problème de compréhension d'un (vlax-ldata-get. D'après ce que j'ai compris de l'aide en ligne, on peut proposer une valeur si la clef du dictionnaire n'existe pas. Mais je tombe sur ce problème, je ne récupère qu'un nil :
  16. DenisHen

    Lisps de DenisHen

    Salut à tous. Merci Olivier pour ton aide. Effectivement, j'ai déjà remarqué cela, mais comme chez moi c'est soit C: soit le réseau (\\serveur\\...), j'avais mis ça sur le dos du chemin "réseau"... Notre administrateur réseau nous a interdit de créer des "lecteurs réseaux" à cause des ransomwares qui s'attaquent à tous les lecteur quels qu'ils soient mais pas aux réseaux... Mais je ne connaissais pas les "alias"... Encore merci Olivier... ;) Tiens nous au courant philous2 si c'est ok...
  17. DenisHen

    Lisps de DenisHen

    Re, En fait, tu ouvre un nouveau dessin et tu lances tout de suite mon code. Tous t'est demandé au fur et à mesure... Le mieux est de renommer ton ancien fichier comme ça : NomDuFichier_L1N.dwg" (pour Lambert 1 Nord). Ensuite, mon code changera le L1N en CC48 par exemple.
  18. DenisHen

    Lisps de DenisHen

    Salut. Cette routine permet de changer de projection un fichier. Il y a les 6 zones LAMBERT (1, 2, 3, 4, 2 étendu et 93) ainsi que les coniques conformes. Pour l'utiliser, il faut connaitre le système d'origine et ouvrir un nouveau dessin avant son utilisation. De rien Eric, je dois tellement à CadXP que mon partage n'est qu'un juste retour... ;)
  19. DenisHen

    Lisps de DenisHen

    Bonjour à tous. Voilà, grace à un membre de CadXP (je ne sais plus de qui est ce code qui m'a servi de base) et à Maître (gile), voici un lisp qui récupère l'angle d'une ligne ou celui d'un segment d'une polyligne. Cette routine prend en compte la variable "snapang", pour le cas où le plan aurait une rotation avec le curseur parallèle à la fenêtre AutoCAD : ;;; *************************************************************************** ;;; Ce lisp récupère l'angle d'une ligne ou celui d'un segment d'une polyligne. ;;; Il prend en compte la variable "snapang" (rotation du curseur) ;;; Si aucun segment n'est sélectionné, le texte sera selon l'angle du curseur ;;; *************************************************************************** (defun c:AngSegm (/ x_alpha typent e_seg dxf_11 dxf_ent l_2pt) (if (setq e_seg (entsel "\tSélectionnez le segment de la polyligne ou [ENTRÉE] pour un texte horizontal : ")) (progn (setq typent (cdr (assoc 0 (setq dxf_ent (entget (car e_seg)))))) (cond ((or (eq typent "XLINE") (eq typent "RAY")) (setq dxf_11 (cdr (assoc 11 dxf_ent))) (setq x_alpha (angtos (atan (/ (cadr dxf_11) (car dxf_11))))) (grdraw (trans (cdr (assoc 10 dxf_ent)) 0 1) (polar (trans (cdr (assoc 10 dxf_ent)) 0 1) x_alpha (distance (getvar "vsmin") (getvar "vsmax"))) -1 1 ) ;_ Fin de grdraw ) ((eq typent "LINE") (setq x_alpha (angtos (angle (cdr (assoc 10 dxf_ent)) (cdr (assoc 11 dxf_ent))))) (grdraw (trans (cdr (assoc 10 dxf_ent)) 0 1) (trans (cdr (assoc 11 dxf_ent)) 0 1) -1 1) (if (< (cos (+ (angtof x_alpha))) (cos (getvar "snapang"))) (setq x_alpha (angtos (+ (angtof x_alpha) pi) 2 3)) ) ;_ Fin de if ) ((or (eq typent "LWPOLYLINE") (and (eq typent "POLYLINE") (zerop (boole 1 118 (cdr (assoc 70 dxf_ent))))) ) ;_ Fin de or (setq l_2pt (near_vertex_arr e_seg)) (grdraw (car l_2pt) (cadr l_2pt) -1 1) (if (zerop (caddr l_2pt)) (setq x_alpha (angtos (angle (trans (car l_2pt) 1 0) (trans (cadr l_2pt) 1 0)))) (progn (princ "\nNe peut obtenir un angle depuis ce type d'objet!")) ) ;_ Fin de if ) ) ;_ Fin de cond ) ;_ Fin de progn ) ;_ Fin de if (if (= e_seg nil) (progn (cond ((= (getvar "AUNITS") 0) (setq alpha (- 90 (* (/ (getvar 'snapang) pi) 180))) ; ) ((= (getvar "AUNITS") 2) (setq alpha (- 100 (* (/ (getvar 'snapang) pi) 200))) ; ) ((= (getvar "AUNITS") 3) (setq alpha (- (/ pi 2) (getvar 'snapang))) ; ) ) ;_ Fin de cond ) ;_ Fin de progn (progn (setq x_alpha (angtof x_alpha)) (if (< (cos (- x_alpha (getvar 'snapang))) 0.) (setq x_alpha (+ x_alpha pi)) ) ;_ Fin de if (setq alpha (angtos x_alpha 2 10)) (setq alpha (atof (vl-string-translate " " "dgr" alpha))) ) ;_ Fin de progn ) ;_ Fin de if (princ "\nFin") alpha ) ;_ Fin de defun (defun near_vertex_arr (obj / obj dxf_obj obj_vlax pt_sel par pt_first pt_snd i bulge e_next ) (setq dxf_obj (entget (car obj))) (vl-load-com) (setq obj_vlax (vlax-ename->vla-object (car obj)) pt_sel (vlax-curve-getClosestPointTo obj_vlax (trans (osnap (cadr obj) "_near") 1 0) ) ;_ Fin de vlax-curve-getClosestPointTo par (vlax-curve-getParamAtPoint obj_vlax pt_sel) pt_first (trans (vlax-curve-getPointAtParam obj_vlax (fix par)) 0 1) pt_snd (trans (vlax-curve-getPointAtParam obj_vlax (1+ (fix par))) 0 1 ) ;_ Fin de trans i 0 ) ;_ Fin de setq (cond ((eq (cdr (assoc 0 dxf_obj)) "LWPOLYLINE") (while (or (/= (caar dxf_obj) 42) (if (< i (fix par)) (setq i (1+ i)) ) ;_ Fin de if ) ;_ Fin de or (setq bulge (cdadr dxf_obj) dxf_obj (cdr dxf_obj) ) ;_ Fin de setq ) ;_ Fin de while ) (T (setq e_next (entnext (car obj))) (repeat (fix par) (setq e_next (entnext e_next))) (setq bulge (cdr (assoc 42 (entget e_next)))) ) ) ;_ Fin de cond (list pt_first pt_snd bulge) ) ;_ Fin de defun EDIT 1: j'ai modifié le code pour que, si aucun segment n'est sélectionné pour indiquer la direction de ce dernier, l'angle sera celui du curseur, on peut normalement travailler en degrés, grades ou radians. EDIT 2 : résolution (oui, déjà) d'un problème entre les unités. EDIT 3 : Oublie de "near_vertex_arr"
  20. Bonjour à tous. Voilà, grace à un membre de CadXP (je ne sais plus de qui est ce code qui m'a servi de base) et à Maître (gile), voici un lisp qui récupère l'angle d'une ligne ou celui d'un segment d'une polyligne. Cette routine prend en compte la variable "snapang", pour le cas où le plan aurait une rotation avec le curseur parallèle à la fenêtre AutoCAD. C'est ici
  21. J'ai juste changer le nom de la variable et tout fonctionne... (setq alpha x_alpha) Maintenant, je passe alpha et non x_alpha...
  22. Bonjour à tous. Voilà, je tente de passer une variable (un angle) d'un lisp à un autre. A la fin de mon premier lisp, ma variable "x_alpha" est : Mais à l'entrée de mon second lisp (qui fait appel au premier, cette même variable est : je ne comprend pas pourquoi cette variable change d'un lisp à l'autre... Je ne m'explique pas pourquoi le deuxième angle est le complément du premier à 100 grades...
  23. Pour comparer des cos ensemble, j'ai essayé ça, mais... Non... (if (< (cos (+ (angtof x_alpha))) (cos (getvar "snapang"))) (setq x_alpha (angtos (+ (angtof x_alpha) pi) 2 3)) ) ;_ Fin de if
  24. Salut (gile), et merci de me répondre. je pense que tu as bien saisi ce que je voulais dire, sauf que j'ai oublié de préciser que je suis toujours en SCU général (je ne pensais pas devoir le souligner, désolé). C'est pour cela que je cherche la valeur de snapang. Habituellement, je fais une rotation de mon dessin mais je reste en SCU général. Car la variable snapang est, de fait, la nouvelle origine de mon angle de référence (qui n'est plus 0). Tout ça pour que mes textes soient toujours orientés de gauche à droite... A l'endroit pour une lecture sans faire le poirier... ;)
  25. Salut Patrick_35, et merci, je vais faire péter le champagne ce soir ! ! ! ;)
×
×
  • 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é