[ recherche / creation script ] couper des polylines contenues entre deux polylines

  • Auteur de la discussion braabu
  • Date de début
B

braabu

Nouveau
bonjours,
je commence a coder un peu avec cambam, mes souvenirs de basic date de mon TO7 70 ... mais j'ai toute de même réussi a générer un profil en fonction des pièces que je veux usiner pour leu
r donner une forme sur Z. je cherche maintenant a réduire le temps d'usinage , mes polylines générés par mon script étant sur un surface plus grande que la forme que je v découpée.

il faudrait que j'arrive a découper les polylines du calque2 en suivant les polylines du calque 1 et pour finir ne conserver que les polylines utiles entre les deux polylines de découpe.

si l'un de vous a un exemple que je puisse étudier )

merci d'avance

braabu

Voir la pièce jointe test decoupe poly.rar
 
Dernière édition par un modérateur:
D

dh42

Compagnon
Salut,

En "manuel", on utiliserais la fonction "edition/couper" (Trim), soit la Cambam.cad.Polyline.PolylineTrim()

Public Shared Function PolylineTrim(ByVal p1 As Polyline, ByVal p2 As Polyline, ByVal tolerance As Double) As Polyline()

au vu des paramètres, on passe 2 polylignes en entrée et on récupère un tableau de polylignes en sortie ... donc il y faut faire une boucle pour gérer une découpe de plusieurs lignes, ensuite il faut déterminer lesquelles garder ... je n'ai pas d'exemple de cette fonction à te donner, jamais utilisé en ce qui me concerne.

++
David
 
D

dh42

Compagnon
Bon, j'ai trouvé, c'est une autre fonction ; je te met un exemple que je viens de faire en VB, il trace des polylignes test et les coupe ; attention, il faut que ta polyligne "outil" soit une polyligne fermée pour que ça marche.

++
David

 
B

braabu

Nouveau
c beau !!!! merci je sens que ca va marcher au poil !!

merci !!
 
D

dh42

Compagnon
Salut,

Pour que le in/out fonctionne, il est impératif que la polyligne qui sert à couper soit fermée, si c'est 2 lignes séparées comme sur ton premier dessin, ça ne marche pas, ou plutôt, ça ne marche qu'avec le "i" et ça ne supprime pas les polylignes en trop, ça se contente de les couper, d’où l’intérêt d'avoir une polyligne fermée comme outil, car CB supprimera effectivement les extérieurs ou les intérieurs, suivant que tu utilise "i" ou "o". (une polyligne ouverte n'a ni intérieur ni extérieur)

dans ton fichier en PJ, si le but et de ne garder que les lignes horizontales qui sont dans l'anneau, alors il faut s'y prendre en 2x, couper les polylignes avec le petit anneau, réglage sur "i" (intérieur), puis refaire de même avec les polylignes horizontales restantes et le grand anneau, mais cette fois en coupant à l'extérieur "o"

une autre solution, c'est de convertir tes 2 cercles en une région, dans ce cas si la région comprenant les 2 cercles est utilisée comme outil, tu peux faire la découpe en une seule fois et il ne reste rien à "nettoyer".

++
David
 
Dernière édition:
V

vieuxfraiseur

Compagnon
bonjour à tous,
intéressant ce post, je regarde cela de prés .

bonne continuation.
A+
 
D

dh42

Compagnon
Salut,

J'en ai un peu ch** mais j'ai trouvé comment créer une Region en VBscript.

ce script crée 2 cercles et 2 rectangles concentriques de type polyligne puis crée des regions à partir de ces 4 polylines.

La fonction Region.CreateFromPolylines() prends un tableau de Polylignes comme argument et retourne un tableau de Regions.
Le tableau de polylignes passé à la fonction ne doit pas contenir d'éléments vide, sinon la fonction retournera une erreur.

pour ceux que ça intéresse, je met des bouts de code ici
http://www.cambam.co.uk/forum/index.php?topic=3878.0


++
David
 

Sujets similaires

V
Réponses
0
Affichages
985
v tec
V
2
Réponses
27
Affichages
1 230
jean-jacques
J
T
Réponses
28
Affichages
3 075
Tristan l'apprenti
T
N
Réponses
78
Affichages
9 843
nipil
N
jeanmichel1946
Réponses
92
Affichages
12 754
jeanmichel1946
jeanmichel1946
Polskleforgeron
Réponses
20
Affichages
2 720
sergepol
sergepol
MegaHertz
Réponses
12
Affichages
1 925
Doctor_itchy
D
tyio
Réponses
58
Affichages
6 146
big bloc
B
X
Réponses
32
Affichages
12 660
XIIIVSI
X
Haut