pour commencer, j'ai mis les mains en avant professant mon ignorance dans cette affaire.
énumérer un certain nombre de considérations, comme point de discussion.
l'idée que j'ai faite est qu'avec vbnet vous pouvez travailler très similaire à la vba, avec la petite différence que les objets (par la compréhension des lignes, des cordes etc) sont "cachés" dans une structure de matrioske qui laissent sans poli.
je voudrais exposer cette partie du code:
Code:
imports autodesk.autocad.editorinput
imports autodesk.autocad.databaseservices
imports autodesk.autocad.runtime
imports autodesk.autocad.geometry
imports autodesk.autocad.applicationservices
imports dbtransman = autodesk.autocad.databaseservices.transactionmanager
#1 à insérer au début du module/classe, qui sont des raccourcis vers les différents secteurs (namespace) des bibliothèques autocad à télécharger comme référence.
dans le sens qu'au lieu d'écrire autodesk.autocad.databaseservices.database
nous pouvons écrire directement
base de données pour récupérer cet objet.
avec vba nous étions habitués à manœuvrer les objets de dessin directement à partir de ce dessin. modelspace, en vbnet, c'est comme si c'était merdique au cube.
j'ai créé d'autres raccourcis :
Code:
ami en lecture seule propriété cedrawing() comme document
obtenir
retour docman.mdiactivedocument
fin d'avoir
propriété finale
ami en lecture seule propriété lockdoc() comme documentlock
obtenir
retourner cedrawing.lockdocument(documentlockmode.write, rien, rien, vrai)
fin d'avoir
propriété finale
ami en lecture seule propriété tr_start() comme transaction
obtenir
retour cedrawing.transactionmanager.starttransaction
fin d'avoir
propriété finale
ami en lecture seule propriété thisdatabase() comme base de données
obtenir
retournez ce tirage. base de données
fin d'avoir
propriété finale
ami en lecture seule propriété docman() comme collection de documents
obtenir
retourner autodesk.autocad.applicationservices.application.documentmanager
fin d'avoir
propriété finale
ami en lecture seule propriété edi() en tant qu'éditeur
obtenir
retournez ce tirage. éditeur
fin d'avoir
propriété finale
donc vous avez ce dessin presque comme une fois.
voici le discours du matrioske pour atteindre les objets :
Code:
ami sous lineshow()
dim acdoc comme document = ce dessin
utilisant docloc comme documentlock = lockdoc
dim db comme base de données = cette base de données
utilisant tr comme transaction = tr_start
utilisant dict comme dbdictionary = tr.getobject(db.groupdictionaryid, openmode.forread, true)
pour chaque gp en tant qu'entrée de dictionnaire dans dict
dim grp en groupe = ctype(tr.getobject(gp.value, openmode.forread), groupe)
dim myids() comme objectid = grp.getallentityids()
pour chaque id comme objet dans les myides
utilisant obj comme objet = tr.getobject(id, openmode.forwrite)
utilisant myent comme entity = ctype(obj, entity)
myent.visible = vrai
fin de l'utilisation
fin de l'utilisation
suivant
suivant
tr.commit()
fin de l'utilisation
fin de l'utilisation
fin de l'utilisation
fin sous
ce petit mais juteux sous-marin rend tous les objets visibles dans l'espace de modèle actuel (ok,ok avant de les avoir cachés... ne faites pas de paresseux, c'est un exemple.
attention qu'avant de faire un filtre, vous n'agissez que sur des objets faisant partie d'un groupe (vous pouvez contourner cette partie pour agir sur tous les objets... )
c'est un exemple de la façon d'arriver à l'entité (qui peut être la ligne , le cercle etc. juste changer ctype (obj, entity) (je recommande d'utiliser le type de syntaxe (obj) est polyline alors ..... pour obtenir des types spécifiques d'entités)
s'il y a des questions, disponibles.