Aller au contenu

[Résolu] Copie de coordonnées d'une lwpolyline


Messages recommandés

Posté(e)

Bonsoir à tous,

 

Peut-on en visual lisp récupérer les coordonnées d'une polyligne et les affecter en les remplaçant sur une polyligne cible ?

 

(setq nouvelles_coordonnees (vla-get-Coordonnees pline-source))

(vla-put-Coordonnees pline-cible nouvelles_coordonnees)

 

Merci,

 

Bonne soirée,

 

Fabcad

Posté(e)

Bonjour Gile,

 

Merci pour ta réponse, entre temps et effectivement c'était ca, vraiment top.

 

Il ne me reste plus qu'une vérification pour la fermeture de la polyligne et là faut que je creuse :-).

 

Voici mon code de mon début de routine :

 

(defun c:adapter_polyligne (/ acadobjet_pline_modele acadobjet_pline_cible vlaobjet_pline_modele vlaobjet_pline_cible)
(vl-load-com)
(setq acadobjet_pline_modele (car (entsel "\n Sélectionnez la polyligne Modèle :")))
(setq vlaobjet_pline_modele (vlax-ename->vla-object acadobjet_pline_modele))
(setq acadobjet_pline_cible (car (entsel "\n Sélectionnez la polyligne Cible :")))
(setq vlaobjet_pline_cible (vlax-ename->vla-object acadobjet_pline_cible))
(vla-put-coordinates vlaobjet_pline_cible (vla-get-coordinates vlaobjet_pline_modele))
);fin defun

Posté(e)

Bonjour,

 

Il ne me reste plus qu'une vérification pour la fermeture de la polyligne et là faut que je creuse :-).

Propriété 'closed

 

 

D’une façon plus général lorsqu’il y a plusieurs propriétées, je me sers de la fonction suivante, inspiré de ce sujet

;; Copier une liste de propriétées de l'objet 1 sur l'objet 2
(defun bv:copieProp (obj1 obj2 lst)
 (foreach prop	lst
   (and (vlax-property-available-p obj1 prop)
 (vlax-property-available-p obj2 prop)
 (vlax-put obj2 prop (vlax-get obj1 prop))
   )
 )
)

 

Adapté à ton code cela donnerait :

(defun c:adapter_polyligne ()
 (bv:copieProp
   (vlax-ename->vla-object (car (entsel "\n Sélectionnez la polyligne Modèle :")))
   (vlax-ename->vla-object (car (entsel "\n Sélectionnez la polyligne Cible :")))
   '(coordinates closed)
 )
 (princ)
)

 

Cordialement,

Apprendre => Prendre => Rendre

Posté(e)

Bonjour,

 

Voici mon code :

 

;; Copier une liste de propriétées de l'objet 1 sur l'objet 2
(defun copieProp (obj1 obj2 lst)
(foreach prop lst
	(and (vlax-property-available-p obj1 prop)
		(vlax-property-available-p obj2 prop)
		(vlax-put obj2 prop (vlax-get obj1 prop))
	)
)
)

;;;------------------------------------------------------------------------
;;; Fonction adapter_polyligne.lsp
;;; par Fabrice DEMIEL
;;; le 26-03-2012
;;;------------------------------------------------------------------------
(defun c:adapter_polyligne (/ js nbr acadobject_en_cours AcDoc Space)
(setvar "cmdecho" 0)
(vl-load-com)
; Tharwat 14. 06. 2011
(setq
	AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
	Space
	(if (= 1 (getvar "CVPORT"))
		(vla-get-PaperSpace AcDoc)
		(vla-get-ModelSpace AcDoc)
	)
)
(setq acadobjet_pline_modele (car (entsel "\n Sélectionnez la polyligne Modèle :")))
(setq vlaobjet_pline_modele (vlax-ename->vla-object acadobjet_pline_modele))

(princ "\nSélectionner les polylignes pour mettre à jour leur géométrie :")
(setq js (ssget '((0 . "LWPOLYLINE"))))
(if js
(progn
	(setq nbr (sslength js))
	(setq i 0)
	(while (<= i (- nbr 1))
		(setq acadobjet_pline_cible (ssname js i))
		(setq vlaobjet_pline_cible (vlax-ename->vla-object acadobjet_pline_cible))
			(copieProp
				vlaobjet_pline_modele
				vlaobjet_pline_cible
				'(coordinates closed ConstantWidth)
			);fin sous-defun copieProp
		
		(setq i (+ i 1))
	); fin while
);fin progn
);fin if js
(setq js nil)
(prompt "\n---COPYRIGHT 26/03/2012 Par Fabrice DEMIEL---")
nil
);fin c:adapter_polyligne
;;;------------------------------------------------------------------------
(prompt "\npour lancer Tapez : adapter_polyligne")
(princ)

 

Bonne journée,

 

Fabcad

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é