Aller au contenu

samideqlqpart

Membres
  • Compteur de contenus

    26
  • Inscription

  • Dernière visite

Tout ce qui a été posté par samideqlqpart

  1. salutbref,net et precis merci à+
  2. Faut il pour une question de gain de temps et d'espace mémoire declarer les variables en locales ou globales C'est à dire que l'espace memoire reservé à la variable "x" n'est crée qu'au moment de l'appel du code par le compilateur ou tout simplement la declarer en globale et l'espace memoire est reservé à cette variable pour tout le projet (même variable x) exemple Local: private void btnR1_Click(object sender, EventArgs e) { int x } private void btnR2_Click(object sender, EventArgs e) { int x } Global: int x private void btnR1_Click(object sender, EventArgs e) { } private void btnR2_Click(object sender, EventArgs e) { }
  3. 1/j'ai compris que la declaration de type implicite var n'est valable que pour les variables locales? 2/ c'est à dire?
  4. Toujours sur le même exemple Pourquoi avoir ecris // création d'une instance de ModelessDialog var dialog = new ModelessDialog(); et non pas ModelessDialog dialog = new ModelessDialog(); vu qu'il s'agit d'une boite de dialogue? pkoi var
  5. Que signifie: [assembly: CommandClass(typeof(AcadUISample.ModalDialog.Commands))] code que j'ai trouvé sur "gileCAD" "Les interfaces utilisateur avec AutoCAD .NET" merci
  6. Very big erreur de ma part merci je suis parti de consoleApplication au lieu de classlibrary using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; namespace AddlightPolyline { public class Class1 { [CommandMethod("AddLightweightPolyline")] public static void AddLightweightPolyline() { // Get the current document and database Document acDoc = Application.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // Start a transaction using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // Open the Block table for read BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // Open the Block table record Model space for write BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[blockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // Create a polyline with two segments (3 points) Polyline acPoly = new Polyline(); acPoly.SetDatabaseDefaults(); acPoly.AddVertexAt(0, new Point2d(2, 4), 0, 0, 0); acPoly.AddVertexAt(1, new Point2d(4, 2), 0, 0, 0); acPoly.AddVertexAt(2, new Point2d(6, 4), 0, 0, 0); // Add the new object to the block table record and the transaction acBlkTblRec.AppendEntity(acPoly); acTrans.AddNewlyCreatedDBObject(acPoly, true); // Save the new object to the database acTrans.Commit(); } } } }
  7. Bonjour A titre d'exemple pour commencer mon apprentissage sur c# j'ai repris le code pour le tracage de polyline sur "AutoCad .Net developers guide" AddLightweightPolyline 1. Seulement ne génère pas de DLL pour etre appelé par Netload? 2. A l'execution du code j'ai ce qui suit: Error 1 Program 'c:\Users\home\Documents\Visual Studio 2013\Projects\lightpoly\lightpoly\obj\Debug\lightpoly.exe' does not contain a static 'Main' method suitable for an entry point C:\Users\home\Documents\Visual Studio 2013\Projects\lightpoly\lightpoly\CSC lightpoly à moins que j'ajoute pour que l'erreur disparaisse static void Main(string[] args) { } Voici le code, est ce que c'est une ecriture juste? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; namespace lightpoly { class Program { static void Main(string[] args) { } [CommandMethod("AddLightweightPolyline")] public static void AddLightweightPolyline() { // Get the current document and database Document acDoc = Application.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // Start a transaction using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // Open the Block table for read BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // Open the Block table record Model space for write BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[blockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // Create a polyline with two segments (3 points) Polyline acPoly = new Polyline(); acPoly.SetDatabaseDefaults(); acPoly.AddVertexAt(0, new Point2d(2, 4), 0, 0, 0); acPoly.AddVertexAt(1, new Point2d(4, 2), 0, 0, 0); acPoly.AddVertexAt(2, new Point2d(6, 4), 0, 0, 0); // Add the new object to the block table record and the transaction acBlkTblRec.AppendEntity(acPoly); acTrans.AddNewlyCreatedDBObject(acPoly, true); // Save the new object to the database acTrans.Commit(); } } } }
  8. Salut! c'est ce que je vais faire, dommage pour ce temps passé sur vb.net. ça me fait un deuxieme langage à connaître ,heureusement que je ne pars pas dans un terrain inconnu merci pour tout en cas de difficulté je vous ferai appel.
  9. Bonjour tout est ok! je suis parti des 5 secondes à environ 2 secondes et celà à la prelmère utilisation d'autocad et aux utisations suivantes à environ 100 ms Je trouve que c'est un gain de temps considerable. Une autre question, n'est il pas plus utile que je converti le tout à C#? peut etre que je gagnerai plus de temps, vu la difference de compilation entre les langages? merci
  10. vstudio ne semble pas me donner la main. même si je desactive l'option ça reste souligné en rouge "there were build error.would....." patience!
  11. Bonjour c'est des choses que j'ignorai même dans les cours d'apprentissage je ne suis pas tomber sur ce focus"activation de Option Strict" sinon pourquoi perdre du temps car je suis toujours en train de faire les rectifications. j'apprends toiujours ! et je paie de mon ignorance. merci, je vous aviserai une fois terminer
  12. et vogue la galère!
  13. Exactement c'est tout rouge, dépasse 102 err genre, Option Strict On disallows implicit conversions from 'Autodesk.AutoCAD.DatabaseServices.DBObject' to 'Autodesk.AutoCAD.DatabaseServices.BlockTableRecord'. Option Strict On disallows operands of type Object for operator '='. Use the 'Is' operator to test for object identity. If ComboBox1.SelectedItem = "PotRive 1 " Then.. Option Strict On disallows implicit conversions from 'Object' to 'Integer'.... Arm(i) = DiamCoin2.SelectedItem replace with CInt(DiamCoin2.SelectedItem). la liste est longue
  14. Bonjour j'ai Option Strict = Off je vais lire attentivement l'article Merci
  15. par contre l'utilisation de la liaison tardive (implicite avec Object en VB si l'option strict est désactivée) peut considérablement ralentir l'exécution. c'est à dire?
  16. Bonjour C'est exactement le cas; le temps est notablement réduit pour les exécutions suivantes(de l'ordre de 30milisec) et à la première exécution il est aux environ de 5sec, c'est à dire à la première exécution d'AutoCAD. Donc dois'je optimiser mon code,peut etre que le problème est là? car dans l'ecriture de mon code je fais appel à d'autres codes! ce qui ralentit l'exécution peut être dans la declaration des codes : publique/privée et comme vous l'avez mentionner c'est à la première exécution d'AutoCAD! Merci pour l'attention.
  17. bonjour je suis arrivé à ce point avec l'utilsation de stopwatch un phenomène! la durée totale est de 4823msecondes sw.Start() armature(acBlkTblRec, acCurDb, acTrans, New Point3d(origTextX, origTextY, 0)) sw.Stop() total = sw.ElapsedMilliseconds Dim ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor ed.WriteMessage(vbLf & "Durée totale: " & total & "millisecondes") Mais en exécutant stopwatch à l'interieur de ma fonction, la durée totale est de 25 msecondes Public Sub armature(ByRef acBlkTblRec As BlockTableRecord, ByRef acCurDb As Database, ByRef acTrans As Transaction, _ ByVal origTEXT As Point3d) sw.Start() -... -.. - - sw.Stop() total = sw.ElapsedMilliseconds Dim ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor ed.WriteMessage(vbLf & "Durée totale: " & total & "millisecondes") End Sub Ou est le problème?
  18. bonjour je suis arrivé à ce point avec l'utilsation de stopwatch un phenomène! la durée totale est de 4823msecondes sw.Start() armature(acBlkTblRec, acCurDb, acTrans, New Point3d(origTextX, origTextY, 0)) sw.Stop() total = sw.ElapsedMilliseconds Dim ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor ed.WriteMessage(vbLf & "Durée totale: " & total & "millisecondes") Mais en exécutant stopwatch à l'interieur de ma fonction, la durée totale est de 25 msecondes Public Sub armature(ByRef acBlkTblRec As BlockTableRecord, ByRef acCurDb As Database, ByRef acTrans As Transaction, _ ByVal origTEXT As Point3d) sw.Start() - - - - sw.Stop() total = sw.ElapsedMilliseconds Dim ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor ed.WriteMessage(vbLf & "Durée totale: " & total & "millisecondes") End Sub Ou est le problème?
  19. Bonjour, idem même avec QueueForGraphicsFlush sur chaque entité ajoutée le dessin s'affiche en entier apres un temps d'attente. par contre j'ai trouvé quelque chose d'interessant fait par Norman Yuan "Showing Progress for long code execution in AutoCAD" sur Drive AutoCAD with Code mais un peu compliqué; qui répond peut être à ma question?
  20. c'est à dire, après chaque entité créée Dim tr As Transaction = db.TransactionManager.StartTransaction() Using tr 1ere entité....... tr.AddNewlyCreatedDBObject tr.Commit() End Using Dim tr As Transaction = db.TransactionManager.StartTransaction() Using tr 2eme entite ....... tr.AddNewlyCreatedDBObject tr.Commit() End Using
  21. oui c'et bien ça je pense avoir donner des precision précedemment. et je pense que vous avez decélé mon obstacle, d'ailleurs un peu plus haut vous aviez bien mentionner; <br style="color: rgb(28, 40, 55); font-size: 13px; line-height: 19.5px; background-color: rgb(250, 251, 252);">Dans tous les cas, d'après ce que tu décris "l'attente" devrait démarrer au moment où l'utilisateur spécifie le point d'insertion et se terminer quand le code finit de dessiner la dernière entité. en ce qui concerne le programme j'avais ecris: c'est une application qui se charge de dessiner des poteaux de batiment. je charge mon application avec NETLOAD. il ya là une interface qui me demande d'introduire les données tels que;hauteur de poteau, largeur, hauteur d'etage , etc... Une fois les données introduites je lance l'exécution.<br style="color: rgb(28, 40, 55); font-size: 13px; line-height: 19.5px; background-color: rgb(250, 251, 252);">maintenant je precise un point d'insertion sur autocad.<br style="color: rgb(28, 40, 55); font-size: 13px; line-height: 19.5px; background-color: rgb(250, 251, 252);">et me voilà attendre l'affichage du poteau qui met un bon bout de temps pour apparaitre!<br style="color: rgb(28, 40, 55); font-size: 13px; line-height: 19.5px; background-color: rgb(250, 251, 252);">ok je relance l'application ,introduction de données,...<br style="color: rgb(28, 40, 55); font-size: 13px; line-height: 19.5px; background-color: rgb(250, 251, 252);">l'affichage du dessin maintenant est plus rapide !<br style="color: rgb(28, 40, 55); font-size: 13px; line-height: 19.5px; background-color: rgb(250, 251, 252);"> Maintenant, mais normalement quand on ajoute des entités dans AutoCAD, il apparaissent quand on appelle Commit() sur la Transaction qui a servi à ajouter ces objets. Peut etre ce temps d'attente est dù à ça car j'ai une seule transaction pour l'ensemble des codes, d'ou un seul Commit()????????? j'aurais peut être dù metrre plusieurs transaction? merci pour la perseverance.
  22. Bonjour J'ai un peu réduit le temps d'impression grace à Stopwatch j'ai trouve que l'utilsation de la condition Case est mieux adaptée que If...then .successifs dont j'abuse. par contre j'insiste toujours comment indexer l'apparition du dessin après getpoint ..? Merci.
  23. salut je cravache,je trécuche, je me relève et j'avance pas! je pense devoir revoir quelque chose dans mes codes et procédures. j'ai trouvé à des endroits je passe 5700 ms de la première exécution à 110 ms en moyenne sur les suivantes. seulement je reviens toujours à la question: Comment specifier la fin de l'exécution des codes?
  24. salut! j'ai vainement essayer une instance de StopWatch mais rien eu. Seulement maintenant, ce que je cherche exactement comme tu l'as remarquer; comment savoir quand le code finit de dessiner la dernière entité.? car à mon niveau entre la première et dernière entité c'est du "nanoseconde"le dessin s'affiche en entier en une fraction de seconde et à partir de la je peux peut etre mettre un message d'attente qui doit disparaitre dès que le dessin est affiché. En ce qui concerne les calques, styles de textes , de cotes, etc... le code est etabli d'une manière tel qu'il s'assure d'abord si le calque existe sinon il en crée un. voici à titre d'exemple un code pour le style de textes et c'est la même procédure pour les calques , cotation crées un à un, peut etre le problème est ici, car pour une dizaine de layer........ Dim acTextTbl As TextStyleTable acTextTbl = acTrans.GetObject(acCurDb.TextStyleTableId, _ OpenMode.ForRead) Dim Texttitre As String = "Text titre" If acTextTbl.Has(Texttitre) = False Then Dim acTextTblRec As TextStyleTableRecord = New TextStyleTableRecord() acTextTblRec.Name = Texttitre acTextTblRec.TextSize = 40 acTextTblRec.XScale = 1.5 acTextTblRec.FileName = "Consolas.shx" acTextTbl.UpgradeOpen() acTextTbl.Add(acTextTblRec) acTrans.AddNewlyCreatedDBObject(acTextTblRec, True) End If
  25. Bonjour, j'arrive pas à attacher les fichiers ....Le serveur a retourné une erreur durant l'envoi.... je vais etre plus explicite je suis sur autocad c'est une application qui se charge de dessiner des poteaux de batiment. je charge mon application avec NETLOAD. il ya là une interface qui me demande d'introduire les données tels que;hauteur de poteau, largeur, hauteur d'etage , etc... Une fois les données introduites je lance l'exécution. maintenant je precise un point d'insertion sur autocad. et me voilà attendre l'affichage du poteau qui met un bon bout de temps pour apparaitre! ok je relance l'application ,introduction de données,... l'affichage du dessin maintenant est plus rapide ! Comme dans le programme je charge des layers, des styles de cotation, styles de textes.... peut etre que ça met du temps pour les charger à la première exécution et après c'est ok? je n'utilise pas de bloc. Donc je cherche à combler ce temps d'attente par un message priant l'utilisateur de patienter et qui disparait à l'apparition du dessin ou une progressbar. comme je ne sais pas à quel moment il va apparaitre et voilà.
×
×
  • 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é