Clément.a
Membres-
Compteur de contenus
152 -
Inscription
-
Dernière visite
-
Jours gagnés
1
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Clément.a
-
Bonjour, Je ne trouve pas ceci dans l'aide c'est un endroit particulié ou je suis aveugle... Sinon merci à tous pour vos précisions. Merci
-
on doit pouvoir les modifier parce que vla-put-endpoint apparait en bleu sur VisualLISP alors que vla-put-ArcLength est en noir donc impossible de le changer seulement de le voir non?
-
est ce que ça peut venir que le point que je veut metre doit ce trouver sur le cercle que décrit l'arc de cercle et ainsi avec des arrondis et tout ça... il n'accepte pas mon point?
-
En cherchant un peu sur les startpoint en endpoint avec ce code : (while (null ent ) (setq ent (car(entsel "Séléctionné l'objet à modifier ?"))) ) (setq vla-obj_arc (vlax-ename->vla-object ent)) (setq dd (vla-get-endpoint vla-obj_arc)) (setq ddd (vlax-variant-value dd)) (setq dddd (vlax-safearray->list ddd)) ce qui donne dd est variant dont sa valeur est un safearray, et la valeur de ce safearray sont les coordonnées du point. bon c'est la même chose pour le centre alors pourquoi quand je fait : (vla-put-endpoint vla-obj_arc (vlax-3d-point end_point)) ça ne marche pas? Merci
-
je suis en train de lire cesujet et je commence à voir pourquoi ça ne marche pas. je commence a comprendre que le vlisp est vraiement puissant!!!
-
ça fonctionne pour le centre mais pas pour le point de départ et de fin de l'arc ?
-
Bonjour à tous, voila je voudrait changer plusieur propriété d'un arc mais j'ai je n'y arrive pas voila mon petit bout de code : (setq vla-obj_arc (vlax-ename->vla-object (handent handle_arc))) (vla-put-endpoint vla-obj_arc end_point) (vla-put-center vla-obj_arc centre_toit) (vla-put-startpoint vla-obj_arc start_point) et ça me retourne comme erreur : Commande: ; erreur: Le serveur ActiveX a renvoyé une erreur: Le type ne correspond pas ou Commande: ; erreur: valeur Lisp sans contrainte avec VARIANT de ce type: (0.0 0.0 0.0) je pense que ça vient de end_point centre_toit et start_point mais je ne sais pas quoi ? Merci de votre aide.
-
Modifier un attribut d'un bloc
Clément.a a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Merci -
Modifier un attribut d'un bloc
Clément.a a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
ah oui... je suis bête, c(est que je passe toute les 3h du VBA au LISP alors je mélange un peu tout :blink: merci (gile) -
Modifier un attribut d'un bloc
Clément.a a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Y à-t-il un next en Lisp? parce que j'ai un foreach avec plein de condition et ça aurait été bien si y passait au suivant quand il avait verifié une condition. (defun c:bsbs ( / ent ss atts) (vl-load-com) (while (null ent ) (setq ent (car(entsel "Séléctionné le bloc avec attribut :")))) (setq ss (vlax-ename->vla-object ent)) (setq atts (vlax-invoke ss 'getattributes)) (vla-put-TextString (car atts) "jh") (foreach att atts (if (eq (vla-get-TagString att) "ITEM") (vla-put-TextString att item_final)) (if (eq (vla-get-TagString att) "NB") (vla-put-TextString att "1")) (if (eq (vla-get-TagString att) "DN") (vla-put-TextString att dn_final)) (if (eq (vla-get-TagString att) "LONG.") (vla-put-TextString att longueur_final)) (if (eq (vla-get-TagString att) "PN") (vla-put-TextString att pn_final)) (if (eq (vla-get-TagString att) "TYPE") (vla-put-TextString att type_final)) (if (eq (vla-get-TagString att) "FACE") (vla-put-TextString att face_final)) (if (eq (vla-get-TagString att) "ELEVATION") (vla-put-TextString att elev_final)) (if (eq (vla-get-TagString att) "DESIGNATION") (vla-put-TextString att design_final)) (if (eq (vla-get-TagString att) "OBSERVATION") (vla-put-TextString att obs_final)) ) ) -
Modifier un attribut d'un bloc
Clément.a a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Après quelques heures d'acharnement voila le résultat : (defun c:bb ( / ent ss atts) (vl-load-com) (while (null ent ) (setq ent (car(entsel "Séléctionné l'attribut :")))) (setq ss (vlax-ename->vla-object ent)) (setq atts (vlax-invoke ss 'getattributes)) (vla-put-TextString (car atts) "jh"); "jh" étant le nouveau attribut ) -
Bonjour à tous, Comment modifier un attribut d'un bloc? sans passer par (command "attedit") Merci
-
Bonjour, Comment fais t on pour reselectionner une séléction que l'on à sauver sous une variable. mais juste une routine qui la séléctionne et qui quitte en laissant les objets séléctionner. command "select" ne marche pas ... merci
-
oui j'avais déja fait avec la fenêtre de selection et je voyais seulement une alternative de ce que je faisait avec ton filtre de selection (mal vu :) ). Mais les prochaine fois ou pour affiner ma routine je passerais par ce chemin car je trouve que ça fait un peu bidouille avec ma fenêtre de selection. Merci à tous
-
Nn enfet mon point d'insertion c'est le point d'insertion du block donc l'objet que je cherche à séléctionner, or je ne pouvais pas le metre dans les critère de séléction car à cause des précisions de dessin il le retrouvais une fois sur 4 donc j'ai fait une fenetre de séléction. avec les points inf. et sup. Mais du coup en rebondisant sur ton zoom objet j'ai fait un zoom fenetre sur le cadre que j'ai avec ces deux points (pt inf. et pt sup.)et pour l'instant ça fonctionne. Merci pour les infos je pensais pas que SSGET était aussi capricieux!! Merci Bonuscad
-
y a t il un moyen rapide d'isoler un calque ou faut passer en revue tout les calque pour les désactiver ?
-
Pour les variables, OSMODE je l'ai mis à 0 en revanche APERTURE PICKBOX je n'y ai pas toucher qu'elle valeur faut ils leur appliquer pour avoir un résultat sur SSGET. Avec le zoom objet y faut séléctionner l'objet or c'est ce que je cherche à faire alors je vois pas comment je pourrais l'utiliser? Merci
-
Bonjour à tous, J'utilise la fonction ssget pour retrouver un bloc (la suite de ce poste ici). Mais de façon aléatoire et sans manipulation particulière la fonction ssget ne retouve pas mon bloc alors que celui ci est bien dans le fenetre de selection et qu'il répond bien aux critères du ssget. J'ai fait dessiner la fenetre de selection préalablement grace au point "point_insertion_inf" "point_insertion_sup" comme ceci (setq point_insertion_sup (mapcar '(lambda (x) (+ x 0.1)) point_insertion) point_insertion_inf (mapcar '(lambda (x) (- x 0.1)) point_insertion)) (setq essai (ssget "_C" point_insertion_inf point_insertion_sup (list '(0 . "INSERT") '(2 . "annotation")))) (command "calque" "e" n "") (command "rectang" point_insertion_inf point_insertion_sup "") Le bloc se retrouve bien dans le rectangle mais essai renvoie nil et donc provoque une erreur par la suite avec le "ssname". Ce cas ne se présente pas toujours avec le même bloc c'est assez aléatoire! Quelqu'un à t il une idée de ce qui pourait provoqué ceci? y a t il quelque chose que j'ai mal fait ? Merci de l'aide, je suis à cours d'idée ("Quand les ordinateurs ne suive plus la logique, l'erreur est toujours du même coté de l'écran!")
-
Demande Explication sur command "_text"
Clément.a a répondu à un(e) sujet de ASTERIXII dans Débuter en LISP
Pour rebondir sur ce que à dit tramber de cette manière tu voit ce que tu écrit : (defun c:cc () (command "_text" (getpoint) 150 22 "l" "") (command "ddedit" (entlast)"") ) -
Demande Explication sur command "_text"
Clément.a a répondu à un(e) sujet de ASTERIXII dans Débuter en LISP
Bonjour, aucune idée en revanche si tu active la saisie dynamique tu pourra voir le texte que tu saisie à coté de ton curseur si ça peut t'aider. -
Phénoméne paranormal !!!
Clément.a a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
ça veut dire que c'est bien ou pas d'utiliser le handent ce que je comprend c'est assez barbare brut comme ça!! ma liste je la ressort la (foreach n list_handle_suppr (entdel(handent n))) il y a 5 ou 6 handle ça dépent elle est remise à zéro en sortant... ...Je vien de vérifier et oui j'ai fait une boulette, la liste list_handle_suppr était bien remise à zéro mais les deux listes qui étaient crées pour la composer non du coup elles contenanient tout les handles que j'avais déja supprimé donc un coup elle supprimait un coup elle restaurait!! Bon désolé du dérangement et merci a tous et surtout bonuscad -
Phénoméne paranormal !!!
Clément.a a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
En effet d'après l'aide ça à l'air ça mais j'utilise pas le même ename la première et la deuxième fois donc c'est pas censé me le restaurer. Sinon y à un moyen autre que de sortir du dessin pour purger les entités? -
Phénoméne paranormal !!!
Clément.a a répondu à un(e) sujet de Clément.a dans Pour aller plus loin en LISP
Ce que j'efface manuellement avant réaparait aussi, je met mon lisp des fois que quelqu'un voit quelque chose : (defun c:pp ( / ent dict data nom_ref situ type_piquage dict_piquage fct_extract_angle fct_recherche_angle_similaire fct_extract_angle fct_suppr_1_piquage debut_suppr nouveau_list_handle nouveau_list_handle1 list_handle_suppr fct_extract_handle_tableau fct_extract_tout_handle_piq fct_recherche_angle_similaire fct_extract_tout_handle_tableau fct_ename fct_data_xrecord_angle_1 fct_nbr_piquage fct_dict_nouveau_nbr fct_dict_nouveau_lg fct_suppr_angle fct_dict_nouveau_angle fct_correction_lg_nm fct_data_xrecord_lg_40 fct_data_xrecord_handle_tableau fct_data_xrecord_handle_dessin nbr_angle nom_dict_nbr list_handle_suppr ) (defun debut_suppr () (setq ent (car(entsel "Séléctionné l'objet à supprimer ?"))) (setq dict (cdadr (member '(102 . "{ACAD_XDICTIONARY") (entget ent)))) (setq data (dictsearch dict "reference")) (setq nom_ref (cdr(assoc 1 data))) ;(alert nom_ref) (setq situ (substr nom_ref 4 1)) ;(alert situ) (cond ((or(= situ "t")(= situ "r")) (cond ((= situ "t"); cas trou d'homme sur toit (setq situ "toit") (setq type_piquage "th") (setq dict_piquage "piquage_toit") ) ((= situ "r"); cas trou d'homme sur robe (setq situ "robe") (setq type_piquage "th") (setq dict_piquage "piquage_robe") )) ) ((= situ "u") (setq situ (substr nom_ref 9 1)) (cond ((= situ "t"); cas trou d'homme sur toit (setq situ "toit") (setq type_piquage "piquage") (setq dict_piquage "piquage_toit") ) ((= situ "r"); cas trou d'homme sur robe (setq situ "robe") (setq type_piquage "piquage") (setq dict_piquage "piquage_robe") )) )) ;(alert (strcat "c'est un " type_piquage " situer sur le/la " situ ".")) (fct_extract_angle dict_piquage nom_ref ) (fct_recherche_angle_similaire situ) (cond ((or (< 2 nbr_angle) (= nbr_angle 2)) (alert "plusieur piquage") ) ((= nbr_angle 1) ;(alert "1 seul piquage") (fct_suppr_1_piquage situ type_piquage nom_ref dict_piquage ename_info_piquage dict_list_angle) )) ) ; ; (defun fct_suppr_1_piquage (situ type_piquage nom_ref dict_piquage ename_info_piquage nom_dict_angle / pt1 pt2) (setq nom_dict_nbr (strcat "nbr_"type_piquage"_"situ)) (fct_nbr_piquage ename_info_piquage nom_dict_nbr) (fct_suppr_angle ename_info_piquage dict_list_angle nom_dict_angle) (fct_correction_lg_nm ename_info_piquage "info_nommenclature") (fct_extract_handle_tableau dict_piquage nom_ref) (fct_extract_tout_handle_tableau situ tableau_handle_piq) (fct_extract_tout_handle_piq dict_piquage nom_ref ) (foreach n list_handle_suppr (entdel(handent n))) ;;; (setq lg_list_handle_suppr (1-(length list_handle_suppr))) ;;; (while (> lg_list_handle_suppr 0) ;;; (setq eff (handent (nth lg_list_handle_suppr list_handle_suppr))) ;;; (entdel eff) ;;; (setq lg_list_handle_suppr (1- lg_list_handle_suppr)) ;;;) (entdel (eval(read(strcat "ename_"nom_ref)))) (setq pt1 '(0 0 0)) (setq pt2 '(0 9.7 0)) ;;; (command "_layout" "_set" "a2") ;;; (foreach n handle_extract_1_partie (command "_move" (handent n) "" pt1 pt2)) ;;; (command "_layout" "_set" "objet") ) ; ; ;----------------------------BOITE----A -----OUTILS-------FONCTIONS-----------------------------; ; ; (defun fct_extract_angle ( dict_piquage nom_ref /) (fct_ename (namedobjdict) dict_piquage) (fct_ename (eval(read(strcat "ename_"dict_piquage))) nom_ref) (fct_ename (eval(read(strcat "ename_"nom_ref))) "info_piquage") (fct_data_xrecord_angle_1 ename_info_piquage "angle") ) ; ; (defun fct_extract_handle_tableau ( dict_piquage nom_ref /) (fct_ename (namedobjdict) dict_piquage) (fct_ename (eval(read(strcat "ename_"dict_piquage))) nom_ref) (fct_ename (eval(read(strcat "ename_"nom_ref))) "handle_piquage") (fct_data_xrecord_handle_tableau ename_handle_piquage "tableau") ) ; ; (defun fct_extract_tout_handle_piq ( ename_handle_piquage nom_ref /) (fct_ename (namedobjdict) dict_piquage) (fct_ename (eval(read(strcat "ename_"dict_piquage))) nom_ref) (fct_ename (eval(read(strcat "ename_"nom_ref))) "handle_piquage") (fct_data_xrecord_handle_dessin ename_handle_piquage "dessin") (setq list_handle_suppr (cons tableau_handle_piq dessin_handle_piq_2 )) ) ; ; (defun fct_recherche_angle_similaire (situ / ) (fct_ename (namedobjdict) "info") (fct_ename ename_info "info_piquage") (setq dict_list_angle (strcat "angle_inserer_"situ)) (fct_ename ename_info_piquage dict_list_angle) (setq angle_identique (vl-remove-if-not '(lambda(x)(and(eq (car x) 1)(eq(cdr x) angle_value))) (entget (eval(read (strcat "ename_angle_inserer_"situ)))))) (setq nbr_angle (length angle_identique)) ) ; ; (defun fct_extract_tout_handle_tableau (situ handle_suppr / test_number nbr_handle ) (setq nom_dict_list_handle (strcat "handle_ligne_"situ)) (fct_ename ename_info_nommenclature nom_dict_list_handle) (setq list_handle (vl-remove-if-not '(lambda(x)(eq (car x) 1)) (entget (eval(read (strcat "ename_handle_ligne_"situ)))))) (setq lg_list_handle (1-(length list_handle))) (setq handle_extract_2_partie nil) (setq handle_extract_1_partie nil) (while (/= (cdr(nth lg_list_handle list_handle)) handle_suppr) (setq dict_obj (cdr(nth lg_list_handle list_handle))) (setq handle_extract_2_partie (cons dict_obj handle_extract_2_partie)) (setq lg_list_handle (1- lg_list_handle)) ) (setq lg_list_handle (1- lg_list_handle)) (while (or(> lg_list_handle 0)(= lg_list_handle 0)) (setq dict_obj (cdr(nth lg_list_handle list_handle))) (setq handle_extract_1_partie (cons dict_obj handle_extract_1_partie)) (setq lg_list_handle (1- lg_list_handle)) ) (cond ((null handle_extract_1_partie ) (setq nouveau_list_handle1 handle_extract_2_partie)) ((null handle_extract_2_partie ) (setq nouveau_list_handle1 handle_extract_1_partie)) ((and(/= handle_extract_1_partie 0)(/= handle_extract_2_partie 0)) (setq nouveau_list_handle1 handle_extract_2_partie) (setq lg_handle_extract_1_partie (1-(length handle_extract_1_partie))) (while (or(> lg_handle_extract_1_partie 0)(= lg_handle_extract_1_partie 0)) (setq dict_obj (nth lg_handle_extract_1_partie handle_extract_1_partie)) (setq nouveau_list_handle1 (cons dict_obj nouveau_list_handle1)) (setq lg_handle_extract_1_partie (1- lg_handle_extract_1_partie)) ))) (setq lg_nouveau_list_handle1 (1-(length nouveau_list_handle1))) (while (or(> lg_nouveau_list_handle1 0)(= lg_nouveau_list_handle1 0)) (setq dict_obj (cons 1 (nth lg_nouveau_list_handle1 nouveau_list_handle1))) (setq nouveau_list_handle (cons dict_obj nouveau_list_handle)) (setq lg_nouveau_list_handle1 (1- lg_nouveau_list_handle1)) ) (entdel (eval(read (strcat "ename_handle_ligne_"situ)))) (setq xrec (entmakex(append '((0 . "XRECORD") (100 . "AcDbXrecord") ) nouveau_list_handle))) (dictadd ename_info_nommenclature (strcat "handle_ligne_"situ) xrec) ) ; ; (defun fct_ename (dict_parent nom_dict / ) (setq ename_ (strcat "ename_"nom_dict)) (set (read(eval ename_)) (cdr(assoc -1 (dictsearch dict_parent nom_dict)))) ) ; ; (defun fct_data_xrecord_angle_1 (dict_parent nom_xrecord) (set (read(strcat(eval nom_xrecord)"_value")) (cdr(assoc 1 (dictsearch dict_parent nom_xrecord)))) ) ; ; (defun fct_data_xrecord_lg_40 (dict_parent nom_xrecord) (set (read(eval nom_xrecord)) (cdr(assoc 40 (dictsearch dict_parent nom_xrecord)))) ) ; ; (defun fct_data_xrecord_handle_tableau (dict_parent nom_xrecord) (set (read(strcat(eval nom_xrecord)"_handle_piq")) (cdadr(vl-remove-if-not '(lambda(x)(eq (car x) 5)) (dictsearch dict_parent nom_xrecord)))) ) ; ; (defun fct_data_xrecord_handle_dessin (dict_parent nom_xrecord) (set (read(strcat(eval nom_xrecord)"_handle_piq")) (cdr(vl-remove-if-not '(lambda(x)(eq (car x) 5)) (dictsearch dict_parent nom_xrecord)))) (setq lg_dessin_handle_piq (1-(length dessin_handle_piq))) (while (or (> lg_dessin_handle_piq 0)(= lg_dessin_handle_piq 0)) (setq dict_obj (cdr(nth lg_dessin_handle_piq dessin_handle_piq))) (setq dessin_handle_piq_2 (cons dict_obj dessin_handle_piq_2)) (setq lg_dessin_handle_piq (1- lg_dessin_handle_piq)) ) ) ; ; (defun fct_nbr_piquage (ename_info_piquage nom_dict_nbr / nbr_piquage) (setq nbr_piquage (cdr(assoc 90 (dictsearch ename_info_piquage nom_dict_nbr)))) (setq nouveau_nbr_piquage (1- nbr_piquage)) (fct_dict_nouveau_nbr ename_info_piquage nom_dict_nbr nouveau_nbr_piquage) ) ; ; (defun fct_dict_nouveau_nbr (ename_info_piquage nom_xrecord data / lst_data xrec) (setq dict_nbr_piquage (dictsearch ename_info_piquage nom_xrecord)) (setq lst_data(cons '90 (eval data))) (entdel (handent (cdr(assoc 5 dict_nbr_piquage)))) (setq xrec (entmakex(append '((0 . "XRECORD") (100 . "AcDbXrecord") )(list lst_data)))) (dictadd ename_info_piquage nom_xrecord xrec) ) ; ; (defun fct_dict_nouveau_lg (ename_info_piquage nom_xrecord data / lst_data xrec) (setq dict_lg_nm (dictsearch ename_info_piquage nom_xrecord)) (setq lst_data (cons '40 (eval data))) (entdel (handent (cdr(assoc 5 dict_lg_nm)))) (setq xrec (entmakex(append '((0 . "XRECORD") (100 . "AcDbXrecord") )(list lst_data)))) (dictadd ename_info_piquage nom_xrecord xrec) ) ; ; (defun fct_suppr_angle (ename_info_piquage dict_list_angle nom_dict_angle /) (setq data_liste_angle (vl-remove-if-not '(lambda(x)(and (eq (car x) 1) (/= (cdr x) angle_value))) (entget (eval(read (strcat "ename_angle_inserer_"situ)))))) (fct_dict_nouveau_angle (eval(read (strcat "ename_angle_inserer_"situ))) data_liste_angle) ) ; ; (defun fct_dict_nouveau_angle (ename_angle_inserer data / lst_data xrec) (entdel (handent (cdr(assoc 5 (entget ename_angle_inserer))))) (setq xrec (entmakex(append '((0 . "XRECORD") (100 . "AcDbXrecord")) data))) (dictadd ename_info_piquage (strcat "angle_inserer_"situ) xrec) ) ; ; (defun fct_correction_lg_nm (ename_info_piquage nom_dict /) (fct_ename ename_info nom_dict) (setq nom_dict_lg (strcat "lg_nm_"situ)) (fct_data_xrecord_lg_40 ename_info_nommenclature nom_dict_lg) (setq nouveau_lg_nommenclature (- (eval(read nom_dict_lg)) 9.7)) (fct_dict_nouveau_lg ename_info_nommenclature nom_dict_lg nouveau_lg_nommenclature) ) ;-----------------------------------------------------------------------------------------------; ;-----------------------------------------------------------------------------------------------; (debut_suppr) ) -
Bonjour à tous, Bon le titre fait un peu peur mais j'ai un soucis assez inexpliqué, j'ai une routine qui me permet de supprimer plusieur élément en allant chercher leur handle dans un dictionnaire, jusque la tout va bien rien de phénoméne paranormal^^. Donc ma routine supprime tout bien tout les objets. Mais quand je relance ma routine il me supprime bien un autre groupe d'objet mais me fait réaparaitre l'objet supprimé précédemment!!! et quand je continue à supprimer des objets ça fonctionne de cette façon : Imaginons que j'ai 6 goupe d'objet numéroté de 1 à 6. je les supprimes en commençant par le 1 puis le 2,3 etc... quand je supprime par exemple l'objet 5 le 3 et le 1 vont etres supprimé et le 2 ,4 vont apparaitre (alors que j'avais déja supprimé), quand je supprime le 6 le 2 4 vont etre suppirmé et le 1 3 5 vont apparaitre. ça fonctionne par paire, alors est ce mon code qui à une anomalie qui créer ça ou c'est un bug dut à une variable autocad ? Qui à une idée? PS : j'ai l'impression qu'il m'arrive toujours des trucs fou de ce genre!!
