[script] Regionfill_OutsideOffset() à la place de Gcode + passage en polylignes

braabu
Nouveau
24 Avril 2016
35
  • Auteur de la discussion
  • #1
bonjour !

je cherche le moyen d'utiliser la fonction de remplissage de région ( celle du clic droit > dessiner > remplir région > )

jusqu'à maintenant, et faute de mieux, j'utilise la génération d'une poche que je transforme en polylignes ..

j'ai bien trouvé cette fonction cambam.CAD.RegionUtils.Regionfill_OutsideOffset()

mais elle me demande de rentrer a la main les données nécessaires.

il doit y avoir une version ou l'on peut entrer les valeurs , j'ai cherché, testé , mais sans succès (

l'un de vous aurez t'il réussi à faire cela ?

et si oui, un exemple serait le bien venu. cela me rendrait un grand service !

merci !!
 
braabu
Nouveau
24 Avril 2016
35
  • Auteur de la discussion
  • #2
après un petit café, d'autre recherche, et avoir jouer a hippoglouton ....

Code:
sub main
    Dim sl_list as ShapeList = New shapelist
    Dim polylist_B As System.Collections.Generic.List(Of Polyline) = New System.Collections.Generic.List(Of Polyline)
    dim conteneur = new Polyline()

    conteneur.Add(0,0,0)
    conteneur.Add(0,5,0)
    conteneur.Add(5,5,0)
    conteneur.Add(5,0,0)
    conteneur.Closed=True

doc.Add(conteneur)

    polylist_B.add(conteneur)

    sl_list.AddEntities(polylist_B)
  dim ToolOffset = new RegionFiller_InsideOutsideOffsets(sl_list , 0.75, 0.2)
  ToolOffset.GenerateFill()
dim Polys = ToolOffset.FillShapes.ToPolylines()
doc.Add(Polys)
view.RefreshView(true)
end sub
 
braabu
Nouveau
24 Avril 2016
35
  • Auteur de la discussion
  • #4
trouvé, en espérant que cela servent a d'autre ..

Code:
sub main
   Dim sl_list as ShapeList = New shapelist
   Dim sl_listo as ShapeList = New shapelist
   

   Dim polylist_B As System.Collections.Generic.List(Of Polyline) = New System.Collections.Generic.List(Of Polyline)
   Dim polylist_O As System.Collections.Generic.List(Of Polyline) = New System.Collections.Generic.List(Of Polyline)
   
   dim conteneur = new Polyline()
   dim conteneurD = new Polyline()
   conteneur.Add(0,0,0)
   conteneur.Add(0,15,0)
   conteneur.Add(15,15,0)
   conteneur.Add(15,0,0)
   conteneur.Closed=True

   conteneurD.Add(10,10,0)
   conteneurD.Add(10,14,0)
   conteneurD.Add(14,14,0)
   conteneurD.Add(14,10,0)
   conteneurD.Closed=True

doc.Add(conteneur)
doc.Add(conteneurD)
   polylist_B.add(conteneur)
   polylist_B.add(conteneurD)

   sl_list.AddEntities(polylist_B)



   sl_listo = sl_list.DetectRegions(true)
   dim ToolOffset = new RegionFiller_InsideOutsideOffsets(sl_listo , 0.75, 0.2)
   ToolOffset.GenerateFill()
   dim ToolOffsetPolys = ToolOffset.FillShapes.ToPolylines()
   doc.Add(ToolOffsetPolys)
    view.RefreshView(true)
end sub
 
dh42
Compagnon
4 Septembre 2009
5 246
Près de St Etienne (42)
Salut,

le coté "insideoutside" ne marche pas
Je ne suis pas sûr de comprendre ; le but est de remplir une forme avec des "trous" ?

Public Sub New(ByVal source As ShapeList, ByVal stepover As Double, ByVal margin As Double)

Il est probable que la ShapeList du RegionFiller_InsideOutsideOffsets doivent contenir une région et non un set de polylignes si tu veux un remplissage d'une forme avec des "trous"

Lorsque tu utilise la fonction depuis le menu, je pense que les polylignes sont analysées et si il y a des polylignes fermées contenues dans une autre polyligne fermée, la routine les transforme en région (en interne, donc à partir d'une copie des polyligne originales) et ensuite seulement la fonction de remplissage est appliquée à la région.

http://www.cambam.co.uk/forum/index.php?topic=3878.msg45203#msg45203

++
David
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut