Aller au contenu

bazoul

Membres
  • Compteur de contenus

    116
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Tout ce qui a été posté par bazoul

  1. Je n'ai pas testé mais il semblerait que la fonction AddAllowedClass utilise une liste, donc en ajoutant appelant la fonction autant de fois que de type d'objet souhaité cela devrait fonctionner ... je vais vérifier mais sur le fond ... PromptEntityOptions peo = new PromptEntityOptions("\nSelectionner une fenêtre: "); peo.SetRejectMessage("\nSelection invalide..."); peo.AddAllowedClass(typeof(Viewport), true); peo.AddAllowedClass(typeof(Polyline), true); peo.AddAllowedClass(typeof(Polyline2d), true); PromptEntityResult per = Application.DocumentManager.MdiActiveDocument.Editor.GetEntity(peo); Après test cela fonctionne ...
  2. J'ai rencontré le meme problème mais uniquement avec un windows 64bits et incapable de le solutionner ... j'ai testé différentes manip dont celle exposé sur Through the interface mais rien de rien ...
  3. Tu peux éventuellement te saisir d'un lisp pour demander les paramètres nécessaire a ta fonction ... <Autodesk.AutoCAD.Runtime.LispFunction("Toto")> _ Public Function Toto(ByVal rb As Autodesk.AutoCAD.DatabaseServices.ResultBuffer) As String Dim args() As TypedValue 'Traitement args = rb.AsArray return "Test" End Function et dans le lisp tu appel la fonction de ta dll avec les paramètres : (setq Result (Toto Param1 Param2))
  4. En meme temps si les segments sont continu peut on dire qu'il y a intersection? Dans ce cas rajouter comme indiqué un test sur le point de départ et d'arrivée ou alors se faire un algo maison :D
  5. En effet mais avoueons que c'est quand même une bonne habitude a prendre surtout quand tu as plusieurs boucles imbriquées ...
  6. Si j'ai compris ce que tu veux faire essaie de faire ça : ( testé sur Acad2013 ) Dim dir As String = "C:\plans" For Each fichier As String In System.IO.Directory.GetFiles(dir, "*.dwg", SearchOption.AllDirectories) Using db As Database = New Database(False, True) Try db.ReadDwgFile(fichier, FileShare.ReadWrite, True, vbNullString) Using tr As Transaction = db.TransactionManager.StartTransaction db.Insunits = UnitsValue.Centimeters tr.Commit() End Using db.SaveAs(fichier, DwgVersion.Current) Catch ex As Exception End Try End Using Next MsgBox("Traitement terminé")
  7. Messieurs, Ya de ça quelque temps je m'étais amusé a refaire la fonction d'intersection de polyligne autocad et concernant la demande si dessous c'est le temps de traitement qui peche .... pour deux polylignes closes identiques composées de 11.000 arcs qui s'intersectent mon algo mettait 11minute là ou la fonction intersectwith d'autocad en mettait un peu plus de 33minutes .... Concernant une polyligne composée de 1.000arcs l'algo était 62fois plus rapide ... Les temps annoncés tenant compte du temps de conversion des objets autocad en objet ... le tout fait en VB.net. Mon but était de trouver tous les points d'intersections réel entre deux polylignes sélectionnés.. Au final dans mon exercice tous se résumait en calcul mathématique... en revanche j'ai laché le morceau quand j'ai voulu m'attaquer au arcs elliptique ^^
  8. J'arrive bien après la bataille mais .... normalement ya un fichier *.pdb dans le dossier de génération,c'est ce qui gère les points d'arrets si je ne dis pas de bétise,le supprimer devrait régler le pb ...
  9. Bonjour, Déja si tu es en mode SDI peut etre bien que sa peux poser problème ^^ Sinon pour fermer en enregistrant c'est : Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.CloseAndSave(CurrentFilePath) et pour fermer sans enregistrer c'est : Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.CloseAndDiscard() Cordialement,
  10. A mon sens le plus difficile dans le .Net,ormis la syntaxe,c'est la compréhension de la POO. Du moment où on a compris le principe,on s'en sort sans trop de difficulté a coup de recherche dans l'explorateur d'objet,de recherche sur le net et de recherche personnelle ... Au passage,a mon sens les API les plus pourris avec lesquel j'ai été amené de travailler reste encore les API microsoft,et notament celle de microsoft Visio ... Quoi qu'il en soit,comme dit précédemment,le temps est l'élément le plus important,comme dans toutes choses.
  11. bazoul

    ouvrir fichier en VBN.ET

    Penses à indiquer le sujet comme résolu. Bonne continuation B)
  12. bazoul

    ouvrir fichier en VBN.ET

    Remplace Application.ShowModalDialog(dlg) par dlg.ShowDialog(Autodesk.AutoCAD.ApplicationServices.Application.MainWindow) Tu devrais obtenir le même comportement mais sans l'erreur de contexte. PS: je pensais que tu avais fait un affichage non-modal(.show) au lieu d'un affichage modal(.showdialog) .. je n'avais pas pensé que tu avais utilisé la fonction ShowModalDialog PPS: ton document serai ouvert mais ne sera pas celui actif ...
  13. bazoul

    ouvrir fichier en VBN.ET

    L'utilisation de Path.Combine n'influt en rien le fonctionnement,cela te permet de ne pas te soucier du séparateur entre les deux chemins ^^ A priori en testant tu aurais fais un affichage non modale de ta boite de dialogue ... si tu as un frmdwg.Show(),remplace par frmdwg.showDialog() A toi de me confirmer Cordialement,
  14. bazoul

    ouvrir fichier en VBN.ET

    Bonjour pat06, Si tu me permet,je te conseillerai d'utiliser IO.Path.Combine(DirListBox1.Path, FileListBox1.Text) au lieu de DirListBox1.Path & "\" & FileListBox1.Text Ensuite,il est très certainement plus "propre" d'effectuer le traitement dans une classe et non directement dans le formulaire. Enfin,tu dis que ya un message d'erreur mais tu ne donnes pas d'information ... code erreur,ligne qui provoque l'erreur ... Mieux vaut trop de détails que pas assez ^^ Cordialement,
  15. En effet,démarche étrange,mais comme précisé,hier soir j'avais pas la motivation de créer un compte sur le site exmateria ... je suis tombé sur ce post avant de quitter mon travail,et j'ai préféré posté de suite avant d'oublier ^^
  16. Bonjour (Gile), Je me permettrais d'intervenir ici car pas de compte sur le site "Exmateria" et j'avoue volontiers que ce soir je n'ai pas la motivation pour en créer un! A la question de patrick de savoir si je cite : Ce que je peux dire c'est qu'en VB.Net il y a la possibilité de le faire en faisant : - Propriétés du projet - Onglet Référence - Sous le label "Espaces de noms importés" tapper dans la textbox : AcadAp = Autodesk.AutoCAD.ApplicationServices.Application - Cliquer sur le bouton "Ajouter une importation utilisateur Je n'ai pas fais le test en C# [EDIT]( je viens de regarder mais je n'ai pas trouvé...)[/EDIT] mais en VB.Net cela fonctionne et cette alias est utilisable partout dans le projet. Maintenant,bien que cela soit utilisable j'ai envie de dire "ATTENTION" ! Cette méthode peut être dangereuse,notament car cette instruction n'est pas visible dans les fichiers de classes ... Cordialement,
  17. bazoul

    Sélection types de lignes

    Bonjour, Je viens de tester sur autocad 2009 SP3 32bits avec en cas de figure: Dans le modelspace : -Une ligne DUCALQUE -Un cercle Acad_ISO -Une polyligne CACHE2 -Une polyligne DUCALQUE Dans le paperspace : -Une ligne Continious Le retour de la fonction est 3entités soit les deux éléments dans le modelspace + 1 élément du paperspace. Tu travailles avec quelle version d'autocad?Language?Service pack? 32 ou 64bits Cordialement,
  18. bazoul

    Sélection types de lignes

    Bonjour, Je suis reparti de ce que tu avais posté,a toi de voir si cela te convient: Dim intGpCode(2) As Integer Dim varDataValue(2) As Variant Dim ObjSelect As AcadSelectionSet Dim i As Integer Dim CurrentObj As AcadEntity 'Création d'une sélection dans le dessin : Set ObjSelect = ThisDrawing.SelectionSets.Add("SelectLineType") 'Code DXF -4 pour les filtre de sélection (<>, >, <, =) intGpCode(0) = -4 varDataValue(0) = "<NOT" 'Code DXF 6 pour le type de ligne. intGpCode(1) = 6 varDataValue(1) = "ByLayer" intGpCode(2) = -4 varDataValue(2) = "NOT>" 'Réalisation de la sélection ObjSelect.Select acSelectionSetAll, , , intGpCode, varDataValue 'Partie vérification MsgBox (ObjSelect.Count) '0 For i = 0 To ObjSelect.Count - 1 Set CurrentObj = Nothing Set CurrentObj = ObjSelect.Item(i) Next i ObjSelect.Delete Cordialement,
  19. Bonjour,je me fais détéreur de topic ... Ton problème est toujours d'actualité? Si oui,ton autocad est lancé? Interop? Managé? Tu parles de vba,en conclusion je suppose que ton autocad est lancé,et fichier non ouvert. Je te propose donc le code suivant en managé(non testé mais normalement sa ne devrait pas trop mal marché^^) : Dim db As Autodesk.AutoCAD.DatabaseServices.Database Dim lFile As String = "" Dim lPassword As String = "" Dim lThmb As System.Drawing.Bitmap 'Création d'une nouvelle DataBase db = New Database(False, True) 'Lecture du fichier Dwg db.ReadDwgFile(lFile, FileOpenMode.OpenForReadAndReadShare, False, lPassword) 'Récupération de l'aperçu enregistré lThmb = db.ThumbnailBitmap 'Libération de la DataBase db.Dispose() : db = Nothing
  20. bazoul

    Fenêtre d'attente en VBA

    Bonjour, Tu souhaite juste afficher un boite de dialogue ou il ne se passe rien ou alors tu souhaites mettre a jour cette boite de dialogue en dynamique avec diverses informations? Cordialement,
  21. bazoul

    Lister les Présentations

    Bonjour, En soit si je ne dis pas de bêtise récupérer les présentations sa donne ceci: Dim CurrentLayout As AcadLayout Dim i As Integer For i = 0 To ThisDrawing.Layouts.Count - 1 Set CurrentLayout = ThisDrawing.Layouts.Item(i) If CurrentLayout.Name <> "Model" Then 'Traitement a insérer ici End If Next i Set CurrentLayout = Nothing Maintenant à toi de voir pourquoi une liste modifiable .... Cordialement, PS: Ah entre temps tu as trouvé ... ^^
  22. Bonjour a vous, Voila alors je me suis lancé dans l'écriture d'une dll C++ pour autocad. Cette Dll ne fait que du calcul,et utilise que des class que j'implémente en plus bien sur des fonctions de base. Grosso,j'ai créé une classe Mabase,puis une classe de Maligne qui hérite de la class de Mabase. La Class MaBase possède une fonction GetDist qui est public La class MaLigne possède une fonction IntersectWith qui prends en paramètre un objet de type MaLigne et deux double. Tous pourrais aller dans le meilleur sauf que bizarrement les choses ne se passent pas comme je le souhaite. Certaine variable déclarée localement dans la fonction InterSetcWith sont indiqué comme "Dist2 erreur : l'identificateur 'Dist2' est hors de portée". J'aurais bien besoin d'un coup de patte sur le sujet mais avant d'en exposer plus esque quelqu'un serait calé sur le sujet C++ ? Si je ne dis pas de bétise je fais du C++ managé compilé en ancienne syntaxe et le tout sous IDE : Visual Studio 2010 et autocad 2012. Cordialement,
  23. Je peux te répondre pour autoCad Architecture 2009 ... il te faut faire: -Format/Gestionnaire des styles ( ou commande : _AecStyleManager) Dans l'onglet Objet de documentation/Styles de tables de nomenclature : Définir le style des tableaux que tu souhaites ajouter a ton dessin Puis -Document/Nomenclature/Ajouter une table de nomenclature( ou commande : _AecScheduleAdd) Tu sélectionnes les éléments que tu souhaites ajouter (ou tu t'embêtes pas et tu sélectionne tout!) et tu valides en dessinant ta table de nomenclature et voila. [Edité le 8/8/2011 par bazoul]
  24. Je regarde dans ma machine ce week end et te jetterai le code ^^
  25. Pour ma part j'ai un code similaire en VB.NETqui traine quelque par sur ma machine si ça t'intéresse ....
×
×
  • 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é