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

VBScript Discussion :

Convertir des polylignes en volumes via un script VB


Sujet :

VBScript

  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 via un script VB
    Bonjour,

    Je cherche à convertir des polylignes en volumes par le biais 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 Début de réponse
    J'ai un début de réponse à ma question (envoyé par Tharwat Al Shoufi) mais le test n'est pas concluant. En effet, lorsque je test ce lisp, les polylignes ne sont pas extrudées.

    Est-ce que l'un d'entre vous aurait une idée ? D'où proviens le blocage ?
    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)
    )

  3. #3
    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 avec le lisp précédent en vidéo : http://www.youtube.com/watch?v=4l20M...ature=youtu.be

    Et cela marche super bien ! A condition de ne pas mettre de virgule dans le fichier .csv au lieu de point !

    Merci à Tharwat Al Shoufi pour son aide !

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

Discussions similaires

  1. Convertir des polylignes en volumes
    Par Angier dans le forum Lisp
    Réponses: 2
    Dernier message: 17/01/2013, 13h47
  2. Elévation des droits via un script
    Par Valère dans le forum Windows 2000/Me/98/95
    Réponses: 2
    Dernier message: 01/03/2010, 17h29
  3. Réponses: 1
    Dernier message: 20/05/2009, 17h33
  4. [Gimp] Automatiser des tâches via un script.
    Par Zaltymbunk dans le forum Imagerie
    Réponses: 3
    Dernier message: 13/01/2009, 11h17
  5. Réponses: 1
    Dernier message: 12/10/2006, 16h48

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