Aller au contenu

[Résolu] Interface avec insertion de bloc en fonction de critères


Messages recommandés

Posté(e)

Bonjour à tous

Je cherche à monter une petite application autocad pour ma boité. Le but est de créer une interface graphique où l'utilisateur peut sélectionner les éléments composants sa centrale de traitement d'air et une fois sélectionnés, il ne lui reste plus qu'à choisir le point d'insertion. Les éléments sont des blocs déja créés et stocker sur notre serveur. Ensuite chaque bloc aura ses propres attributs que l'on renseigne manuellement ou que je liaisonne avec une feuille excel (à voir en fonction de mes compténce).

 

Mon problème est que je ne vois pas comment je peux appeler en vba autocad les blocs stockés sur le serveur. La création de l'interface grahique ne m'a posé aucun problème.

 

Je pensais si récuperer ces blocs est impossible les créer dans la macro vba en ployligne avec des coordonnées de points en fonction des éléments choisis. Mais je ne sais pas ce qui est le plus simple.

 

Pourriez-vous m'orienter un peu.

 

Merci d'avance.

 

[Edité le 15/3/2006 par g_barthe]

Vous voulez parler de génie climatique et poser vos questions alors venez par ici : http://le-genie-climatique.positifforum.com

Les loisirs créatifs vous tentent : http://pausebroderie.fr

Posté(e)

Bonjour,

Je ne suis pas certain d'avoir bien compris;

Il semble qu'il s'agit d'issérer des blocs dans un dessin en demandant à Autocad d'allé cherché les coordonnées d'insertion ainsi que les éventuels attributs dans un fichiers excel. Joli !

Si c'est cela je déclarerai les blocs dans VBA comme cela :

Dim objBloc As AcadBlockReference

Pour les attribut :

Dim varAttrib As Variant

Le blème c'est de faire le lien entre la lecture dans excel et l'exécution dan Autocad.

Si je peut me permettre j'imagine 2 modules VBA

Dit moi si j'ai bon!

A plus

Posté(e)

C'est a peu pres ca sauf que les blocs sont des blocs autocad en fichier dwg et qu'il faut que je les insere en specifiant l'arborenscence windows

 

Excel me sert à remplir les attribut du bloc.

 

Je ne demande pas de me faire le programme bien sur mais juste quelques explications sur les objets vba a utiliser et un peu la méthode voir des sites internet sur lesquels je pourrais trouiver qq tutoriel ou manuels traitant un peu ce gene de sujet.

 

Merci @tous

Vous voulez parler de génie climatique et poser vos questions alors venez par ici : http://le-genie-climatique.positifforum.com

Les loisirs créatifs vous tentent : http://pausebroderie.fr

Posté(e)

Re

Justement, je pense que l'onpeut demander à VBA de lire dans excel le nom , les points d'insetion , l'echelle , les Attributs et tout et tout .

Puis d'aller chercher n'importe ou dans l'arborescence de Windows n'importe quel bloc

Il doit falloir indiquer les cas possible à VBA avec le mot clef Select Case

Un bouquin VBA pas mal ( à mon avis ) : VBA pour Autocad

www.newz.net/acadplus

A plus

 

Posté(e)

Salut,

Bon, je vais essayé de faire simple :

Dim CoordPnt As Variant

Dim dblRotation As Double

Dim ObjBlock As AcadBlockReference

 

With ThisDrawing.Utility

.InitializeUserInput 1

varInsertionPoint = .GetPoint(, vbCr & "Point d'insertion du block: ")

.InitializeUserInput 1

dblRotation = .GetAngle(varInsertionPoint, vbCr & "Angle de rotation: ")

End With

'If varInsertionPoint = "" Or dblRotation ="" Then Exit Sub

ThisDrawing.ModelSpace.InsertBlock varInsertionPoint, "S:\Config\Phalène\Symboles\Lpd-Mt-c.dwg", Echelle X, Echelle Y, Exhelle Z, dblRotation

Voilà, c'est avec un truc beaucoup plus compliqué que j'ai apris, si je peu dire, le truc ! !

 

Bon courage...

Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Posté(e)

