JFTxJ Posté(e) le 27 avril 2005 Posté(e) le 27 avril 2005 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."
Pako Posté(e) le 27 avril 2005 Posté(e) le 27 avril 2005 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
JFTxJ Posté(e) le 27 avril 2005 Auteur Posté(e) le 27 avril 2005 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."
Pako Posté(e) le 27 avril 2005 Posté(e) le 27 avril 2005 Cher JFTxJ,Voici un exemple que j'ai trouvé dans les samples d' ACAD2000\SAMPLE\VBA\example_code.DVBAprè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
JFTxJ Posté(e) le 28 avril 2005 Auteur Posté(e) le 28 avril 2005 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."
Pako Posté(e) le 28 avril 2005 Posté(e) le 28 avril 2005 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant