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. Bonjour, Je viens de faire l'essai avec une 2008 (rechercher (_find) ne fonctionne pas) Ma solution: Déjà pour comprendre, fais un (cdr (assoc 304 (entget (car (entsel))))) sur une ligne de repère multiple, avec ton exemple il devrait retourner une chaine de texte similaire à ceci: Tu remarqueras que le retour de ligne est codé avec \\P dans des textes multiligne Donc j'ai utiliser le code donné ICI Une fois chargé j'ai fais simplement ceci en ligne commande: (MY_REPLACE_TEXT "Isolant PSE" "Isolant PSE\\PR=3.85 m{\\fISOCPEUR|b0|i0|c0|p34;²} °C/W") et tout a été changé...
  2. bonuscad

    polices de formes

    Bonjour phil, Pense à regarder du côté des type de ligne, si celles-ci utilisent des polices de formes, tu ne pourra pas purger les polices correspondantes, même si aucun texte n'utilise celle-ci.
  3. Bonjour, De retour après une longue absence (je m'étais pété la guibole...) :( Pour G2.toff, pense à faire des recherches sur le forum, je sais ce n'est pas facile, mais beaucoup de sujet ont été traité dans le passé. Si tu regarde celui-ci, je pense qu'il correspond à ton souhait, ou en tout cas tu peux toujours l’améliorer...
  4. Bonjour Bruno, Merci d'avoir remonter cette discussion ancienne, mais encore d'actualité tout de même... Je prends note de ton observation sur PICKFIRST et l'option _:S de (ssget)
  5. Je ne sais pas si l'article est digne de confiance, mais le projet retenu semblerait être celui-ci.
  6. Salut, Peut être en mettant DIMASZ à 0.0, cela pourrait remédier à ton problème...
  7. Salut, Vu que tu veux décomposer dans un script, voir si la variable QAFLAGS ne te serait pas utile... Jettes un oeil à ce sujet par exemple.
  8. Bonjour, Je suis peut être à côté... Mais tu as ceci: talus3D.lsp Il te permet de faire la symbolique de talus avec des objets 3D. Il fonctionne aussi avec des objets 2D. En 3D tu peux même interroger les barbules avec ceci: id-pente.lsp tu pourra ainsi obtenir les pentes variables en divers endroits de ton talus. (pente AVEC le plan XY)
  9. bonuscad

    Cherchez Charlie !

    C'est vrai que le piqué des clichés est encore plus fin sur Tokyo. Par contre à un moment il m'a fait planter mon affichage graphique, je suis passé en résolution base et en vidéo inverse avec beaucoup de parasites. Peut être une mauvaise manip de ma part avec un click inconsidéré. Néanmoins je me suis bien régalé, mais j'ai pas vu Ju, pourtant j'ai cherché :(rires forts):
  10. Bonjour, Qu'utilises tu pour générer ton PDF? Il se peut, suivant le moyen utilisé, que des défauts apparaissent. Déjà un aperçu de ton tracé est-il correct? Pour info les différent possibilités pour créer un PDF DWG2PDF : interface fournie par Autodesk, avantage recrée des couches dans le PDF comme tu as des calques dans autocad. L'utilisateur du PDF peut alors activer-désactiver les couches qui lui conviennent. PDFCreator : imprimante virtuelle pour générer du PDF Foxit Reader PDF Printer : imprimante virtuelle qui est installé si tu utilise Foxit Reader Utiliser une sortie traceur en Postscript (format .ps) et convertir celle-ci en PDF.
  11. bonuscad

    attribut

    Bonjour, Regarde cette discussion et les renvois qu'il peut contenir, voir si une solution te convient.
  12. bonuscad

    MACRO pour des Ø

    Bonjour, Une macro appelant une commande qui lance une boite de dialogue ne pourra jamais fonctionner. En effet celle-ci arrête le déroulement de la macro. Sur une version LT, la solution de lecrabe me semble la plus judicieuse.
  13. Salut, Comme dit lecrabe l'affectation d'invisibilité est global à l'ensemble des fenêtres de présentation. Tu peux essayer de passer tes entités à rendre invisible dans un calque dédié (en vérifiant que celle-ci ont bien la couleur du calque), et dans les fenêtres concernées de forcer la couleur du calque (colonne de la fenêtre en cours) en 254 par exemple, ce qui aura pour conséquence de tracer du blanc, donc blanc sur blanc = invisible B)
  14. bonuscad

    Opération sur commande

    C'est dut au choix de l'encodage des caractères. Tu doit être avec Unicode (UTF-8) sous firefox (encodage par défaut). Tu peux passer en Occidental (ISO 8859-1) et l'affichage sera correct. Pour cela passe par le menu affichage > encodage des caractères. Perso je conserve quand même UTF-8 (ou le rétabli après usage d'un autre codage)
  15. bonuscad

    pas du pan droite

    Bonjour, Je pense qu'il faut entrer dans le CUI et modifier la macro... http://uppix.net/wIqytt.png
  16. bonuscad

    scinder polyligne

    En modifiant la liste des codes DXF à conserver, ça devrait le faire (code 48 en plus) '(0 100 67 410 8 62 6 370 48 43 38 39)
  17. bonuscad

    scinder polyligne

    Bonjour, Je suis tombé il y a pas longtemps sur un forum US sur une solution sympa et performante ->BreakPoly
  18. Attention quand même à l'utilisation... Si les chaînes à trouver sont courtes, on peut avoir des surprises de substitution (et on a aucun contrôle à part l'exploration du dessin.) Pour éviter cela préférer des chaînes longues qui ne peuvent guère porter à confusion.
  19. Bonjour, J'ai bien ceci, à voir ci ça peu convenir. Si oui je pense que c'est scriptable sous la forme simpliste par exemple: (load "my_replace_text.lsp") (my_replace_text "NOUVELLE-CHAINE" "ANCIENNE CHAINE") Le code (à placer au bon endroit, ou déclarer un nouveau chemin si le chemin en dur n'est pas spécifié pour (load)) (defun my_replace_text (new_string old_string / js n ename) (vl-load-com) (defun string-subst (nam_obj / value_string nbs tmp_nbs) (setq value_string (vlax-get nam_obj 'TextString) nbs 0) (while nbs (if (setq nbs (vl-string-search old_string value_string (setq tmp_nbs nbs))) (setq value_string (vl-string-subst new_string old_string value_string tmp_nbs) nbs (1+ nbs) ) ) ) (vlax-put nam_obj 'TextString value_string) ) (setq js (ssget "_X" '( (-4 . "<OR") (0 . "*TEXT,MULTILEADER,ATTDEF") (-4 . "<AND") (0 . "INSERT") (66 . 1) (-4 . "AND>") (-4 . "OR>") ) ) ) (cond (js (repeat (setq n (sslength js)) (setq ename (vlax-ename->vla-object (ssname js (setq n (1- n))))) (cond ((vlax-property-available-p ename 'TextString) (string-subst ename) ) (T (mapcar '(lambda (att) (string-subst att) ) (vlax-invoke ename 'GetAttributes) ) ) ) ) ) ) (prin1) )
  20. bonuscad

    ANNULATION

    Bonjour, UNDOCTL est bien en lecture seule, pour changer son état, il suffit d'utiliser la commande "ANNULER" ("_UNDO"). Puis prendre l'option "Contrôle" et ensuite "aSsocier"
  21. bonuscad

    gestion d'image raster

    Bonjour, Pour ceux que ça pourrait intéresser, voici comment je gère l'insertion de mes ortho-photo de l'IGN en ECW. Avec cela je n'ai pas besoin de connaître le nom de l'image à insérer, ou utiliser un gabarit initial d'ortho-photo déjà monté. Il suffit que je balade mon curseur sur la zone graphique (celle-ci doit correspondre aux coordonnées IGN, dans mon cas le RGF93) et à cliquer pour que la bonne image s'insère. Ceci n'est qu'un embryon de code qui peut être encore travaillé... mais je vous le présente comme exemple et vous laisse l'adapter à vos besoins et environnement: RECTIFIEZ la variable folder aux chemin de vos ortho-photos, ainsi que img_name pour les chaines de caractères définies en dur (defun trunc (xr / ia) (setq ia (itoa (fix (/ xr 10000.0)))) (strcat (cond ((< (strlen ia) 3) "0") ((< (strlen ia) 2) "00") (T "") ) (if (> (- (fix (/ xr 1000)) (* 10 (fix (/ xr 10000)))) 4) (strcat ia "5") (strcat ia "0") ) ) ) (defun c:BD_ORTHO ( / ent_text dxf_ent key img_name folder) ; (setvar "LIMCHECK" 0) ; (setvar "LIMMIN" '(760000.0 6345000.0)) ; (setvar "LIMMAX" '(855000.0 6485000.0)) (setq ent_text (entmakex (list (cons 0 "MTEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbMText") (cons 1 "") (cons 10 (trans (getvar "VIEWCTR") 0 1)) (cons 40 (/ (getvar "VIEWSIZE") 75.0)); (cons 50 (- 0 (getvar "VIEWTWIST"))) (cons 62 250) (cons 71 7) (cons 72 5) (cons 90 1) (cons 63 255) (cons 45 1.5) ) ) dxf_ent (entget ent_text) ) (while (and (setq key (grread T 4 0)) (/= (car key) 3)) (cond ((eq (car key) 5) (setq img_name (strcat "07-2011-" (trunc (caadr key)) "-" (itoa (+ (atoi (trunc (cadadr key))) 5)) "-LA93.ecw") dxf_ent (subst (cons 10 (trans (cadr key) 1 0)) (assoc 10 dxf_ent) dxf_ent) dxf_ent (subst (cons 1 (strcat "{\\fArial;" img_name "}" )) (assoc 1 dxf_ent) dxf_ent) dxf_ent (subst (cons 40 (/ (getvar "VIEWSIZE") 75.0)) (assoc 40 dxf_ent) dxf_ent) ) (entmod dxf_ent) ) ) ) (cond ((eq (car key) 3) (entdel ent_text) (setq folder "K:\\1-BDORTHO\\ORTHO-2011\\BDO_RVB_0M50_ECW_LAMB93_D07-ED11-1\\") (if (findfile (strcat folder img_name)) (progn (princ (strcat "\nCharge l'image: " (strcat folder img_name))) (setvar "FILEDIA" 0) (setvar "CMDECHO" 0) (command "_MAPIINSERT" (strcat folder img_name) "_no") (setvar "FILEDIA" 1) (setvar "CMDECHO" 1) ) (progn (setq folder "K:\\1-BDORTHO\\ORTHO-2011\\BDO_RVB_0M50_ECW_LAMB93_D07-ED11-2\\") (if (findfile (strcat folder img_name)) (progn (princ (strcat "\nCharge l'image: " (strcat folder img_name))) (setvar "FILEDIA" 0) (setvar "CMDECHO" 0) (command "_MAPIINSERT" (strcat folder img_name) "_no") (setvar "FILEDIA" 1) (setvar "CMDECHO" 1) ) (princ (strcat "\nL'image " img_name " est introuvable!")) ) ) ) ) ) (prin1) ) NB: La commande "_MAPIINSERT" pourrait être remplacé par "_imageattach" pour un AutoCad classique puisqu'on a récupérer les coordonnées pour constitué le nom de l'image (variable img_name)
  22. bonuscad

    Copie incrémentale

    Salut, Je pense que tu as mal fait les modifications, mais j'avais aussi mal corrigé une ligne proposée. Voici le code complet, en espérant que celui-ci te convienne... (defun make_blk_measure ( / ) (if (not (tblsearch "STYLE" "$BLK_MEAS")) (entmake '((0 . "STYLE") (5 . "40") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "$BLK_MEAS") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 0.1) (3 . "ARIAL.TTF") (4 . "") ) ) ) (if (not (tblsearch "BLOCK" "BLK_MEASURE_CURVE")) (progn (entmake '((0 . "BLOCK") (8 . "0") (2 . "BLK_MEASURE_CURVE") (70 . 2) (4 . "") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (10 0.0 0.0 0.0)) ) (entmake (append '((0 . "LINE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (100 . "AcDbLine")) (list (list 10 0.0 (/ (- (getvar "TEXTSIZE")) 100.0) 0.0)) (list (list 11 0.0 (/ (getvar "TEXTSIZE") 100.0) 0.0)) '((210 0.0 0.0 1.0)) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (100 . "AcDbText") (10 0.05 0.1 0.0) (40 . 1.0) (1 . "0.0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$BLK_MEAS") (71 . 0) (72 . 1) (11 0.0 0.1 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (3 . "measure") (2 . "VALUE_MEASURE") (70 . 0) (73 . 2) (74 . 2) ) ) (entmake '((0 . "ENDBLK") (8 . "0") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2))) ) ) ) (defun z_dir (p1 p2 / ) (trans '(0.0 1.0 0.0) (mapcar '(lambda (k) (/ k (sqrt (apply '+ (mapcar '(lambda (x) (* x x)) (mapcar '- p2 p1) ) ) ) ) ) (mapcar '- p2 p1) ) 0 ) ) (defun c:mesure_PK ( / js dxf_obj obj_vlax pt_start pt_end total_dist partial_dist ori_dist tmp_var lst_pt increment_dist sv_luprec sv_dzin ang dxf_210 p_fix mantiss) (princ "\nSélectionner un objet curviligne à mesurer: ") (while (not (setq js (ssget "_+.:E:S" (list (cons 0 "*POLYLINE,LINE,ARC,CIRCLE,ELLIPSE,SPLINE") (cons 67 (if (eq (getvar "CVPORT") 2) 0 1)) (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB"))) (cons -4 "<NOT") (cons -4 "&") (cons 70 112) (cons -4 "NOT>") ) ) ) ) (princ "\nCe n'est pas un objet curviligne valable pour cette fonction!") ) (vl-load-com) (setq dxf_obj (entget (ssname js 0)) obj_vlax (vlax-ename->vla-object (ssname js 0)) pt_start (vlax-curve-getStartPoint obj_vlax) pt_end (vlax-curve-getEndPoint obj_vlax) total_dist (vlax-curve-getDistAtParam obj_vlax (vlax-curve-getEndParam obj_vlax)) partial_dist 50.0 ) (setq ori_dist (getreal "\nPK de départ 0+000 <0.0>: ")) (if (not ori_dist) (setq ori_dist 0.0)) (cond ((> total_dist partial_dist) (initget 6) (setq tmp_var (getdist (strcat "Entrez une nouvelle valeur pour TEXTSIZE <" (rtos (getvar "TEXTSIZE")) ">: "))) (if (not tmp_var) (setq tmp_var (getvar "TEXTSIZE"))) (setvar "TEXTSIZE" tmp_var) (make_blk_measure) (setq sv_luprec (getvar "LUPREC") sv_dzin (getvar "DIMZIN") ) (setvar "DIMZIN" 0) (setq lst_pt (list pt_start) increment_dist (rem (- 1000.0 (atoi (substr (rtos ori_dist 2 3) (+ 2 (vl-string-search "." (rtos ori_dist 2 3)))))) 50) ) (setvar "CMDECHO" 1) (command "_.luprec" 0) (while (< increment_dist total_dist) (setq lst_pt (cons (vlax-curve-getPointAtDist obj_vlax increment_dist) lst_pt) increment_dist (+ increment_dist partial_dist) ) ) (setq lst_pt (reverse (cons pt_end lst_pt))) (foreach n lst_pt (setq ang (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv obj_vlax (vlax-curve-getParamAtPoint obj_vlax n))) dxf_210 (z_dir n (polar n ang (* 0.1 partial_dist))) p_fix (atoi (rtos (/ (vlax-curve-getDistAtPoint obj_vlax n) 1000.0) 2 3)) mantiss (+ (- (vlax-curve-getDistAtPoint obj_vlax n) (* p_fix 1000.0) ) (atoi (substr (rtos ori_dist 2 3) (+ 2 (vl-string-search "." (rtos ori_dist 2 3))))) ) ) (if (or (equal mantiss 1000.0 1E-3) (> mantiss 1000.0)) (setq p_fix (1+ p_fix) mantiss (- mantiss 1000))) (if (zerop (fix mantiss)) (setq mantiss "000") (if (eq (strlen (itoa (fix mantiss))) 2) (setq mantiss (strcat "0" (rtos mantiss 2 0))) (setq mantiss (rtos mantiss 2 0)) ) ) (entmake (list (cons 0 "INSERT") (cons 100 "AcDbEntity") (assoc 67 dxf_obj) (assoc 410 dxf_obj) (cons 8 (getvar "CLAYER")) (cons 100 "AcDbBlockReference") (cons 66 1) (cons 2 "BLK_MEASURE_CURVE") (cons 10 (trans n 0 dxf_210)) (cons 41 (* 0.1 partial_dist)) (cons 42 (* 0.1 partial_dist)) (cons 43 (* 0.1 partial_dist)) (cons 50 ang) (cons 210 dxf_210) ) ) (entmake (list (cons 0 "ATTRIB") (cons 100 "AcDbEntity") (assoc 67 dxf_obj) (assoc 410 dxf_obj) (cons 8 (getvar "CLAYER")) (cons 100 "AcDbText") (cons 10 (polar (polar (trans n 0 dxf_210) (+ (/ pi 2) ang) (* 0.1 partial_dist)) ang (* 0.05 partial_dist) ) ) (cons 40 (getvar "TEXTSIZE")) (cons 1 (strcat "PK " (itoa (+ p_fix (fix ori_dist))) "+" mantiss ) ) (cons 50 ang) (cons 41 1.0) (cons 51 0.0) (cons 7 "$BLK_MEAS") (cons 71 0) (cons 72 1) (cons 11 (polar (trans n 0 dxf_210) (+ (/ pi 2) ang) (* 0.1 partial_dist))) (cons 210 dxf_210) (cons 100 "AcDbAttribute") (cons 2 "VALUE_MEASURE") (cons 70 0) (cons 73 2) (cons 74 2) ) ) (entmake (list (cons 0 "SEQEND") (cons 8 (getvar "CLAYER")) (cons 62 0) (cons 6 "ByBlock") (cons 370 -2))) ) (setvar "LUPREC" sv_luprec) (setvar "DIMZIN" sv_dzin) ) (T (princ "\nLa longueur est trop grande pour l'objet!")) ) (prin1) ) NB: Si le block BLK_MEASURE_CURVE est déjà présent dans le dessin, penser à purger celui-ci avant de réessayer le code.
  23. bonuscad

    Copie incrémentale

    C'est vrai que je l'ai conçu pour de la cotation kilométrique... Néanmoins on peut essayer de modifier certain trucs! dans la partie ATTDEF changer: (50 . 1.570796326794896);rotation pi/2 .. (72 . 0);justification gauche en (50 . 0) (72 . 1) pour une rotation de 0 et justification centre Dans la partie (defun c:mesure_PK changer: partial_dist 1000.0 en partial_dist 50.0 et increment_dist (- 1000.0 (atoi (substr (rtos ori_dist 2 3) (+ 2 (vl-string-search "." (rtos ori_dist 2 3)))))) en increment_dist (- 50.0 (atoi (substr (rtos ori_dist 2 3) (+ 2 (vl-string-search "." (rtos ori_dist 2 3)))))) et dans la partie ATTRIB (en homogénéité avec ATTDEF) changer: (cons 50 (+ (/ pi 2) ang)) en (cons 50 ang) et (cons 72 0) en (cons 72 1) Cependant les préfixes résultants en +050 vont s'écrire +50, un "rechercher-remplacer" judicieux devrait pouvoir palier à ce petit inconvénient.
  24. bonuscad

    Copie incrémentale

    Bonjour, J'avais fait ceci: mesure_PK.lsp Je l'avais publié sur CadXp, faire une recherche avec le mot mesure_PK sur le site pour avoir l'historique et les ajustements éventuels demandés.
  25. Salut, Donc le même épuré... (defun errlsp (ch) (cond ((eq ch "Function cancelled") nil) ((eq ch "quit / exit abort") nil) ((eq ch "console break") nil) (T (princ ch)) ) (setvar "cmdecho" v1) (setvar "orthomode" v2) (setvar "osmode" v3) (setvar "blipmode" v4) (setvar "snapang" v5) (setq *error* olderr) (princ) ) (defun C:PENTE ( / v1 v2 v3 v4 v5 d_pc p_o p_f dlt_x d olderr) (setq v1 (getvar "cmdecho") v2 (getvar "orthomode") v3 (getvar "osmode") v4 (getvar "blipmode") v5 (getvar "snapang") ) (setvar "cmdecho" 0) (setvar "orthomode" 0) (setvar "blipmode" 0) (setq olderr *error* *error* errlsp) (initget 1) (setq d_pc (getreal "\nEntrer la valeur de la pente (rampe) en % ?: ")) (initget 8) (setq p_o (getpoint "\nPoint de départ : ")) (if (eq p_o ()) (setq p_o (getvar "lastpoint"))) (setvar "snapang" (atan (/ d_pc 100.0))) (setvar "orthomode" 1) (initget 41) (setq p_f (getpoint p_o "\nPoint final : ")) (setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384))) (setq dlt_x (- (car p_f) (car p_o))) (setq d (/ dlt_x (cos (atan (/ d_pc 100.0))))) (command "_.line" p_o (polar p_o (atan (/ d_pc 100.0)) d) "") (setvar "cmdecho" v1) (setvar "orthomode" v2) (setvar "osmode" v3) (setvar "blipmode" v4) (setvar "snapang" v5) (setq *error* olderr) (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é