juh0026
Membres-
Compteur de contenus
22 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par juh0026
-
Au final je n'ai pas trouvé comment palier à ce problème d'anonymous block, enfin pas exactement comme je l'espérer, c'est à dire, avec du code. Le moyen que j'ai trouvé est basic, la manip consiste à purger le plan et copier/coller les objets dans un fond de plan à km 0 (Am-iso.dwt par exemple) et ça a corrigé mon problème. Si un jour quelqu'un peu partager son code sur ce sujet .... Merci quand même Gile.
-
Merci Gile pour ces précisions, je vais refaire des test en retirant tout ça pour voire. Je ferais un retour là-dessus dès que possible.
-
Bonjour, J'ai trouvé !!! mais par contre mon programme est devenu très long, mais ça s'explique ... J'ai ajouté dans mon code à chaque fin de transaction sur mes fonctions qui contrôlent mes bloc paramétrique, 2 chose : Next tr.Commit() tr.Dispose() doc.Editor.Regen() En ajoutant "Dispose et Regen" plus de problème ... sauf le temps de traitement qui a quasi doublé. Comme je fais énormément d'appel (+ de 100) sur ces fonctions, il va falloir trouver autre chose. J'ai bricoler une méthode pour faire le post traitement du rafraichissement du plan que j'implémenterais à des endroits stratégique : Friend Shared Sub Refresh_Plan() Try mod_Principal.UpdateField() Autodesk.AutoCAD.ApplicationServices.Application.UpdateScreen() Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.UpdateScreen() Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor.Regen() Catch ex As Exception mod_Exception.Traiter_Exception(ex) End Try End Sub Public Sub UpdateField() Try Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument Dim db As Database = doc.Database Using doc.LockDocument Using tr As Transaction = db.TransactionManager.StartTransaction() Try Dim bt As BlockTable = DirectCast(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable) For Each btrId As ObjectId In bt Dim btr As BlockTableRecord = DirectCast(tr.GetObject(btrId, OpenMode.ForRead), BlockTableRecord) For Each objID As ObjectId In btr Dim objEnt As Entity = DirectCast(tr.GetObject(objID, OpenMode.ForRead), Entity) If TypeOf objEnt Is MText Then Dim objMtext As MText = DirectCast(tr.GetObject(objID, OpenMode.ForRead), MText) If objMtext.HasFields Then Dim fieldID As ObjectId = objMtext.GetField Dim field As Field = DirectCast(tr.GetObject(fieldID, OpenMode.ForWrite), Field) field.Evaluate() Dim cEval As String = field.Value.ToString End If ElseIf TypeOf objEnt Is Dimension Then Dim objDim As Dimension = DirectCast(tr.GetObject(objID, OpenMode.ForWrite), Dimension) If objDim.HasFields Then Dim fieldID As ObjectId = objDim.GetField Dim field As Field = DirectCast(tr.GetObject(fieldID, OpenMode.ForWrite), Field) field.Evaluate() Dim cEval As String = field.Value.ToString End If End If Next Next tr.Commit() tr.Dispose() Catch ex As System.Exception tr.Abort() Throw New System.Exception(ex.Message) End Try End Using End Using Catch ex As System.Exception mod_Exception.Traiter_Exception(ex) End Try End Sub Pour ce qui est des bloc dynamique récalcitrant, j'ai établi une procédure pour les "initialisés", je met des guillemets car je ne comprend pas pourquoi il a fallu que j'en arrive là pour que certain bloc ce comporte normalement dans le ModelSpace. Je passe systématiquement par l'éditeur de bloc, je le test, je ferme et j'enregistre, je le ré-initialise, et je passe au moins un paramètre puis Regen, purge et enregistrement du model de plan. Avec ça, les cotes et hachures ont l'aire de bien ce comporter. Pour info les modèles de plan sur lesquels je travail font 10/15 Mo. Voilà Gile pour mon retour d’expérience, j'espère que ça aidera d'autres internautes et si tu as des éléments intéressant sur le sujet je suis preneur. Cordialement.
-
Bonjour, J'ai refait pas mal de test, et mon problème est insolvable pour le moment ... Autocad ce comporte de la manière suivante : - Le programme fait ce qu'il a à faire pour passer les paramètres et les visibilités au plan --> la c'est OK -Les cotes et hachures ne se mettent pas à jour ... - J'ouvre et je ferme les bloc dynamique à la main, un Regen, et là tout est ok. C'est sur ce dernier point qu'il faut que je reproduise par du code cette méthode de mise à jour. (Gile) peux-tu m'aider car là je désespère ...Help !!!!
-
Salut, Oui tout à fait, quand je modifie les bloc à la main tout fonctionne très bien. *Voir pièce jointe pour 2 bloc dynamique qui posent problème. Sur ces bloc, les hachures de "GaineVdd" ainsi que les cotes de "CabineVdd" ne se mettent pas à jour. Pour comprendre un peu mieux ce qui m'arrive : Je travail actuellement sur un modèle de plan qui est bien plus sophistiqué que la version précédente, et ce qui est nouveau c'est que j'utilise de l'imbrication de bloc dynamique sur 2 niveaux pour gérer une bibliothèque de porte (MéthodeMajVisibiliteNomBloc), et pour piloter la porte j'utilise une table de consultation. Tout fonctionne bien, sauf cette mise à jour "graphique". D'ailleurs je m'en suis vu avec cette consultation, car pour passer tout les paramètres je suis obligé de choisir 2 ou 3 fois le même choix de consultation pour obtenir le bon résultat quand je manipule le bloc à la main, du coup je fais la même chose dans mon programme en rappelant 2 ou 3 fois la méthode pour être sure que le bloc prenne bien tout les paramètres. Je m'oriente sur une autre solution, pour mon programme je vais plutôt passer par un fichier xml ou csv pour externaliser les données de la table de consultation et refaire des tests en passant les valeurs au différents paramètres de mon bloc, c'est ce que j'ai toujours utilisé jusqu'à maintenant et je n’ai jamais eu de problème ... ce système de consultation me semble, excusez moi du terme, "Foireuse" ! Effectivement jusque là je n'avais eu besoin de faire de mise à jour spécifique, mais il semblerait que le problème ou phénomène intervient pour X raisons .... le nombre et la complexité des bloc dynamiques que contient le plan ... la manière dont on programme ... l’utilisation de certains paramètre comme la consultation que la Database gère mal ... Bref, comme palliatif je n'ai trouvé que cette solution de méthode de "Forçage" de mise à jour graphique. Dans le comportement d'Autocad, quand j'ouvre le plan qui a était utilisé par mon programme, tout est ok sauf la partie graphique. Regen ne fait rien, il faut simplement ouvrir et fermer le bloc dynamique en question pour que la partie graphique ce mette à jour ... de prime abord j'avoue avoir classé ce comportement dans le domaine du mystique sauf que j'ai trouvé sur AdnDevBlog exactement mon sujet mais le bout de code reste à faire. Voilà où j'en suis, je vais reprendre les tests aujourd'hui si j'ai le temps. C'est grave Docteur ? :blink: *PS : je ne peux pas Uploader de fichier .... sécurité réseau de m... du coup pour le fichier DWG est sur mon Drive : //autode.sk/2uT3U3R
-
Bonjour, Problème: J'ai de la cotation dans un bloc dynamique et des hachures associative. Lorsque je modifie le paramètre par programme, le bloc est mis à jour mais les cotations et le hachurage ne se mettent pas à jour. Que puis-je faire pour résoudre cela? La Solution (semblerait-il ....) Lorsque le paramètre est modifié, AutoCAD crée un nouveau bloc anonyme. Pour s'assurer que la dimension et le hachurage soit également mise à jour pour refléter la modification du paramètre, ce bloc anonyme doit être ouvert pour écriture et marqué comme "modified". Cela garantira qu'AutoCAD met à jour la dimension. J'ai besoin de la méthode qui permet de faire cette mise à jour, seulement le code associé à cette solution est en "C" et je ne sais pas la ré-écrire en VB.net. (lien où j'ai trouvé la solution à mon problème : //adndevblog.typepad.com/autocad/2012/09/updating-dimensions-associated-with-a-dynamic-block.html Je code actuellement sous Visual Studio Express 2017 en VB.net avec Autocad Mechanical 2016 et je n’utilise pas d’inter-op, tout mon code est en managé. Est-ce que quelqu'un peut m'aider ? J'ai écrit un bout de méthode mais ce n'est pas concluant ... je dois me tromper quelque part .... ''' <summary> ''' JR le 26.07.18 : Met à jour la partie graphique (cotation / hachurage) d'un bloc dynamique lorsque le paramètre est modifié, ''' AutoCAD crée un nouveau bloc anonyme et pour s'assurer que la dimension (ou hachuure) soit également mise à jour pour refléter la modification du paramètre, ''' ce bloc anonyme doit être ouvert pour "write" et marqué comme "modified". Cela garantira qu'AutoCAD met à jour la partie graphique des cotations et hachures. ''' </summary> ''' <param name="oNomBloc">Le nom du bloc à mettre à jour</param> Public Sub MAJAnonymousBloc(oNomBloc As String, Optional Report As Boolean = False) 'Met à jour la visibilité des blocs dynamiques Try Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument Dim db As Database = doc.Database Dim ed As Editor = doc.Editor Dim bref As BlockReference Dim props As DynamicBlockReferencePropertyCollection Dim btrIds As ObjectIdCollection Dim btrAnonIds As ObjectIdCollection Dim MAJFaite As Boolean = False Dim Inspect As Boolean = False Using doclock As DocumentLock = doc.LockDocument Using tr As Transaction = db.TransactionManager.StartTransaction Dim bt As BlockTable bt = CType(tr.GetObject(db.BlockTableId, OpenMode.ForWrite), BlockTable) Dim btr As BlockTableRecord For Each id As ObjectId In bt btr = CType(tr.GetObject(id, OpenMode.ForWrite), BlockTableRecord) btrIds = btr.GetBlockReferenceIds(True, True) btrAnonIds = btr.GetAnonymousBlockIds For Each anonObjId As ObjectId In btrAnonIds Dim btrAnon As BlockTableRecord = DirectCast(anonObjId.GetObject(OpenMode.ForRead), BlockTableRecord) Dim ObjidColl As ObjectIdCollection = btrAnon.GetBlockReferenceIds(True, True) For Each idAnon As ObjectId In ObjidColl btrIds.Add(idAnon) Next Next For Each idMaster As ObjectId In btrIds bref = Nothing bref = TryCast(tr.GetObject(idMaster, OpenMode.ForWrite), BlockReference) If bref IsNot Nothing Then If bref.IsDynamicBlock AndAlso mod_Principal.GETNomReelBlock(tr, bref) = oNomBloc Then If Inspect Then mod_FichierError.EcritureRapport("Bloc trouvé=" & oNomBloc) props = bref.DynamicBlockReferencePropertyCollection For Each prop As DynamicBlockReferenceProperty In props bref.RecordGraphicsModified(True) 'La commande importante ce trouve ici pour demander la mise à jour des graphiques Next End If End If Next If MAJFaite Then Exit For Next tr.Commit() End Using End Using If Not MAJFaite AndAlso Report Then Throw New System.Exception("Erreur MAJAnonymousBloc: Bloc non trouvée.") End If Catch ex As System.Exception mod_Exception.Traiter_Exception(ex, "oNomBloc: " & oNomBloc) End Try End Sub Cordialement.
-
Re, Et bien il se trouve que tout fonctionne si je lance les lisp à partir de cette emplacement : C:\Program Files\Autodesk\AutoCAD 2016\Acadm\gen Mais je ne me rappeler pas qu''on devait impérativement avoir les fichiers à cette emplacement là.... Le tout c'est que ça fonctionne, désolé pour le dérangement. Cordialement.
-
Bonjour, c'est tout simplement en voulant lancer "ONG" on ne voie plus la fenêtre principale ... en gros ne se lance plus. Individuellement "MIM", "MPL" etc...ne se lance pas non plus et là c'est même plus fort car Autodesk gueule comme quoi il manque le fichier ".dcl" associé ... alors qu'ils sont bien présent ... La seul chose que je voie c'est un message dans la console Autocad "Erreur : type d'argument incorrect: stringp nil" Du reste, sur tout les lisp que j'utilisais sur la 2016 et la 2017 dont beaucoup, voir principalement, ont été fait par toi, il n'en reste que qqs1 qui fonctionne. Ils sont déclarer en emplacement approuvé, test fait sur réseau ou en local, ils sont bien chargés, et je les déclares via "IUP" dans le noeud "Lisp"...j'ai aussi la manip via "Gérer" " chargé une appli" et pas mieux. J'ai toujours fait comme ça sur 2016 et 2017 est aucun problème ... je désespère ! (sniffff.....) D'avance merci pour ton aide. Cordialement.
-
Bonjour Patrick_35, Merci pour tes Lisp, c'est très pratique. Je viens d'installer Autocad Mechanical 2018 et ton lisp "ONG" ne fonctionne plus ! je suis bien triste car je l'adore et l’utilisais beaucoup. Quand je lance la commande après avoir chargé le lisp, j'ai le message suivant dans le prompt "Erreur : type d'argument incorrect: stringp nil" Est-ce qu'il aurait un problème de version ? j'utilise Ong-v3.21, j'avais aussi une 3.1 qui trainé et pareil, ça ne fonctionne pas. Merci d'avance pour ton aide. Ju
-
\"Note de ligne de repère\" converti en bloc, pourquoi ?
juh0026 a répondu à un(e) sujet de juh0026 dans AutoCAD 2010
Déterrage de Post ! J'ai à nouveau le problème concernant les AMNOTE et son équivalent MLEADER entre Autocad Mechanical et Autocad. Nous déployons actuellement des "solutions" sur Autocad et les annotations sont toutes des bloc. Je cherche une moulinette pour transforme les AMNOTE en MLEADER. Ce qui est fou c'est qu'elles sont aujourd'hui très proches en terme de fonctionnement, donc je pense que ça ne tien vraiment pas à grand chose. Je peux utiliser du code (VB.net, C#, Lisp, autres...) pour transformer ces entités et/ou objets proxy. Merci pour votre aide. J'ai trouver cette piste pour le moment : //adndevblog.typepad.com/autocad/2012/06/remove-all-proxy-entities-from-a-drawing-using-objectarx.html -
Quelqu'un aurait des pistes sur le pilotage des bloc dynamique ? à savoir modifier les paramètres personalisés, une longeur et une largeur ? Avec un bout de code VBA car je débute et pour l'instant je fais beaucoup de copié/collé. Par avance merci. :)
-
Bonjour, je cherche de l'aide car je débute sur la programation VBA avec Excel pour piloter Autocad (j'ai une Mechanical 2013 et 2014). J'ai une pièce "part_1" et je dois piloter son bloc dynamique avec 5 paramètres de tailles, "L", "A", "H", "C" et "D". voir ici les fichiers pour quelqu'un m'aide. Je suis vraiment débutant et si quelqu'un peut m'esquisser le bout de code pour faire cette manip se serait trop trop bien. D'avance merci.
-
Blocs dynamiques to blocs statiques depuis VBA EXCEL pour versions pleines et LT
juh0026 a répondu à un(e) sujet de sechanbask dans Routines VBA
Bonjour, je viens de tomber sur ce code, et juste pour dire merci à " sechanbask" car ce code est vraiment super !!!! Bonne continuation. -
Disparitions des points d\'accrochage d\'une cote
juh0026 a répondu à un(e) sujet de juh0026 dans AutoCAD 2010
Est ce que dans d'autres plans, ce sont biens des cotes Mechanical, c'est peut être des cotes d'autre logiciels. Ou voir même des cotes AutoCAD simple (je ne sais plus si ça filtre sur les cotes AutoCAD) C'est difficile à dire, puisse que des fonts de plan sur lesquels on travail sont natif de GENIUS l'ancêtre de Mechanical. Mais ce qui est sure c'est que les cotes que l'on utilise aujourd'hui sont des cotes Mechanical, pas de doute là-dessus. Et puis se problème je l’avais déjà eu sur un plan il y a très longtemps, mais ce que je ne comprends pas c'est pourquoi il a réapparu comme ça, sans que je touche à quelque chose. Mystère .... -
Disparitions des points d\'accrochage d\'une cote
juh0026 a répondu à un(e) sujet de juh0026 dans AutoCAD 2010
Voila, ct bien le filtre, mais alors je ne comprends toujours pas pourquoi en decochant DIMESNION dans ce plan sa marche et que dans un autre elle est cocher mais sa marche... Enfin, le tous c'est que sa refonctionne. merci à vous tous, bonne journée. 600x400 http://free0.hiboox.com/images/4509/18814a9efbd2484bf9544e00e8b0fb46.bmp[/img] -
Disparitions des points d\'accrochage d\'une cote
juh0026 a répondu à un(e) sujet de juh0026 dans AutoCAD 2010
Oui, c'est Mechanical 2010. Alors un filtre tu dit...ouai je vais voir mais je ne pense pas. Tramber > toi sa marche ? ...pfffffff, je sent que j'ai pas fini encore avec ce truc, je vais voir si mon pote peut l'ouvrir et voir si sa fait la même chose sur son autocad. -
Disparitions des points d\'accrochage d\'une cote
juh0026 a répondu à un(e) sujet de juh0026 dans AutoCAD 2010
Ok pour le code, c noté pour la prochaine fois :-) oui pour le fichier pas de souci : A DL ici : http://www.megaupload.com/?d=13LOQ3LD Si qq1 peut trouver, se serait trop bien :-) -
Bonjour, donc voici mon problème : Je veux tous simplement déplacer par poigné d'accrochage mon texte de cote pour le mettre au point milieux de la ligne de cote. Alors sa marchais très bien ... jusqu'a ce matin ou j'ai re-ouvert des anciens plans, et dans certain je ne peut pas faire d'accrochage sur la cotation. Pourtant, et j'ai chercher un moment, il n'y a rien de changé entre ces plans si on compare les options et autre (l'accrochage (F3) est actif bien entendu), donc je pense que c'est une variable système d'autocad qui doit être à l'origine de mon problème. Pour mieux me faire comprendre, voir la photo du problème ci-dessous : http://free0.hiboox.com/images/4509/ca2a14c82d65e7d1b91ae5afa932524c.bmp Donc là comme vous pouvez le constater, il n'y a pas de poigné d'accrochage milieu, car dans mon cas c ce que je veux faire, et pourtant je pourrais très bien accroché mon texte au milieu de la ligne roucge qui est au-dessus, pour info: ici, la ligne de cote est attaché à mon texte (DIMASSOC = 2 ; DIMJUST = 0; DIMTOH = inactif) Et là (voir photo ci-dessous) c'est que je voudrais voir apparaitre à l'approche du centre de la ligne de cote : http://free0.hiboox.com/images/4509/8631ce0ef3a67246a95f11b82edc39ec.bmp Voila. Donc, est-ce que quelqu'un serait en mesure de me dire ce qui'il faut faire pour ré-activer l'accrochage sur la cotation ? D''avance merci.
-
\"Note de ligne de repère\" converti en bloc, pourquoi ?
juh0026 a répondu à un(e) sujet de juh0026 dans AutoCAD 2010
J'ai trouvé !!!!! donc plus le problème des annotations qui se converti en bloc. Mais encore une fois, se sont les commentaires Autocad qui ne sont pas bien fait et qui du coup vous font perdre un temps fout. http://free0.hiboox.com/images/4509/9af30521c230512f4661a5059b9d9946.bmp c'est à cocher (voir encadré rouge) -
\"Note de ligne de repère\" converti en bloc, pourquoi ?
juh0026 a répondu à un(e) sujet de juh0026 dans AutoCAD 2010
OUI ! Bonjour, oui je suis nouveau, donc rapide présentation, je suis chargé d'affaire et je réalise des plans d'implantation pour divers matèriel en batiment. Et je suis localisé dans le "26" pour ceu qui ne l'aurait pas deja compris. J'espère pouvoir aider certain d'entre-vous si non bonne continuation à tous et bonne journée. -
\"Note de ligne de repère\" converti en bloc, pourquoi ?
juh0026 a répondu à un(e) sujet de juh0026 dans AutoCAD 2010
Avant j'utilisé les lignes de repère rapide du type AUTOCAD, et sa marcher très bien, elles étaient quasiement identique à cel de Mechanical. Maintenant, je viens de résoudre mon problème en utilisant la commande "LEADER" ou encore "lrepere". Mais je trouve ça débile qu'on ne puisse pas utiliser la commande Mechanical à cause d'un problème de version. Donc le problème reste le même, et sans vraie solution. -
Bonjour à tous, Je suis passé il y a peu sur Mechanical 2010 et j'ai un souci. Comme nous sommes plusieurs à travailler sur Mechanical et que nous n'avons pas tous les même versions, nous enregistrons nos plans en versions 2007. Le souci, quand je ferme un plan qui est enregistré en version 2007 et que je ré-ouvre par la suite ce même plan, toute mes "Note de ligne de repère" devienne des bloc !!! ??? (pour info c'est la commande "AMNOTE") Help !! est-ce que vous savez d'ou viens le problème ? j'imagine que c'est un règlage à faire dans autocad, mais le-quel ? En tous cas, pour le moment j'ai remis mes parametres d'enregistrement en version 2010, et je n'ai plus le problème, seulement c'est une solution provisoire. D'avance merci pour vos réponse.
