IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lisp Discussion :

Convertir des polylignes en volumes


Sujet :

Lisp

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Convertir des polylignes en volumes
    Bonjour,

    Je cherche à convertir des polylignes en volumes par le biais d'un code Lisp ou d'un script VB. Le but est de passer un plan 2D d'un immeuble en plan 3D sous AutoCAD 3D par le biais d'une routine.

    Je dispose d'un plan 2D avec des polylignes fermées (chaque polyligne possède un calque propre) et je dispose d'un fichier excel sur lequel est référencé le nom des calques et la hauteur associée à chaque calque.

    Dans mon idée, le code associerait la hauteur du calque à la polyligne en lisant le fichier excel et extruderait la polyligne en fonction de la hauteur associée.

    Je ne sais pas trop si c'est envisageable... Je vous remercie d'avance pour vos remarques, vos conseils et pour votre aide.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Solution !
    Solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    (defun c:Ex-polys (/ *error* Deconstruct_Strings f st ss i sn lst s cm l)
    ;;; 	------======= Author : Tharwat Al Shoufi =====-----  ;;;
    ;;; This routine to extrude Polylines according to the       ;;;
    ;;;    value in the second column in the .csv excel file     ;;;
    ;;; Excel file contents example 			     ;;;
    ;;; A			B				     ;;;
    ;;; Layer name1    123.123				     ;;;
    ;;; layer name2    456.456				     ;;;
    ;;; and so on , as much as needed			     ;;;
     
      (vl-load-com)
      (or Doc (setq Doc (vla-get-activedocument (vlax-get-acad-object))))
      (defun *error* (x)
        (if f
          (close f)
        )
        (if cm
          (setvar 'cmdecho cm)
        )
        (vla-EndUndoMark Doc)
        (princ "\n *Cancel*")
      )
      (defun Deconstruct_Strings (string delimiter / pos lst)
        (while (setq pos (vl-string-search delimiter string 0))
          (progn (setq lst (cons (substr string 1 pos) lst))
                 (setq string (substr string (+ pos 2) (strlen string)))
          )
        )
        (if string
          (setq lst (cons string lst))
        )
        (setq lst (reverse lst))
      )
      (if (and (setq ss (ssget "_:L" '((0 . "*POLYLINE"))))
               (setq f (getfiled "Select Excel file" (getvar 'dwgprefix) "csv" 16))
          )
        (progn (setq f (open f "r"))
               (while (setq st (read-line f))
                 (setq s (Deconstruct_Strings st ";"))
                 (setq lst (cons (list (car s) (read (cadr s))) lst))
               )
               (close f)
               (setq cm (getvar 'cmdecho))
               (setvar 'cmdecho 0)
               (vla-EndUndoMark Doc)
               (vla-StartUndomark Doc)
               (repeat (setq i (sslength ss))
                 (setq sn (ssname ss (setq i (1- i))))
                 (setq l (cdr (assoc 8 (entget sn))))
                 (foreach x lst
                   (if (and (eq (strcase l) (strcase (car x))) (numberp (cadr x)))
                     (progn (vl-cmdf "_.extrude" sn "" (cadr x)) (vl-cmdf "_.chprop" (entlast) "" "_layer" l ""))
                   )
                 )
               )
               (vla-EndUndoMark Doc)
               (setvar 'cmdecho cm)
        )
      )
      (princ "\n Written by Tharwat Al Shoufi")
      (princ)
    )
    Attention à ne pas mettre des virgules à la place des points dans le fichier .csv...

    Merci à Tharwat Al Shoufi

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Angier Voir le message
    Solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (defun c:Ex-polys (/ *error* Deconstruct_Strings f st ss i sn lst s cm l)
    ...
                 (setq s (Deconstruct_Strings st ";"))
    ...
    )
    Attention à ne pas mettre des virgules à la place des points dans le fichier .csv...

    Merci à Tharwat Al Shoufi
    Je suppose que tu voulais dire 'point-virgule' et non 'point', non?

    Avec un csv à virgules, il suffit probablement (à tester) de remplacer la ligne précédente par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (defun c:Ex-polys (/ *error* Deconstruct_Strings f st ss i sn lst s cm l)
    ...
                 (setq s (Deconstruct_Strings st ","))
    ...
    )
    HTH
    )jack(

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir des polylignes en volumes via un script VB
    Par Angier dans le forum VBScript
    Réponses: 2
    Dernier message: 16/01/2013, 15h36
  2. [Eclipse 3.0.1] Convertir des sources Dos en Unix
    Par Bicnic dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 22/09/2009, 16h38
  3. [Fonction SQL Serveur] convertir des secondes en heure
    Par falcon dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/11/2004, 17h22
  4. Réponses: 2
    Dernier message: 17/08/2004, 14h27
  5. Convertir des bmp en jpeg
    Par chris56 dans le forum Linux
    Réponses: 8
    Dernier message: 10/10/2003, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo