Communauté
AutoCAD – tous produits - Français
Bienvenue sur les forums AutoCAD d’Autodesk. Partagez vos connaissances, posez des questions, et explorez les sujets AutoCAD populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Copie objets d'un dwg vers un autre

5 RÉPONSES 5
Répondre
Message 1 sur 6
Anonymous
910 Visites, 5 Réponses

Copie objets d'un dwg vers un autre

Bonjour,
J'ai des soucis avec la copie d'objets d'un dwg1 vers un dwg2
J'ai un jeu de sélection qui contient les n objets sélectionnés dans le dwg1
J'ai 2 objets dwg_1 et dwg_2 de déclarés.
Merci de m'aider pour la suite.
--
Bernard Flavignard
www.guidonchalettois.fr
5 RÉPONSES 5
Message 2 sur 6
Anonymous
en réponse à: Anonymous

Bonjour,

quel est le problème exactement ?

un bout de code pour voir ?


Matthieu
Message 3 sur 6
Anonymous
en réponse à: Anonymous

Y a dwg_1 qui tombe a l'eau...


"Bernard Flavignard" a écrit dans le message de
news: 5802473@discussion.autodesk.com...
Bonjour,
J'ai des soucis avec la copie d'objets d'un dwg1 vers un dwg2
J'ai un jeu de sélection qui contient les n objets sélectionnés dans le dwg1
J'ai 2 objets dwg_1 et dwg_2 de déclarés.
Merci de m'aider pour la suite.
--
Bernard Flavignard
www.guidonchalettois.fr
Message 4 sur 6
Anonymous
en réponse à: Anonymous

Salut Matthieu,
Voici le code, au début tu as la création d'un dwg avec un gabarit, tu peux
mettre un de tes gabarits à la place du mien.
Dans le dessin source tu doit avoir n éléments dans le calque "Commune".
Par avance merdi de ton aide.

Sub test_copie()
Dim objets_a_copier()
Dim objets_commune As AcadSelectionSet
Dim dessin_commune As AcadDocument
repertoire_des_gabarits = AcadApplication.Preferences.Files.TemplateDwgPath
& "\"
Set dessin_source = AutoCAD.Application.ActiveDocument
'Récupération du nom du gabarit utilisé pour la conversion THF, dans le
fichier Geomexpert.INI
resultat$ = String(255, Chr(0))
res = GetPrivateProfileString("Conversion THF", "Gabarit", "", resultat$,
Len(resultat$) + 1, "S:\util\geomexpert.ini")
gabarit_THF = Left(resultat$, InStr(resultat$, Chr(0)) - 1)
nom_complet_gabarit_utilise = repertoire_des_gabarits & gabarit_THF
'Création d'un dessin qui contiendra les infos de la commune, en utilisant
le gabarit
Set dessin_commune =
AutoCAD.Application.Documents.Add(nom_complet_gabarit_utilise)
dessin_source.Activate
'On récupère les éléments du calque COMMUNE
On Error Resume Next
Set objets_commune = ThisDrawing.SelectionSets.Item("OBJETSCOMMUNE")
If Err Then
Err.Clear
Else
objets_commune.Delete
End If
Set objets_commune = ThisDrawing.SelectionSets.Add("OBJETSCOMMUNE")
ReDim gpCode(0)
ReDim dataValue(0)
gpCode(0) = 8
dataValue(0) = "Commune"
groupCode = gpCode
dataCode = dataValue
'Sélection de tous les objets qui sont dans le calque concerné
objets_commune.Select acSelectionSetAll, , , groupCode, dataCode
'Si selection non vide
If objets_commune.count <> 0 Then
ReDim objets_a_copier(objets_commune.count - 1)
h = -1
For Each element In objets_commune
h = h + 1
Set objets_a_copier(h) = element
Next
'---------------------------------------------------------------
'Cette ligne me pose problème, la syntase est mauvaise je pense
objet_copie = dessin_source.CopyObjects(objets_a_copier,
dessin_commune.ModelSpace)
'---------------------------------------------------------------
'On efface les objets du calque COMMUNE dans le dessin courant qui sera une
XREF
'objets_commune.Erase
Else
MsgBox "Aucun objet dans le calque COMMUNE ou commande
COVAEDIGEOLECTUREONE non accessible" & vbCr & vbCr & "Commune " &
num_insee_commune & "_" & nom_commune & " non traitée"
Exit Sub
End If
ZoomExtents
End Sub
--
Bernard Flavignard
www.guidonchalettois.fr
Message 5 sur 6
Anonymous
en réponse à: Anonymous

