Aller au contenu

Récuperer la valeur d'une cote vers une cellule excel


Messages recommandés

Posté(e)

Bonjour,

 

Je souhaite récupérer la valeur de plusieurs cotes alignées, angulaires ou pivotées, et les inscrire dans des cellules d'un tableau Excel, pour pouvoir ensuite faire des calculs grâce a des formules présentes dans ce tableau.

 

J'ai tenté de récupérer les infos par le biais du Champ/Objet, mais je ne trouve las la valeur dans la liste...

 

Quelqu'un pourrait me renseigner? Qu'et ce qui cloche dans ma logique?

 

Merci!

Posté(e)

Hello

 

No Comprendo !

 

Tu peux recuperer dans un Champ Dynamique (qui existent depuis la 2005)

le Contenu d'une Cotation (Lineaire, Alignee, Diametre, Rayon, Angulaire, etc)

par la propriete "Dimensions" !

 

Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

Hello

 

SVP sais tu lire MON Message ? ... par la propriete "Dimensions" ! ...

 

Ne vois tu pas dans l'ascenseur central en 20eme ligne environ "Dimensions" !?

 

Avec une Bonne Biere ou un Bon Whiskey (Single Malt pour Moi),

tu verras tout de suite !!

 

Bye, lecrabe

Autodesk Expert Elite Team

Posté(e)

Hello

 

Et le Grand Maitre Jedi Gilles a encore frappe !

 

Ci-apres une routine qui exporte dans un fichier .CSV

le Contenu de TOUTES les Cotes d'un calque ...

 

Attention: les Cotes angulaires sont en Radians !

 

MERCI Gilles, Bye, lecrabe

 

PS: Routine extraite de mon stock de 3000 LSP ...

 


;; 
;; https://forums.autodesk.com/t5/autocad-francais/propriete-de-cotes-dans-excel/m-p/7084190
;; 
;; Routine: Dim2Csv par GC - 07/2010
;; 
;; Chargement par APPLOAD <Entree> 
;; 
;; Execution  par DIM2CSV <Entree> 
;;

(vl-load-com) 

(defun c:Dim2Csv (/ lay ss filename n file)
 (if
   (and
     (setq lay (GetLayer nil))
     (setq ss (ssget "_X"
	      (list
		'(0 . "DIMENSION")
		(cons 8 lay)
		(cons 410 (getvar 'ctab))
	      )
       )
     )
     (setq filename (getfiled "Créer un fichier CSV"
		       (getvar 'dwgprefix)
		       "csv"
		       1
	     )
     )
     (setq n -1)
   )
    (progn
      (setq file (open filename "w"))
      (while (setq dim	(ssname	ss (setq n (1+ n))))
 (write-line (rtos (cdr (assoc 42 (entget dim)))) file)
      )
      (close file)
    )
 )
 (princ)
)  


;;; GetLayer par GC 03/11/07
;;; Retourne le nom du calque entré ou choisi par l'utilisateur 
;;; dans une liste déroulante de la boite de dialogue ou en sélectionnant
;;; un objet à l'écran.
;;; Argument : le titre (string) ou nil (défaut : "Choisir un calque")

(defun getlayer	(titre / lay lst tmp file what_next dcl_id nom)
 (while (setq lay (tblnext "LAYER" (not lay)))
   (setq lst (cons (cdr (assoc 2 lay)) lst))
 )
 (setq	lst  (acad_strlsort lst)
tmp  (vl-filename-mktemp "Tmp.dcl")
file (open tmp "w")
 )
 (write-line
   (strcat
     "getlayer:dialog{label="
     (cond (titre (vl-prin1-to-string titre))
    ("\"Choisir un calque\"")
     )
     ";initial_focus=\"tp\";
     :boxed_column{:row{
     :column{:text{label=\"Sélectionner un objet\";alignment=left;}}
     :column{:button{label=\">>\";key=\"obj\";alignment=right;fixed_width=true;}
     spacer;}}
     :edit_box{key=\"tp\";edit_width=25;allow_accept=true;}
     :popup_list{key=\"lay\";edit_width=25;}
     spacer;}ok_cancel;}"
   )
   file
 )
 (close file)
 (setq dcl_id (load_dialog tmp))
 (setq what_next 2)
 (while (>= what_next 2)
   (if	(not (new_dialog "getlayer" dcl_id))
     (exit)
   )
   (start_list "lay")
   (mapcar 'add_list lst)
   (end_list)
   (or	nom
(setq nom (vlax-ldata-get "getLayer" "n"))
(setq nom (vlax-ldata-put "getLayer" "n" "0"))
   )
   (if	(member nom lst)
     (set_tile	"lay"
	(itoa (- (length lst) (length (member nom lst))))
     )
     (set_tile "lay" "0")
   )
   (set_tile "tp" nom)
   (action_tile "obj" "(done_dialog 3)")
   (action_tile "tp" "(setq nom $value)")
   (action_tile
     "lay"
     (strcat
"(if (or (= $reason 1) (= $reason 4))"
"(progn"
"(setq nom (nth (atoi $value) lst))"
"(set_tile \"tp\" (nth (atoi $value) lst))"
"(mode_tile \"tp\" 2)))"
      )
   )
   (action_tile
     "accept"
     (strcat
"(if (tblsearch \"LAYER\" nom)"
"(progn (done_dialog 1)"
"(vlax-ldata-put \"getLayer\" \"n\" nom))"
"(progn"
"(alert (strcat \"Le calque \" nom \" est introuvable.\"))"
"(setq nom nil) (set_tile \"tp\" (vlax-ldata-get \"getLayer\" \"n\"))"
"(mode_tile \"tp\" 2)))"
      )
   )
   (setq what_next (start_dialog))
   (cond
     ((= what_next 3)
      (if (setq nom (car (entsel)))
 (setq nom (cdr (assoc 8 (entget nom))))
 (setq nom nil)
      )
     )
     ((= what_next 0)
      (setq nom nil)
     )
   )
 )
 (unload_dialog dcl_id)
 (vl-file-delete tmp)
 nom
) 

Autodesk Expert Elite Team

Posté(e)

Hello

 

Et comme tu parles de Champ dynamique provenant de UNE cotation

Voici la bonne routine LSP "DimField" ...

qui cree un Champ dynamique depuis UNE Cote selectionnee ...

 

MERCI Tharwat, Bye, lecrabe

 

PS: Routine extraite de mon stock de 3000 LSP ...

 

;; 
;; http://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/autolisp-and-fields/m-p/5331739#M326684
;; 
;; Routine: DimField from Tharwat
;; 

(vl-load-com)

;; (defun c:Test   (/ space ss pt)  
(defun c:DimField  (/ space ss pt) 

 ; Tharwat 14. 06. 2011

 (setq space (vla-get-modelspace
               (vla-get-ActiveDocument (vlax-get-acad-object))
             )
 )
 (if (and (setq ss (car (entsel "\n Select a Dimension : ")))
          (setq pt (getpoint "\n Specify Text Location :"))
     )
   (vla-addMText
     space
     (vlax-3d-point pt)
     4.
     (strcat "%<\\AcObjProp Object(%<\\_ObjId "
             (itoa (vla-get-ObjectID (vlax-ename->vla-object ss)))
             ">%).Measurement \\f \"%lu6\">%"
     )
   )
   (princ)
 )
 (princ)
)

Autodesk Expert Elite Team

Posté(e)

Merci Lecrabe pour ces multiples réponses ! C'est parfait.

 

Effectivement je n'avais pas vu l’élément Dimensions.

J'ai définitivement besoin d'une pause et d'un whiskey (Benriach 16 ans pour moi)...

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é