Aller au contenu

Deep cloning


Tramber

Messages recommandés

Je voudrais faire usage de la méthode copyobjects afin de transférer des entités (disons par exemple, la première et la deuxième) composants le bloc "trucmuche" vers l'espace objet.

 

:casstet:

 

Y arrive pas, comment qu'on ?

 

Comme c'est écrit en VBA dans l'aide, je n'arrive pas à traduire la doc.

Comme d'hab'.

 

Et puis, c'est quand même une question hardue, réservée aux + .... expérimentés.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

J'aimerais traduire la méthode copyobjects écrite en VBA dans l'aide vers du Vlisp( que je pratique mieux que le VBA).

 

Le mot clef de l'aide ActiveX est tout simplement "copyobjects".

 

Elle permet de "sortir" une entité composant un BLOCK vers l'Espace objet par exemple.

 

C'esst comme si je faisais (setq truc (entget uneentitedubloc))

 

puis (entmake truc) dans l'espace courant mais ca devrait être 1000 fois + rapide !

 

Je ne sais pas si tu comprends mieux. Mon soucis est + de la traduction VBA->Vlisp qu'autre chose.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Ce qui revient à un (nentsel) :exclam:

 

Non, je ne passe pas du tout par une selection.

 

Mais je te remercie pour le lien, je pense que ce fichier va beaucoup m'apprendre.

 

Même si ca semble aller de bloc à bloc, alors que je veux de bloc à espace objet.

Mais ne vendons pas la peau de l'ours, je suis très content de trouver un lisp qui utilise cette fonction, je regarde sur la console Vlisp demain (aujourd'hui je suis au travail sur autre chose).

 

Merci, et je publie si j'y arrive.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...

Salut Tramber

Je pense que c'est ce que tu cherchais

 

@+

 

(defun c:cpvl(/ doc ent lay js n pt1 pt2 sel)
 (if (setq sel (ssget))
   (if (setq pt1 (getpoint "\nPoint de base : "))
     (if (setq pt2 (getpoint pt1 "\nDestination : "))
       (progn
         (vl-load-com)
         (setq doc (vla-get-activedocument (vlax-get-acad-object)))
         (vla-startundomark doc)
         (setq n 0)
         (while (ssname sel n)
           (setq js (cons (ssname sel n) js) n (1+ n))
         )
         (setq js (vlax-safearray-fill 
                    (vlax-make-safearray vlax-vbObject (cons 0 (1- (length js))))
                    (mapcar 'vlax-ename->vla-object (reverse js))))
         (setq lay (vla-get-paperspace doc)) ; Copier dans l'espace papier
         (setq lay (vla-get-modelspace doc)) ; Copier dans l'espace objet
         (setq sel (vla-copyobjects doc js lay))
         (foreach ent (vlax-safearray->list (vlax-variant-value sel))
           (vla-move ent (vlax-3d-point pt1) (vlax-3d-point pt2))
         )
         (princ (strcat "\n" (itoa n) " objet(s) copié(s)"))
         (vla-endundomark doc)
       )
     )
   )
 )
 (princ)
)

 

[Edité le 6/1/2006 par Patrick_35]

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Merci à toi. Il y a longtemps que je me suis débrouillé avec les vla-item puis les ENTMAKE ou autre pour rajouter dans mes blocs, mais je garde cette discussion aux favoris pour y revenir !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
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é