sail Posté(e) le 8 juin 2007 Posté(e) le 8 juin 2007 salut à tousUne petite question : comment puis-je faire pour appeler une routine ou intevenir dans un programme en cour d'execution en tapant sur le clavier "r" par exemple . Je sais que cela est possible en lisp . merci Sail
winfield Posté(e) le 10 juin 2007 Posté(e) le 10 juin 2007 regarde dans "InitializeUserInput" Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
sail Posté(e) le 10 juin 2007 Auteur Posté(e) le 10 juin 2007 Ce n'est pas tout à fait ca .Avec un petit exemple cela va etre plus clair Imaginons un programme qui m'insere un blocs tous les 10 cm selon x . je voudrais par exemple en tapant "e" sur le clavier au cour du deroulement du progamme que mon bloc soit insere tous 20 cm . cela est il possible merci sail
winfield Posté(e) le 10 juin 2007 Posté(e) le 10 juin 2007 C'est bien pour ça qu'il faut regarder [surligneur] InitializeUserInput[/surligneur] pour capter quand tu presses sur la touche "e". Après faut écrire le code qui va insérer ton bloc tous les 20 unités Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
sail Posté(e) le 11 juin 2007 Auteur Posté(e) le 11 juin 2007 merci winfield pour ton aide mais j'ai du mal à comprendre "InitializeUserInput"peux-tu m'ecrire un petit programme qui par exemple quand je tape "e" m'insereun bloc1 quand je tape "f" m'insere le bloc2 et quand je tape "g" m'insere le bloc3 et tant que je n'ai pas taper "entree" je continu à inserer mes blocs . je te remerie d'avance sail Un programmeur du dimanche .
winfield Posté(e) le 11 juin 2007 Posté(e) le 11 juin 2007 Pas besoin de t'écrire une routine, l'ex de l'aide montre ce qu'il faut : Sub Example_InitializeUserInput() ' This example prompts for user input of a point. By using the ' InitializeUserInput method to define a keyword list, it can also ' return keywords entered by the user. On Error Resume Next ' Define the valid keywords Dim keywordList As String keywordList = "Keyword1 Keyword2" ' Call InitializeUserInput to setup the keywords ThisDrawing.Utility.InitializeUserInput 128, keywordList ' Get the user input Dim returnPnt As Variant returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point(Keyword1, Keyword2): ") If Err Then If StrComp(Err.Description, "User input is a keyword", 1) = 0 Then ' One of the keywords was entered Dim inputString As String Err.Clear inputString = ThisDrawing.Utility.GetInput MsgBox "You entered the keyword: " & inputString Else MsgBox "Error selecting the point: " & Err.Description Err.Clear End If Else ' Display point coordinates MsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2), , "GetInput Example" End If End Sub Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
sail Posté(e) le 12 juin 2007 Auteur Posté(e) le 12 juin 2007 salut winfieldmalgre l'exemple je n'y arrive pas . Si tu pouvais me livrer un code clé en main se serait sympa .merci d'avance sail
winfield Posté(e) le 12 juin 2007 Posté(e) le 12 juin 2007 Désolé.......Je vois pas où tu coinces Sub Example_InitializeUserInput() ' This example prompts for user input of a point. By using the ' InitializeUserInput method to define a keyword list, it can also ' return keywords entered by the user. On Error Resume Next ' Define the valid keywords Dim keywordList As String [surligneur] keywordList = "1Bloc 2Bloc 3Bloc" [/surligneur] ' Call InitializeUserInput to setup the keywords ThisDrawing.Utility.InitializeUserInput 128, keywordList ' Get the user input Dim returnPnt As Variant [surligneur] '---------------------------------------------------------------- 'a adapter en fonction de la boucle '---------------------------------------------------------------- '---------------------------------------------------------------- 'Mettre une boucle '---------------------------------------------------------------- returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point(1Bloc/2Bloc/3Bloc): ") [/surligneur] If Err Then [surligneur] If StrComp(Err.Description, "La saisie utilisateur est un mot clé", 1) = 0 Then [/surligneur] ' One of the keywords was entered Dim inputString As String Err.Clear inputString = ThisDrawing.Utility.GetInput MsgBox "You entered the keyword: " & inputString [surligneur] '---------------------------------------------------------------- 'Ton code pour l'insertion des blocs en fonction du mot clé par ex avec Select Case '---------------------------------------------------------------- [/surligneur] Else MsgBox "Error selecting the point: " & Err.Description Err.Clear End If Else ' Display point coordinates MsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2), , "GetInput Example" End If [surligneur] '---------------------------------------------------------------- 'Fin de la boucle '---------------------------------------------------------------- [/surligneur] End Sub Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
sail Posté(e) le 13 juin 2007 Auteur Posté(e) le 13 juin 2007 decidement je ne dois pas etre en forme en ce moment car je n'arrive pas obtenir le bon prog.J'ai suivi tes instructions mais une fois que j'ai choisi mon bloc ,je l'insere autant de fois que ma boucle tourne . Une fois que cette boucle tourne je ne peux plus intervenir dedans pour changer de bloc . Es ce que je fais une erreur de syntaxe ? je te livre mon code . Private Sub APERCUBLOC_Click()DI.HideDim I As IntegerOn Error Resume Next ' Define the valid keywordsDim keywordList As String keywordList = "1Bloc 2Bloc 3Bloc" ' Call InitializeUserInput to setup the keywordsThisDrawing.Utility.InitializeUserInput 128, keywordList ' Get the user inputDim returnPnt As Variant '----------------------------------------------------------------'a adapter en fonction de la boucle'----------------------------------------------------------------For I = 0 To 5'----------------------------------------------------------------'Mettre une boucle'----------------------------------------------------------------returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point(1Bloc/2Bloc/3Bloc): ") If Err Then If StrComp(Err.Description, "La saisie utilisateur est un mot clé", 1) = 0 Then ' One of the keywords was enteredDim inputString As StringErr.ClearinputString = ThisDrawing.Utility.GetInputMsgBox "You entered the keyword: " & inputString '----------------------------------------------------------------'Ton code pour l'insertion des blocs en fonction du mot clé par ex avec Select Case'----------------------------------------------------------------Select Case inputStringCase "1" Dim T As AcadBlockReference Dim PTI As Variant Dim Z As String PTI = ThisDrawing.Utility.GetPoint(, "point d'insertion du bloc ?") Z = "001DAI.dwg" Set T = ThisDrawing.ModelSpace.InsertBlock(PTI, "C:\DID\DAI\" & Z, 1, 1, 1, 0) Case "2" Dim T1 As AcadBlockReference Dim PTI1 As Variant Dim Z1 As String PTI1 = ThisDrawing.Utility.GetPoint(, "point d'insertion du bloc ?") Z1 = "002DAI.dwg" Set T1 = ThisDrawing.ModelSpace.InsertBlock(PTI1, "C:\DID\DAI\" & Z, 1, 1, 1, 0) Case "3" Dim T3 As AcadBlockReference Dim PTI3 As Variant Dim Z3 As String PTI3 = ThisDrawing.Utility.GetPoint(, "point d'insertion du bloc ?") Z3 = "003DAI.dwg" Set T3 = ThisDrawing.ModelSpace.InsertBlock(PTI3, "C:\DID\DAI\" & Z, 1, 1, 1, 0) End Select'------------------------------------------------------------------------------------ElseMsgBox "Error selecting the point: " & Err.DescriptionErr.ClearEnd IfElse' Display point coordinatesMsgBox "The WCS of the point is: " & returnPnt(0) & ", " & returnPnt(1) & ", " & returnPnt(2)End If '----------------------------------------------------------------'Fin de la boucle'----------------------------------------------------------------Next IEnd Sub merci pour une eventuelle reponse sail
winfield Posté(e) le 13 juin 2007 Posté(e) le 13 juin 2007 Salut, va falloir faire un peu de ménage ;) Il y a trops de variables inutiles :3 variables pour 3 blocs3 variables pour 3 mêmes type de points3 variables pour 3 noms de blocs Déclare une fois comme ci-dessous au début du code et ça suffira Dim MonBloc as AcadBlokReferenceDim NomBloc as stringDim Pt as variant..............................................................................Select case inputStringCase 1 NomBloc="C:\MonDossier\1Bloc.dwg"Case 2 NomBloc="C:\MonDossier\2Bloc.dwg"Case 3 NomBloc="C:\MonDossier\3Bloc.dwg"End Select.............................................................................. returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point(1Bloc/2Bloc/3Bloc): ").................................................................. PTI = ThisDrawing.Utility.GetPoint(, "point d'insertion du bloc ?")................................................................ PTI et ses frères ne servent à rien, puisqu'il y a déjà returnPnt Z = "001DAI.dwg"Set T = ThisDrawing.ModelSpace.InsertBlock(PTI, "C:\DID\DAI\" & Z, 1, 1, 1, 0) Pour ça, je pense que tu trouveras seul l'amélioration à apporter. ThisDrawing.Utility.InitializeUserInput 128, keywordList Cette ligne doit être dans la boucle pour être initialisée ........à chaque boucle Encore quelques efforts, tu y es presque :D Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
sail Posté(e) le 17 juin 2007 Auteur Posté(e) le 17 juin 2007 OK winfield ,je suis enfin arrivé à mes fins merci a+
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