Aller au contenu

ligne de commande


Messages recommandés

Posté(e)

salut à tous

Une 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

Posté(e)

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

Posté(e)

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.

Posté(e)

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'insere

un 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 .

Posté(e)

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.

Posté(e)

salut winfield

malgre l'exemple je n'y arrive pas . Si tu pouvais me livrer un code clé en main se serait sympa .

merci d'avance sail

Posté(e)

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.

Posté(e)

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.Hide

Dim I As Integer

On Error Resume Next

 

' Define the valid keywords

Dim keywordList As String

 

keywordList = "1Bloc 2Bloc 3Bloc"

 

' Call InitializeUserInput to setup the keywords

ThisDrawing.Utility.InitializeUserInput 128, keywordList

 

' Get the user input

Dim 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 entered

Dim inputString As String

Err.Clear

inputString = ThisDrawing.Utility.GetInput

MsgBox "You entered the keyword: " & inputString

 

'----------------------------------------------------------------

'Ton code pour l'insertion des blocs en fonction du mot clé par ex avec Select Case

'----------------------------------------------------------------

Select Case inputString

Case "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

'------------------------------------------------------------------------------------

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)

End If

 

'----------------------------------------------------------------

'Fin de la boucle

'----------------------------------------------------------------

Next I

End Sub

 

merci pour une eventuelle reponse sail

 

 

Posté(e)

Salut, va falloir faire un peu de ménage ;)

 

Il y a trops de variables inutiles :

3 variables pour 3 blocs

3 variables pour 3 mêmes type de points

3 variables pour 3 noms de blocs

 

Déclare une fois comme ci-dessous au début du code et ça suffira

 

Dim MonBloc as AcadBlokReference

Dim NomBloc as string

Dim Pt as variant

.......................................

.......................................

Select case inputString

Case 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.

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é