Je ne veux pas m'immisser mais pourquoi pas utiliser le Desgin Center (CTRL+2) ?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
  • 6 mois après...
Posté(e)

Salut,

 

A l'époque j'ai du zappé ce message, ci joint le code que j'utilise. En effet, j'utilise ce principe de liaison Autocad -> Excel pour une gestion de "cartouche" pour les impressions automatiques de carnets de détails :

 

 

Sub InMemoireCart()

 

Set LinkXls = CreateObject("Excel.Sheet")

Set Xlsgest = LinkXls.Application.Workbooks

on error goto fermeture_xls

 

[surligneur]' lit un fichier .ini avec le chemin d'accès du programme[/surligneur]

ReadIni

 

Xlspath = ProgPath & "data\cartouche.xls"

Xlsgest.Open Xlspath

 

NombrCart = 30

ReDim NomCart(1 To NombrCart) As Variant

ReDim AngCart(1 To NombrCart) As Variant

ReDim ScaleCart(1 To NombrCart) As Variant

ReDim P1X(1 To NombrCart) As Variant

ReDim P1Y(1 To NombrCart) As Variant

ReDim P2X(1 To NombrCart) As Variant

ReDim P2Y(1 To NombrCart) As Variant

ReDim TypeCart(1 To NombrCart) As Variant

 

For i = 1 To NombrCart

 

[surligneur]' Nom du bloc[/surligneur]

NomCart(i) = LinkXls.Application.ActiveWorkbook.ActiveSheet.Cells((i + 1), 1)

 

[surligneur]' Orientation du cadre[/surligneur]

Angle = LinkXls.Application.ActiveWorkbook.ActiveSheet.Cells((i + 1), 3)

AngCart(i) = ac0degrees

If Angle = "PORTRAIT" Then AngCart(i) = ac0degrees

If Angle = "PAYSAGE" Then AngCart(i) = ac270degrees

 

[surligneur]' Echelle necessaire pour imprimer dans A4[/surligneur]

ScaleCart(i) = LinkXls.Application.ActiveWorkbook.ActiveSheet.Cells((i + 1), 8)

 

[surligneur]' Point bas gauche (x et y)[/surligneur]

P1X(i) = LinkXls.Application.ActiveWorkbook.ActiveSheet.Cells((i + 1), 4)

P1Y(i) = LinkXls.Application.ActiveWorkbook.ActiveSheet.Cells((i + 1), 5)

 

[surligneur]' Point haut droit (x et y)[/surligneur]

P2X(i) = LinkXls.Application.ActiveWorkbook.ActiveSheet.Cells((i + 1), 6)

P2Y(i) = LinkXls.Application.ActiveWorkbook.ActiveSheet.Cells((i + 1), 7)

 

[surligneur]' Type de cartouche (PDG, Folio, Sommaire, Copyright)[/surligneur]

TypeCart(i) = LinkXls.Application.ActiveWorkbook.ActiveSheet.Cells((i + 1), 9)

 

Next i

 

Fermeture_xls:

LinkXls.Application.Quit

Set LinkXls = Nothing

End Sub

 

Le fichier Xls n'a qu'une feuille (d'ou la raison du activesheet), et la ligne 1 du fichier Xls est le titre des colonnes (i+1) .

 

Voila,

 

--

Christophe Rosé

 

[Edité le 11/10/2006 par Chrisfs]

Posté(e)

Mon problème est que je ne vois pas comment je peux appeler en vba autocad les blocs stockés sur le serveur

 Set ObjBlockEpDalle = ThisDrawing.ModelSpace.InsertBlock _
           (PtInsertBloc, "\\Serveur\D\RepertoireDesBlocs\Blocs_100\MonBloc.dwg", 1, 1, 1, 0)

Je pensais si récuperer ces blocs est impossible les créer dans la macro vba en ployligne avec des coordonnées de points en fonction des éléments choisis. Mais je ne sais pas ce qui est le plus simple.

Insérer un bloc est plus facile que de le créer, surtout s'il est complexe....enfin, j'ai peut-être rien compris.

pour le reste, DeniH et Chrisfs t'ont donné le nécessaire.

Bonne chance

Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é