Aller au contenu

Je cherche une fonction lisp qui permettrait des infos sur un solide 3d (boite,long larg et haut).


Invité renac

Messages recommandés

Bonsoir à tous,

 

 

 

 

Je cherche une fonction lisp qui permettrait des infos sur un solide 3d (boite,long larg et haut).

 

 

J'ai un bout de code lisp, mais qui n'est pas satisfaisant.

 

 

 

 

code lisp:

 

 

 

 

(vl-load-com)

 

 

 

 

(setq objSel (entsel \"\\nMontrez l\'objet: \"))

 

 

 

 

 

 

(setq 3dObj (vlax-ename->vla-object (car objSel)))

 

 

 

 

 

 

(vlax-dump-object 3dObj )

 

 

 

 

 

 

merci pour vos réponses éventuelles

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

j'ai sa dans ma bibliothèque je te l'envoie demain .et si tu t connais tu peux le modifier pour avoir plus d'info sur les solid 3D

Donne moi ton adresse mail...

 

Avis au amateurs

DAO: AutoCAD(2D & 3D), Covadis

CAO: 3D's MAX, Rhinoceros 3D, REVIT

GeoModeliSation: AutoCAD MEP, RhinoTerrain

Rendu: Vray for Rhino, Keyshot, Lumion

Programmation: Grasshopper, Dynamo, VisualStudio

 

C.V.

Profil LinkedIn

Book

Site web

 

http://nsa37.casimages.com/img/2016/09/26/160926023334168603.jpg

Lien vers le commentaire
Partager sur d’autres sites

renac,

 

tu peux voir ce sujet.

 

 

rhymone,

 

Je pensais que CADxp était un site de partage.

Tu pourrais peut-être poster ton code...

Ça intéresserait certainement d'autres membres (dont moi).

 

 

lecrabe,

 

Si tu es bien modérateur du forum AutoCAD LT 2012 pourrais-tu déplacer ce message vers un forum LISP, merci

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

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Voici une excellente routine qui dessine la Bounding Box 2D ou 3D de l'objet selectionne

Commande au clavier : BBOX

 

C (comme souvent) une excellente routine de Gilles !

 

Cela pourra peut etre t'aider !?

 

Le Decapode

 

 

;; Doug C. Broad, Jr.
;; can be used with vla-transformby to
;; transform objects from the UCS to the WCS

(defun UCS2WCSMatrix ()
 (vlax-tmatrix
   (append
     (mapcar
'(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 ()
 (vlax-tmatrix
   (append
     (mapcar
'(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))
   )
 )
)


;;; BBOX par GC
;;; Crée une entité (polyligne ou boite) figurant la "bounding box" de l'objet sélectionné.

(defun c:bbox (/ bbox_err AcDoc	Space obj bb minpoint maxpoint pt1 pt2 lst poly
       box cen norm)
 (vl-load-com)

 (defun bbox_err (msg)
   (if	(or
  (= msg "Fonction annulée")
  (= msg "quitter / sortir abandon")
)
     (princ)
     (princ (strcat "\nErreur: " msg))
   )
   (vla-endundomark
     (vla-get-activedocument (vlax-get-acad-object))
   )
   (setq *error* m:err
  m:err	nil
   )
   (princ)
 )

 (setq	AcDoc	(vla-get-activedocument (vlax-get-acad-object))
Space	(if (= (getvar "CVPORT") 1)
	  (vla-get-PaperSpace AcDoc)
	  (vla-get-ModelSpace AcDoc)
	)
m:err	*error*
*error*	bbox_err
 )
 (vla-startUndoMark AcDoc)
 (while (not (setq obj (car (entsel)))))
 (setq obj (vlax-ename->vla-object obj))
 (vla-TransformBy obj (UCS2WCSMatrix))
 (setq	bb (vl-catch-all-apply
     'vla-getboundingbox
     (list obj
	   'minpoint
	   'maxpoint
     )
   )
 )
 (if (vl-catch-all-error-p bb)
   (progn
     (princ
(strcat "; erreur: " (vl-catch-all-error-message bb))
     )
     (vla-TransformBy obj (WCS2UCSMatrix))
   )
   (progn
     (setq pt1	(vlax-safearray->list minpoint)
    pt2	(vlax-safearray->list maxpoint)
     )
     (if (or (equal (car pt1) (car pt2) 1e-007)
      (equal (cadr pt1) (cadr pt2) 1e-007)
      (equal (caddr pt1) (caddr pt2) 1e-007)
  )
(progn
  (cond
    ((equal (car pt1) (car pt2) 1e-007)
     (setq lst (list pt1
		     (list (car pt1) (cadr pt1) (caddr pt2))
		     pt2
		     (list (car pt1) (cadr pt2) (caddr pt1))
	       )
     )
    )
    ((equal (cadr pt1) (cadr pt2) 1e-007)
     (setq lst (list pt1
		     (list (car pt1) (cadr pt1) (caddr pt2))
		     pt2
		     (list (car pt2) (cadr pt1) (caddr pt1))
	       )
     )
    )
    ((equal (caddr pt1) (caddr pt2) 1e-007)
     (setq lst (list pt1
		     (list (car pt1) (cadr pt2) (caddr pt1))
		     pt2
		     (list (car pt2) (cadr pt1) (caddr pt1))
	       )
     )
    )
  )
  (setq	box
	 (vlax-invoke Space 'add3dPoly (apply 'append lst))
  )
  (vla-put-closed box :vlax-true)
)
(progn
  (setq	cen (mapcar '(lambda (x y) (/ (+ x y) 2)) pt1 pt2)
	pt2 (mapcar '- pt2 pt1)
	box (vla-addBox
	      Space
	      (vlax-3d-point cen)
	      (car pt2)
	      (cadr pt2)
	      (caddr pt2)
	    )
  )
)
     )
     (if (= (vla-get-ObjectName obj) "AcDbText")
(progn
  (setq	norm (vlax-get obj 'Normal)
  )
  (vla-Move
    box
    (vlax-3d-point (trans '(0 0 0) norm 0))
    (vlax-3d-point
      (trans
	(list
	  0
	  0
	  (caddr
	    (trans (vlax-get obj 'InsertionPoint)
		   0
		   norm
	    )
	  )
	)
	norm
	0
      )
    )
  )
)
     )
     (mapcar '(lambda (x) (vla-TransformBy x (WCS2UCSMatrix)))
      (list obj box)
     )
   )
 )
 (vla-endUndoMark AcDoc)
 (setq	*error*	m:err
m:err nil
 )
 (princ)
)

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

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é