sail Posté(e) le 27 mai 2007 Posté(e) le 27 mai 2007 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
nazemrap Posté(e) le 27 mai 2007 Posté(e) le 27 mai 2007 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
sail Posté(e) le 27 mai 2007 Auteur Posté(e) le 27 mai 2007 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
sail Posté(e) le 28 mai 2007 Auteur Posté(e) le 28 mai 2007 salut tous le monde Pas la peine de me repondre , j'ai trouvé la solution à l'aide de "GetBoundingBox" a+ sail
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