Aller au contenu

sam-123

Membres
  • Compteur de contenus

    55
  • Inscription

  • Dernière visite

Tout ce qui a été posté par sam-123

  1. Non, il faux mettre « End Using » c’est encore un oubli de ma part ;)
  2. Bonjour a tous et a toutes, Voila une question de culture générale (la mienne question vbnet est un peux limite) C’est l’emploient du « commit » et « dispose » qui me brouille un peux Si je comprends bien on met le : • Trans.commit() pour confirmation • Trans.dispose() pour libération de la mémoire Maintenant j’ai un programme qui en appelle d’autre ex : Programme principale Public sub Principale () . . . . . . Using LockDoc As DocumentLock = MyDWG.LockDocument() Using MyTrans As Transaction = MyDb.TransactionManager.StartTransaction REM si je ne met pas un “MyTrans.Dispose ()” ici le programme bloque . . . . . . Premier () Second () . . . . . . MyTrans.Commit() MyTrans.Dispose() End sub Programme n°1 Public sub premier () . . . . . . Using LockDoc As DocumentLock = MyDWG.LockDocument() Using MyTrans As Transaction = MyDb.TransactionManager.StartTransaction . . . . . . MyTrans.Commit() MyTrans.Dispose() End sub Programme n°2 Public sub Second () . . . . . . Using LockDoc As DocumentLock = MyDWG.LockDocument() Using MyTrans As Transaction = MyDb.TransactionManager.StartTransaction . . . . . . MyTrans.Commit() MyTrans.Dispose() End sub Dans les programmes (premier et second) ils sont appelés séparément et ensemble Donc le commit et dispose je crois qu’ils sont bien employer ? Dans le programme principal je crée des objets puis j’appelle le programme « premier et second » Donc la aussi il faut un commit() et dispose() Ou alors je me brouille de nouveaux les pinceaux ?
  3. Question de culture générale : ;) Gile, pourquoi une fonction doit toujours renvoyer quelques chose en Vb.net ? En VBA ce n’étais pas nécessaires Ex : Public Function MaFonction() . . . . End Function C’était suffisant
  4. Voilà A force de tourné, retourné, coupé . . . Voilà a ce quoi je suis arrive Hey, ca fonctionne ! :o Public Sub ImportDeBlock() Dim MyDWG As Autodesk.AutoCAD.ApplicationServices.Document MyDWG = Application.DocumentManager.MdiActiveDocument Dim MyDb As Autodesk.AutoCAD.DatabaseServices.Database MyDb = MyDWG.Database Using LockDoc As DocumentLock = MyDWG.LockDocument() Using MyTrans As Transaction = MyDb.TransactionManager.StartTransaction Dim MyDbSource As New Database MyDb = MyDWG.Database MyDbSource.ReadDwgFile("C:\Mes Blocks\Les Blocks.dwg", IO.FileShare.Read, True, "") MyDb.Insert("Block1.dwg", MyDbSource, True) MyDbSource.Dispose() MyTrans.Commit() End Using End Using End Sub
  5. Question d’ordre de culture générale, on parcourant le site (AutoCAD .NET Developer's Guide) J’ai remarqué qu’il n’y a rien sur les Insertion externes : Exemple : • Wblock • Image • Xref • . . . . . . . ?
  6. Bonjour a tous, En voulant cloner un WBlock il me bloque sur cette la ligne: MyDb.ReadDwgFile(FromFile, IO.FileShare.Read, True, "") Ma commande d’appelle : _ Public sub CPB() CopieBlock("C:\DimStyles\Les Blocks.dwg", "Block 1") End Sub Mon programme : Public Function CopieBlock(ByVal FromFile As String, ByVal BlockName As String) Dim MyDWG As Autodesk.AutoCAD.ApplicationServices.Document MyDWG = Application.DocumentManager.MdiActiveDocument Dim MyDb As Autodesk.AutoCAD.DatabaseServices.Database MyDb = MyDWG.Database Using LockDoc As DocumentLock = MyDWG.LockDocument() Using MyTrans As Transaction = MyDb.TransactionManager.StartTransaction MyDb.ReadDwgFile(FromFile, IO.FileShare.Read, True, "") Dim YourBlockT As Autodesk.AutoCAD.DatabaseServices.BlockTable Dim YourBlockTR As Autodesk.AutoCAD.DatabaseServices.BlockTableRecord YourBlockT = MyDb.BlockTableId.GetObject(Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead) YourBlockTR = YourBlockT(BlockName).GetObject(Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead) Dim myBlockT As Autodesk.AutoCAD.DatabaseServices.BlockTable myBlockT = MyDb.BlockTableId.GetObject(Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) Dim myMap As New Autodesk.AutoCAD.DatabaseServices.IdMapping Dim myObjs As New Autodesk.AutoCAD.DatabaseServices.ObjectIdCollection myObjs.Add(YourBlockTR.ObjectId) MyDb.WblockCloneObjects(myObjs, myBlockT.ObjectId, myMap, _ Autodesk.AutoCAD.DatabaseServices.DuplicateRecordCloning.Replace, False) MyTrans.Commit() End Using End Using End Function Je ne sais la raison,(pour moi il n’y a pas l’air d’avoir un probleme) [Edité le 16/2/2010 par sam-123] [Edité le 16/2/2010 par sam-123]
  7. Merci
  8. Bon, bon t’as de nouveau raison pour les arcs c’est trois point j’avais oublié de préciser le point d’insertion (mea culpa) Les 2Points c’étais pour les Bulge d’une Polyline. Clockwise le bulge a un rayon positif Anti- Clockwise le bulge a un rayon négatif
  9. En faite la question est très claire, mais c’est moi qui me suis empalé les pinceaux en l’expliquant. :exclam: La question est la suivante : Comment savoir qu’on dessine dans le sens des aiguilles d’une montre (Clockwise) En VBA je récupérais les .X et .Y du 1°Point et les comparer avec les .X et .Y du 2°Point Je me demandais s’il n’y avait pas de fonction ou de variable spécifique a AutoCad pour retourner le résultat En espérant que cette fois ci j’ai été plus claire.
  10. Re-bonjour a tous, J’ai gardé le plus difficile (pour moi) pour la fin, en lisp et VBA j’avais des difficultés avec. C’est le quadrant (clockwise) comment savoir si c’est négative ou positive C’est en faite pour déterminé l’angle de départ et l’ange d’arrive de mon arc Exemple pour insérer un coude, je donne deux positions(un angle droit) : 1. la direction 2. le sens [http://img17.imageshack.us/img17/262/coude.png] J’ai toujours bricolé pour le définir, ne sachant pas comment m y prendre Si quelqu’un (une) aurais la réponse Merci d’avance P.S :j’aurais voulue insérer une image pour mieux comprendre, mais je ne sais toujours pas comment insérer une image.[Edité le 15/2/2010 par sam-123][Edité le 15/2/2010 par sam-123][Edité le 15/2/2010 par sam-123] [Edité le 15/2/2010 par sam-123]
  11. Bonjour tout le monde, Tu (gile) m’as fait gagne beaucoup de temps, merci :D Dans mon cas c’étais rajouter un groupe a la création de mon Objet pour facilite la manipulation dans le MSpace. Pour ceux que ca intéresse ca donne ca: Dim GroupDico As New DBDictionary GroupDico = MyTrans.GetObject(MyDb.NamedObjectsDictionaryId, OpenMode.ForRead) Dim LesGroupes As DBDictionary LesGroupes = MyTrans.GetObject(GroupDico.GetAt("ACAD_GROUP"), OpenMode.ForWrite) Using LeGroupe As New Autodesk.AutoCAD.DatabaseServices.Group LeGroupe.Append(Pline0.ObjectId) LeGroupe.Append(Pline1.ObjectId) LeGroupe.Append(Pline2.ObjectId) LesGroupes.SetAt("*", LeGroupe) End Using Voilà maintenant je peux passer à la phase suivante. :casstet:
  12. Bonjour a tous et a toutes, Tout d’abord je voudrais m’excusé auprès de ceux que mes question commence a énervés Et remercié spécialement Gile pour sa patiente avec moi (pour les balise). Mais ayez un peux de patience il ne m’en reste plus que 2 : 1. les Groupes (que je vais poser maintenant) 2. les Quadrants (que je poserais la semaine prochaine) Voilà pour les Groupes en VBA c’étais comme cela qu’on procédé : Dim GroupCollectie As AcadGroups GroupCollectie = ThisDrawing.Groups Dim Group As AcadGroup Group = GroepCollectie.Add("*") Dim Legroup(0 To 1) As AcadEntity Legroup(0) = line1 Legroup(1) = Line2 Group.AppendItems(Legroup) Group.Update() Alors si quelqu’un aurais la gentillesse de m’indique l’équivalence en .Net. Je crois que j’ai enfin saisie pour les balises. :o
  13. Bonjour tout le monde, Quelqu’un pourrait il me dire l’équivalence de (TranslateCoordinates) en VB.net En VBA c’étais comme cela : [Dim PtStart, PtEnd As Variant] [PtStart = ThisDrawing.Utility.GetPoint(, vbCrLf & "Point de Dépard :")] [PtEnd = ThisDrawing.Utility.GetPoint(ThisDrawing.Utility.TranslateCoordinates(PtStart, [acWorld, acUCS, False), "Point d'Arrivé:")] Merci d’avance a celui ou a celle qui perdrait du temps à me répondre. ;)
  14. Voilà la bonne méthode Dim DnOption As PromptKeywordOptions = New PromptKeywordOptions("") DnOption.Message = vbLf & "Choix du Diametre: " DnOption.Keywords.Add("DN10") DnOption.Keywords.Add("DN15") DnOption.Keywords.Add("DN20") DnOption.Keywords.Add("DN25") DnOption.Keywords.Add("DN30") DnOption.AllowNone = False Dim DnRep As PromptResult = Application.DocumentManager.MdiActiveDocument.Editor.GetKeywords(DnOption) Dim Rep As String = DnRep.StringResult
  15. Ca fonctionne, super Gile l’homme de la solution :o merci ;)
  16. Oui la elle apparaisse toujours quand tu n’es pas en mode Dynamic, et la pour choisir une option il faux l’écrire. Mais quand tu es en mode Dynamic cela apparaît à l’écran, et la tu as deux choix : Soit tu déroule ta liste avec tes choix Soit tu la déroule avec la flèche de ton clavier Et c’est la que ca coince tu dois lâcher ta souris, appuyer sur la flèche, choisir une option puis taper enter sur ton clavier. En Dynamic seulement clické sur l’option. Bien sur à condition qu’elle soit déroule et c’est la que je ne vois pas ce que j’ai raté en écrivant mes lignes de commande. Ps : je vois que tu as une version AutoCad inferieure à 2008, si je ne me trompe le Dynamic des objets est apparu avec la version 2008. J’aurais voulue t’insère une image avec l’exemple, mais je ne sais pas comment faire pour l’insérer avec le commentaire
  17. La liste c’est le choix entre plusieurs DN ! [DN15/DN20/DN25/DN32]
  18. Bonjour, Voilà j’ai un petit soucie : Je n’arrive pas a déroulée ma liste, il faux chaque fois utilisée la flèche pour la voir enfin ? Y a t-il une option que je n’ai pas mise ? :casstet: Voila les lignes du programme: Dim DnOption As PromptStringOptions = New PromptStringOptions(vbCrLf & "Choix du diamètre:[DN15/DN20/DN25/DN32]:") DnOption.AllowSpaces = True DnOption.DefaultValue = "DN25" Dim DnRep As PromptResult = Application.DocumentManager.MdiActiveDocument.Editor.GetString(DnOption) Dim Rep As String = DnRep.StringResult (En Vba cela se faisait naturellement) S’il y un bénévole pour m’indiquer l’erreur commise, ça serais gentil de sa part ;) Merci d’avance
  19. Impeccable Merci beaucoup :)
  20. Bonjour Quelqu’un pourrait-il me dire ce qui n’est pas juste dans ma ligne de commande Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication.ActiveDocument. SendCommand("_MODEMACRO" & vbCrLf & "GP N° =" & "$(GetVar,USERI1)") . . . Ou dois-je utilisée (SendStringToExecute) Merci [Edité le 9/2/2010 par sam-123]
  21. Salut à tous et toutes Quelqu’un pourrait –il (elle) me dire de quelle manière rendre une palette Autocad « Auto-hide » actif dès le chargement ? J’avais pensé avec #PaletteSetStyles . . . J'ai tout essayé, en vain :casstet:
  22. Désole pour le temps que je t’ais fait perdre Mais finalement ça fonctionne. Merci encore ;) [Edité le 2/2/2010 par sam-123]
  23. J’ai réécris avec l’USING mais je crois que j’ai fait une bêtise quelque part. 1# Dim MyDoc As Document = Application.DocumentManager.MdiActiveDocument 2# Dim MyDb As Database = MyDoc.Database 3# Using lockDoc As DocumentLock = MyDoc.LockDocument() 4# Dim MyTransMan As Autodesk.AutoCAD.DatabaseServices.TransactionManager 5# Dim MyTrans As Transaction = MyDb.TransactionManager.StartTransaction() 6# MyTransMan = MyDoc.TransactionManager 7# MyTrans = MyTransMan.StartTransaction 8# Using MyTransDoc As Transaction = MyTransMan.StartTransaction() 9# Dim LtypTbl As LinetypeTable 11# LtypTbl = MyDb.LinetypeTableId.GetObject(Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) 12# Dim Lt1 As Autodesk.AutoCAD.DatabaseServices.LinetypeTableRecord 13# Lt1 = New Autodesk.AutoCAD.DatabaseServices.LinetypeTableRecord 14# Lt1.Name = "Abced" 15# Lt1.Comments = "Abced" 16# Lt1.NumDashes = 4 17# Lt1.SetDashLengthAt(0, 1.25) 18# Lt1.SetDashLengthAt(1, -0.25) 19# Lt1.SetDashLengthAt(2, 0.25) 20# Lt1.SetDashLengthAt(3, -0.25) 21# Lt1.PatternLength = 0.2 22# LtypTbl.Add(Lt1) 23# MyTrans.AddNewlyCreatedDBObject(Lt1, True) 24# End Using 25# End Using
  24. Avec Try/Cath L’erreur renvoyer est (eLockViolation) Y aurait –il pas une propriété ou un événement à rajouter a un bouton-poussoir(ou la windows-Form elle-même) Pour lui permettre d’appeler une procédure ?
  25. Ce que je ne comprends pas, c’est que quand j’appelle la même fonction dans le commande-line Cela fonctionne sans problème Mais une fois que je passe par l’intermédiaire d’une Form ça bloque ? Ma procédure de base : _ Public Sub CrateLineTypes() Dim myDWG As Autodesk.AutoCAD.ApplicationServices.Document Dim myDB As Autodesk.AutoCAD.DatabaseServices.Database Dim myTransMan As Autodesk.AutoCAD.DatabaseServices.TransactionManager Dim myTrans As Autodesk.AutoCAD.DatabaseServices.Transaction myDWG = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument myDB = myDWG.Database myTransMan = myDWG.TransactionManager myTrans = myTransMan.StartTransaction Dim myLT As Autodesk.AutoCAD.DatabaseServices.LinetypeTable myLT = myDB.LinetypeTableId.GetObject(Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) Dim ltypTbl As LinetypeTable = myTrans.GetObject(myDB.LinetypeTableId, OpenMode.ForRead, False) If Not ltypTbl.Has("Axe") Then Dim Lt1 As Autodesk.AutoCAD.DatabaseServices.LinetypeTableRecord Lt1 = New Autodesk.AutoCAD.DatabaseServices.LinetypeTableRecord Lt1.Name = "Axe" Lt1.Comments = "Axe" Lt1.NumDashes = 4 Lt1.SetDashLengthAt(0, 1.25) Lt1.SetDashLengthAt(1, -0.25) Lt1.SetDashLengthAt(2, 0.25) Lt1.SetDashLengthAt(3, -0.25) Lt1.PatternLength = 0.2 myLT.Add(Lt1) myTrans.AddNewlyCreatedDBObject(Lt1, True) myTrans.Commit() myTrans.Dispose() myTransMan.Dispose() End If End sub
×
×
  • 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é