g_barthe Posté(e) le 10 mars 2006 Posté(e) le 10 mars 2006 Bonjour à tousJe 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
ticticmarc Posté(e) le 10 mars 2006 Posté(e) le 10 mars 2006 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 AcadBlockReferencePour les attribut :Dim varAttrib As VariantLe 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 VBADit moi si j'ai bon!A plus
g_barthe Posté(e) le 10 mars 2006 Auteur Posté(e) le 10 mars 2006 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
ticticmarc Posté(e) le 10 mars 2006 Posté(e) le 10 mars 2006 ReJustement, 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 blocIl doit falloir indiquer les cas possible à VBA avec le mot clef Select CaseUn bouquin VBA pas mal ( à mon avis ) : VBA pour Autocadwww.newz.net/acadplusA plus
DenisHen Posté(e) le 10 mars 2006 Posté(e) le 10 mars 2006 Salut, Bon, je vais essayé de faire simple :Dim CoordPnt As VariantDim dblRotation As DoubleDim 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 SubThisDrawing.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)
Tramber Posté(e) le 10 mars 2006 Posté(e) le 10 mars 2006 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 ./__\. (.°=°.)
GASCON Posté(e) le 10 mars 2006 Posté(e) le 10 mars 2006 Bonjour, avec AutoCAD 2006 il y a les palettes d'outils, et elles font ça très bien
g_barthe Posté(e) le 10 octobre 2006 Auteur Posté(e) le 10 octobre 2006 / [Edité le 10/10/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
Chrisfs Posté(e) le 11 octobre 2006 Posté(e) le 11 octobre 2006 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.Workbookson 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 = 30ReDim NomCart(1 To NombrCart) As VariantReDim AngCart(1 To NombrCart) As VariantReDim ScaleCart(1 To NombrCart) As VariantReDim P1X(1 To NombrCart) As VariantReDim P1Y(1 To NombrCart) As VariantReDim P2X(1 To NombrCart) As VariantReDim P2Y(1 To NombrCart) As VariantReDim 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) = ac0degreesIf Angle = "PORTRAIT" Then AngCart(i) = ac0degreesIf 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.QuitSet LinkXls = NothingEnd 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]
winfield Posté(e) le 16 octobre 2006 Posté(e) le 16 octobre 2006 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.
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant