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

  • Auteur de la discussion braabu
  • Date de début
B
braabu
Nouveau
24 Avr 2016
35
  • Auteur de la discussion
  • #1
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
 
dh42
dh42
Compagnon
4 Sept 2009
5 988
Près de St Etienne (42)
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
 
dh42
dh42
Compagnon
4 Sept 2009
5 988
Près de St Etienne (42)
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
24 Avr 2016
35
  • Auteur de la discussion
  • #4
c beau !!!! merci je sens que ca va marcher au poil !!

merci !!
 
dh42
dh42
Compagnon
4 Sept 2009
5 988
Près de St Etienne (42)
Bonne migraine :wink:

++
David
 
dh42
dh42
Compagnon
4 Sept 2009
5 988
Près de St Etienne (42)
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:
vieuxfraiseur
vieuxfraiseur
Compagnon
19 Jan 2016
1 736
Un gars de Bezons
bonjour à tous,
intéressant ce post, je regarde cela de prés .

bonne continuation.
A+
 
dh42
dh42
Compagnon
4 Sept 2009
5 988
Près de St Etienne (42)
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
 
B
braabu
Nouveau
24 Avr 2016
35
  • Auteur de la discussion
  • #10
bravo )))
je vais tenter des combiner les deux )
 
Haut