Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Tue 25 September 2001 21:50
- Karim Jerbia
- Invité
Nombre de sections
Bonjour,
J'ai une table conduite egouts dont les objets sont des polylignes,
quand je click sur un bout de conduite entre deux chambres(Objet
Polyline), j'ai comme informations les coord. des sommets, du centroide,
la longue total, le nombre de segments et le nombre de sections(1, 2, 3,
etc). Je souhaite savoir que represente le nombre de sections? Dans un
bout de code MB, je recupere les coord des sommets pour des calculs,
j'ai remarque que chaque fois que le nb de sections > 1, il y a erreurs
de type ObjectNodeX: argument 3 en dehors des limites.
Voici le bout de code:
iNoSequence = s_table + .obj
obj_type = ObjectInfo(iNoSequence, OBJ_INFO_TYPE)
intNbNodes = ObjectInfo(iNoSequence, OBJ_INFO_NPNTS)
intNbSections = ObjectInfo( iNoSequence ,OBJ_INFO_NPOLYGONS)
Print Nb Sections: + intNbSections
Redim ArrayPoints(intNbNodes)
For j=1 to intNbSections
For k=1 to intNbNodes - 1
'* Recherche coord des pts du segment selectionne et stocke dans un
tableau.
ArrayPoints(k).X = ObjectNodeX(iNoSequence ,j ,k)
ArrayPoints(k).Y = ObjectNodeY(iNoSequence ,j ,k)
ArrayPoints(k+1).X = ObjectNodeX(iNoSequence ,j ,k+1)
ArrayPoints(k+1).Y = ObjectNodeY(iNoSequence ,j ,k+1)
Next 'k
Next 'j
End If
Next
Merci d'avance pour votre aide
#2 Tue 25 September 2001 21:51
- Jacques Paris
- Invité
Re: Nombre de sections
Si une region peut etre constituee de plusieurs polygones (par ex. une
collection d'iles), ainsi une polyligne peut etre composee de plusieurs
sections (une rue interrompue par une voie ferree). Il y a des inegalites
dans la terminologie MI. Si l'assemblage de polygones en regions est clair,
celui de sections en polylignes l'est moins car les sections peuvent etre
des polylignes ou des lignes (segments de 2 nœuds).
Dans un autre ordre d'idee, certaines fonctions ne marchent que pour
certains types d'objets. N'esssayez pas ObjectNodeX sur une ligne, il
plantera.
Aussi, il y a un point que j'aimerais elucider: est que vraiment une section
pourrait etre une ligne? Il faudrait dessiner une polyligne et une ligne et
en faire un combine , puis avec la version 6.5 seulement, faire un
disaggregate et verifier la nature des objets obtenus. Rien n'empeche en
effet d'avoir des polylignes avec 2 nœuds; c'est la meme chose au point de
vue (geo)graphique mais pas en ce qui concerne les types d'objet pour MI.
En ce qui concerne votre code, il y a une question prealable a poser:
qu'allez-vous faire des donnees contenues dans ArrayPoints? Si vous pouvez
enfiler a la suite les coordonnees de tous les points d'une polyligne
complexe, vous ne pourrez pas les reutiliser correctement si vous ne savez
pas a quelle section ils appartiennent.
La solution d'enfilage complet des coordonnees serait ce qui suit. Notez
qu'il faut connaitre le nombre de nœuds dans chaque section.
k=0
For j=1 to intNbSections
sectNbNodes=ObjectInfo(iNoSequence, OBJ_INFO_NPOLYGONS+j))
For l=1 to sectNbNodes
k=k+1
ArrayPoints(k).X = ObjectNodeX(iNoSequence ,j ,l)
ArrayPoints(k).Y = ObjectNodeY(iNoSequence ,j ,l)
Next 'k
Next 'j
Jacques Paris
#3 Tue 25 September 2001 21:53
- Karim Jerbia
- Invité
Re: Nombre de sections
Le but de remplir ce tableau est pour calculer la longueur de conduite
entre 2 chambres sachant qu'il y a des cas ou le tuyau commence au
centre de la chambre alors que reellement il doit commencer a
l'extremite, d'ou un certain nombres de petit segments a ne pas prendre
en compte.
Je vais essayer avec ta proposition.
Je remercie tous le monde pour leur aide.