nazemrap
Membres-
Compteur de contenus
204 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par nazemrap
-
Bonsoir, je me lance dans un challenge de débutant. Afin de sortir de l 'austérité du boulot, je souhaiterais fabriquer un jeu de bonneteau. (vous savez ce jeu de 3 cartes retournées où il faut retrouver la bonne). Ce thème pourrait faire l 'objet de choix d 'évolution. La première étape sera de faire dessiner 3 cartes . Elles seront rectangulaires en polyligne 2d de 10 de large sur 20 de haut, alignées horizontalement, séparées de 10 unités Le moins de lignes de code possible est souhaité, mais les commentaires sont les bienvenus, l 'objectif étant de faire connaître des possibilités d' utilisation. VBA bien sûr. [Edité le 21/10/2007 par nazemrap]
-
Bonjour, en réponse au fil précédent vb, et plus particulièrement Sechanbask, on devrait imiter les lispeurs. Je ne pense pas que l 'on puisse atteidre leur niveau mais ça permettrait d 'évoluer. Il faudrait peut-être instituer des challenges (pas trop durs pour moi). Pour ma part, j 'aimerai bien passer plus de temps sur vb, mais c 'est parfois compliqué d' arriver à tout faire. Le traçage de gaine souple par exemple, m 'interresse beaucoup....? Avis aux "vbïste" et tout ceux qui le souhaitent. Cordialement.
-
Bonjour, il me semble pourtant que la propriété "ConstantWidth" permet cela ? cordialement.
-
Bonjour, je ne sais pas si j 'ai bien compris, mais sous la v2008 au moins, après avoir sélectionné plusieurs "textdyn", en activant "propriétés", il est possible de changer dans la rubrique "texte" la valeur de "index".
-
Bonsoir, j' ai un vba qui peut être testé pour cela, sans garantie. Il faut mettre le nom de l 'étiquette où c 'est indiqué. Je ne sais pas si c'est adèquat ? Dim obj As AcadEntity Dim blocref As AcadBlockReference Dim attributs As Variant Dim strAttributes As String Dim I As Integer Dim ptbase(0 To 2) As Double Dim ptdest(0 To 2) As Double Public Sub place_altitude() ptbase(0) = 0: ptbase(1) = 0: ptbase(2) = 0 ptdest(0) = 0: ptdest(1) = 0: ptdest(2) = 0 Stop For Each obj In ThisDrawing.ModelSpace If obj.ObjectName = "AcDbBlockReference" Then Set blocref = obj attributs = blocref.GetAttributes For I = LBound(attributs) To UBound(attributs) If attributs(I).TagString = "ALTITUDE" Then 'mettre ici entre guillemets l'étiquette en majuscule ptdest(2) = attributs(I).TextString blocref.Move ptbase, ptdest End If Next End If Next End Sub
-
Hello, voici le code à mettre dans un module de classe, renommé ici "EventClass" Public WithEvents blocref As AcadBlockReference Private Sub blocref_Modified(ByVal pObject As IAcadObject) Dim ExcelAppObj As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet MsgBox "coucou, déclenchement de l 'évènement qui va ouvrir excel" 'penser à charger la bib des objets xl Set ExcelAppObj = CreateObject("Excel.application") Set xlBook = ExcelAppObj.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) ExcelAppObj.Application.Visible = True ExcelAppObj.Windows(1).Visible = True End Sub Voici maintenant le code à mettre dans un module normal Dim X As New EventClass Sub bloc_avec_evenement() Dim bloc As AcadBlock Dim centerPoint(0 To 2) As Double Dim insertionPnt(0 To 2) As Double Dim ray As Double Dim cercle As AcadCircle Dim blocins As AcadBlockReference ray = 10 centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0# Set bloc = ThisDrawing.Blocks.Add(centerPoint, "nombloc") Set cercle = bloc.AddCircle(centerPoint, ray) insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0 Set blocins = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "nombloc", 1#, 1#, 1#, 0) Set X.blocref = blocins End Sub Penses à charger la bib excel. Tu exécutes le code de la seconde partie. Un bloc est créé, contenant un cercle puis inséré dans la zone graphique. Lorsque tu déplaceras (par exemple) ce bloc, un message t 'avertiras de l 'ouverture d 'excel. Excel doit s' ouvrir, avec un classeur. Si pas clair ou mauvais fonctionnement, n 'hésites pas.
-
Bonjour, je ne suis pas grand. Je ne sais pas ce que tu envisages par "lorsqu'un bloc est changé" J 'ai un exemple de code qui lance Excel lorsqu 'on intervient sur un bloc. Ceci en utilisant l 'évènement "Modified". Si ça t 'intéresse, fais le moi savoir.
-
Re, Génial !!!!!! ça marche !!! Jamais je n 'aurais penser aller voir ce genre de choses. Si tu peux m 'expliquer pourquoi, je serai moins bête, d' autant plus que ce n 'est pas constant sur tous les postes ?! Encore merci et vive ce forum.
-
Bonjour, merci bien reçu, je teste cela cet après-midi. Je te tiens au courant.
-
Bonsoir, après une installation sur 21 postes de la 2008 en réseau, 3 postes ont de la peine à démarrer lorsqu' ils chargent acadiso. Il semble qu 'après cela fonctionne bien. Je ne sais pas trop par quel bout prendre cela. Que dois-je vérifier ? Si quelqu' un a une idée, je suis preneur. Merci d 'avance
-
Bonjour, dans le paramètrage du plan de coupe en 2D, rubrique "géométrie délimitée", je demande une épaisseur de 0.5. et le résultat pour les lignes épaisses obtenues n' est que partiel ou non conforme. Est-ce que quelqu' un connait cela, ou suis-je passé à côté d'un réglage ? http://www.premiumwanadoo.com/technaulogis/cadxp/plan_coupe_2008.jpg
-
Bonjour, il me semble que dans ton code, le fichier n 'est pas ouvert dans Autocad. j' ai essayé ça en remplacement, ce qui me donne la liste des calques. ' On demande le nom du fichier à ouvrir chemin = Application.GetOpenFilename("Dessins AutoCAD (*.dwg), *.dwg") Cells(1, 1).Value = chemin Set objdessin = GetObject(chemin)
-
Donc effectivement, ta macro n' est pas dispo. Il semble que ton code soit défini au niveau du userform Si tu nous en disais un peu plus à propos de ce que tu souhaites ?
-
Si tu fais "Alt+F8" est-ce que tu vois ta macro ?
-
Est-ce que tu as chargé le projet qui contient ta macro ?
-
Bonsoir, dans la personalisation du bouton, propriétés macro, inscrire : ^C^C-vbarun nom_module.nom_macro
-
Bonjour, en incluant le paramètre visibilité parmi les objets mis à l 'échelle ça ne marche pas ?
-
Bonjour, Pas dans tous les dessins quand même ? Est-ce que par hasard tu n' aurais pas changé ton SCU (le plan XY serait inversé) ? Sur la ligne de commande, inscrits SCU puis valides. Valides ensuite l' option par défaut . Refaits ensuite une cotation ou un texte.
-
Bonsoir, J'utilise un paramètre de déplacement. Dans les propriétés de celui-ci le variateur de distance est mis à 0.5 le point paramètrique est le même que celui du paramètre étirement pour la ligne. Quand j 'étire la ligne, le texte se positionne au milieu. nazemrap
-
Bonsoir, penses-tu qu' il soit accessible ? J'ai pas mal randonné dans la forêt de paimpont, mais pas dans le camp. Voici un lien qui semble évoqué la ruine: http://marzina.free.fr/dept35/f/fg350242.jpg je ne sais pas si elle est très récente ....
-
Bonjour, il me semble que par rapport au code présent rien ne soit affecté à la variable "line" . Et donc "intersectwith" ne peut rien renvoyer. D' autre part, "intersectwith" retourne une variable variant, c'est donc le contenu de cette variable de retour qu' il faut tester.Cela ne semble pas être le cas. Peut-être une piste: Public Sub truc() Dim OBJET As AcadEntity Dim IntCodeDXF(0) As Integer Dim ValCodeDXF(0) As Variant Dim bloc As AcadBlockReference Dim line As AcadLine Dim objJeu As AcadSelectionSet Set objJeu = ThisDrawing.SelectionSets.Add("Jaax") IntCodeDXF(0) = 0: ValCodeDXF(0) = "INSERT" objJeu.SelectOnScreen IntCodeDXF, ValCodeDXF ThisDrawing.Utility.GetEntity line, pt, "sélection de la ligne" For Each OBJET In objJeu Set bloc = OBJET Stop Dim retour As Variant retour = bloc.IntersectWith(line, acExtendNone) If UBound(retour) >= 1 Then MsgBox "oui" Else MsgBox "non" End If
-
Bonjour, si il s' agit de solides imbriqués, les faces de ceux-ci sont sans doute sur le même plan. il faut q'une face soit "plus avancée" que l' autre, même de très peu......
-
Bonsoir, peut-être voir du côté du style de texte utilisé.....
-
Bonjour, Quel dommage (!!!!!):exclam: Copier le code présent ci-dessus. Dans autocad ouvert appuyer sur "ALT" et "F11"(ouverture de vba) menu "insértion" > "module" Coller le code dans le module ouvert. Pour le conserver,"enregistrer" (l' extension sera dvb) Pour l' exécuter retour dans le dessin autocad. "ALT" et "F8" Choisir le nom de la macro bouton "exécuter" J 'espère ne rien avoir oublié ... [Edité le 16/5/2007 par nazemrap]
-
Bonjour, vraiment vite fait un vba qui permet de décaler avec une distance et le nombre de fois, sur les objets indiqués dans le code. J' ai pas tout testé... Public Sub dc_nbfois() Dim obj As AcadEntity Dim reseau As Variant Dim distance As Double Dim combien As Double Dim n As Integer ThisDrawing.Utility.GetEntity obj, pt, "Sélectionnez l' objet" If obj.ObjectName = "AcDbArc" Or _ obj.ObjectName = "AcDbCircle" Or _ obj.ObjectName = "AcDbEllipse" Or _ obj.ObjectName = "AcDbLine" Or _ obj.ObjectName = "AcDbLightweightPolyline" Or _ obj.ObjectName = "AcDbPolyline" Or _ obj.ObjectName = "AcDbSpline" Or _ obj.ObjectName = "AcDbXLine" Then distance = InputBox("Quelle est la valeur du décalage," & vbLf & "négative ou positive," & vbLf & vbLf & "décimales avec la virgule clavier") combien = InputBox("Combien d' objets désirés") End If For n = 1 To combien reseau = obj.Offset(distance * n) Next End Sub
