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 Olivier, J'ai essayer d'approfondir rapidement ce que j'avais fais ICI J'espère que cela pourra te convenir ! (vl-load-com) (defun l-coor2l-pt (lst flag / ) (if lst (cons (list (car lst) (cadr lst) (if flag (+ (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) (caddr lst)) (if (vlax-property-available-p ename 'Elevation) (vlax-get ename 'Elevation) 0.0) ) ) (l-coor2l-pt (if flag (cdddr lst) (cddr lst)) flag) ) ) ) (defun def_bulg_pl (ls lb flag_closed / ls lb rad a l_new) (if (not (zerop flag_closed)) (setq ls (append ls (list (car ls))))) (while (cadr ls) (if (zerop (car lb)) (setq l_new (append l_new (list (car ls)))) (progn (setq rad (/ (distance (car ls) (cadr ls)) (sin (* 2.0 (atan (abs (car lb))))) 2.0) a (- (/ pi 2.0) (- pi (* 2.0 (atan (abs (car lb)))))) ) (if (< a 0.0) (setq a (- (* 2.0 pi) a))) (if (or (and (< (car lb) 0.0) (> (car lb) -1.0)) (> (car lb) 1.0)) (setq l_new (append l_new (reverse (cdr (reverse (bulge_pts (polar (car ls) (- (angle (car ls) (cadr ls)) a) rad) (car ls) (cadr ls) rad (car lb))))))) (setq l_new (append l_new (reverse (cdr (reverse (bulge_pts (polar (car ls) (+ (angle (car ls) (cadr ls)) a) rad) (car ls) (cadr ls) rad (car lb))))))) ) ) ) (setq ls (cdr ls) lb (cdr lb)) ) (append l_new (list (car ls))) ) (defun bulge_pts (pt_cen pt_begin pt_end rad sens / inc ang nm p1 p2 lst) (setq inc (angle pt_cen (if (< sens 0.0) pt_end pt_begin)) ang (+ (* 2.0 pi) (angle pt_cen (if (< sens 0.0) pt_begin pt_end))) nm (fix (/ (rem (- ang inc) (* 2.0 pi)) (/ (* pi 2.0) 36.0))) ) (repeat nm (setq p1 (polar pt_cen inc rad) inc (+ inc (/ (* pi 2.0) 36.0)) lst (append lst (list p1)) ) ) (setq p2 (polar pt_cen ang rad) lst (append lst (list p2)) ) (if (< sens 0.0) (reverse lst) lst) ) (defun c:sel_blk_by_buffer ( / js acadObj AcDoc Space ss_all n ent vla_obj l_blg1 l_blg2 v l_blg e_width ename l_pt nw_pl lst ss nb) (initget 7) (setq e_width (getdist "\nLargeur de la zone tampon: ")) (princ "\nSélectionner les polylignes à bufferiser") (setq js (ssget (list (cons 0 "*POLYLINE") (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 127) (cons -4 "NOT>") ) ) ) (setq acadObj (vlax-get-acad-object) AcDoc (vla-get-ActiveDocument acadObj) Space (if (eq (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (cond (js (vla-ZoomAll acadObj) (setq ss_all (ssadd)) (repeat (setq n (sslength js)) (setq ent (ssname js (setq n (1- n))) vla_obj (vlax-ename->vla-object ent) l_blg1 nil l_blg2 nil ) (cond ((not (vl-catch-all-error-p (vl-catch-all-apply 'vla-Offset (list vla_obj (* 0.5 e_width))))) (setq ename (vlax-ename->vla-object (entlast)) l_pt (l-coor2l-pt (vlax-get ename 'Coordinates) (if (eq (vlax-get ename 'ObjectName) "AcDb2dPolyline") T nil ) ) v -1 ) (repeat (fix (vlax-curve-getEndParam ename)) (setq l_blg1 (cons (vla-GetBulge ename (setq v (1+ v))) l_blg1)) ) (entdel (entlast)) (cond ((not (vl-catch-all-error-p (vl-catch-all-apply 'vla-Offset (list vla_obj (- (* 0.5 e_width)))))) (setq ename (vlax-ename->vla-object (entlast)) l_pt (append l_pt (reverse (l-coor2l-pt (vlax-get ename 'Coordinates) (if (eq (vlax-get ename 'ObjectName) "AcDb2dPolyline") T nil ) ) ) ) v -1 ) (repeat (fix (vlax-curve-getEndParam ename)) (setq l_blg2 (cons (vla-GetBulge ename (setq v (1+ v))) l_blg2)) ) (entdel (entlast)) (setq l_pt (apply 'append (mapcar 'list (mapcar 'car l_pt) (mapcar 'cadr l_pt))) l_blg (append (reverse l_blg1) '(0.0) (mapcar '- l_blg2)) nw_pl (vlax-invoke Space 'AddLightWeightPolyline l_pt) v -1 ) (mapcar '(lambda (x) (vla-SetBulge nw_pl (setq v (1+ v)) x)) l_blg) (vla-put-Closed nw_pl 1) (vla-put-Color nw_pl 1) (vla-put-Normal nw_pl (vla-get-Normal vla_obj)) (vla-put-Elevation nw_pl (vla-get-Elevation vla_obj)) (vla-Update nw_pl) (setq ename (vlax-ename->vla-object (entlast)) lst (def_bulg_pl (l-coor2l-pt l_pt nil) l_blg 0) ss (ssget "_CP" (mapcar '(lambda (x) (trans (trans x ent 0) 0 1)) lst) '((0 . "INSERT"))) nb -1 ) (if ss (repeat (sslength ss) (ssadd (ssname ss (setq nb (1+ nb))) ss_all) ) ) ) ) ) ) ) (sssetfirst nil ss_all) ) ) (prin1) )
  2. Bonjour, Aurais tu plus de facilité avec un code plus simple? Par exemple! (defun c:test ( / js ent l_pt closed lg_seg typ) (while (null (setq js (ssget "_+.:E:S" '((0 . "*POLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 112) (-4 . "NOT>")))))) (setq ent (ssname js 0) l_pt (list (vlax-curve-getEndPoint ent)) closed (vlax-curve-isClosed ent) ) (initget 91) (setq lg_seg (getdist "\nLongueur des segments: ")) (command "_.measure" ent lg_seg) (while (and (= (cdr (assoc 0 (entget (entlast)))) "POINT") (not (equal (entlast) ent)) ) (setq l_pt (cons (cdr (assoc 10 (entget (entlast)))) l_pt)) (entdel (entlast)) ) (setq l_pt (cons (vlax-curve-getStartPoint ent) l_pt)) (cond (l_pt (initget "2D 3D Spline") (setq typ (getkword "\nDessiner une polyligne [2D/3D/Spline]?: ")) (cond ((eq typ "2D") (command "_.pline")) ((eq typ "3D") (command "_.3dpoly")) ((eq typ "Spline") (command "_.spline")) ) (foreach n l_pt (command "_none" n)) (if (eq typ "Spline") (if closed (command "_close" "") (command "" "" "")) (if closed (command "_close") (command "")) ) ) ) (initget "Oui Non") (if (eq (getkword "\nEffacer l'entité source? [Oui/Non] <N>: ") "Oui") (entdel ent) ) (prin1) )
  3. Bonjour, Dans le même esprit que Luna, j'avais publié ceci dans un forum. Cela crée des sommets supplémentaires aux intersections avec d'autres objets NB: Pour cela il faudrait que tes lignes de pliures coupent ou arrivent sur ta polyligne pour que cela fonctionne... (vl-load-com) (defun add_vtx (obj add_pt ent_name / bulg) (vla-addVertex obj (1+ (fix add_pt)) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 1)) (list (car (trans (vlax-curve-getpointatparam obj add_pt) 0 ent_name)) (cadr (trans (vlax-curve-getpointatparam obj add_pt) 0 ent_name)) ) ) ) ) (setq bulg (vla-GetBulge obj (fix add_pt))) (vla-SetBulge obj (fix add_pt) (/ (sin (/ (* 4 (atan bulg) (- add_pt (fix add_pt))) 4)) (cos (/ (* 4 (atan bulg) (- add_pt (fix add_pt))) 4)) ) ) (vla-SetBulge obj (1+ (fix add_pt)) (/ (sin (/ (* 4 (atan bulg) (- (1+ (fix add_pt)) add_pt)) 4)) (cos (/ (* 4 (atan bulg) (- (1+ (fix add_pt)) add_pt)) 4)) ) ) (vla-update obj) ) (defun c:add_vertexAtInt ( / lst_pt js e_name obj js_b nb tmp_name tmp_obj vrt_pt pt) (princ "\nSelect POLYLINE") (while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))) (princ "\nIsn't an object available!") ) (setq obj (vlax-ename->vla-object (setq e_name (ssname js 0)))) (princ "\nSelect cutting objects") (setq js_b (ssget)) (cond (js_b (repeat (setq nb (sslength js_b)) (setq tmp_name (ssname js_b (setq nb (1- nb)))) (cond (tmp_name (setq tmp_obj (vlax-ename->vla-object tmp_name) vrt_pt (vlax-variant-value (vla-IntersectWith obj tmp_obj 0)) ) (if (>= (vlax-safearray-get-u-bound vrt_pt 1) 0) (progn (setq pt (vlax-safearray->list vrt_pt)) (if pt (if (> (length pt) 3) (repeat (/ (length pt) 3) (setq lst_pt (cons (list (car pt) (cadr pt) (caddr pt)) lst_pt) pt (cdddr pt)) ) (setq lst_pt (cons pt lst_pt)) ) ) ) ) ) ) ) (if (and lst_pt (listp lst_pt)) (foreach el lst_pt (add_vtx obj (vlax-curve-getparamatpoint obj (vlax-curve-getClosestPointTo obj (trans el 1 0))) e_name) ) ) ) ) (prin1) )
  4. Pour moi je n'ai pas ce problème (mais je n'ai pas la dernière version d'Autocad; 2024) As tu essayé dans un nouveau dessin pour voir si tu as le même blocage?
  5. Pour compléter tu peux regarder dans le lisp de la ligne 141 à 148 , tu retrouvera les normes. Lors de l'utilisation un fichier .LIN est constitué dans ton dossier contenant le dessin Nom du fichier.dwg.LIN Tu peux ouvrir ce fichier .LIN avec le bloc-note pour visualiser ce qu'il contient.
  6. Normalement tu ne t'occupe de rien, le programme gère les types de ligne suivant la valeur de ECHLTP (_LTSCALE) suivant ces normes Si tu change ECHLTP, tu devra utiliser à nouveau SIGNHZ pour obtenir les bonne dimmension (celle déjà dessinés resteront telle qu'elles sont)
  7. On peut rester dans le système de coordonnées que l'on veut. Néanmoins une recommandation émise par le ministère de l'époque et que les intervenants adoptent le système de projection RGF93 pour toute production numérique. Et si tu veux exploiter par exemple le cadastre, le scan25, la bd_ortho de l'IGN, ceux ci sont fourni en RGF93, donc le choix de cette projection peu faciliter l'échange de fichiers avec d'autres intervenants et homogénéisé l'ensemble de la production. Cela évite aussi des déboires avec des Xref attachés qui ne serait pas dans le même système. Pour moi c'est un bon choix mais il n'est pas obligatoire... NB:Pour ma part j'ai pris l'habitude de mettre en préfixe de mes noms de fichier RGF93_nom du fichier.dwg quand ceux-ci sont référencé avec ce système, comme ça n'importe qui sait à quel système il doit faire référence si il veut exploiter le fichier (plus simple que de chercher à déterminer celui-ci d'après les coordonnées, bien que se soit possible)
  8. Ce lisp contient 3 commandes: SIGNHZ pour paramétrer les polylignes avec les paramètres qui te conviennent. Lance alors la commande POLYLIGN (_PLINE) pour dessiner le type qui convient HZOFF pour basculer la commande polyligne redéfinie en native. HZON pour basculer la commande polyligne native en redéfinie. Si tes polylignes sont déjà tracées, paramètre à l'aide de la commande SIGNHZ puis trace une polyligne temporaire (que tu effacera après) et utilise la commande COPIERPROP (_MATCHPROP) ; icone avec un pinceau, pour appliquer la même définition à ta polyligne existante.
  9. bonuscad

    Carroyage

    Je joins la même fonction, mais celle ci est en Français: plus adapté pour ce forum... J'en ai profité pour rajouter les échelles suggéré par @lecrabe La première utilisation sera peut être déroutante. Il ne faut pas hésiter à bouger le curseur pour visualiser les formats virtuel de A4 assemblés à l'échelle proposée (ceci pour utiliser une plieuse de plan et pouvoir placer un page de garde cohérente au pliage) , et de même pour l'emplacement et/ou la rotation si tu veux un positionnement plus fin. La commande est validée dès que tu clique le coin haut droit. carroyage.lsp
  10. Bonjour, Bien qu'ancien essayes ce lisp qui va te permettre de tracer le marquage au sol avec un autocad standard... signhz.lsp
  11. Merci @Luna, je rajouterais juste un lien (en Anglais) sur les fonctions lisp exclusives à map3D pour @CT_Ko Ça peut toujours servir... https://documentation.help/AutoCAD-Map-3D-2009-AutoLISP/ade_function_catalog.htm
  12. @Lucas Tu peux essayer ceci, cela place des blocs TC_POINT (même sans Covadis) sur les sommets des polylignes sélectionnées (2D/2D+Elevation/3D) Le numéro du sommet est inscrit en incrémentation soit en commençant par un nombre entier une lettre ou la combinaison des deux. Ex: 1 2 3 ..... A B C ... Aa Ab Ac ... A100 A101 A102 Le code est le "Handle" de la polyligne concernée par les insertions. Cela peut te permettre de retrouver facilement dans le dessin la polyligne concernée. par exemple: où "233" serait le code inscrit dans l'étiquette COD de l'attribut du bloc TC_POINT (sssetfirst nil (ssadd (handent "233") (ssadd))) mettra les grip actifs sur cette entité. Les calque des étiquettes peuvent être inactivés ou gelés pour ne laisser que le point visible. BlockTC_POINTAtt2Vtx.lsp
  13. Merci et bravo pour tes commentaires où je retrouve bien ma démarche de montage d'un code. J'aurais pas fait mieux. C'est malheureusement une démarche que j'effectue que très rarement quand je publie un code. Encore merci pour ton travail !
  14. Ou encore (on peut aussi le coller dans un bouton...): ((lambda ( / mod) (initget "Décharger Recharger _Unload Reload") (if (eq (getkword "\nXref à [Décharger/Recharger] en groupe? <Décharger>: ") "Reload") (setq mod '(vla-Reload i)) (setq mod '(vla-Unload i)) ) (vlax-for i (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-Acad-Object))) (if (= (vla-get-IsXref i) :vlax-true) (eval mod) ) ) ))
  15. Bonjour @La Lozère, Ces demandes mineures ont été prises en compte et mises à jour dans le code précédent. Bonne journée !
  16. Et de cette façon? (vl-load-com) (defun c:Label_Cana ( / AcDoc Space nw_style js htx ent_sel ent pt_sel param deriv rtx dir nw_obj) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Space (if (= 1 (getvar "CVPORT")) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (cond ((null (tblsearch "LAYER" "Label-Canalisation")) (vlax-put (vla-add (vla-get-layers AcDoc) "Label-Canalisation") 'color 96) ) ) (cond ((null (tblsearch "STYLE" "Texte-Canalisation")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Texte-Canalisation")) (mapcar '(lambda (pr val) (vlax-put nw_style pr val) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list (strcat (getenv "windir") "\\fonts\\arial.ttf") 0.0 (/ (* 15.0 pi) 180) 1.0 0.0) ) ) ) (princ "\nSélectionnez une polyligne.") (while (setq js (ssget "_+.:E:S" '( (0 . "*POLYLINE") (-4 . "<NOT") (-4 . "&") (70 . 112) (-4 . "NOT>") ) ) ) (if (not htx) (progn (initget 6) (setq htx (getdist (getvar "VIEWCTR") (strcat "\nSpécifiez la hauteur du champ <" (rtos (getvar "TEXTSIZE")) ">: "))) (if htx (setvar "TEXTSIZE" htx) (setq htx (getvar "TEXTSIZE"))) ) ) (setq ent_sel (ssnamex js 0)) (if (not (eq ent (cadar ent_sel))) (progn (setq dir nil) (while (not (member dir '(">" "<" ""))) (setq dir (getstring "\nDirection d'écoulement \"< >\"?\(>\): "))) (if (eq dir "") (setq dir ">")) ) ) (setq ent (cadar ent_sel) pt_sel (cadar (cdddar ent_sel)) obj (vlax-ename->vla-object ent) pt_sel (vlax-curve-getClosestPointTo obj pt_sel) param (vlax-curve-getparamatpoint obj pt_sel) deriv (vlax-curve-getFirstDeriv obj param) rtx (- (atan (cadr deriv) (car deriv)) (angle '(0 0 0) (getvar "UCSXDIR"))) ) (if (or (> rtx (* pi 0.5)) (< rtx (- (* pi 0.5)))) (setq rtx (+ rtx pi))) (setq nw_obj (vla-addMtext Space (vlax-3d-point (polar pt_sel (- rtx (* 0.5 pi)) (vlax-get obj 'ConstantWidth))) (getvar "TEXTSIZE") (strcat (if (eq dir ">") "Ø=" "<-- Ø=") "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID obj)) ">%)." "ConstantWidth" " \\f \"%lu2%pr0%ct8[1000]\">%" " L=" "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID obj)) ">%)." "Length" " \\f \"%lu2%pr2\">%" "ml" (if (eq dir ">") " -->" "") ) ) ) (mapcar '(lambda (pr val) (vlax-put nw_obj pr val) ) (list 'AttachmentPoint 'DrawingDirection 'StyleName 'Layer 'Rotation 'Width 'BackgroundFill) (list 2 5 "Texte-Canalisation" "Label-Canalisation" rtx 0.0 -1) ) ) (prin1) )
  17. Tu peux essayer avec ce code: Il permet de faire une annotation sur 1 ou plusieurs polyligne ayant certaines propriétés communes. Le sens sera demandé pour chaque polylignes. (vl-load-com) (defun c:Label_Cana ( / js obj AcDoc Space nw_style pt htx rtx dir dxf_cod n ename m-param deriv nw_obj lremov) (princ "\nSélectionnez un objet curviligne.") (while (null (setq js (ssget "_+.:E:S" (list '(0 . "*POLYLINE") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) '(-4 . "<NOT") '(-4 . "&") '(70 . 112) '(-4 . "NOT>") ) ) ) ) (princ "\nCe n'est pas un objet curviligne valable pour cette fonction!") ) (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) ) ) (cond ((null (tblsearch "LAYER" "Label-Canalisation")) (vlax-put (vla-add (vla-get-layers AcDoc) "Label-Canalisation") 'color 96) ) ) (cond ((null (tblsearch "STYLE" "Texte-Canalisation")) (setq nw_style (vla-add (vla-get-textstyles AcDoc) "Texte-Canalisation")) (mapcar '(lambda (pr val) (vlax-put nw_style pr val) ) (list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag) (list (strcat (getenv "windir") "\\fonts\\arial.ttf") 0.0 (/ (* 15.0 pi) 180) 1.0 0.0) ) ) ) (initget "Unique Multiple _Single Multiple") (if (eq (getkword "\nSélection filtrée [Unique/Multiple]<M>: ") "Single") (setq n -1) (setq dxf_cod (entget (ssname js 0)) js (ssget "_X" (foreach m (foreach n dxf_cod (if (not (member (car n) '(0 67 410 8 6 62 48 420 70))) (setq lremov (cons (car n) lremov)))) (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod)) ) ) ) ) (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n))) ename (vlax-ename->vla-object obj) pt (vlax-curve-getPointAtDist ename (* (vlax-get ename 'Length) 0.5) ) deriv (vlax-curve-getFirstDeriv ename (vlax-curve-getParamAtPoint ename pt) ) rtx (- (atan (cadr deriv) (car deriv)) (angle '(0 0 0) (getvar "UCSXDIR"))) dir nil ) (if (or (> rtx (* pi 0.5)) (< rtx (- (* pi 0.5)))) (setq rtx (+ rtx pi))) (redraw obj 3) (while (not (member dir '(">" "<" ""))) (setq dir (getstring "\nDirection d'écoulement \"< >\"?\(>\): "))) (if (eq dir "") (setq dir ">")) (redraw obj 4) (setq nw_obj (vla-addMtext Space (vlax-3d-point pt) 0.0 (strcat "Ø=" "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%)." "ConstantWidth" " \\f \"%lu2%pr0%ct8[1000]\">%" "\\P" dir "\\PL=" "%<\\AcObjProp.16.2 Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%)." "Length" " \\f \"%lu2%pr2\">%" "ml" ) ) ) (mapcar '(lambda (pr val) (vlax-put nw_obj pr val) ) (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation) (list 5 (getvar "TEXTSIZE") 5 pt "Texte-Canalisation" "Label-Canalisation" rtx) ) ) (prin1) )
  18. @vitvit2000 C'est assez similaire à ta demande, essayes voir si ça peut te rendre service... BlockAtt2Meas.lsp
  19. @Maxime10 Avant de joindre les lignes fais simplement un ".SELECTRAP" ("_.QSELECT") et dans les propriété choisir "longueur" avec l'opérande "=" à zéro. Le résultat est de 38 lignes nulles Ces lignes n'empêche pas de joindre mais va provoquer des sommets superposés (et ça je pense que la machine à découpe ne vas pas apprécier, mais je n'en sais rien...: un point de sur-fusion? (ce n'est plus un trajet, mais équivalent à un point) Si des personnes ont des infos sur le fonctionnement des machine à découpe laser! Les points de non jonction, je m'en suis aperçu en zoomant très fort (je pense que la commande "joindre" doit avoir un fuzz très faible par défaut car elle accepte ces lignes disjointes). C'est pour çà que j'ai préféré passer par l'arrondissement de toutes les coordonnées, ce qui m'a recréé des lignes de longueur nulle, avant elle devait avoir une valeur très proches de zéro: donc pas vraiment utiles... et peut être a "rebrousse poil"
  20. @Surfy Bonjour, Pour ma part, voici ce que j'ai constaté. Des lignes de longueur nulle -> utilisation d'un filtre pour les supprimer. Des extrémités de lignes qui sont pas coïncidant à 1E-5 environ -> utilisation d'un routine pour arrondir toutes les coordonnées à quatre décimales afin que toutes les extrémité soient de la même précision (Cela ne change pas l'aspect visuel des formes). Re-nettoyage de lignes de longueur nulle après cette opération Transformation de toutes les ligne en polylignes jointes. Utilisation de NETTOYER (_OVERKILL) des ExpressTools pour éliminer des chevauchements de ligne. Modification manuelle de quelques polylignes qui sont fermée par un point de fin identique au point de départ mais n'ont pas la propriété d'être fermées. Enfin décomposition des polylignes en lignes pour revenir à la situation du dessin au départ. Composition d'un DXF en open source (version 2000) avec QCAD. Ce DXF est parfaitement lisible par Autocad ou Qcad (D'ailleurs Qcad permet l'intégration d'un .svg) car j'ai vu que le DXF que tu proposais provenait d'un site Web www.mydxf.blogspot.com Je pense que tu peut soumettre ce DXF à la découpe et qu'il sera valide. DXF-R15.zip
  21. Ce que tu peux faire aussi si tu n'as pas Covadis et que tu veux rendre compatible ton fichier avec celui-ci en créant le bloc TCPOINT. Voici le code approprié à ton dessin pour faire cette conversion. (Faire un copier-coller directement en ligne de commande) (if (not (tblsearch "BLOCK" "TCPOINT")) (progn (entmake '((0 . "BLOCK") (100 . "AcDbEntity") (100 . "AcDbBlockBegin") (2 . "TCPOINT") (70 . 2) (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -2) (10 0.0 0.0 0.0)) ) (entmake '( (0 . "POINT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (62 . 0) (100 . "AcDbPoint") (10 0.0 0.0 0.0) (210 0.0 0.0 1.0) (50 . 0.0) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_MAT") (100 . "AcDbText") (10 0.25 0.25 0.0) (40 . 0.75) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Matricule") (2 . "MAT") (70 . 0) (73 . 0) (74 . 0) (280 . 0) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_COD") (100 . "AcDbText") (10 -0.25 -0.75 0.0) (40 . 0.75) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 -0.25 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "CodeSymbole") (2 . "COD") (70 . 0) (73 . 0) (74 . 3) (280 . 0) ) ) (entmake '( (0 . "ATTDEF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_ALT") (100 . "AcDbText") (10 0.25 -1.0 0.0) (40 . 0.75) (1 . "") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.25 -0.25 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Altitude") (2 . "ALT") (70 . 0) (73 . 0) (74 . 3) (280 . 0) ) ) (entmake '((0 . "ENDBLK") (100 . "AcDbBlockEnd") (8 . "0") (62 . 256) (6 . "ByLayer") (370 . -2))) ) ) (defun TCPoint4 (pt num cod / ) (entmake (append '( (0 . "INSERT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_SEMIS") (100 . "AcDbBlockReference") (66 . 1) (2 . "TCPOINT") (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0) ) (list (cons 10 pt) '(210 0.0 0.0 1.0)) ) ) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_MAT") (100 . "AcDbText") ) (list (cons 10 pt)) '( (40 . 1.0) ) (list (cons 1 num)) '( (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) ) (list (cons 11 pt)) '( (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (280 . 0) (2 . "MAT") (70 . 0) (73 . 0) (74 . 0) (280 . 0) ) ) ) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_COD") (100 . "AcDbText") ) (list (cons 10 pt)) '( (40 . 1.0) ) (list (cons 1 cod)) '( (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) ) (list (cons 11 pt)) '( (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (280 . 0) (2 . "COD") (70 . 0) (73 . 0) (74 . 3) (280 . 0) ) ) ) (entmake (append '( (0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "T_PT_ALT") (100 . "AcDbText") ) (list (cons 10 pt)) '( (40 . 1.0) ) (list (cons 1 (rtos (caddr pt) 2 2))) '( (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) ) (list (cons 11 pt)) '( (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (280 . 0) (2 . "ALT") (70 . 0) (73 . 0) (74 . 3) (280 . 0) ) ) ) (entmake '((0 . "SEQEND") (62 . 256) (6 . "ByLayer") (370 . -2))) ) ((lambda ( / dist_num ang_num ss n pt ss_num num) (setq dist_num 0.25) (setq ang_num (* pi 0.75)) (setq ss (ssget '((0 . "POINT")))) (cond (ss (repeat (setq n (sslength ss)) (setq pt (cdr (assoc 10 (entget (ssname ss (setq n (1- n))))))) (setq ss_num (ssget "_C" pt (polar pt ang_num dist_num) '((0 . "TEXT") (8 . "Textes - Numéros")))) (setq num (cdr (assoc 1 (entget (ssname ss_num 0))))) (TCPoint4 pt num "") ) ) ) ))
  22. En ouvrant le fichier TRF avec un éditeur de texte, je constate que ce fichier de transfert est fait pour une version de Piste 4.00 Donc ouvrir ce fichier avec une version 5.05 peut planter (informations insuffisantes). De plus ce fichier TRF est bizarre, il ne comporte pas le code 999 de fin de fichier, il a l'air incomplet. Pour moi il me semble inexploitable!
  23. Ou alors ceci! (defun c:change_layer_blk&vertex ( / ss_blk ss_poly i ent dxf_ent next_dxf nam_lay lst_pt nw_pt n ent_blk dxf_blk pt_ins) (setq ss_blk (ssget "_X" '((0 . "INSERT") (2 . "DETECT")))) (cond (ss_blk (princ "\nSelect 3Dpolylines") (setq ss_poly (ssget '((0 . "POLYLINE") (-4 . "&=") (70 . 8)))) (cond (ss_poly (repeat (setq i (sslength ss_poly)) (setq ent (ssname ss_poly (setq i (1- i))) dxf_ent (entget ent) next_dxf (entget (entnext (cdar dxf_ent))) nam_lay (assoc 8 dxf_ent) lst_pt nil ) (while (/= (cdr (assoc 0 next_dxf)) "SEQEND") (if (eq (cdr (assoc 70 next_dxf)) 32) (setq nw_pt (cdr (assoc 10 next_dxf)) lst_pt (cons nw_pt lst_pt) ) ) (setq next_dxf (entget (entnext (cdar next_dxf)))) ) (repeat (setq n (sslength ss_blk)) (setq ent_blk (ssname ss_blk (setq n (1- n))) dxf_blk (entget ent_blk) pt_ins (cdr (assoc 10 dxf_blk)) ) (mapcar '(lambda (x) (if (equal (list (car pt_ins) (cadr pt_ins)) (list (car x) (cadr x)) 1E-08) (entmod (subst nam_lay (assoc 8 dxf_blk) dxf_blk)) ) ) lst_pt ) ) ) ) ) ) ) (prin1) )
  24. bonuscad

    Perte de données

    Et que donne la commande "_UnIsolateObjects" ? Peut être que la commande "_HideObjects" a été lancée sur une sélection en cours!
  25. bonuscad

    un carroyage

    Elles sont toutes faites dans ma proposition.
×
×
  • 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é