Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/01/2013, 09h58   #1
Angier
Invité de passage
 
Homme
Inscription : janvier 2013
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2013
Messages : 7
Points : 2
Points : 2
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.
Angier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2013, 14h29   #2
Angier
Invité de passage
 
Homme
Inscription : janvier 2013
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2013
Messages : 7
Points : 2
Points : 2
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 :
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)
)
Angier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2013, 15h36   #3
Angier
Invité de passage
 
Homme
Inscription : janvier 2013
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : janvier 2013
Messages : 7
Points : 2
Points : 2
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 !
Angier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h32.


 
 
 
 
Partenaires

Hébergement Web