Bred Posté(e) le 30 juin 2008 Posté(e) le 30 juin 2008 Salut, j'extrais d'Acad (dans une variable USERS1) un string. En vb, je traite ce string afin d'en ressortir des bout de texte(ex : "tata*toto*tutu*" -> "toto") Mon problème est que mon mot "toto" est référencer dans ma boite de dialogue comme étant une TextBox par exemple... Je voudrais donc piloter ma textbox en passant par mon strin "toto"par exemple (ça ne fonctionne pas, mais c'est peut-être plus compréhensible) : Dans AutoCAD: (setvar "USERS1" "toto*tata*tutu*") Le code vb avec une boite de dialogue "test" contenant 3 textbox toto, tata, tutu : Private Sub CommandButton1_Click() Dim text, textT As String text = ThisDrawing.GetVariable("users1") While Len(text) > 0 ntext = InStr(text, "*") [b]textT[/b] = Left(text, (ntext - 1)) Test.[b]texT[/b].BackColor = &H80000012 text = Mid(text, (ntext + 1)) Wend End Sub ... parceque sinon, faire des if, je trouve ça pas terrible... merci d'avance ! Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
rebcao Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Tu as dit STRING ! tiens vu la saison... je suis resté très SOFT ! il y avait pire !!! ;) http://www.rebcao.fr/cadxp/String.jpg voilà, j'ai pas pu m'en empêcher !!! Je sais je suis un méchant moqueur ! Je te laisse le choix des armes... C'est ma CONNERIE du jour...!!!... :P Lilian va encore m'engueuler... :( Christian [Edité le 1/7/2008 par rebcao] Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
lili2006 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Bonjour à toutes et tous, Lilian va encore m'engueuler... On en a qu'un comme toi, ici alors ça passe,....Ce forum est comme une classe d'école, on y trouve de tout, jusqu'au petit plaisantin :P Surtout, continue comme ça Christian PS: Tu aurais pu glisser dans ces stings les filles qui vont bien, non ? Re PS: Heu, désolé Bred ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
rebcao Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 PS: Tu aurais pu glisser dans ces stings les filles qui vont bien, non ? j'ai pas osé !!! j ' suis trop timide !!! :red: :red: :red: :red: :red: :red: :red: mais je te dis pas si j'avais mis tout ce que j'ai rammassé sur google ! :o CADxp est un site où tenue correcte exigée !!!!! Christian [Edité le 8/12/2008 par rebcao] Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
lili2006 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Re, CADxp est un site ou tenue correcte exigée !!!!! Absolument, Absolument. La journée était bonne Christian ? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
rebcao Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Chaude ! mais très bonne ! pas à cause du string... mais la chaleur... et en ALCHACHE, il y a pas la mer mais la bière... ;) Et toi Lilian, toujours en cours ? Bientôt les vacances ? Christian PS : en attendant, je suis en train de fouttre en l'air le sujet de BRED !!!!! :( désolé ! :P Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
lili2006 Posté(e) le 1 juillet 2008 Posté(e) le 1 juillet 2008 Re, Les résultats des BTS, c'est demain !!!!! Ensuite, fin avec le GRETA le 11 Juillet et "peinard" jusqu'au 25 Aout !Faut qu'j'bosse la 3D durant les vacances et le MAP 2009, plus la nouvelle config 2009.J'sais pas si je vais avoir le temps d'attendre tes nouveaux supports de cours,.... ;) désolé ! Itout, mais je me doute que tu n'en voudras pas à notre égarement ponctuel (heu, ponctuel c'est pour moi juste !!! :D ) @+, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 1 juillet 2008 Auteur Posté(e) le 1 juillet 2008 Salut les gars,En fait, mon post, ben je crois qu'il n'y a pas de solution...... donc autant profiter de l'espace vide... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
winfield Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Slt Bred. T'as regardé du côté de "split" ? Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
Bred Posté(e) le 8 juillet 2008 Auteur Posté(e) le 8 juillet 2008 Salut winfield,merci pour ta suggestion, mais j'avoue que j'ai pas mal avancé sur le truc, et j'ai contourné le problème..Mais je jetterais un coup deuil sur ta proposition. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 7 décembre 2008 Posté(e) le 7 décembre 2008 Salut Bred, Puisque j'en suis à déterrer tes vieux messages... Il me semble comprendre que tu utilises VB NET pour créer des boites de dialogues utilisées en LISP et que tu te sers des variables USER* pour passer tes arguments au code VB (et peut-être aussi pour pour retourner les résultats. Je te propose une solution plus élégante (et plus rationnelle il me semble).Depuis ObjectARX 2007, il est possible de définir des fonctions LISP avec .NET de la même manière qu'on définit des commandes (LispFunction au lieu de CommandMethod)Ceci permet d'utiliser le ResultBuffer pour passer des arguments à la méthode (et aussi pour retourner le résultat si celui-ci doit être une liste). ResultBuffer est une sorte de container pour les données AutoCAD. Une façon pratique pour récupérer les données qu'il contient consiste à le convertir en un array de TypedValueChaque TypedValue est un peu l'équivalent d'une paire pointée possède 2 propriétés :- TypedValue.TypeCode : un entier qui définit le type de donnée. suivant l'utilisation TypeCode peut être différente, voir les énumérations (enum) DxfCode et LispDataType.- TypedVlaue.Value : la valeur de la donnée. Regarde l'aide ObjectARX > ObjectARX Developer's Guide > Using .NET for AutoCAD Development > ObjectARX Managed Wrapper Classes > Getting Started with Managed Wrappers les rubriques :- Defining Methods That Can Be Called From AutoLISP- Using the ResultBuffer Type Tu peux voir ci-dessous, la traduction en VB du code donné ici en C#.Ce code définit une fonction LISP qui appelle la boite dialogue prédéfinie System.Windows.Forms.OpenFileDialog.La fonction requiert 2 ou 3 arguments (le troisième est optionnel) et retourne un liste.Les argument sont extraits du ResultBuffer et une nouvelle instance de ResultBuffer sert à retourner une liste.PS : la traduction est faite avec reflector plus quelques remplacements de codes hexadécimaux pour le rendre plus lisible : &H138D par CInt(LispDataType.Text)&H139D par CInt(LispDataType.Nil)J'espère ne pas avoir généré d'erreurs. Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.Runtime Imports System Imports System.Windows.Forms Namespace GetFileLisp Public Class Files ' Methods _ Public Shared Function GetFileDialog(ByVal buff As ResultBuffer) As ResultBuffer Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor Dim result As New ResultBuffer Try If (buff Is Nothing) Then ed.WriteMessage("Erreur: nombre d'arguments insuffisants" & ChrW(10)) Return Nothing End If Dim args As TypedValue() = buff.AsArray If (args.Length ed.WriteMessage("Erreur: nombre d'arguments insuffisants" & ChrW(10)) Return Nothing End If If (args.Length > 3) Then ed.WriteMessage("Erreur: nombre d'arguments trop important" & ChrW(10)) Return Nothing End If If (args(0).TypeCode CInt(LispDataType.Text)) Then ed.WriteMessage("Erreur: type d'argument incorrect: stringp {0}" & ChrW(10), New Object() { args(0).Value }) Return Nothing End If If (args(1).TypeCode CInt(LispDataType.Text)) Then ed.WriteMessage("Erreur: type d'argument incorrect: stringp {0}" & ChrW(10), New Object() { args(1).Value }) Return Nothing End If Dim mult As Boolean = ((args.Length = 3) AndAlso (args(2).TypeCode CInt(LispDataType.Nil))) Dim openDialog As New OpenFileDialog openDialog.InitialDirectory = CStr(args(0).Value) openDialog.Filter = CStr(args(1).Value) openDialog.FilterIndex = 1 openDialog.Multiselect = mult If (openDialog.ShowDialog = DialogResult.OK) Then If mult Then Dim file As String For Each file In openDialog.FileNames result.Add(New TypedValue(CInt(LispDataType.Text), file)) Next Return result End If Dim file As String = openDialog.FileName result.Add(New TypedValue(CInt(LispDataType.Text), file)) Return result End If Return Nothing Catch ex As Exception ed.WriteMessage((ex.Message & ChrW(10))) Return Nothing End Try End Function End Class End Namespace Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 7 décembre 2008 Auteur Posté(e) le 7 décembre 2008 Merci !!!! :D :D :D Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Bred Posté(e) le 22 décembre 2008 Auteur Posté(e) le 22 décembre 2008 Salut (gile)j'ai enfin eu un peu de temps pour jeter un coup d'eil plus approfondie sur ton exemple, et c'est vraiment génial !ça m'ouvre une multitude de possibilité !!!!Encore merci ! J'ai corrigé quelques bugs de la traduction de ton code ci-dessous car il manquait - la méhode < LispFunction("Getfiles") > _ , (erreur de bbcode je pense)- certaines référence importés étais ambigus entre les référence Autodesk et Windows, - il ne m'acceptais pas en variable "file" (et ça je n'ai pas encore compris pourquoi, le message d'erreur étais "La variable 'file' masque une variable dans un bloc englobant." Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.Runtime Imports System Imports System.Windows.Forms Namespace GetFileLisp Public Class Files < LispFunction("Getfiles") > _ 'enlever les espaces _ Public Shared Function GetFileDialog(ByVal buff As ResultBuffer) As ResultBuffer Dim ed As Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor Dim result As New ResultBuffer Try If (buff Is Nothing) Then ed.WriteMessage("Erreur: nombre d'arguments insuffisants" & ChrW(10)) Return Nothing End If Dim args As TypedValue() = buff.AsArray If (args.Length < 2) Then ed.WriteMessage("Erreur: nombre d'arguments insuffisants" & ChrW(10)) Return Nothing End If If (args.Length > 3) Then ed.WriteMessage("Erreur: nombre d'arguments trop important" & ChrW(10)) Return Nothing End If If (args(0).TypeCode <> CInt(LispDataType.Text)) Then ed.WriteMessage("Erreur: type d'argument incorrect: stringp {0}" & ChrW(10), New Object() {args(0).Value}) Return Nothing End If If (args(1).TypeCode <> CInt(LispDataType.Text)) Then ed.WriteMessage("Erreur: type d'argument incorrect: stringp {0}" & ChrW(10), New Object() {args(1).Value}) Return Nothing End If Dim mult As Boolean = ((args.Length = 3) AndAlso (args(2).TypeCode <> CInt(LispDataType.Nil))) Dim openDialog As New OpenFileDialog openDialog.InitialDirectory = CStr(args(0).Value) openDialog.Filter = CStr(args(1).Value) openDialog.FilterIndex = 1 openDialog.Multiselect = mult If (openDialog.ShowDialog = DialogResult.OK) Then If mult Then Dim files As String For Each files In openDialog.FileNames result.Add(New TypedValue(CInt(LispDataType.Text), files)) Next Return result End If Dim file As String = openDialog.FileName result.Add(New TypedValue(CInt(LispDataType.Text), file)) Return result End If Return Nothing Catch ex As Autodesk.AutoCAD.Runtime.Exception ed.WriteMessage((ex.Message & ChrW(10))) Return Nothing End Try End Function End Class End Namespace Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 22 décembre 2008 Posté(e) le 22 décembre 2008 Salut, Je suis content que ça te rende service.Désolé pour les fautes, je cause pas VB (je bafouille un tout petit peu de C#). si tu as des questions à propos de l'utilisation du ResultBuffer, n'hésite pas à les poser, j'essayerais d'y répondre, quelques pointures sur TheSwamp m'ont aidé à en comprendre le principe. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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