Aller au contenu

Copier OBJECT d'un SelectionSet dans le presse-papier


CTZen

Messages recommandés

Bonjour à tous,

 

J'ai décidé il y a peu de tester un peu le VBA dans AutoCAD (mon cerveau n'acceptant pas de comprendre le LISP ...).

 

Je fais donc des petits essais ... et je suis donc confronté à des petits soucis !

 

En voici un premier ... peut-être saurez-vous m'aider !

 

 

Voici un bout de code :

 

 

    xSELECTION.Select acSelectionSetAll
  
    For I = 1 To xSELECTION.Count
           Set xSELECTIONNE = xSELECTION.Item(I - 1).Copy
    Next I

 

 

En gros, j'ai défini un jeu de sélection xSELECTION qui sélectionne tout dans le dessin, et ensuite je fais une copy de chaque éléments présent dans mon jeu de sélection.

 

 

Sauf que en faisant ceci, ça prend chaque item, et ça en fait un doublon à la même place ! Alors que j'aimerai que ça me le copie dans le presse-papier pour ensuite que je puisse le coller ou je veux !

 

J'ai beau fouiller le net, je n'arrive pas à trouver ...

 

 

Une piste ? unsure.gif

 

 

Merci

AutoCAD Map 3D 2025
Covadis 18.3b + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne t'aiderais pas en VBA (VB(A) me donne des boutons), mais pour copier des entités dans le presse-papier, AutoCAD utilise le mécanisme de la commande WBLOC en créant un fichier DWG temporaire dans un dossier Temp avec les objets sélectionnés et, éventuellement (Ctrl+Maj+C), le point de base.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse rapide (Gile) !

 

C'est une très bonne piste ! Donc ... en ne voulant pas m'aider, tu m'as aidé ! ... je poursuis mes recherches en passant par WBLOC ! :)

AutoCAD Map 3D 2025
Covadis 18.3b + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Lien vers le commentaire
Partager sur d’autres sites

Je ne t'aiderais pas en VBA (VB(A) me donne des boutons...

A ce point ? x)

Ne sois pas si allergique, il a peut être eu des bons exemples ;-p

 

En gros, j'ai défini un jeu de sélection xSELECTION qui sélectionne tout dans le dessin, et ensuite je fais une copy de chaque éléments présent dans mon jeu de sélection.

 

En gros, tu veux copier chaque Objet de ton dessin ? (vu que tu sélectionnes tout) ?

tu peux envoyer des objet vers un autre dessin si tu veux (en un créant un).

Lien vers le commentaire
Partager sur d’autres sites

Ne sois pas si allergique, il a peut être eu des bons exemples ;-p

En effet, tu as su me montrer que VBA permettait plein de chose ! :P

 

En gros, tu veux copier chaque Objet de ton dessin ? (vu que tu sélectionnes tout) ?

tu peux envoyer des objet vers un autre dessin si tu veux (en un créant un).

 

En fait j'aimerai que ça fonctionne comme un copié > Collé, c'est à dire qu'au moment de coller, je puisse voir un aperçu de ce que je colle avant de cliquer sur la position.

Pour le moment j'ai pu me débrouiller avec des SendCommand "_Aiselectall" suivi d'une command Copier/Coller, mais forcement si il y a des objet que je ne souhaite pas récupérer ... je l'ai dans l'os !

 

Après je pose la question c'est à titre informatif, pas spécialement pour faire quelque chose de particulier, c'est surtout pour m'entrainer et apprendre la VBA.

AutoCAD Map 3D 2025
Covadis 18.3b + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Lien vers le commentaire
Partager sur d’autres sites

pour apprendre le VBA la base c'est Excel ^^ (les Methodes sont bien plus simple et tu trouveras beaucoup plus d'aide)

pour autocad le VBA est moins intuitif mais une fois que je gérera bien sur excel tu verras q'uil n'y aura plus beaucoup de difficulté faut connaitre autocad par coeur par contre en anglais c'est un plus ;-)

 

moi si je devais copier coller en vba d'un dessin à un autre, je ferais surement la methode de gile en VBA ensuite du pete le bloc et tu as tes objet.

sinon tu crées un groupe que tu passes a un autre dessin ;-) un peu comme quand tu copies une shape d'un tableur execl à un autre ^^

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Bon allez je te donne la réponse :

pour copier tous les éléments ton dessin


Dim obj_crea_bloc() As AcadEntity 'Liste d'objet à définir
Dim ssetObj As AcadSelectionSet '1 seule et unique sélection

redim preserve obj_crea_bloc(ThisDrawing.ModelSpace.Count - 1) 'OUi désolé je redimensionne toujours sois avant sois pendant mais pour l'exemple on va faire ça facile

'Tu créés ta sélection :
Set ssetObj = ThisDrawing.SelectionSets.Add("WBLOCKSET")
For obj = 0 To ThisDrawing.ModelSpace.Count - 1
   Set obj_crea_bloc(obj) = ThisDrawing.ModelSpace.Item(obj) 'tu mes dans ta liste tes objets à mettre dedans on ne les copie pas !
next obj

'et ensuite tu ajoutes ta liste (d'objets) à ta selection :
ssetObj.AddItems obj_crea_bloc


 

et paf sa te donne une selection...

par contre je ne sais pas à quoi ça te sert ou à quoi ça sert tout court (à part créer des blocs via des fichiers qui sont par définition déjà des blocs XD)

où éventuellement sauvegarder une sélection mais à quoi bon ?

après si c'est pour la création de bloc en pagaille pourquoi pas XD

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é