Aller au contenu

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


Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

merci de m'avoir répondu rapidement

 

 

mon émail = jeanmarcbabilon@yahoo.fr

 

a+

 

 

merci d'avance pour la réponse par @

Posté(e)

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

Posté(e)

 

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

  • 3 semaines après...
Posté(e)

Bonsoir,

 

Il me semblait que l'on ne pouvait pas charger et lancer des commandes AutoLISP dans l'environnement d'AutoCAD LT.

 

Qu'en es-t-il ? et existe-t-il une astuce pour le faire ?

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é