Aller au contenu

sechanbask

Membres
  • Compteur de contenus

    1 013
  • Inscription

  • Dernière visite

Tout ce qui a été posté par sechanbask

  1. j'ai l'impression que ton calque dans lequel tu veux mettre tes objet n'est pas créer, je me trompe ? je te donnes 2 solutions : Comme au début, je ne savait qu'on pouvais déplacer de calque un objet, j'utilisais la méthode 1 puis j'ai utilisé le code précédent mais uniquement quand je veux déplacer 1 ou 2 objets. méthode 1 : récupérer le calque actif dim strCalqueCourant as string strCalqueCourant = ThisDrawing.ActiveLayer.Name pour créer un calque dim newlayer1 as acadlayer Set newlayer1 = ThisDrawing.layers.Add("12-texte") pour le rendre actif ThisDrawing.ActiveLayer = ThisDrawing.layers("12-texte") là je créé mes nouveaux objets qui arrivaient dans le calque actif : 12-texte puis je remettais l'ancien calque ThisDrawing.ActiveLayer = ThisDrawing.layers(strCalqueCourant) et puis j'ai découvert la méthode 2: pour mettre un objet dans un calque précis: Dim splineObj As AcadSpline dim actlayer as string actlayer = "12-texte" With splineObj .Layer = actlayer .Update End With j'espère que ça t'aidera. Bon courage !
  2. j'ai 0 à la variable acadlspasdoc mais je ne sais pas si je charge AutoCAD.lsp puisque que j'ai mis le lisp pour la macro commande dans acaddoc.lsp dans un dossier support : le dossier "Support". je ne vois pas comment avec ton code, je dois le rajouter à celui de (gile) et comment il faut faire pour formater ce qui apparait à l'écran...
  3. pour moi depuis que j'ai le lisp de (gile) le nom du plan s'affiche, mais ne change plus quand je change de plan... donc ça n'a plus d'utilité, je dois avoir un problème de variable pour le chargement du lisp non?? Patrick_35 en plein écran, il n'y a plus de barre titre, c'est pourquoi j'utilise modemacro !!!
  4. sechanbask

    VB.NET

    lavantage du VB ou VBA externe à autocad c'est qu'il peut intenter autocad et autocad LT... j'avais un code fabuleux sur le forum d'autodesk mais mon PC est en rade de DD, si j'arrive à récupérer mes données dans le WE...
  5. pour connairte Pi j'utilise la fonction suivante au lieu de me souvenir des nombre : Pi = 4 * Atn(1) bon courage pour la suite moi, je suis toujours en rade de PC... P.S. pour l'imput box, moi je préfère car je trouve ça plus fluide : thisdrawing.utility.getreal J'espère que je ne me suis pas trompé dans la syntaxe... [Edité le 25/10/2007 par sechanbask]
  6. merci (gile) Est-ce possible de formater la variable pour enlever l'extension. Car j'ai vraiment pas besoin de voir que je suis sur un DWG, car je suis toujours sur un Dwg... et mieux encore, serait-il possible de modifier la casse pour indiquer que le fichier est en lecture seule ? ? ? pour poursuivre ce sujet, je me demande s'il serait possible d'envoyer une boite à l'utilisateur pour lui indiquer que ça fait 20 minutes qu'il n'a pas enregistré son plan.... pour ceux qui auront une surprise quand ça plantera...... [Edité le 25/10/2007 par sechanbask]
  7. Tu peux utiliser la fonciton align di te permet de d'aligner en prenant plusieur point de référence... bonne utilisation
  8. est-ce qu'il n'y a pas d'aide dans solidworks dédiée au developpeur (comme c'est le cas dans autocad). regarde aussi dans VBA en faisant F2 tu retrouve toutes les méthodes et les propriétés des objets.. Désolé de ne pas pouvoir d'aider plus... Bon courage
  9. Pour le mettre au démarrage, je pense qu'il faut qu'un lispeur nous aide.... Js pourrais le faire en vba mais ça va pas être simple car il faudra intercepter l'ouverture d'autocad = 2 modules et 20 lignes de code !!! à mon avis eux vont nous faire ça dans les fichier de démarrage en 3 lignes... personnellement j'ai découvert ça aujourd'hui car je fait des truc chiant ou j'ai besoin que des fonctions usuelles alors je dessine en plein écran mais j'avais du mal à savoir sur quel plan je travaillais, et j'ai pensé à mon livre sur le programmation d'eyrolles... pratique non ? merci pour Rtext, j'utilisé les champs dynamiques pour faire ça mais vu que ta fonction fait en sort de changer le texte lorsque le nom du fichier change avec l'incrément des indices. je vais essayer de l'utiliser...
  10. il est possible d'afficher le nom du plan sur lequel on travaille. Le nom apparait en bas à gauche de l'écran juste avant la position du curseur pour cela : taper modemacro puis $(getvar,dwgname)... et c'est tout !! [Edité le 24/10/2007 par sechanbask]
  11. sechanbask

    VB.NET

    Je suis un peu dans le même cas que toi. j'ai vraiment du mal à passer au vb.net même si avec visual basic 2005 express tout semble si simple. J'arrive pas à faire ce que je veux alors qu'en VBA , je suis arrivé à un stade où tout me semble si simple que mon seul problème en fait c'est le temps... J'avoue que j'ai jamais eu de cours de C, et en y regardant de plus près j'ai strictement rien compris à la structure d'un programme, le code n'a pas l'air compliqué mais la structure des "modules"... m'a fait peur. Le vb.net ne fait pas que des dll, tu peux également faire des .exe qui seront automnes. Et depuis autocad tu peux lancer cet exécutable et intenter autocad. L'avantage du dll, c'est que tu peux le charger dans autocad (je sais que ça marche dans 2006 mais je ne connais depuis quand il est possible de charger des ARX) Avec le C, je ne pense pas qu'il soit utile de faire un .exe pour intenter autocad, le mieux c'est le dll mais pour programmer ça m'a l'air bien compliqué vu mon niveau. Enfin, j'ai entendu dire ça et là que le VB.net était devenu un peu plus lourd en terme de traitement que le VB6 et donc qu'il perdait encore un peu de terrain par rapport au C (j'ai pas trop cherché à comprendre les différences entre C, C+, C++ etc faute de temps). Franchement j'ai peur pour toutes mes applications VBA quand ma boite décidera de passer à l'autocad Lt. Mais bon avec le VBA d'excel, je pourrais quand même intenter autocad... j'espère que je t'ai un peu guidé...
  12. sechanbask

    Copie miroir.

    Il faut que synchronise tes blocs à laide de la commande battman, et normalement tes attributs vont êtres remis à jour... si tu as des problème d'attributs qui ne se retournent pas lorsque tu fais un miroir, vérifie la variable mirrtext. Il faut qu'elle soit à 0 si tu souhaite que l'attribut reste lisible...
  13. >nazemrap tu as vu mon sujet sur la gaine souple http://www.cadxp.com/sujetXForum-16990.htm ?? tu en penses quoi ?
  14. sechanbask

    Proposition de programme

    LUDWIG > tu fais essentiellement du dimensionnement de plomberie ou tu fais aussi du CVC ?
  15. c'est juste une aide pour ceux qui ne savent pas comment utiliser le code VBA lorsqu'on en propose un.... donc le sujet est sensé donne la marche à suivre pour utiliser un code qu'un programmateur offre gracieusement... rien de plus
  16. le sujet est résolu ? oran > si tu veux un topo pour le VBA : Sous autocad faire ALT+F8 cliquez sur "Gestionnaire VBA" puis cliquer sur "Nouveau" puis cliquer sur "Editeur Visual Basic" Cliquer sur le menu "Insertion" et choisir "Module" Coller le code gracieusement proposé. Finalement retourner sur autocad et faire ALT+F8, choisir la macro et faire "Executer" Bonne utilisation
  17. Sous autocad faire ALT+F8 cliquez sur "Gestionnaire VBA" puis cliquer sur "Nouveau" puis cliquer sur "Editeur Visual Basic" Cliquer sur le menu "Insertion" et choisir "Module" Coller le code gracieusement proposé. Finalement retourner sur autocad et faire ALT+F8, choisir la macro et faire "Executer" Bonne utilisation
  18. mdsv31 : à ma connaissance, le getcorner ne sert qu'à demander à l'utilisateur de pointer un point pour en faitre un rectangle. Je ne connais pas de get corner pour que le programme fasse tout seul un rectangle sans intervention de l'utilisateur... Mais je peux me tromper par ignorance.
  19. désolé mais mon PC est en rad, alors je suis coincé pour l'instant mias j'avais fait différement de ce que j'avais proposé : création d'une carte puis rotiation de celle-ci et enfin mirror avec une copie entre chaque action et donc j'avais pas besoin de faire de boucle... ça m'avais réduit la longueur du code. j'avais même pensé à mettre chaque carte dans un calque diférrent pour faire la suite : on choisi la carte à cherché et la carte à trouvé change de couleur. pour que le Pc choisisse où sera la carte, j'ai pensé à utilisé la fonction RDN puis tester la dernier chiffre en faisant un select case : select case chiffre case 0,3,6,9 'mettre la carte de gauche dans le calque carte à touver 'et mettre les 2 autres dans un calque quelconque case 1,4,7 'mettre la carte du milieu dans le calque carte à touver 'et mettre les 2 autres dans un calque quelconque case else 'mettre la carte de droite dans le calque carte à touver 'et mettre les 2 autres dans un calque quelconque end select c'est pas super m'ai j'ai trouvé que ça pour changer les cartes de manière aléatoire
  20. dix fois trop tard cependant, j'ai appris des choses en cherchant et n'est ce pas là le but ?
  21. Tiens j'avais pas vu le bug: la sélection rapide avec la largeur du texte ne fonctionne pas avec des nombres à virgule !! c'est pour les supprimer définitivement ou les changer de calque. en essayant de programmer en VBA la solution à ton problème, je me suis apperçut qu'autocad n'affiche qu'une partie de la largeur du texte que lui enregistre... et même si je pousse à fond la précision de tes unités, je n'arrives pas à sélectionner le texte... donc je continue mon programme... fini j'espère que tu sais utiliser le VBA : Sub selectiontextelargeur() Dim objMTexte As IAcadMText2 Dim StrSelection As String 'ici on filtre les textes Dim DataCodeDxf(0) As Variant Dim CodeDxf(0) As Integer Dim snglargeur As Single Dim sel As AcadSelectionSet Dim ent As AcadEntity Dim ObjSelection As AcadSelectionSet Dim obj As AcadObject Set sel = ThisDrawing.SelectionSets.Add("sel12") sel.SelectOnScreen For Each obj In sel If TypeOf obj Is AcadMText Then Set objMTexte = obj snglargeur = objMTexte.Width End If Next sel.Delete On Error Resume Next StrSelection = "MaSelection" Set ObjSelection = ThisDrawing.SelectionSets(StrSelection) If Err <> 0 Then Err.Clear Set ObjSelection = ThisDrawing.SelectionSets.Add(StrSelection) End If ObjSelection.Clear On Error GoTo 0 CodeDxf(0) = 0: DataCodeDxf(0) = "MTEXT" ObjSelection.Select acSelectionSetAll, , , CodeDxf, DataCodeDxf Dim sngTotalTextes As Single sngTotalTextes = ObjSelection.Count Debug.Print sngTotalTextes For Each obj In ObjSelection If TypeOf obj Is AcadMText Then Debug.Print "bon type" Set objMTexte = obj Debug.Print objMTexte.Width If objMTexte.Width = snglargeur Then objMTexte.Delete End If End If Next End Sub
  22. ça te met une erreur (si oui donne moi le nombre de l'erreur et la ligne), tu ne peux pas faire de teste dans l'éditeur VBA s'il existe toujours dans autocad 2008 ?
  23. c'est bizarre comme syntaxe, je ne comprends pas à quoi ça sert ça dois être particulier à VBS : alors imaginons que l'ensemble du code soit : St = "[style]" Lar = "[Largeurbrute]" Vit = "[1-Vitrage]" cl = "[Classification]" an = "[Ancrage]" ht = "[Hauteurbrute]" Dim st As String Dim la As Single Dim Result As String Dim Vit As String Dim Lar As Single Dim Ht As Single Dim cl As String Dim an As String Result = "" st = "PA Demi DV Simple" la = 1059 Select Case st Case "PA Demi DV Simple", "PA Demi DV Simple + Brx", "PAV DV Simple", "PAV DV Simple + Brx" If la = 990 Or la = 1060 Then Result = "ERREUR LARGEUR" End If If Vit = "SV" Or Vit = "SV Sécurit" Then Result = "ERROR VITRAGE" End If If Vit = "DV" Or Vit = "DV Sécurit" Then Result = "ERROR VITRAGE" End If Case "SAS Tradi", "SAS Solaris" If Lar <> 740 Or Lar <> 940 Or Lar <> 1040 Or Lar <> 1940 Then Result = "Verifier Largeur" End If If Ht <> 2130 Or Ht <> 2100 Then Result = "Verifier Hauteur" End If End Select If cl = "Extérieure" And an = "Intérieure" Then Result = "ERROR ANCRAGE" End If
  24. Avec ton code, et ce que j'en ai compris, voilà ce que je te propose Sub essai() Dim st As String Dim la As Single Dim Result As String Dim Vit As String Dim Lar As Single Dim Ht As Single Dim cl As String Dim an As String st = "PA Demi DV Simple" la = 1059 Select Case st Case "PA Demi DV Simple", "PA Demi DV Simple + Brx", "PAV DV Simple", "PAV DV Simple + Brx" If la = 990 Or la = 1060 Then Result = "ERREUR LARGEUR" End If If Vit = "SV" Or Vit = "SV Sécurit" Then Result = "ERROR VITRAGE" End If If Vit = "DV" Or Vit = "DV Sécurit" Then Result = "ERROR VITRAGE" End If Case "SAS Tradi", "SAS Solaris" If Lar <> 740 Or Lar <> 940 Or Lar <> 1040 Or Lar <> 1940 Then Result = "Verifier Largeur" End If If Ht <> 2130 Or Ht <> 2100 Then Result = "Verifier Hauteur" End If End Select If cl = "Extérieure" And an = "Intérieure" Then Result = "ERROR ANCRAGE" End If Debug.Print Result End Sub j'espère que tu comprendras le code pour l'adapter à tes besoins... Bon courage [Edité le 18/10/2007 par sechanbask]
  25. le lisp n'est pas obligatoire, le VBA est aussi très performant et il permet de gérer les erreurs très simplement :-)
×
×
  • 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é