Aller au contenu

La fonction \"intersectwith\" en VBA


Pako

Messages recommandés

 

Sub Example_IntersectWith()

....'Cet exemple crée une ligne et un cercle et trouve les points auxquels ils se croisent.

 

....'Crée une ligne

....Dim lineObj As AcadLine

....Dim startPt(0 To 2) As Double

....Dim endPt(0 To 2) As Double

 

....startPt(0) = 1: startPt(1) = 1: startPt(2) = 0

....endPt(0) = 5: endPt(1) = 5: endPt(2) = 0

....Set lineObj = ThisDrawing.ModelSpace.AddLine(startPt, endPt)

 

....'Crée un cercle

....Dim circleObj As AcadCircle

....Dim centerPt(0 To 2) As Double

....Dim radius As Double

 

....centerPt(0) = 3: centerPt(1) = 3: centerPt(2) = 0

....radius = 1

....Set circleObj = ThisDrawing.ModelSpace.AddCircle(centerPt, radius)

....ZoomAll

 

....'Trouvez les points d'intersection entre la ligne et le cercle

....Dim intPoints As Variant

....intPoints = lineObj.IntersectWith(circleObj, acExtendNone)

 

....'Afficher tous les points d'intersection

....Dim I As Integer, j As Integer, k As Integer

....Dim str As String

....If VarType(intPoints) <> vbEmpty Then

........For I = LBound(intPoints) To UBound(intPoints)

............str = "Intersection Point[" & k & "] is: " & intPoints(j) & "," & intPoints(j + 1) & ",

........................ " & intPoints(j + 2)

............MsgBox str, , "IntersectWith Exemple"

............str = ""

............I = I + 2

............j = j + 3

............k = k + 1

........Next

....End If

 

End Sub

 

VBA pour AutoCAD 2005

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Lien vers le commentaire
Partager sur d’autres sites

Et donc

 

Mais où es-t-on imagination ? Tramber !

 

On peux réutiliser ce bout de code pour réaliser un TRIM automatiser.... ou autre !

 

:exclam:

 

amicalement,

 

 

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Lien vers le commentaire
Partager sur d’autres sites

Tu as essayé vlax-curve-getpointFirstderiv (s'cuses, c'est du Vlisp, mais c'est une méthode valable en VBA, puisque les Vlispeurs doivent se taper de lire du VBA dans l'aide pour apprendre et progresser :mad: ) ?

 

Ca te donne la dérivé en tout point d'une ligne, tu peux récupérer l'angle et tu as une tangente !

 

J'ai déjà fait pas mal d'intersectwith et je me suis fabriqué une fonction qui trouve l'intersection la plus proche d'un point en cas de plusieurs points trouvés.

Comme ca je peux régler la méthode sur acExtendBoth les yeux presque fermés.

 

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

J'Chais pas c'est lui qui crâne en copiant l'aide. Moi j'ai rien fait, je m'enfiche, j'chuis bientôt à 2000 messages, la la la la lalère. ;) :cool:

 

[tu m'en veux pas Pako ?, c'est lâche, à l'heure qu'il est il doit faire dodo dans sa cabane au Canada]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Bien que ce ne soit pas du VBA, Kamal a mis en ligne sur le forum de planetar (ex manandmachine)

un ARX nommé QBRICK qui ma fois est digne d'intêret pour couper tout entité linéaire entre-elles.

 

Je vous laisse découvrir par vous même et faire vos remarque si vous en avez!!

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

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é