- Messages : 106
- Karma: 3
- Remerciements reçus 2
- Accueil
- Forum
- RhinoShack Forums
- Support et assistance
- Rhino Script
- SUrface Lourde...
objectsbyregion
- onlyforpeace
- Auteur du sujet
- Hors Ligne
- Expert Boarder
-
Réduire
Plus d'informations
il y a 3 ans 3 mois #311
par onlyforpeace
objectsbyregion a été créé par onlyforpeace
bonjour,
je ne comprends pas la commande rhino.objectsbyregion,
en effet, cette commande avec la variable intType, permet de filtrer les entités à sélectionner, si je met 0, il sélectionne tout, ok!
mais quand je met 8, il devrait me sélectionner les surfaces dans la région, et bien non!! il sélectionne rien du tout. pourquoi?
je ne comprends pas la commande rhino.objectsbyregion,
en effet, cette commande avec la variable intType, permet de filtrer les entités à sélectionner, si je met 0, il sélectionne tout, ok!
mais quand je met 8, il devrait me sélectionner les surfaces dans la région, et bien non!! il sélectionne rien du tout. pourquoi?
Connexion pour participer à la conversation.
- SwissRhino
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 81
- Karma: 2
- Remerciements reçus 11
il y a 3 ans 3 mois - il y a 3 ans 3 mois #313
par SwissRhino
Réponse de SwissRhino sur le sujet objectsbyregion
Oui, ça a l'air d'un bug... Il n'y a que 1 (points) ou 0 (tout) qui marche actuellement... Je ferais un report...
Pour l'instant, il faut utiliser le 0 et ensuite filtrer des objets sélectionnés pour le type d'objet voulu...
Edit:
Apparemment, ce bug a déjà été signalé.
discourse.mcneel.com/t/objectsbyregion-error/27254
Malheureusement, le bug ne sera pas corrigé dans Rhino V5. Il est déjà corrigé dans Rhino V6.
--Mitch
Pour l'instant, il faut utiliser le 0 et ensuite filtrer des objets sélectionnés pour le type d'objet voulu...
Edit:
Apparemment, ce bug a déjà été signalé.
discourse.mcneel.com/t/objectsbyregion-error/27254
Malheureusement, le bug ne sera pas corrigé dans Rhino V5. Il est déjà corrigé dans Rhino V6.
--Mitch
Dernière édition: il y a 3 ans 3 mois par SwissRhino. Raison: Plus d'info
Connexion pour participer à la conversation.
- onlyforpeace
- Auteur du sujet
- Hors Ligne
- Expert Boarder
-
Réduire
Plus d'informations
- Messages : 106
- Karma: 3
- Remerciements reçus 2
il y a 3 ans 3 mois #316
par onlyforpeace
Réponse de onlyforpeace sur le sujet objectsbyregion
arghhhhhhhhhhhh...
et la version 6 de rhino sort quand?
et la version 6 de rhino sort quand?
Connexion pour participer à la conversation.
- SwissRhino
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 81
- Karma: 2
- Remerciements reçus 11
il y a 3 ans 3 mois #317
par SwissRhino
Réponse de SwissRhino sur le sujet objectsbyregion
Option Explicit
Call Main()
Sub Main()
Dim arrPts,strObj,arrObjs,arrSrfs(),i
'd'abord chercher les points avec des méthodes diverses
arrObjs = Rhino.ObjectsByRegion(arrPts, 0, 8)
'Filtrer pour surfaces
If Not IsArray(arrObjs)
i = -1
For Each strObj In arrObjs
If Rhino.IsSurface(strObj) Then
i = i + 1
ReDim Preserve arrSrfs(i)
arrSrfs(i) = strObj
End If
Next
If i > -1 Then
'il y a au moins une surface sélectionnée
Else
'pas de surface sélectionnée
End If
'Voilà...
End Sub
Connexion pour participer à la conversation.
- onlyforpeace
- Auteur du sujet
- Hors Ligne
- Expert Boarder
-
Réduire
Plus d'informations
- Messages : 106
- Karma: 3
- Remerciements reçus 2
il y a 3 ans 3 mois - il y a 3 ans 3 mois #318
par onlyforpeace
Réponse de onlyforpeace sur le sujet objectsbyregion
oui c'est la méthode que j'ai suivi, en moins compacté bien sur...
j'essai python avec le lien que tu as posté, et bien je rencontre déjà un problème:
je tape:
et bien ça marche pas chez moi, pourquoi?
en output il me marque:
j'essai python avec le lien que tu as posté, et bien je rencontre déjà un problème:
je tape:
import rhinoscriptsyntax as rs
def HelloWorld()
rs.MessageBox ("Hello World")
HelloWorld()
et bien ça marche pas chez moi, pourquoi?
en output il me marque:
File "C:\Users\Babarit\AppData\Local\Temp\TempScript.py", line 3
def HelloWorld()
^
SyntaxError: unexpected token '<newline>'
Dernière édition: il y a 3 ans 3 mois par onlyforpeace.
Connexion pour participer à la conversation.
- onlyforpeace
- Auteur du sujet
- Hors Ligne
- Expert Boarder
-
Réduire
Plus d'informations
- Messages : 106
- Karma: 3
- Remerciements reçus 2
il y a 3 ans 3 mois #319
par onlyforpeace
Réponse de onlyforpeace sur le sujet objectsbyregion
je fais des test sur python, mais l’outil de débogage, me pose quelques souci...
sur le message précédent, sur le bout de code, il manque les ":" après def helloworld()
du coup cela fonctionne maintenant,
donc à la suite de ce code, j'ai ajouter une ligne, ce qui donne:ce code pour essayer l'outil de debogage, donc je pose une balise et je lance, mais quand il arrive à la ligne rs.getsurface, il ouvre un nouvel onglet de script, genre le script qui défini l'outil getsurface, mais je n'arrive plus à en sortir, du coup je n'arrive pas à voir les variable de sortie de la surface.
je suis pas sur de bien me faire comprendre...
sur le message précédent, sur le bout de code, il manque les ":" après def helloworld()
du coup cela fonctionne maintenant,
donc à la suite de ce code, j'ai ajouter une ligne, ce qui donne:
import rhinoscriptsyntax as rs
def hello():
rs.MessageBox("hello franck")
strsurf=rs.GetSurfaceObject("select surface")
hello()
je suis pas sur de bien me faire comprendre...
Connexion pour participer à la conversation.
- SwissRhino
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 81
- Karma: 2
- Remerciements reçus 11
il y a 3 ans 3 mois - il y a 3 ans 3 mois #320
par SwissRhino
Réponse de SwissRhino sur le sujet objectsbyregion
Le script arrêt avant d’exécuter la ligne avec le breakpoint (point rouge). Il faut donc le placer juste après l’opération où on veut examiner les résultats. L’éditeur ne permet pas de mettre un breakpoint dans une ligne blanche ; il convient donc de simplement écrire « pass » - c’est un « placeholder » - dans la ligne, et l’éditeur permettra ensuite de le mettre.
Pour lancer le script (avec ou sans breakpoint), c’est la flèche verte. Les trois boutons à droite de la flèche sont « step into », « step over » et « step out » ; ils sont là pour des utilisateurs avancés, on peut les ignorer pour l’instant. Le dernier carré est « stop » qui arrêt le script là. (il faut un OK aussi).
Pour lancer le script (avec ou sans breakpoint), c’est la flèche verte. Les trois boutons à droite de la flèche sont « step into », « step over » et « step out » ; ils sont là pour des utilisateurs avancés, on peut les ignorer pour l’instant. Le dernier carré est « stop » qui arrêt le script là. (il faut un OK aussi).
Dernière édition: il y a 3 ans 3 mois par SwissRhino.
Connexion pour participer à la conversation.
- onlyforpeace
- Auteur du sujet
- Hors Ligne
- Expert Boarder
-
Réduire
Plus d'informations
- Messages : 106
- Karma: 3
- Remerciements reçus 2
il y a 3 ans 2 mois #327
par onlyforpeace
Réponse de onlyforpeace sur le sujet objectsbyregion
je reviens sur mon srcipt objectsbyregion, depuis que je l'ai modifié un peu il y a chaque fois quelques oubli du script, comme ci certaine entité n'était pas reconnu comme des courbes, alors que ce sont des courbes....
à suivre mon script:
lorsque je "nest des plaques pour du débit numérique, j'ai besoin d'exporter ces plaques en dxf une par une... et ce script permet de faire ça,
il faut comme donné de départ des cadres représentant les contours de plaques dans un seul et même calque , avec des contours filaires dans ces cadres ( calques differents du calque de plaques bien sur!)...
merci pour le coup de main si quelqu'un pouvais y jeter un oeil...
à suivre mon script:
lorsque je "nest des plaques pour du débit numérique, j'ai besoin d'exporter ces plaques en dxf une par une... et ce script permet de faire ça,
il faut comme donné de départ des cadres représentant les contours de plaques dans un seul et même calque , avec des contours filaires dans ces cadres ( calques differents du calque de plaques bien sur!)...
merci pour le coup de main si quelqu'un pouvais y jeter un oeil...
Option Explicit
'Script written by <insert name>
'Script copyrighted by <insert company name>
'Script version lundi 05/10/17
'export dxf AGGLO ou PSE 05
Call Main()
Sub Main()
'Create file system object (FSO) to be able to work with file system
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim strclient,strprojet,prefix
Dim chemo,newchem,chemdebit1,chemdebit2,chemdebit3,pos,n,seq,chemsave
Dim pseagglo,arrmat(1)
arrmat(0) = "PSE"
arrmat(1) = "AGGLO"
Dim intCompteur, strNomFichier,chemdebit
Dim arrcadre, strcadre,layercadre,arrbox,arrboxdec(3),aexporter,ptaexporter,i,c,cc
Dim arrObjects, dblDec, arrdec,arrBound, arrOrigine
Dim strtexte,strobjcopy, arrObjCopy,arrobjcopy2,arrobjcopy3,x, arrChoix, strResult, intOrigine
Dim arrGroups, strGroup, arrNom,layer
chemo = Rhino.documentPath
pseagglo = rhino.MultilistBox(arrmat, "Choix matière à découper", "choix matière")
If Not isnull(chemo) Then
'definitions nom de projet et client
'definition du prefix
prefix = rhino.stringbox("prefix?", strclient & strprojet)
If isnull(prefix) Then Exit Sub
End If
'definition du chemin et création des repertoires
pos = instr(chemo, "ETUDE")
seq = Split(chemo, "\")
'If isnull(pos) Then
' rhino.MessageBox "fichier non repertorié", 0
' chemdebit1 = Rhino.BrowseForFolder("X:\clients\", "choisi le dossier de sauvegarde")
' If isnull(chemdebit1) Then Exit Sub
' chemdebit2 = chemdebit1 & "DEBIT2D"
' If isempty(prefix) Then
' prefix = rhino.stringbox("prefix?")
' End If
' chemdebit3 = chemdebit2 & "\" & prefix
'End If
'If Not isnull(pos) And n = 0 Then
' newchem = left(chemo, pos - 1)
' chemdebit1 = newchem & "USINAGE"
' If pseagglo(0) = "AGGLO" Then
' chemdebit2 = chemdebit1 & "\DEBIT2D"
' chemdebit3 = chemdebit2 & "\" & prefix
' Else
' chemdebit2 = chemdebit1 & "\DEBITPSE"
' chemdebit3 = chemdebit2 & "\" & prefix
' End If
'
'End If
'If Not isnull(pos) And n = 1 Then
newchem = left(chemo, pos - 1)
chemdebit1 = newchem & "USINAGE"
If pseagglo(0) = "AGGLO" Then
chemdebit2 = chemdebit1 & "\DEBIT2D"
chemdebit3 = chemdebit2 & "\" & prefix
Else
chemdebit2 = chemdebit1 & "\DEBITPSE"
chemdebit3 = chemdebit2 & "\" & prefix
End If
'End If
If Not fso.FolderExists(chemdebit1) Then
fso.CreateFolder chemdebit1
End If
If Not fso.FolderExists(chemdebit2) Then
fso.CreateFolder chemdebit2
End If
If Not fso.FolderExists(chemdebit3) Then
fso.CreateFolder chemdebit3
End If
Call Explorer(chemdebit2)
If Not IsNull(prefix) Then
intCompteur = Rhino.GetInteger("Numéro de départ", 1)
'Sélectionne les objets à exporter en dxf
'continue jusqu'a ce que rien ne soit selectionné
arrcadre = Rhino.ObjectsByLayer(rhino.getlayer)
arrcadre = tricadre(arrcadre)
For Each strcadre In arrcadre
If Not IsNull(strcadre) Then
arrBox = Rhino.BoundingBox(strcadre)
If IsArray(arrBox) Then
arrboxdec(0) = array(arrbox(0)(0) - 25, arrbox(0)(1) - 25, arrbox(0)(2))
arrboxdec(1) = array(arrbox(1)(0) + 25, arrbox(1)(1) - 25, arrbox(1)(2))
arrboxdec(2) = array(arrbox(2)(0) + 25, arrbox(2)(1) + 25, arrbox(2)(2))
arrboxdec(3) = array(arrbox(3)(0) - 25, arrbox(3)(1) - 25, arrbox(3)(2))
aexporter = Rhino.ObjectsByRegion(Array(arrBoxdec(0), arrBoxdec(1), arrBoxdec(2), arrBoxdec(3), arrBoxdec(0)), 0, 4)
ptaexporter = Rhino.ObjectsByRegion(Array(arrBox(0), arrBox(1), arrBox(2), arrBox(3), arrBox(0)), 0, 1)
If Not isnull(ptaexporter)Then
cc = ubound(ptaexporter)
For i=0 To cc
c = ubound(aexporter)
ReDim Preserve aexporter (c+1)
aexporter(c + 1) = ptaexporter(i)
Next
End If
End If
End If
ReDim Preserve aexporter(ubound (aexporter))
aexporter(ubound(aexporter)) = strcadre
rhino.SelectObjects aexporter
'Rhino.EnableRedraw False
Rhino.UnselectAllObjects
strNomFichier = prefix & "_" & intCompteur & ".dxf"
chemsave = chemdebit3 & "\" & strnomfichier
Rhino.SelectObjects(aexporter)
rhino.Command "_ProjectToCPlane" & " " & "Oui"
arrBound = Rhino.BoundingBox(Rhino.SelectedObjects())
'arrOrigine = Array((arrBound(2)(0) - arrBound(0)(0)) / 2 + arrBound(0)(0), (arrBound(2)(1) - arrBound(0)(1)) / 2 + arrBound(0)(1), arrBound(0)(2))
arrOrigine = arrBound(0)
arrNom = arrOrigine
arrNom(0) = arrNom(0) + 250
arrNom(1) = arrNom(1) + 250
Rhino.AddText strNomFichier, arrNom, 100
arrObjCopy = Rhino.CopyObjects(Rhino.SelectedObjects(), arrOrigine, array(0, 0, 0))
rhino.Command "_Hide"
Rhino.UnselectAllObjects
x = 0
ReDim arrobjcopy3(x)
For Each strobjcopy In arrobjcopy
ReDim Preserve arrobjcopy3(x)
rhino.unselectallobjects
rhino.SelectObject strobjcopy
layer = rhino.objectlayer(strobjcopy)
'If layer <> "FEUILLE" Then
'rhino.currentlayer layer
Rhino.Command(" _convert _Output=_Arcs _SimplifyInput=_Yes _DeleteInput=_No _AngleTolerance=0 _Tolerance=0.01 _MinLength=0 _MaxLength=0 _OutputLayer=_Input _enter")
arrobjcopy2 = rhino.LastCreatedObjects
If isnull(arrobjcopy2) Then
If Rhino.ispoint(strobjcopy) = False Then
rhino.SelectObject strobjcopy
Rhino.Command("_Explode")
Rhino.command("_Join")
Rhino.Command(" _convert _Output=_Arcs _SimplifyInput=_Yes _DeleteInput=_No _AngleTolerance=0 _Tolerance=0.01 _MinLength=0 _MaxLength=0 _OutputLayer=_Input _enter")
arrobjcopy2 = rhino.LastCreatedObjects
Else
ReDim arrobjcopy2(0)
arrobjcopy2(0) = strobjcopy
End If
End If
If rhino.IsPoint(strobjcopy) = False Then
rhino.deleteobject strobjcopy
End If
arrobjcopy3(x) = arrobjcopy2(0)
x = x + 1
' ReDim Preserve arrobjcopy3(x)
'End If
'arrobjcopy2 = rhino.LastCreatedObjects
Next
Rhino.SelectObjects arrObjCopy3
Rhino.Command "-_Export" & " " & chr(34) & chemsave & chr(34) & " " & "_Enter"
Rhino.DeleteObjects(arrObjCopy3)
Rhino.DeleteObjects(arrObjCopy2)
'Rhino.EnableRedraw True
intCompteur = intCompteur + 1
Next
End If
rhino.print chemdebit3
End Sub
Function tricadre(arrcadre)
Dim i, j, tmp,c1,c2
Rhino.EnableRedraw False
If IsArray(arrcadre) Then
For i = UBound(arrcadre) - 1 To 0 Step -1
For j = 0 To i
'rhino.selectobject arrcadre(j)
c1 = rhino.BoundingBox(arrcadre(j))
'rhino.selectobject arrcadre(j + 1)
c2 = rhino.BoundingBox(arrcadre(j + 1))
If c1(0)(0) > c2(0)(0) Then
tmp = arrcadre(j + 1)
arrcadre(j + 1) = arrcadre(j)
arrcadre(j) = tmp
End If
Rhino.UnselectObjects(arrcadre)
Next
Next
End If
If IsArray(arrcadre) Then
For i = UBound(arrcadre) - 1 To 0 Step -1
For j = 0 To i
'rhino.selectobject arrcadre(j)
c1 = rhino.BoundingBox(arrcadre(j))
'rhino.selectobject arrcadre(j + 1)
c2 = rhino.BoundingBox(arrcadre(j + 1))
If c1(0)(1) < c2(0)(1)Then
tmp = arrcadre(j + 1)
arrcadre(j + 1) = arrcadre(j)
arrcadre(j) = tmp
End If
Rhino.UnselectObjects(arrcadre)
Next
Next
End If
Rhino.EnableRedraw True
tricadre = arrcadre
End Function
Function Explorer(File)
Dim ws
Set ws = CreateObject("wscript.shell")
ws.run "Explorer " & File
End Function
Connexion pour participer à la conversation.
Temps de génération de la page : 0.390 secondes