Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous

 

Voici mon probléme : Je voudrais savoir si une ligne touche ou traverse mon bloc .J'ai créé une routine qui ne fonctionne pas . Pourquoi ?

 

Private Sub CommandButton1_Click()

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

DI.Hide

 

Set objJeu = ThisDrawing.SelectionSets.Add("Jaax")

IntCodeDXF(0) = 0: ValCodeDXF(0) = "INSERT"

objJeu.SelectOnScreen IntCodeDXF, ValCodeDXF

 

For Each OBJET In objJeu

 

Set bloc = OBJET

 

If bloc.IntersectWith(line, acExtendNone) = True Then

MsgBox "oui"

Else

MsgBox "non"

End If

 

Next

objJeu.Delete

 

End Sub

 

 

Si quelqu'un a une solution .

 

Merci sail

Posté(e)

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 

Posté(e)

rebonjour

 

Merci pour ta réponse , mais cela ne fonctionne pas . Que ma ligne coupe le bloc ou pas cela me retourne "oui" . Je vais aller plus loin dans mon explication .

Dans mon dessin j'ai x blocs(bloc1) . Chaque bloc(bloc1)est relié ou pas à un autres bloc(bloc2) par une spline .Mon but est en un clic de souris de lister tous mes blocs dans une listebox (une colonne avec le nom du bloc1et une deuxieme colonne qui m'indique si se bloc1 est relié au bloc2 .). Je pense que par la methode "IntersectWith" cela est possible .Sachant que je peux avoir plus de cent blocs dans mon dessin il serait trop long de cliquer à chaque fois sur la spline .

Si quelqu'un à une idée ? Merci

 

 

Sail

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é