Aller au contenu

bonuscad

Membres
  • Compteur de contenus

    5 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    56

Tout ce qui a été posté par bonuscad

  1. Alors comment comprendre cette syntaxe? (vlax-for dwg (vla-get-Documents (vlax-get-acad-object)) (if (= (vla-get-active dwg) :vlax-false)(vla-close dwg :vlax-false)) ) Je dirais : Pour chaque dessin ouvert dans la session d'autocad, si le dessin n'est pas actif alors fermer le dessin sans sauvegarder. Si tu veux sauvegarder, alors (vla-close dwg :vlax-true) Voir l'aide
  2. bonuscad

    Calculer une isochrone

    Bonjour, Sur une LT? (tu as posté dans un forum LT) Je ne vois que l'utilisation d'une appli en ligne. Géoportail par exemple le fait: isochrone ou isodistance à pied ou motorisé Après si tu as besoin du résultat, je ne vois que l'impression sur imprimante virtuelle PDF depuis Géoportail et tu insère ton pdf dans autocad.... D'autre site permette l'export en KLM et d'autre la conversion de KLM en DXF. Mais ça fait beaucoup de manips
  3. Pas vraiment, si tu veux l'utiliser, tape en ligne de commande ".TRACE" (ne pas oublier le point devant la commande, cela évite une redirection vers traceur) Cette commande par contre, n'apparait plus dans les menus ou barre d'outil, elle est considérée comme obsolète et est maintenue juste pour compatibilité antérieure.
  4. Bonjour, Regarde cette REPONSE, s'il y aurait moyen de faire avec! Je pense que oui si j'ai bien compris la demande.
  5. bonuscad

    honte à toi

    Tout frais!Tu trouveras ICI un code (écrit par BlackBox) pour les blocs à transférer sur un calque du nom du bloc.
  6. bonuscad

    calcul surface solide 3D

    Pour créer les champs dynamiques (s'il y en a beaucoup) j'avais proposé CECI
  7. bonuscad

    honte à toi

    Ou encore pour t'aider à faire un tri grossier par type d'entité ((lambda ( / AcDoc js typ_obj) (setq AcDoc (vla-get-activedocument (vlax-get-acad-object)) js (ssget "_X") ) (cond (js (vlax-for obj (vla-get-activeselectionset AcDoc) (if (not (tblsearch "LAYER" (setq typ_obj (vla-get-ObjectName obj)))) (vla-add (vla-get-layers AcDoc) typ_obj) ) (vla-put-Layer obj typ_obj) ) ) ) )) On pourrait encore imaginer d'approfondir avec les couleurs et les type de lignes forcés...
  8. Bonjour, (initget) utilisé avec (getkword) a une syntaxe particulière permettant l'internationalisation du lisp. En effet si on fait: (initget "Bonjour Aurevoir _Hello Byebye")(getkword "\nJe dis [bonjour/Aurevoir]?: ")Si l'on renseigne "b", "B" (au minimum: la lettre ou les lettre en Majuscule définie-s) ou "bonjour" "Hello" est retourné.Si l'on renseigne "_h", "_H" ou plus, "Hello" est aussi retourné.Donc si initget rencontre un underscore dans ses paramètres, il considère que les mots suivants ( en nombre équivalent) sont en langue international et retournera ceux-ci et non ceux défini en Français.
  9. Bonjour, Je découvre aujourd'hui cet algorithme levenshtein distance.En tant que néophyte complet, je me demandais si l'algorithme devait tenir compte des majuscules et minuscules pour fournir le résultat? Moi je dirais que non, mais je me trompe peut être ou c'est suivant l'analyse que l'on veut faire. Un éclaircissement serait le bien venu, je n'ai pas trouvé de réponse sur le net.Les algorithmes en ligne sur le net donne le même résultat que celui de (gile), ils tiennent compte des majuscules et minuscules!
  10. En complément de Properties2OD (ou pas), j'ai travaillé sur une routine (dont Lecrabe avait eu une version Beta) Cette routine permet de transférer une valeur de champ d'une table source vers un champ d'une table cible. ATTENTION, si le type de valeur de champ entre source et cible n'est pas le même et que vous choisissez de les convertir (exemple réel -> chaîne), c'est le champ de table SOURCE qui sera converti avant la copie, et en fonction des capacités de la fonction (ade_odmodifyfield): voir l'aide car toutes les conversions ne sont pas forcément possible, pour corréler les deux types de données. NOTEZ BIEN CECI ! ;; 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") ) (write-line (strcat "ListBox:dialog{label=\"" title "\";") file ) (if (and msg (/= msg "")) (write-line (strcat ":text{label=\"" msg "\";}") file) ) (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;") ) file ) (write-line "}spacer;ok_cancel;}" file) (close file) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "ListBox" dcl_id)) (exit) ) (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)" ) (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) choice ) (defun c:transfert_OD ( / js l_tab tab_source list_field_source l_field field_source tab_target list_field_target field_target in typ_source typ_target conv_value n obj tbllist) (setq js (ssget (list (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) ) ) ) (cond (js (setq l_tab (ade_odtablelist)) (while (null (setq tab_source (listbox "TABLES" "Choisir la table SOURCE" (mapcar 'cons l_tab l_tab) 1)))) (setq list_field_source (ade_odtabledefn tab_source) l_field (mapcar 'cdr (mapcar 'car (cdaddr list_field_source))) ) (while (null (setq field_source (listbox "CHAMPS" (strcat "Choisir le champ SOURCE pour la table " tab_source) (mapcar 'cons l_field l_field) 1)))) (while (null (setq tab_target (listbox "TABLES" "Choisir la table CIBLE" (mapcar 'cons l_tab l_tab) 1)))) (setq list_field_target (ade_odtabledefn tab_target) l_field (mapcar 'cdr (mapcar 'car (cdaddr list_field_target))) ) (while (null (setq field_target (listbox "CHAMPS" (strcat "Choisir le champ CIBLE pour la table " tab_target) (mapcar 'cons l_field l_field) 1)))) (setq in (list (cons tab_source field_source) (cons tab_target field_target) ) ) (if (not (eq (setq typ_source (cdr (assoc "ColType" (assoc (cons "ColName" (cdar in)) (cdaddr list_field_source))))) (setq typ_target (cdr (assoc "ColType" (assoc (cons "ColName" (cdadr in)) (cdaddr list_field_target))))) ) ) (progn (princ "\nATTENTION Le type de valeur ne correspondent pas entre source et cible!") (initget 1 "Oui Non _Yes No") (setq conv_value (getkword "\nOpérer la convertion du type de la valeur source vers le type de la valeur cible [Oui/Non]?: ")) (if (eq conv_value "Yes") (ade_odmodifyfield tab_source (list "Columns" (cons (cons "ColName" field_source) (cdr (assoc (cons "ColName" field_target) (cdaddr list_field_target)))))) (exit) ) ) ) (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n)))) (setq tbllist (ade_odgettables obj)) (cond (tbllist (foreach tbl (mapcar 'car in) (cond ((not (member tbl tbllist)) (ssdel obj js) ) ) ) ) (T (ssdel obj js)) ) ) ) ) (cond (js (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n)))) (ade_odsetfield obj (car (nth 1 in)) (cdr (nth 1 in)) 0 (ade_odgetfield obj (car (nth 0 in)) (cdr (nth 0 in)) 0 ) ) ) ) ) (sssetfirst nil js) (princ (strcat "\n" (itoa (sslength js)) " entités ont subit des transferts d'OD de " (car (nth 0 in)) " vers " (car (nth 1 in)))) (prin1) )
  11. En complétant le code de zebulon_Devrait fonctionner en priorité sur une sélection "Implicite", puis "Précédente" et par défaut "Tout", mais pas trop testé... (defun c:laysel_i (/ SSI SS FILTRE I E LAY) (setq SSI (ssget "_I")) (if (null SSI) (setq SSI (ssget "_P"))) (if (null SSI) (setq SSI (ssget "_X"))) (sssetfirst nil nil) (setq SS (ssget)) (if SS (progn (setq FILTRE '((-4 . "OR>")) ) (setq I 0) (while (< I (sslength SS)) (setq E (entget (ssname SS I))) (setq LAY (assoc 8 E)) (setq FILTRE (cons LAY FILTRE)) (setq I (+ I 1)) ) (setq FILTRE (cons '(-4 . "<OR") FILTRE)) (sssetfirst nil SSI) (setq SS (ssget "_I" FILTRE)) (sssetfirst nil nil) (sssetfirst nil SS) ) ) (princ) )
  12. bonuscad

    Champ dans un texte

    Bonjour, J'utiliserai plutôt la syntaxe suivante: $(substr,$(getvar,"CTAB"),1,2) Après le changement de nom de l'onglet, il peut être nécessaire d'utiliser la commande METTREAJOURCHAMP ou REGNTOUT pour que le champ se mette à jour.
  13. Je suis pas expert en la matière, voici ce je comprends: Une VM est une machine encapsulée, de ce fait la machine hôte ne peut être atteinte.Mais bon de nos jour on révèle des failles datant de plusieurs années... et ce qui était vrai hier ne l'est plus aujourd'hui. Je te pointe vers 2 articles, ça m'évitera de dire des bêtises. Audit de système virtuel hackers et VM
  14. Le mode compatibilité, j'y crois pas trop... généralement cela fonctionne bien avec des logiciels léger, mais avec une grosse appli.... Drôle de politique d'évolution du parc, je trouve! N'aurait t-il pas mieux valu investir dans des barrettes mémoires ET/OU un disque SSD pour gagner en confort d'utilisation. Néanmoins tu peux essayer de rétrograder vers des version de Net Framework plus anciennes car une version de 2009 aura certainement des lacunes pour exploiter les dernières versions de Net Framework installé par Windows10.C'est une piste, mais pas une garantie de succès. En tout cas bonne chance... Une machine virtuelle en XP peut être?
  15. bonuscad

    champs et objet

    Bonjour, J'ai dans ma collection 2 lisp (qui ne sont pas de moi, et je ne sais plus qui sont les auteurs, peut être Lee Mac)Un pour mettre en évidence les entités dont les champs sont dans un tableau et l'autre pour mettre en évidence l'entité liée à un champ dans un MTEXT. (defun c:Obj_link2table ( / js obj nb_rows nb_columns indx_r indx_c js_ sub id_cell field_obj en ent) (while (null (setq js (ssget "_:S" '((0 . "ACAD_TABLE")))))) (setq obj (vlax-ename->vla-object (ssname js 0)) nb_rows (vla-Get-Rows obj) nb_columns (vla-Get-Columns obj) indx_r 0 indx_c 0 js_sub (ssadd) ) (while (<= indx_r (1- nb_rows)) (if (eq (vla-GetContentType obj indx_r indx_c) 2) (cond ((numberp (vlax-variant-value (vla-GetCellValue obj indx_r indx_c))) (setq id_cell (vla-GetFieldId obj indx_r indx_c ) field_obj (vla-ObjectIDToObject (vla-get-ActiveDocument (vlax-get-acad-object)) id_cell) en (cdr (assoc 331 (entget (cdr (assoc 360 (entget (vlax-vla-object->ename field_obj))))))) ) (setq js_sub (ssadd en js_sub)) ) ) ) (setq indx_c (1+ indx_c)) (if (> indx_c (1- nb_columns)) (setq indx_r (1+ indx_r) indx_c 0)) ) (if js_sub (sssetfirst nil js_sub)) (prin1) ) (defun c:fieldobject ( / en ) (while (progn (setvar 'ERRNO 0) (setq en (car (nentsel "\nSelect Field: "))) (cond ( (= 7 (getvar 'ERRNO)) (princ "\nMissed, try again.") ) ( (eq 'ENAME (type en)) (if (and (wcmatch (cdr (assoc 0 (setq en (entget en)))) "*TEXT,ATTRIB") (setq en (cdr (assoc 360 en))) (setq en (dictsearch en "ACAD_FIELD")) (setq en (dictsearch (cdr (assoc -1 en)) "TEXT")) (setq en (cdr (assoc 360 en))) (setq en (cdr (assoc 331 (entget en)))) ) (sssetfirst nil (ssadd en));(redraw en 3) (princ "\nObject does not contain a Field.") ) ) ) ) ) (princ) )
  16. Je crois qu'on ne se comprends pas !!!...Quand je dis: Cela veut dire que j'ai modifié ma réponse, IL FAUT DONC refaire un copier-coller du code publié en réponse #13 D'autre part pour Pourtant dans ce cas la routine peut être aussi utilisé... Il suffit de désigner comme nouveau point le MÊME point en s'accrochant (Extrémité) à ce point commun aux polyligne et de choisir "Oui" pour "Ajouter un sommet pour avoir un tronc commun [Oui/Non]?:"Donc il me semble que la routine répond à tes besoins exprimés
  17. Ça j'avais compris (enfin je crois), le code a été complété comme dis précédemment C'est cette partie que je n'ai pas bien compris!
  18. J'ai édité le dernier code publié pour que le tronc puisse être à sommets multiples. Je n'ai pas bien saisi la deuxième question !?
  19. Alors j'ai intégré ta demande en tant que choix supplémentaire.Pas trop testé en profondeur, devrait fonctionner avec des polylignes simples qui ne comportent pas d'arrondis (arcs) (defun add_vtx (obj add_pt ent_name where / bulg) (vla-addVertex obj (fix add_pt) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 1)) (list (car (trans where 0 ent_name)) (cadr (trans where 0 ent_name)) ) ) ) ) (vla-update obj) ) (defun draw_pt (pt col / rap) (setq rap (/ (getvar "viewsize") 50)) (foreach n (mapcar '(lambda (x) (list ((eval (car x)) (car pt) rap) ((eval (cadr x)) (cadr pt) rap) (caddr pt) ) ) '((+ +) (+ -) (- +) (- -)) ) (grdraw pt n col) ) ) (defun c:Fuse_StartOrEnd_Pline ( / js n dxf_obj obj_vlax pt_start pt_end key key_add new_pt-start new_pt-end pt_tmp pt_supp lst_pt_supp nb pt_lst) (setq js (ssget '((0 . "LWPOLYLINE")))) (cond (js (repeat (setq n (sslength js)) (setq dxf_obj (entget (setq obj (ssname js (setq n (1- n))))) obj_vlax (vlax-ename->vla-object obj) pt_start (vlax-curve-getStartPoint obj_vlax) pt_end (vlax-curve-getEndPoint obj_vlax) ) (draw_pt (trans pt_start 0 1) 3) (draw_pt (trans pt_end 0 1) 1) ) (initget "Vert Rouge Aucun _Green Red None") (princ "\nPoints de départ en VERT, points d'arrivée en ROUGE") (setq key (getkword "\nProcéder à la fusion des points d'extrèmités [Vert/Rouge/Aucun]<Aucun>: ")) (if (not key) (setq key "None")) (cond ((eq key "Green") (initget 1) (setq nw_pt-start (trans (getpoint "\nNouveau point de départ pour l'ensemble des polyligne sélectionnées: ") 1 0)) (initget 1 "Oui Non _Yes No") (setq key_add (getkword "\nAjouter un sommet pour avoir un tronc commun [Oui/Non]?: ")) (if (eq key_add "Yes") (progn (setq pt_tmp nw_pt-start) (initget 1) (while (setq pt_supp (getpoint (trans pt_tmp 0 1) "\nPosition du point supplémentaire pour le tronc commun: ")) (grdraw (trans pt_tmp 0 1) pt_supp 7) (setq lst_pt_supp (cons (trans pt_supp 1 0) lst_pt_supp) pt_tmp (car lst_pt_supp)) ) ) ) (repeat (setq n (sslength js)) (setq dxf_obj (entget (setq obj (ssname js (setq n (1- n))))) pt_lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_obj)) ) (entmod (subst (cons 10 nw_pt-start) (cons 10 (nth 0 pt_lst)) dxf_obj ) ) (if (eq key_add "Yes") (foreach el (reverse lst_pt_supp) (add_vtx (vlax-ename->vla-object obj) 0 obj el) ) ) ) ) ((eq key "Red") (initget 1) (setq nw_pt-end (trans (getpoint "\nNouveau point final pour l'ensemble des polyligne sélectionnées: ") 1 0)) (initget 1 "Oui Non _Yes No") (setq key_add (getkword "\nAjouter un sommet pour avoir un tronc commun [Oui/Non]?: ")) (if (eq key_add "Yes") (progn (setq pt_tmp nw_pt-end) (initget 1) (while (setq pt_supp (getpoint (trans pt_tmp 0 1) "\nPosition du point supplémentaire pour le tronc commun: ")) (grdraw (trans pt_tmp 0 1) pt_supp 7) (setq lst_pt_supp (cons (trans pt_supp 1 0) lst_pt_supp) pt_tmp (car lst_pt_supp)) ) ) ) (repeat (setq n (sslength js)) (setq dxf_obj (entget (setq obj (ssname js (setq n (1- n))))) pt_lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_obj)) ) (entmod (subst (cons 10 nw_pt-end) (cons 10 (nth (1- (cdr (assoc 90 dxf_obj))) pt_lst)) dxf_obj ) ) (if (eq key_add "Yes") (progn (setq nb (1- (cdr (assoc 90 dxf_obj)))) (foreach el (reverse lst_pt_supp) (add_vtx (vlax-ename->vla-object obj) (setq nb (1+ nb)) obj el) ) ) ) ) ) (T (princ "\nAbandon de la fusion, Inversez la/les polylignes faisant défaut") ) ) (redraw) ) ) (prin1) )
  20. Et avec une adaptation de ce que j'ai proposé à lecrabe (defun draw_pt (pt col / rap) (setq rap (/ (getvar "viewsize") 50)) (foreach n (mapcar '(lambda (x) (list ((eval (car x)) (car pt) rap) ((eval (cadr x)) (cadr pt) rap) (caddr pt) ) ) '((+ +) (+ -) (- +) (- -)) ) (grdraw pt n col) ) ) (defun c:Fuse_StartOrEnd_Pline ( / js n dxf_obj obj_vlax pt_start pt_end key new_pt-start new_pt-end pt_lst) (setq js (ssget '((0 . "LWPOLYLINE")))) (cond (js (repeat (setq n (sslength js)) (setq dxf_obj (entget (setq obj (ssname js (setq n (1- n))))) obj_vlax (vlax-ename->vla-object obj) pt_start (vlax-curve-getStartPoint obj_vlax) pt_end (vlax-curve-getEndPoint obj_vlax) ) (draw_pt (trans pt_start 0 1) 3) (draw_pt (trans pt_end 0 1) 1) ) (initget "Vert Rouge Aucun _Green Red None") (princ "\nPoints de départ en VERT, points d'arrivée en ROUGE") (setq key (getkword "\nProcéder à la fusion des points d'extrèmités [Vert/Rouge/Aucun]<Aucun>: ")) (if (not key) (setq key "None")) (cond ((eq key "Green") (initget 1) (setq nw_pt-start (trans (getpoint "\nNouveau point de départ pour l'ensemble des polyligne sélectionnées: ") 1 0)) (repeat (setq n (sslength js)) (setq dxf_obj (entget (setq obj (ssname js (setq n (1- n))))) pt_lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_obj)) ) (entmod (subst (cons 10 nw_pt-start) (cons 10 (nth 0 pt_lst)) dxf_obj ) ) ) ) ((eq key "Red") (initget 1) (setq nw_pt-end (trans (getpoint "\nNouveau point final pour l'ensemble des polyligne sélectionnées: ") 1 0)) (repeat (setq n (sslength js)) (setq dxf_obj (entget (setq obj (ssname js (setq n (1- n))))) pt_lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_obj)) ) (entmod (subst (cons 10 nw_pt-end) (cons 10 (nth (1- (cdr (assoc 90 dxf_obj))) pt_lst)) dxf_obj ) ) ) ) (T (princ "\nAbandon de la fusion, Inversez la/les polylignes faisant défaut") ) ) (redraw) ) ) (prin1) )
  21. @ lecrabe, est que ça répond à ton souhait? (defun draw_pt (pt col / rap) (setq rap (/ (getvar "viewsize") 50)) (foreach n (mapcar '(lambda (x) (list ((eval (car x)) (car pt) rap) ((eval (cadr x)) (cadr pt) rap) (caddr pt) ) ) '((+ +) (+ -) (- +) (- -)) ) (grdraw pt n col) ) ) (defun c:fuse_start&end_pline ( / js n dxf_obj obj_vlax pt_start pt_end key new_pt-start new_pt-end pt_lst) (setq js (ssget '((0 . "LWPOLYLINE")))) (cond (js (repeat (setq n (sslength js)) (setq dxf_obj (entget (setq obj (ssname js (setq n (1- n))))) obj_vlax (vlax-ename->vla-object obj) pt_start (vlax-curve-getStartPoint obj_vlax) pt_end (vlax-curve-getEndPoint obj_vlax) ) (draw_pt (trans pt_start 0 1) 3) (draw_pt (trans pt_end 0 1) 1) ) (initget "Oui Non _Yes No") (princ "\nPoints de départ en VERT, points d'arrivée en ROUGE") (setq key (getkword "\nProcéder à la fusion des points d'extrèmités [Oui/Non]<Oui>: ")) (if (not key) (setq key "Yes")) (cond ((eq key "Yes") (initget 1) (setq nw_pt-start (trans (getpoint "\nNouveau point de départ pour l'ensemble des polyligne sélectionnées: ") 1 0)) (initget 1) (setq nw_pt-end (trans (getpoint "\nNouveau point final pour l'ensemble des polyligne sélectionnées: ") 1 0)) (repeat (setq n (sslength js)) (setq dxf_obj (entget (setq obj (ssname js (setq n (1- n))))) pt_lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_obj)) ) (entmod (setq dxf_obj (subst (cons 10 nw_pt-start) (cons 10 (nth 0 pt_lst)) dxf_obj ) ) ) (entmod (subst (cons 10 nw_pt-end) (cons 10 (nth (1- (cdr (assoc 90 dxf_obj))) pt_lst)) dxf_obj ) ) ) ) (T (princ "\nAbandon de la fusion, Inversez la/les polylignes faisant défaut") ) ) (redraw) ) ) (prin1) )
  22. Pour l'emplacement, pas de problème.Par contre je ne comprends pas bien l'histoire que tu soit obligé d'actualiser le champ!Normalement il devrait apparaitre la bonne valeur par rapport au calque de l'entité sélectionnée, à moins que tu change le nom du calque entre temps. (defun c:tryks ( / ent pt htx AcDoc Space ename) (while (not (setq ent (entsel)))) (initget 1) (setq pt (getpoint "\nPoint d'insertion du champ: ")) (initget 6) (setq htx (getdist pt (strcat "\nSpécifiez la hauteur du champ <" (rtos (getvar "TEXTSIZE")) ">: "))) (if htx (setvar "TEXTSIZE" htx)) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ename (vlax-ename->vla-object (car ent)) ) (vla-addMtext Space (vlax-3d-point (trans pt 1 0)) 0.0 (strcat "%<\\AcDiesel $(substr," "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID ename)) ">%).Layer\>%,7,1)>%" ) ) (prin1) )
  23. @Valentin-J Une question avant d'aller plus loin!Est ce que tes polylignes sont toutes tracées dans le même sens?Par exemple est ce que le point de départ (ou de fin) est toujours dans le centre du rectangle rouge? Car si ce n'est pas le cas, ça va compliquer le code et m'obliger à demander quel sommet à déplacer pour chaque polylignes, le lisp deviendrait alors inutile à mon avis car ça ne serait pas plus rapide que d'utiliser les grips pour déplacer le sommet désiré un par un. @lecrabe en schéma c'est cela que tu voudrait? ------- /------\ / \ ------- ----> ---------- \ / ------- \------/ Avec la même contrainte que ci dessus, que les polylignes aient toutes le même sens de parcours!
  24. bonuscad

    commande "dissocier"

    Le concepteur n'a pas fais une commande, mais une fonction sans arguments.En ligne de commande il te faut l'invoquer avec des parenthèses (PurgeAllGroups)
  25. Ou alors sans passer par la variable CLAYER (calque courant)C'est marrant on peut le faire en lisp, mais manuellement j'y arrive pas (impossible d'inserer un champ dans l'expression diesel) ((lambda ( / ent htx AcDoc Space ename) (while (not (setq ent (entsel)))) (initget 6) (setq htx (getdist (getvar "VIEWCTR") (strcat "\nSpécifiez la hauteur du champ <" (rtos (getvar "TEXTSIZE")) ">: "))) (if htx (setvar "TEXTSIZE" htx)) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (setq ename (vlax-ename->vla-object (car ent))) (vla-addMtext Space (vlax-3d-point (getvar "VIEWCTR")) 0.0 (strcat "%<\\AcDiesel $(substr," "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID ename)) ">%).Layer\>%,7,1)>%" ) ) (prin1) ))
×
×
  • 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é