RhinoShack-login   RhinoShack-login   Rhino 3d help   RhinoShack-login

 

objectsbyregion

Plus d'informations
il y a 2 mois 6 jours #311 par onlyforpeace
onlyforpeace a créé le sujet : objectsbyregion
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?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 mois 6 jours - il y a 2 mois 6 jours #313 par SwissRhino
SwissRhino a répondu au 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
Dernière édition: il y a 2 mois 6 jours par SwissRhino. Raison: Plus d'info

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 mois 5 jours #316 par onlyforpeace
onlyforpeace a répondu au sujet : objectsbyregion
arghhhhhhhhhhhh...
et la version 6 de rhino sort quand?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 mois 5 jours #317 par SwissRhino
SwissRhino a répondu au 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 ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 mois 5 jours - il y a 2 mois 5 jours #318 par onlyforpeace
onlyforpeace a répondu au 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:
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 2 mois 5 jours par onlyforpeace.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 mois 5 jours #319 par onlyforpeace
onlyforpeace a répondu au 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:
import rhinoscriptsyntax as rs

def hello():
    rs.MessageBox("hello franck")
    strsurf=rs.GetSurfaceObject("select surface")
    
hello()
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...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 mois 5 jours - il y a 2 mois 5 jours #320 par SwissRhino
SwissRhino a répondu au 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).

Pièces jointes :
Dernière édition: il y a 2 mois 5 jours par SwissRhino.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 semaines 5 jours #327 par onlyforpeace
onlyforpeace a répondu au 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...
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 ou Créer un compte pour participer à la conversation.

Modérateurs: SwissRhinoJenniferlocaJoao
Temps de génération de la page : 0.291 secondes
Propulsé par Kunena

Powered by


 









3d design training








cadlantique.com









swissrhino.com