-
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
-
Juste petite question pour le gestion de plusieurs échelles
DenisHen a posté un sujet dans Débuter en LISP
Bonjour à tous... Et d'abord, bonnes vacances et/ou bonnes fêtes à vous... Voilà, ceci étant fait, je cherche à configurer, avec l'aide de la saisie de l'opérateur, deux échelles. Il en faut une dite 'primaire' et une seconde 'facultative' nommée 'secondaire'. Voici ce que j'ai écris : ;;; ************************* ;;; Définitions des échelles ;;; ************************* ;;; ************************************ ;;; Définition de l'échelle primaire... (defun c:DHLotiEch (/ ech1 ech2) (if (= (vlax-ldata-get "DhLoti" "Ech1") nil) (setq ech1 (getreal "Échelle primaire : 1/ :")) (setq ech1 (getreal (strcat ")\nÉchelle primaire : 1/<" (rtos (vlax-ldata-get "DhLoti" "Ech1") 2 0) "> :" ) ;_ Fin:strcat ) ;_ Fin:getreal ) ;_ Fin:setq ) ;_ Fin:if (cond ((and (= ech1 nil) (/= (vlax-ldata-get "DhLoti" "Ech1") nil)) (vlax-ldata-put "DhLoti" "Ech1" (vlax-ldata-get "DhLoti" "Ech1")) ) ((/= ech1 nil) (vlax-ldata-put "DhLoti" "Ech1" ech1)) (T (alert "Aucune échelle primaire définie.\nAucune commande ne fonctionnera sans cette échelle minimum." ) ;_ Fin:alert (exit) ) ;_ Fin:progn ) ;_ Fin:if ;;; ************************************* ;;; Définition de l'échelle secondaire... (if (= (vlax-ldata-get "DhLoti" "Ech2") nil) (setq ech2 (getreal "Échelle secondaire : 1/ :")) (setq ech2 (getreal "\nÉchelle secondaire : 1/ :<" (vlax-ldata-get "DhLoti" "Ech2") "> '0 pour aucune échelle' :" ) ;_ Fin:getreal ) ;_ Fin:setq ) ;_ Fin:if (princ "Résultat ech2 =") (princ ech2) (princ "\n") (if ((or (/= ech2 nil) (/= ech2 0))) (progn (vlax-ldata-put "DhLoti" "Ech2" ech2) (alert (strcat "Échelle primaire : 1/" (rtos (vlax-ldata-get "DhLoti" "Ech1") 2 0) "\nÉchelle secondaire 1/" (rtos (vlax-ldata-get "DhLoti" "Ech2") 2 0) ) ;_ Fin:strcat ) ;_ Fin:alert ) ;_ Fin:progn (progn (vlax-ldata-put "DhLoti" "Ech2" nil) (alert (strcat "Échelle primaire : 1/" (rtos (vlax-ldata-get "DhLoti" "Ech1") 2 0) "\nAucune échelle secondaire" ech2 ) ;_ Fin:strcat ) ;_ Fin:alert ) ;_ Fin:progn ) ;_ Fin:if (princ) ) ;_ Fin:defun Il faudrait qu'il y ait au moins la première échelle saisie, sinon, rien ne fonctionnera, mais ça, je le gérerais autrement. Mais l'opérateur pourra éventuellement saisir une deuxième échelle. Mais celle-ci n'est pas obligatoire, si elle n'est pas saisie, elle sera égale à nul... Si non, égale à elle-même... Je n'arrive pas à mettre tous-ça en place... S'il y a une bonne âme... -
Macro Bouton copier modifier avec changement de calque
DenisHen a répondu à un(e) sujet de Dartsu dans AutoCAD 2018
Oops... J'ai zappé la copie... -
Dans quel traceur investir ?
DenisHen a répondu à un(e) sujet de DenisHen dans Périphériques de sortie, impression
Salut. Perso, je n'en ai jamais vu tourner sous un Windows... Et nous, on avait une OCE Graphic à carrousel, avec 15 plumes (je pense), pour gérer aussi les épaisseurs de trait... -
Macro Bouton copier modifier avec changement de calque
DenisHen a répondu à un(e) sujet de Dartsu dans AutoCAD 2018
Salut. Voici ce qu'il faut placer dans la commande du bouton (CalqueDest est ton calque de destination des objets sélectionnés) : -chprop;ca;CalqueDest;; -
Salut. Pour l'import de points topo, il y a l'excellent InsTopo de Maître (gile)...
-
Salut. Justement, je pensais que c'était pour reporter un levé à l'équerre optique, mais c'est le contraire... ;)
-
Oops. Je pense m'être trompé largement... Effectivement, il clique un point et il faut ressortir les deux distances Delta X et Delta Y... J'ai vu le problème à l'envers... Dommage, j'étais fier de mon truc... :(
-
Re... Mais je ne pense pas qu'il faille cherché aussi compliqué... Bien que ce soit très intéressant. Je pense que fradiqueluis n'a besoin que d'une droite, voir même que d'un point... J'ai donc ajouter un (while pour ne saisir qu'une seule fois A et B : ;;;Cumul sur ligne de base pour fradiqueluis de CadXP.com (defun c:cumulAB (/ old_osmde p1 p2 p3 p4 Distp3 Distp4) (princ "\nDéveloppé par Denis H. (version:1.1)") (setq p1 (getpoint "\nPoint A : ") p2 (getpoint p1 "\nPoint B: ") ) ;_ Fin de setq (while (/= (setq Distp3 (getreal "\nEntrer la distance sur A-B :")) nil) (setq Distp4 (getreal "\nDistance depuis A-B :")) (setq old_osmde (getvar "osmode")) (setvar "osmode" 0) (setq p3 (polar p1 (angle p1 p2) Distp3)) (setq p4 (polar p3 (- (angle p1 p2) (/ pi 2)) Distp4)) (command "_.line" p3 p4 "") (setvar "osmode" old_osmde) ) ;_ Fin de while (princ) ) ;_ Fin de defun
-
Effectivement... C'est plus "simple", mais j'évite presque toujours de toucher aux SCU... ;) Trop "dangereux"... Pour moi :(
-
Re... Je pense que ce qui suit est "exactement" ce que tu cherches...: ;;;Cumul sur ligne de base pour fradiqueluis de CadXP.com (defun c:cumulAB (/ old_osmde p1 p2 p3 p4 Distp3 Distp4) (princ "\nDéveloppé par Denis H. (version:1.0)") (setq p1 (getpoint "\nPoint A : ") p2 (getpoint p1 "\nPoint B: ") Distp3 (getreal "\nEntrer la distance sur A-B :") Distp4 (getreal "\nDistance depuis A-B :") Distp4 (* Distp4 -1.0) ) ;_ Fin de setq (setq old_osmde (getvar "osmode")) (setvar "osmode" 0) (setq p3 (polar p1 (angle p1 p2) Distp3)) (setq p4 (polar p3 (+ (angle p1 p2) (/ pi 2)) Distp4)) (command "_.line" p3 p4 "") (setvar "osmode" old_osmde) (princ) ) ;_ Fin de defun
-
Salut. Attention, je crois que (command-s ne demande pas toujours le même nombre d'argument que (command, mais c'est à vérifier...
-
Salut à tous. Je pense que fradiqueluis désire plus faire un point C dans le segment AB puis un point D perpendiculaire au segment AB depuis le point C. J'ai écris ça, mais ça ne fonctionne que dans un sens... : ;;;ligne de cumul pour fradiqueluis de CadXP.com (defun c:cumulAB () (setq p1 (getpoint "\nPoint A : ") p2 (getpoint p1 "\nPoint B: ") Distp3 (getreal "\nEntrer la distance sur A-B :") Distp4 (getreal "\nDistance depuis A-B :") ) ;_ Fin de setq (setq old_osmde (getvar "osmode")) (setvar "osmode" 0) (princ Distp4) (if (< Distp4 0.0) (progn (setq p3 (polar p1 (angle p1 p2) Distp3)) (setq p4 (polar p3 (+ (angle p1 p2) (/ pi 2)) Distp4)) ) ;_ Fin de progn (progn (setq p3 (polar p1 (angle p1 p2) Distp3)) (setq p4 (polar p3 (+ (angle p2 p1) (/ pi 2)) Distp4)) ) ;_ Fin de progn ) ;_ Fin de if (command "_.line" p3 p4 "") (setvar "osmode" old_osmde) (princ) ) ;_ Fin de defun
-
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Je suis désolé de l'effet produit par ce post, ce n'était certainement pas sa vocation. Mon client, et ce n'est pas le seul, ne savait même pas qu'on pouvait taper des commande dans la ligne de commande, et il n'utilisait AutoCAD que pour faire des zoom et imprimer une présentation (qui n'était plus à l'échelle). Je ne peux pas prendre en charge la totalité de la formation pour arriver jusqu'à des commandes comme "EXTRACTDONNEES". Celà dit, je te donne raison, je préfère aussi apprendre une nouvelle commande à quelqu'un que de lui faire une routine qui fait la même chose... Et c'est ce que je fais en général. Merci, je prend ça pour un compliment... ;) Je comprend le sens de ce duo de commandes, mais de là à les utiliser, il y a encore du chemin... Et je serais toujours "novice"... ;) -
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Merci pour insister Ô Patrick_35, Ô toi grand pro... Mais avoue que ce n'est pas abordable par un débutant novice qui commence si facilement... J'ai déjà vu l'efficacité de ce duo, par tes lisp, par ceux de (gile), et par d'autres aussi... Mais intégrer ça dans un lisp qui peine à utiliser (command face à la peur d'un (entmake... Comprend moi... Ce n'est pas si évident pour nous que pour toi... Non ? -
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Et voilà... mapcar et lambda font leur apparition... Et comme par hasard, c'est un grand pro qui parle à un novice débutant... J'essai TOUT LES JOURS de comprendre ce duo... Tout les jour, j'ai du mal... Mais un jour viendra, je maîtriserais... Ô oui... Un jour viendra... De plus, pour rendre ma routine plus "universelle", je cherche à créer une sélection, faite pas l'utilisateur, des bloques existants dans le dessin avec un (des) attribut(s), puis sélectionner quelques attributs du bloque sélectionné... Ça, ce serait vraiment bien à partager.. Non ? Je ferais tout ça avec le formidable "ListBox" de Maître (gile)... -
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Parce-que mon client ne connait que deux ou trois commandes sur AutoCAD... 2008 qui plus est... Je préfère assister mon client plutôt que de lui dire : démerde-toi, ça existe sur ton AutoCAD... Ce n'est pas ma politique, et je suis sûr que je ne suis pas le seul membre de CadXP à penser ça... -
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Merci, mais de cette façon, on ne cherche pas le nom de l'attribut, chose que tu as bien précisé. Mais de l'autre façon, n'importe qui pourra adapter cette routine avec autant d'attribut qu'elle le souhaite. Je pense pas seulement aux autres quand je développe, je pense surtout au moment, dans longtemps peut-être, ou je vais devoir remettre les mains dans le cambouis et me creuser la tête pour savoir à quoi je pensais quand j'ai fais cette routine... Je n'ai pas dis que ta solution n'était pas bonne, je dis juste qu'elle ne me "convenait" pas, tes deux lignes ne sont pas forcement claire au premier coup d’œil, tandis que les deux (if (= (vla-get-TagString att) "XXXX") sont plus parlant, à mes yeux... Et donc peut-être à d'autres yeux aussi... Il n'y a rien de péjoratif dans mes propos, et ne le prend surtout pas mal... Ça peut d'ailleurs faire partis d'un exercice sur ton site, enfin, c'est juste une idée... Bon week-end à tous et merci encore à vous... -
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
C'est vrai que ça m'a facilité la vie et fait gagner quelques heures... Bon week-end à tous... -
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Re-salut lecrabe, je rajeunis de jour en jour avec toi... ;) Je vais bientôt avoir le droit de voter... <img src='http://cadxp.com/public/style_emoticons/<#EMO_DIR#>/laugh.gif' class='bbc_emoticon' alt=':(rires forts):' /> Voici donc ma routine : - sélection de plusieurs entités, quelles qu'elles soient, - tri des Blocs, cette routine ne traite QUE des Blocs nommés "PRD_PF_ZG", - extrait les X, Y, et les deux attributs "PROF" et "ZGs" pour en faire un listing (fichier .lst), - le fichier .lst se trouve au même emplacement que le .dwg. ;;; *********************************************** ;;; Sélectionne tout les Blocs PRD pour en faire ;;; un fichier listing avec X,Y,Prof,ZGs ;;; *********************************************** (defun c:ExportPrd ( / Fichier NbDec FichierEcrit SelPRD ent elst BlkNom Coord X Y Prof ZGs) (princ "\nDéveloppé par Denis H. (v1.0)") (setq Fichier (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4))) (setq Fichier (strcat (getvar "dwgprefix") Fichier ".lst")) (setq FichierEcrit (open Fichier "a")) (princ "\nCapturer les bloques 'PRD' :") (setq NbDec (getvar "luprec")) (setq SelPRD (ssget)) (write-line (strcat "X,Y,Prof,ZGs") FichierEcrit) (repeat (sslength SelPRD) (setq ent (ssname SelPRD 0)) (setq elst (entget ent) BlkNom (cdr (assoc 2 elst)) ) ;_ Fin de setq (if (= BlkNom "PRD_PF_ZG") (progn (setq Coord (cdr (assoc 10 elst)) X (rtos (car Coord) 2 NbDec) Y (rtos (cadr Coord) 2 NbDec) ) ;_ Fin de setq (while (and (setq ent (entnext ent)) (= (cdr (assoc 0 (entget ent))) "ATTRIB")) (setq att (vlax-ename->vla-object ent)) (if (= (vla-get-TagString att) "PROF") (setq Prof (vla-get-TextString att)) ) ; end if (if (= (vla-get-TagString att) "ZGs") (setq ZGs (vla-get-TextString att)) ) ; end if ) ; end while (princ (strcat "\nX=" X "\tY=" Y "\tProf=" Prof "\tZGs=" ZGs)) (write-line (strcat X "," Y "," Prof "," ZGs) FichierEcrit) ) ;_ Fin de progn ) ;_ Fin de if (ssdel (ssname SelPRD 0) SelPRD) ) ;_ Fin de repeat (close FichierEcrit) (princ) ) ;_ Fin de defun Le fichier .lst est éditable avec le bloc-note. -
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Merci à toi, Ô Décapode... Mais je n'ai pas fini de comprendre ce Lisp... Ça me fait du boulot en plus... ;) Mais c'est bien ce que je cherche... Encore merci... -
Quelle est la valeur des attributs ?
DenisHen a répondu à un(e) sujet de DenisHen dans Débuter en LISP
J'ai cherché, mais comme je n'ai pas tout compris (même si c'est bien expliqué). Je cherche à extraire deux attributs d'un même bloque... Et sur ton site, je n'ai pas trouvé ce que je cherchais... Peut-être que ça feras parti d'un exercice... J'ai écris ça, mais évidement, ça plante... : (while (setq ent (ssname SelPRD i)) (setq i (1+ i) elst (entget ent) BlkNom (cdr (assoc 2 elst)) ) ;_ Fin de setq (if (= BlkNom "PRD_PF_ZG") (progn (setq Coord (cdr (assoc 10 elst)) elst_att (entnext elst) X (rtos (car Coord) 2 NbDec) Y (rtos (cadr Coord) 2 NbDec) ;;Z (rtos (caddr Coord) 2 NbDec) ) ;_ Fin de setq (while (/= (cdr (assoc 0 elst_att)) "SEQEND") ;; nom étiquette (setq att_etiq (cdr (assoc 2 elst_att))) ;; valeur du contenu de l'attribut (cond ((= att_etiq "PROF") (setq Prof (atof (cdr (assoc 1 elst_att)))))) ;_ Fin de cond (cond ((= att_etiq "ZGs") (setq Alti (atof (cdr (assoc 1 elst_att)))))) ;_ Fin de cond ) ;_ Fin de while (princ (strcat "\nX=" X "\tY=" Y)) ;;(write-line (strcat X "," Y) FichierEcrit) ) ;_ Fin de progn ) ;_ Fin de if ) ;_ Fin de while -
Bonjour à tous... Je tente, aujourd'hui, de connaitre les valeurs des deux seuls attributs ("PROF" et "ZGs") d'un Bloc ("PRD_PF_ZG") inclus dans la sélection multiple "SelPRD". Si quelqu'un a une astuce, un conseil... Je suis preneur...
-
De rien didier, je te tiendrais au courant des "erreurs" (orthographiques ou autres) si j'en trouve sur ton site. Bien que je ne suis pas une référence en la matière... Je prend ça pour un compliment... ;)
-
[Résolu] Probl comment créer un bloc point altitude
DenisHen a répondu à un(e) sujet de jpeg dans AutoCAD 2013
C'est encore plus vicieux que le sabotage, mais chapeau bas pour cette idée... ;) -
Salut. Personnellement, j'utiliserais ce bout de code de Maître (gile)... On peut remplacer tes bouton ratio par un texte avec ce code... : ;; ListBox (gile) ;; Boite de dialogue permettant un ou plusieurs choix dans une liste ;; ;; Arguments ;; title : le titre de la boite de dialogue (chaîne) ;; msg ; message (chaîne), "" ou nil pour aucun ;; keylab : une liste d'association du type ((key1 . label1) (key2 . label2) ...) ;; flag : 0 = liste déroulante ;; 1 = liste choix unique ;; 2 = liste choix multipes ;; ;; Retour : la clé de l'option (flag = 0 ou 1) ou la liste des clés des options (flag = 2) ;; ;; Exemple d'utilisation ;; (listbox "Présentation" "Choisir une présentation" (mapcar 'cons (layoutlist) (layoutlist)) 1) (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 Je n'ai jamais réussis à faire fonctionner OpenDCL... Mais si c'est pour "jongler" entre plusieurs types d'accroche objet, deux boutons dans une palette sera la solution la plus rapide, et à son "développement" et à son utilisation...
