Aller au contenu

Faces -- PolyfaceMesh


Messages recommandés

Posté(e)

J'ai besoin d'obtenir les faces d'un PolyfaceMesh existant dans le dessin.

 

Le modèle VBA de AutoCAD contiens la propriété (caché) "Faces" existe dans l'objet AcadPolyfaceMesh (mFaces = PolyfaceMeshObj.Faces), mais je reçoit toujours une erreur "Invalid use of property" (mFaces est Variant et même un Debug.Print PolyfaceMeshObj.Faces, avec ou sans un (0), me lance la même erreur). En plus, la propriété n'est pas documenter dans le fichier d'aide. :mad:

 

Je voulais savoir comment (autre qu'avec cette propriété qui semble défectueuse) est-ce que je pourrais extraire la liste des points formant les faces (donc la séquence des "Coordinates" qui est nécessaire dans le object.AddPolyfaceMesh(VerticesList, FaceList) ).

 

Merci beaucoup. :cool:

Apprentis-expert....

"The human mind, once stretched by a new idea, never regains its original shape."

Posté(e)

Ceci va peut-être d'aider :

 

Voici un exemple en LISP : ICI

En bas de page de cette exemple, on y retrouve la NOTE suivante :

 

Notez que ni la liste de sommet ni la liste de visage ne sont converties en types de données variables. Si vous avez des ennuis avec les données saisit l'exemple, employez la vlax-faire-variante - par exemple, au faceList de converti à un type variable :

 

(setq faceList (vlax-make-variant faceList vlax-vbArray))

 

 

 

Bonne Chance !

 

 

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Posté(e)

Merci mais.........

 

Je doit malheureusement rester dans VBA.

 

Parcontre, (je ne crois pas que c'est possible), existe-t-il un équivalent de SendCommand, mais me permettant d'exécuter du code LISP à partir de VBA. (Je pourrais aussi écrire cette chaîne dans un fichier texte, mais est-ce que je peut le faire exécuter...)

 

Merci...

Apprentis-expert....

"The human mind, once stretched by a new idea, never regains its original shape."

Posté(e)

Cher JFTxJ,

Voici un exemple que j'ai trouvé dans les samples d' ACAD2000\SAMPLE\VBA\example_code.DVB

Après quelques modifications, voilà le résultat :

 

Sub Example_NumberOfFaces()

.....' This example creates a PolyFaceMesh and displays the number of faces it contains

 

.....Dim vertexList(0 To 17) As Double

.....Dim FaceList(0 To 7) As Integer

.....Dim NewPolyFaceMeshObj As AcadPolyfaceMesh

.....Dim direction(0 To 2) As Double

 

.....'Data for new PolyFaceMesh object

.....vertexList(0) = 4: vertexList(1) = 7: vertexList(2) = 0

.....vertexList(3) = 5: vertexList(4) = 7: vertexList(5) = 0

.....vertexList(6) = 6: vertexList(7) = 7: vertexList(8) = 0

.....vertexList(9) = 4: vertexList(10) = 6: vertexList(11) = 0

 

.....' This is a non-planar face!

.....vertexList(12) = 5: vertexList(13) = 6: vertexList(14) = 0

.....vertexList(15) = 6: vertexList(16) = 6: vertexList(17) = 3

 

.....'Some Quadfaces, for Tris is the 4th pt the same as the 3rd

.....'The common edge 2-5 and 5-2 is invisible for both faces

 

.....FaceList(0) = 1: FaceList(1) = -2: FaceList(2) = 5: FaceList(3) = 4

.....FaceList(4) = 2: FaceList(5) = 3: FaceList(6) = 6: FaceList(7) = -5

 

.....' Create new PolyFaceMesh object fixed by Reini Urban 12/16/99: added ThisDrawing.

.....Set NewPolyFaceMeshObj = ThisDrawing.ModelSpace.AddPolyfaceMesh(vertexList, FaceList)

.....NewPolyFaceMeshObj.Update ' undocumented

 

.....' Change the viewing direction of the viewport to better see the polyface mesh

.....direction(0) = -1: direction(1) = 1: direction(2) = 1

.....ThisDrawing.ActiveViewport.direction = direction

.....ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport

.....ThisDrawing.Application.ZoomAll

 

.....' Display number of faces in this PolyFaceMesh

.....MsgBox "The new PolyFaceMesh contains " & NewPolyFaceMeshObj.NumberOfFaces & " faces."

 

.....' Return all the coordinates of the PolyFaceMesh

.....Dim retCoord As Variant

.....[surligneur]retCoord = NewPolyFaceMeshObj.Coordinates[/surligneur]

 

.....' Export coordinates in the file....

.....Dim fs, a

.....Dim stSupport As String

.....Dim stTab() As String

.....Dim I As Integer

.....Dim J As Integer

.....Dim iINT As Integer

 

.....Set fs = CreateObject("Scripting.FileSystemObject")

.....Set a = fs.CreateTextFile("C:\PolyFaceMesh_Coordinates.txt", True)

[surligneur]

.....For I = LBound(retCoord) To UBound(retCoord)

..........a.WriteLine (retCoord(I))

.....Next

[/surligneur]

.....a.Close

 

End Sub

 

Vérifie dans ton réperoire C:// pour retrouver le fichier : PolyFaceMesh_Coordinates.txt

qui contient tous les coordonnées du nouveau PolyFaceMesh créé !

 

 

N'oublie pas ta petite donation pour encourager et soutenir CADxp ! :o

 

 

 

Au plaisir de s'entraider ! ;)

 

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Posté(e)

Malheureusement, ces coordonnées, je les ai déjà..... Mais si tu regarde bien:

 

ThisDrawing.ModelSpace.AddPolyfaceMesh(vertexList, [surligneur] FaceList[/surligneur])

 

...ce n'est pas les vertex list que j'ai besoin, (je sais très bien que la propriété "Coordinates" existe), mais c'est la FaceList qui ne peut être extraite de l'objet. Ce que ce fichier me donne n'est simplement que la liste de tout les points, sans me dire quelles faces elles sont associés à.......

 

Merci quand-même......

 

[Edité le 28/4/2005 par JFTxJ]

Apprentis-expert....

"The human mind, once stretched by a new idea, never regains its original shape."

Posté(e)

Oupps ! Excuse moi j'ai lu trop vite ta question....

 

Effectivement, il y a aucune propriété pour extrait les points de la FaceList en VBA.

 

En espèrant que mon code (ci-haut), aidera à quelqu'un d'autre .....

 

L'Art de Perdre son Temps ! :P

 

 

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité