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. Oops, je reviens sur ce que j'ai dit. Ce que j'ai décrit et pour l'expression %<\AcDiesel>% Par contre, ce que tu demandes %<\AcExpr>% (formules) ne s'applique qu'aux tableaux d'autocad. Donc pour ce que tu veux faire, les formules ne conviennent pas, il te faut effectivement passer par le diesel. Pour l'obtenir, choisir "Autre" dans "Catégorie de champ" et prendre "ExpressionDiesel" Bon courage!
  2. Difficile de dire comme cela, je pense (mais je peux me tromper) que c'est la valeur d'OSMODE qui est retournée. Donc: (- 16384 14847) -> 1537 1537 -> (+ 1024 512 1) 1024 Annule tous les accrochages aux objets. 512 PROche 1 EXTREmité A mon avis tu avais ces 3 modes d'actif avant d'inactiver l'accroche objet. NB: 1 - Je n'ai pas réussi à reproduire ce que tu décrit. 2 - La définition de ce qui est dit pour la valeur 1024 dans l'aide à propos d'OSMODE correspond (dans les anciennes versions d'Autocad) au mode rapide d'accrochage (le terme "Annule" employé ne me convient pas, à moins que quelque chose m’aie échappé)
  3. Oui c'est cela, avec les contrainte que l'on connaît: le langage diesel est un évaluateur de chaîne, donc on se retrouve limité en longueur d'évaluation (255 caractères de souvenir il me semble) En plus l'imbrication d'évaluation n'est pas toujours évidente, il n'y a qu'a voir les soucis évoqués par le GRAND DIESELISTE; notre ami Rebcao!
  4. Bonjour, Depuis l'apparition des sous-classe (code DXF 100), on est obligé de fournir ces classes pour que la liste soit valide pour entmake, il n'y a pas de valeur par defaut. Comme tu l'as fait d'ailleurs pour l'entité LAYER. Donc: (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(8 . "005_kpanel") '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) (cons 10 v1) (cons 10 v2) (cons 10 v3) (cons 10 v4) );_list );_entmake devrait fonctionner sans problème
  5. Nostalgie! Mes premiers pas se sont fait sur les news de man and machine d'Ivan Messeguer. La disparition de celui-ci m'a fait migrer sur des sites plus actifs en français, dont notamment CadXp. Maintenant c'est moi qui suis moins actif... :P
  6. Alors le même exemple approfondi à une polyligne et en créant le décalage. (vl-load-com) ((lambda ( / js dxf_obj obj_vlax p10 deriv p11 px v1 v2 det_or e_width) (princ "\nSélectionner une polyligne: ") (while (not (setq js (ssget "_+.:E:S" (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 112) (cons -4 "NOT>") ) ) ) ) (princ "\nCe n'est pas une polyligne!") ) (setq dxf_obj (entget (ssname js 0)) obj_vlax (vlax-ename->vla-object (ssname js 0)) ) (initget 1) (setq p10 (vlax-curve-getStartPoint obj_vlax) deriv (vlax-curve-getfirstderiv obj_vlax (vlax-curve-getStartParam obj_vlax)) p11 (polar p10 (atan (cadr deriv) (car deriv)) (distance p10 (vlax-curve-getEndPoint obj_vlax))) v1 (mapcar '- p10 p11) v2 (mapcar '- p10 (setq px (getpoint p10 "\nDécaler par le point?: "))) det_or (apply '(lambda (x1 y1 z1 x2 y2 z2) (- (* x1 y2) (* y1 x2))) (append v1 v2) ) e_width (distance p10 px) ) (cond ((> det_or 0.0) (vla-Offset obj_vlax (- e_width))) ((< det_or 0.0) (vla-Offset obj_vlax e_width)) ) (prin1) ))
  7. bonuscad

    TEXTE ALIGNE POLYLIGNE

    Les polylignes 3D ayant aussi la propriété "Length", il suffit d'étendre le filtre à celles-ci. J'ai modifié le code précédent.
  8. bonuscad

    TEXTE ALIGNE POLYLIGNE

    Avec un champ dynamique. On peut automatiser s'il y en a plusieurs à faire. (vl-load-com) (defun c:Label_Side_Length ( / js htx AcDoc Space n obj ename pr pt deriv rtx nw_obj) (princ "\nSélectionnez des polylignes: ") (setq js (ssget (list (cons -4 "<AND") (cons 0 "*POLYLINE,LINE") (cons -4 "<NOT") (cons -4 "&") (cons 70 112) (cons -4 "NOT>") (cons 67 (if (eq (getvar "CVPORT") 1) 1 0)) (cons 410 (if (eq (getvar "CVPORT") 1) (getvar "CTAB") "Model")) (cons -4 "AND>") ) ) ) (cond (js (initget 6) (setq htx (getdist (getvar "VIEWCTR") (strcat "\nSpécifiez la hauteur du texte <" (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 Longueur")) (vlax-put (vla-add (vla-get-layers AcDoc) "Label Longueur") 'color 96) ) ) (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n))) ename (vlax-ename->vla-object obj) pr (* 0.5 (vlax-curve-getEndParam ename)) pt (vlax-curve-GetpointAtParam ename pr) deriv (vlax-curve-getFirstDeriv ename pr) 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 (setq pt (polar pt (+ rtx (* pi 0.5)) (getvar "TEXTSIZE")))) 0.0 (strcat "{\\fArial|b0|i0|c0|p34;" "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object obj))) ">%).Length \\f \"%lu2%pr2\">%" ) ) ) (mapcar '(lambda (pr val) (vlax-put nw_obj pr val) ) (list 'AttachmentPoint 'Height 'DrawingDirection 'InsertionPoint 'StyleName 'Layer 'Rotation 'BackgroundFill) (list 5 (getvar "TEXTSIZE") 5 pt "Standard" "Label Longueur" rtx 0) ) ) ) ) (prin1) ) Si tu ne veux pas conserver les liens dynamiques (gourmands en ressources), tu explose le résultat pour obtenir des textes classiques.
  9. Alors l-coor2l-pt est une fonction écrite par (gile) que j'ai légèrement modifié... elle sert a convertir une liste produite par exemple par (vlax-get ename 'Coordinates) Car celle-ci une liste sous la forme (X1 Y1 X2 Y2 ... Xn Yn) pour des entités 2D alors que pour des entités 3D c'est sous la forme (X1 Y1 Z1 X2 Y2 Z2 ... Xn Yn Zn) alors qu'en lisp il est plus facile de manipuler les listes qui sont sous la forme '((X1 Y1) (X2 Y2)...)) ou '((X1 Y1 Z1) (X2 Y2 Z2) ...)) La fonction sert à faire cette conversion (l'argument flag) sert à déterminer si la liste fournie est sous la forme 2d ou 3D (nil ou T) Non, elle sert à savoir si la propriété demandé est valable pour l'entité soumise. Par exemple la propriété 'Center pour une ligne n'est pas valable (une ligne n'a pas de centre!), donc retourne nil. C'est (vlax-get ename 'Property) qui retourne la valeurs de la propriété. 'Property pouvant être 'Color 'Center 'Layer 'Coordinates etc...
  10. Et cela le fait aussi dans une autre application qu'Autocad? Par le gestionnaire "Imprimantes et Télécopieur" de windows, un click-droit sur le périph concerné, puis propriété. Vérifier les paramètres sur les différents onglets. Si tu changes quelque chose à ce niveaux, il est bien de refaire un PC3 avec ces nouveaux paramètres.
  11. Content que tu ais enfin compris, surtout que tu devras recommencé l'opération similaire (un peu différente, nécessite l'écriture d'un fichier externe LIN) pour le type de ligne personnalisé. (à moins de prendre un type de ligne standard...) Pour en revenir au bloc, avec (entmake) tu t'ai affranchi d'avoir le fichier bibliothèque présent sur ton disque. Il est défini dans le dessin mais aucunement dans un fichier sur ton disque, pour la portabilité c'est tip.top, pas besoin de fournir des fichiers bibliothèque (DWG) pour que ton lisp fonctionne. Dans l'autre cas tu aurais pu avoir des fichiers placés en dehors des dossiers de recherche par l'utilisateur (donc introuvable même si copié), d'éventuels problème de version de DWG.
  12. Bonjour, En premier lieu essayes avec un nouveau PC3 commande:_plottermanager Assistant pour ajouter un traceur. Une fois fait, réessayer l'impression avec ce nouveau PC3. NB: Parce que des pc3 récupérés de l'ancienne config peut créer des problèmes.
  13. Bonjour Mogo, Ne t'arrête pas à ce détail, je te rappelle que le code donné n'était qu'un exemple et monté assez rapidement. Donc j'ai pris le 1er bloc que j'ai trouvé au fin fond de mon ordi (ressemblant le plus à ton modèle d'origine posté en image), je l'ai décomposé et fait exactement la procédure que je t'ai décrite avec list_for_entmake, sauf que je ne me suis pas attaché/vérifié la cohérence de la représentation du bloc (pour les différentes échelles). Le code n'était monté que pour montrer l'idée de principe et qu'il soit fonctionnel, mais en aucun cas il ne peut être considéré comme abouti. (j'ai fait la définition et la représentation par dessus la jambe, et c'est fort probable que se soit n'importe quoi: je n'ai même pas vérifié ce point). Si ton bloc à toi est bien défini, il te suffit de l'insérer (en mode décomposé) au point 0,0,0 échelle 1 rotation 0 et d'appliquer list_for_entmake sur les entités le constituant pour récupérer leur définition. C'est mieux qu'avec (entget(car(entsel))) proposé par alala, car (entmake) peut ne pas apprécier d'avoir certain code déjà défini (qui doivent être unique: nom d'entité, handle). (entmake) s'occupe tout seul en interne d'attribuer les bon codes pour les groupes -1 330 et 5 et garder ainsi une cohérence dans sa base de donnée.
  14. Bonjour Karmelie, C'est bien d'avoir cherché :) Effectivement j'avais "zappé" que le code DXF 43 était absent dans ces cas là. Il suffit de modifier cette ligne: lst_width (cons (cdr (assoc 43 (entget obj))) lst_width) en lst_width (cons (if (assoc 43 (entget obj)) (cdr (assoc 43 (entget obj))) -1.0) lst_width) J'ai mis -1.0 pour identifier les polylignes à largeur variable (et ainsi laissé 0.0 pour celles qui sont effectivement à zéro), mais rien ne t'empêche de mettre 0.0 si tu en as envie. (conserver le format numérique est plus simple pour moi)
  15. Pour compléter le post #38 de alala je te joins un bout de code pour t'aider à rentrer les informations DXF pour constituer ton bloc dans ton lisp. Démarche: Insère ton bloc au point 0,0,0 avec une rotation de 0.0. Décompose le! Applique le petit bout de code sur chacune des entités constituant ton bloc et copie-colle le retour entre la partie: ( (0 . "BLOCK") (8 . "0") (2 . "candelabre") (70 . 0) (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (10 0.0 0.0 0.0) ) ... et: ( (0 . "ENDBLK") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) ) N'oublies pas de quoter les liste retournées. (defun c:list_for_entmake ( / dxf_cod lremov) (setq dxf_cod (entget (car (entsel))) lremov nil) (foreach n dxf_cod (if (member (car n) '(5 330 -1)) (setq lremov (cons (car n) lremov)))) (foreach m lremov (setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod)) ) (foreach n dxf_cod (print n) ) (prin1) ) Une manière rapide et simple pour constituer ton code pour (entmake) ou avoir rapidement un modèle. Pas besoin de tout recommencer, ce que tu as commencé à écrire n'est pas si mal que ça... Il faut juste améliorer et/ou étoffer (fiabiliser) certaine parties.
  16. bonuscad

    Style de texte "Legend"

    Je crois que cela vient du dictionnaire des réacteurs. Donc tant que ce style est présent dans les dictionnaires, il te sera impossible de le purger. Il te faut supprimer le dictionnaire d'abord, chose que je te déconseille de faire au petit bonheur la chance. Voilà pour les pistes. PS: Pour info c'est le dictionnaire ACAD_TABLESTYLE qu'il faudrait supprimer pour pouvoir purger le style. Ex: (dictremove (namedobjdict) "ACAD_TABLESTYLE") en ligne de commande (à tes risques et périls)
  17. Autrement un petit exemple simple pour la commande coupure. (coupe au milieu de la ligne) Pour les autre commande d'édition se serait le même principe que (list ent p_mid) fait ici. ((lambda ( / p1 p2 p_mid) (initget 1) (setq p1 (getpoint "\n1er point: ")) (initget 1) (setq p2 (getpoint p1 "\n2eme point: ")) (command "_.line" "_none" p1 "_none" p2 "") (setq ent (entlast)) (setq p_mid (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2) (/ (+ (caddr p1) (caddr p2)) 2) ) ) (command "_.break" "_none" (list ent p_mid) "_none" p_mid) ))
  18. Bonjour Mogo, Il te faut penser d'abord qu'on a pas forcément le même environnement que toi. Déjà les parenthèses sont mal appariées dans le code que tu proposes, donc impossible de le charger normalement de façon classique. Une fois chargé, si je le lance, j'obtiens ceci Je n'ai pas le fichier LIN et le Bloc candelabre.dwg approprié et ton programme n'en tient pas compte. Imagine que tu présente ton projet sur une machine quelconque, déjà au départ t'es grillé, l'environnement n'étant pas le même ton programme avorte lamentablement avant d'avoir fait quoi que ce soit. En plus je n'ai pas du tout compris le 1er message "Cliquez dans la direction du réseaux ECP" ??? Ça ne me dit pas trop où je dois cliquer, par rapport à quoi! (pas de curseur élastique) Quand on programme il faut essayer d'avoir des messages clairs et explicites (je sais par expérience que ce qui est évident pour nous ne l'est pas forcément pour les autres) Donc devoir se dépatouiller dès le départ pour corriger et arriver à lancer ton programme nous encourage pas beaucoup. Vu la complexité de ce que tu veux réaliser, il faut plus de rigueur dans le code que tu nous présente et pas simplement une ébauche, qu'on puisse le tester comme il se devrait. Au début quand je programmais (façon script comme toi, hé oui!), je faisais tester par des collègues (sur un autre poste) ma routine, sans leur donner de consigne, comme ça j'avais déjà les réponses sur les points évoqués (environnement et clarté des messages). Quand on programme, il faut savoir se mettre à la place d'un utilisateur non averti et gérer les saisies qu'il peut faire ou mal faire et envisager tout les cas de figure qui peuvent se présenter par rapport à son environnement et à ce niveau là l'utilisation de (command) ne facilite pas la tâche car très dépendant de l'étât des variables en cours. Généralement on ne peut s'affranchir d'une gestion d'erreur (surtout avec command) dans des programmes de ce type. En résumé un programme même inachevé mais un minimum fonctionnel serait le bienvenu.
  19. Bonjour Karmélie, J'ai édité la dernière proposition et rajouté cette info.
  20. La même en allégée... (vl-load-com) (defun c:mult-info_po2CSV ( / js file_name cle f_open key_sep str_sep oldim lst_lay-seg lst_id-seg lst_pt lst_length lst_width id n obj ename pr dist_start dist_end pt_start pt_end seg_len seg_bulge rad alpha) (princ "\nSélectionner les polylignes optimisées.") (while (null (setq js (ssget '((0 . "LWPOLYLINE"))))) (princ "\nSélection vide, ou ce ne sont pas des LWPOLYLINE!") ) (command "_.ddunits" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (setq file_name (getfiled "Nom du fichier a créer ?: " (strcat (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 3)) "csv") "csv" 37)) (if (null file_name) (exit)) (if (findfile file_name) (progn (prompt "\nFichier éxiste déjà!") (initget "Ajoute Remplace annUler _Add Replace Undo") (setq cle (getkword "\nDonnées dans fichier? [Ajouter/Remplacer/annUler] <R>: ") ) (cond ((eq cle "Add") (setq cle "a") ) ((or (eq cle "Replace") (eq cle ())) (setq cle "w") ) (T (exit)) ) (setq f_open (open file_name cle)) ) (setq f_open (open file_name "w")) ) (initget "Espace Virgule Point-virgule Tabulation _SPace Comma SEmicolon Tabulation") (setq key_sep (getkword "\nSéparateur [Espace/Virgule/Point-virgule/Tabulation]? <Point-virgule>: ")) (cond ((eq key_sep "SPpace") (setq str_sep " ")) ((eq key_sep "Comma") (setq str_sep ",")) ((eq key_sep "Tabulation") (setq str_sep "\t")) (T (setq str_sep ";")) ) (setq oldim (getvar "dimzin")) (setvar "dimzin" 0) (setq lst_lay-seg '() lst_id-seg '() lst_pt '() lst_length '() lst_width '() id 0 ) (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n))) ename (vlax-ename->vla-object obj) id (1+ id) pt_start (vlax-curve-GetPointAtParam ename (vlax-curve-getStartParam ename)) seg_len (vlax-curve-GetDistAtParam ename (vlax-curve-getEndParam ename)) lst_lay-seg (cons (cdr (assoc 8 (entget obj))) lst_lay-seg) lst_id-seg (cons (strcat "P" (itoa id)) lst_id-seg) lst_pt (cons pt_start lst_pt) lst_length (cons seg_len lst_length) lst_width (cons (cdr (assoc 43 (entget obj))) lst_width) ) ) (foreach n (reverse (mapcar'list (append (mapcar '(lambda (x) (strcat x str_sep)) lst_lay-seg) (list (strcat "Calque" str_sep))) (append (mapcar '(lambda (x) (strcat x str_sep)) lst_id-seg) (list (strcat "N°" str_sep))) (append (mapcar '(lambda (x) (strcat (rtos x) str_sep)) (mapcar 'car lst_pt)) (list (strcat "Coordonnées X" str_sep))) (append (mapcar '(lambda (x) (strcat (rtos x) str_sep)) (mapcar 'cadr lst_pt)) (list (strcat "Coordonnées Y" str_sep))) (append (mapcar '(lambda (x) (strcat (rtos x) str_sep)) lst_length) (list (strcat "Longueurs" str_sep))) (append (mapcar '(lambda (x) (strcat (rtos x) str_sep)) lst_width) (list (strcat "Largeur globale" str_sep))) ) ) (write-line (apply 'strcat n) f_open) ) (close f_open) (setvar "dimzin" oldim) (prin1) )
  21. Bon j'ai vu que tu as posté le code entre temps. Pourtant tu utilise (handent) ce qui justement te permet d'obtenir le bon ename sans le connaître. Sans mettre plonger dans ton lisp, tu dois mal gérer ta liste de handles que tu veux référencer.
  22. Bonjour, Sans voir la routine... mais d'après ta description, je pense que c'est l'usage de la fonction (entdel ename) pour lequel le c'est le fonctionnement normal. Pour le même nom d'entité cela fait une fonction à bascule, un coup ça l'efface, un coup cela restore celle-ci. Extrait de l'aide lisp
  23. bonuscad

    Express Tools

    Merci de la précision Olivier C'est LeeMac qui en a parlé sur un forum US que je survole en lecture. Excellent :(rires forts): Cela est à l'opposée des "ExpressTools" où l'on devrait passer peu de temps à connaître l’existence de fonctions outils... Peut être suite à un "étiquetage" automatique d'objets ou tu voudrait "dispatché" la disposition rapprochée, ou y appliquer un masque...
  24. Bonjour, Si je comprends bien un "mixe" entre la 1ere et 2eme proposition ferait l'affaire. Alors voici (rajout du calque et indexation des sommets différente) (vl-load-com) (defun c:mult-info_po2CSV ( / js file_name cle f_open key_sep str_sep oldim lst_lay-seg lst_id-seg lst_pt lst_length lst_alpha lst_rad nb id n obj ename pr dist_start dist_end pt_start pt_end seg_len seg_bulge rad alpha) (princ "\nSélectionner les polylignes optimisées.") (while (null (setq js (ssget '((0 . "LWPOLYLINE"))))) (princ "\nSélection vide, ou ce ne sont pas des LWPOLYLINE!") ) (command "_.ddunits" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (setq file_name (getfiled "Nom du fichier a créer ?: " (strcat (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 3)) "csv") "csv" 37)) (if (null file_name) (exit)) (if (findfile file_name) (progn (prompt "\nFichier éxiste déjà!") (initget "Ajoute Remplace annUler _Add Replace Undo") (setq cle (getkword "\nDonnées dans fichier? [Ajouter/Remplacer/annUler] <R>: ") ) (cond ((eq cle "Add") (setq cle "a") ) ((or (eq cle "Replace") (eq cle ())) (setq cle "w") ) (T (exit)) ) (setq f_open (open file_name cle)) ) (setq f_open (open file_name "w")) ) (initget "Espace Virgule Point-virgule Tabulation _SPace Comma SEmicolon Tabulation") (setq key_sep (getkword "\nSéparateur [Espace/Virgule/Point-virgule/Tabulation]? <Point-virgule>: ")) (cond ((eq key_sep "SPpace") (setq str_sep " ")) ((eq key_sep "Comma") (setq str_sep ",")) ((eq key_sep "Tabulation") (setq str_sep "\t")) (T (setq str_sep ";")) ) (setq oldim (getvar "dimzin")) (setvar "dimzin" 0) (setq lst_lay-seg '() lst_id-seg '() lst_pt '() lst_length '() lst_alpha '() lst_rad '() nb 0 id 0 ) (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n))) ename (vlax-ename->vla-object obj) pr -1 id (1+ id) nb 1 ) (repeat (fix (vlax-curve-getEndParam ename)) (setq dist_start (vlax-curve-GetDistAtParam ename (setq pr (1+ pr))) dist_end (vlax-curve-GetDistAtParam ename (1+ pr)) pt_start (vlax-curve-GetPointAtParam ename pr) pt_end (vlax-curve-GetPointAtParam ename (1+ pr)) seg_len (- dist_end dist_start) seg_bulge (vla-GetBulge ename pr) rad (if (zerop seg_bulge) 0.0 (/ seg_len (* 4.0 (atan seg_bulge)))) alpha (if (zerop seg_bulge) (angle pt_start pt_end) 0.0) lst_lay-seg (cons (cdr (assoc 8 (entget obj))) lst_lay-seg) lst_id-seg (cons (strcat "P" (itoa id) "-" (itoa nb)) lst_id-seg) lst_pt (cons pt_start lst_pt) lst_length (cons seg_len lst_length) lst_rad (cons (abs rad) lst_rad) lst_alpha (cons alpha lst_alpha) nb (1+ nb) ) ) (if (eq (vla-get-closed ename) :vlax-false) (setq lst_id-seg (cons (strcat "P" (itoa id) "-" (itoa nb)) lst_id-seg)) (setq lst_id-seg (cons (strcat "P" (itoa id) "-" (itoa (- nb (fix (vlax-curve-getEndParam ename))))) lst_id-seg)) ) (setq lst_pt (cons pt_end lst_pt) lst_lay-seg (cons (cdr (assoc 8 (entget obj))) lst_lay-seg) lst_length (cons 0.0 lst_length) lst_rad (cons 0.0 lst_rad) lst_alpha (cons 0.0 lst_alpha) nb (1+ nb) ) ) ;(write-line (strcat "Sommaire de " (itoa (sslength js)) " LWPOLYLINES") f_open) (foreach n (reverse (mapcar'list (append (mapcar '(lambda (x) (strcat x str_sep)) lst_lay-seg) (list (strcat "Calque" str_sep))) (append (mapcar '(lambda (x) (strcat x str_sep)) lst_id-seg) (list (strcat "N°" str_sep))) (append (mapcar '(lambda (x) (strcat (rtos x) str_sep)) (mapcar 'car lst_pt)) (list (strcat "Coordonnées X" str_sep))) (append (mapcar '(lambda (x) (strcat (rtos x) str_sep)) (mapcar 'cadr lst_pt)) (list (strcat "Coordonnées Y" str_sep))) (append (mapcar '(lambda (x) (strcat (rtos x) str_sep)) lst_length) (list (strcat "Longueurs" str_sep))) (append (mapcar '(lambda (x) (strcat (angtos x) str_sep)) lst_alpha) (list (strcat "Angles" str_sep))) (append (mapcar '(lambda (x) (strcat (rtos x) str_sep)) lst_rad) (list (strcat "Rayons" str_sep))) ) ) (write-line (apply 'strcat n) f_open) ) (close f_open) (setvar "dimzin" oldim) (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é