Bonjour,

j'ai regardé le problème, cela vient de la déclaration des variables, il faut déclarer les variables objets des élément
Autocad

voir les modifications ci dessous

Sub test_copie()
Dim objets_a_copier() As AcadEntity
Dim objets_commune As AcadSelectionSet
Dim dessin_commune As AcadDocument
repertoire_des_gabarits = AcadApplication.Preferences.Files.TemplateDwgPath & "\"
Set dessin_source = AutoCAD.Application.ActiveDocument

'Récupération du nom du gabarit utilisé pour la conversion THF, dans le fichier Geomexpert.INI
resultat$ = String(255, Chr(0))
res = GetPrivateProfileString("Conversion THF", "Gabarit", "", resultat$, Len(resultat$) + 1, "S:\util\geomexpert.ini")
gabarit_THF = Left(resultat$, InStr(resultat$, Chr(0)) - 1)
nom_complet_gabarit_utilise = repertoire_des_gabarits & gabarit_THF

'Création d'un dessin qui contiendra les infos de la commune, en utilisant le gabarit
Set dessin_commune = AutoCAD.Application.Documents.Add(nom_complet_gabarit_utilise)
dessin_source.Activate

'On récupère les éléments du calque COMMUNE
On Error Resume Next
Set objets_commune = ThisDrawing.SelectionSets.Item("OBJETSCOMMUNE")
If Err Then
Err.Clear
Else
objets_commune.Delete
End If
Set objets_commune = ThisDrawing.SelectionSets.Add("OBJETSCOMMUNE")
Dim gpCode(0) As Integer
Dim dataValue(0) As Variant
Dim groupCode As Variant
Dim dataCode As Variant
gpCode(0) = 8
dataValue(0) = "Commune"
groupCode = gpCode
dataCode = dataValue

'Sélection de tous les objets qui sont dans le calque concerné
objets_commune.Select acSelectionSetAll, , , groupCode, dataCode
'Si selection non vide
Dim element As AcadEntity
Dim h As Long

If objets_commune.Count > 0 Then
ReDim objets_a_copier(objets_commune.Count - 1)
For h = 0 To objets_commune.Count - 1
Set objets_a_copier(h) = objets_commune(h)
Next h

'---------------------------------------------------------------
'Cette ligne me pose problème, la syntase est mauvaise je pense
objet_copie = ThisDrawing.CopyObjects(objets_a_copier, dessin_commune.ModelSpace)
'---------------------------------------------------------------
'On efface les objets du calque COMMUNE dans le dessin courant qui sera une XREF
'objets_commune.Erase
Else
MsgBox "Aucun objet dans le calque COMMUNE ou commande COVAEDIGEOLECTUREONE non accessible" & vbCr & vbCr &
"Commune " & num_insee_commune & "_" & nom_commune & " non traitée"
Exit Sub
End If
ZoomExtents
End Sub
Message 6 sur 6
Anonymous
en réponse à: Anonymous

Matthieu,
Les variables non déclarées l'étaient en varible de type "Public"
Mon programme fonctionne, je l'avais un peu épuré pour te le proposer et
tout va bien maintenant.
Merci de ton aide.
A+
--
Bernard Flavignard
www.guidonchalettois.fr

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums