Aller au contenu

Messages recommandés

Posté(e)

Svp, je cherche une commande lisp qui me permet de creer un contour pour un ensemble d'objet, soitent des blocs d'arbres intersectionnés, habituellement je fais sortir le groupe d'arbres en dehors du dessin et je trace un rectangle autour, apres j'applique la commande contour.

merci pour votre collaboration..

Posté(e)

Salut,

 

Si j'ai bien compris la demande, voilà un LISP qui dessine un rectangle suivant le SCU courant, figurant l'emprise des objets sélectionnés

 

	;; MBBOX (gile)
;; Dessine un rectangle figurant l'emprise des objets sélectionnés suivant le SCU courant.

(defun c:mbbox (/ ss lst)
(vl-load-com)
(or *acad* (setq *acad* (vlax-get-acad-object)))
(or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
(if (ssget)
(progn
(vlax-for o (setq ss (vla-get-ActiveSelectionSet *acdoc*))
(setq lst (append (ucs-bbox o) lst))
)
(vl-cmdf "_rectang"
(apply 'mapcar (cons 'min lst))
(apply 'mapcar (cons 'max lst))
)
)
)
(princ)
)

;; Doug C. Broad, Jr.
;; can be used with vla-transformby to
;; transform objects from the UCS to the WCS
(defun UCS2WCSMatrix ()
(append
(mapcar
(function
(lambda (vector origin)
(append (trans vector 1 0 T) (list origin))
)
)
(list '(1 0 0) '(0 1 0) '(0 0 1))
(trans '(0 0 0) 0 1)
)
(list '(0 0 0 1))
)
)

;; transform objects from the WCS to the UCS
(defun WCS2UCSMatrix ()
(append
(mapcar
(function
(lambda (vector origin)
(append (trans vector 0 1 T) (list origin))
)
)
(list '(1 0 0) '(0 1 0) '(0 0 1))
(trans '(0 0 0) 1 0)
)
(list '(0 0 0 1))
)
)

;; UCS-BBOX (gile)
;; Retourne les coodrdonnées (SCU) de la 'bounding box' de l'objet par rapport au SCU courant
;;
;; Argument
;; obj : un objet graphique (ename ou vla-object)
;;
;; Retour
;; une liste des points inférieur gauche et supérieur droit dans le SCU courant

(defun ucs-bbox (obj / space minpoint maxpoint)
(vl-load-com)
(and (= (type obj) 'ENAME)
(setq obj (vlax-ename->vla-object obj))
)
(vla-TransformBy obj (vlax-tmatrix (UCS2WCSMatrix)))
(vla-getboundingbox obj 'minpoint 'maxpoint)
(vla-TransformBy obj (vlax-tmatrix (WCS2UCSMatrix)))
(list
(vlax-safearray->list minpoint)
(vlax-safearray->list maxpoint)
)
) 

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

Posté(e)

merci gile pour votre intervention,

comme je travaille dans l'architecture du paysage, pendant la plantation des arbre on a besoin de les regrouper ensemble avec un contour, alors je cherche une commande similaire a la commande contour, mais approfondie, c'est a dire elle va me faire un contour en selectionnant les blocs (arbres en plan) et j'aurai un contour exterieur des arbres.

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é