Aller au contenu

rattacher les lignes de repere


PHILPHIL

Messages recommandés

hello toutes tous

 

dans les expresse tool il y a le prpgramme qui permet de rattacher les ligne de repere

au Mtext : leaderex

 

mais voila bien malin ses messieurs d'autodesk c'est pratiquement le seul en fichier *.arx

 

plus malin encore ca ne marche que si l'extremite de la ligne de repere est pile poil sur le point dinsertion du MTEXT

 

sauf que bien sur quand on creer cette ligne de repere on demande a ce qu'elle se décale un peu du mtexte et si plante que toutes les lignes se détachent et bien le "LEADEREX" devient inutilisable par ce que aucune tolérance dans ce programme pour que la ligne retrouve le mtext

 

ha encore mieux les demandes d'assistance chez autodesk sont en radeeee ce soir coolllll

 

question : avez un tit truc sous la mains pour rattacher moultsss ligne de reperes a leurs Mtext en donnant au moins une cote de tolérance

 

a+

 

merci

 

phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

hello

 

je suis sur AA2010

 

et pour ce fichier la j'utilise les anciennes ligne de reperes

par habitude

 

faut que j'essaie la nouveauté plus si nouvelle que ca il est vrai

 

a+

 

phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

hello

 

bon grace a gilles j'ai résolu 95% du probleme

 

apres modification de ton LISp gile

 

ce LISP deplace les points de ligne, de polyligne, de ligne de repere

au point le plus proche d'insertion d'un mtext, de point , de centre cercle, d'insertion de bloc

suivant une distance déterminée

 

tous ca a la volée

 

apres je n'avais plus qu"a passer le programme des express tools "_.qlattachset"

 

ca a régler 95% du truc

 

merci gilles

 

a+

 

phil

 

 

 

 ;;; AC_OB Accroche l'extémité des objets (ligne, polyligne spline) située
;;; en deçà d'une distances spécifiée au centre, point d'insertion, ou point
;;; du cercle bloc point sélectionné.

(defun c:acobLM	 (
	  ;;/ dist ent elst ucszdir elev cen circle ss nlst pt_lst
	  )
 (initget 7)
 (setq dist (getdist "\nSpécifiez le rayon du cercle d'acrrochage: "))




 (setq ENTX NIL)
 (prompt "\nSELECTIONNER LE(S) TEXTE(S) DE REFERENCE :")
 (while (null ENTX)
   (setq ENTX (ssget '((0 . "MTEXT,CIRCLE,POINT,INSERT"))))
   )






 (setq COMPT 0)
 (setq COM (sslength ENTX))


;;;(while (setq ent (car (entsel)))


 (while (< COMPT COM)

;;;(setq elst (entget entx))

   (setq elst (entget (ssname ENTX COMPT)))
   (setq ent (cdr (car (entget (ssname ENTX COMPT)))))



   (if	(member (cdr (assoc 0 elst)) '("MTEXT" "CIRCLE" "POINT" "INSERT"))
     (progn
(setq ucszdir (trans '(0 0 1) 1 0 T)
      elev    (caddr (trans (getvar "ucsorg") 0 ucszdir))
      )
(if (= (cdr (assoc 0 elst)) "POINT")
  (setq cen (trans (cdr (assoc 10 elst)) 0 ucszdir))
  (setq cen (trans (cdr (assoc 10 elst)) ent ucszdir))
  )
(if (equal (caddr cen) elev 1e-9)
  (progn
    (entmake (list '(0 . "CIRCLE")
		   (cons 10 cen)
		   (cons 40 dist)
		   (cons 210 ucszdir)
		   )
	     )
    (setq circle (entlast))
    (setq
      ss (SelByObj circle "CP" '((0 . "LEADER,LINE,LWPOLYLINE")))
      )
    (if	ss
      (foreach n
		  (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
	(setq nlst (entget n))
	(cond
	  ((and
	     (= (cdr (assoc 0 nlst)) "LINE")
	     (equal
	       (caddr (trans (cdr (assoc 10 nlst)) 0 ucszdir))
	       elev
	       1e-9
	       )
	     (equal
	       (caddr (trans (cdr (assoc 11 nlst)) 0 ucszdir))
	       elev
	       1e-9
	       )
	     )
	   (if
	     (<= (distance
		   cen
		   (trans (cdr (assoc 10 nlst)) 0 ucszdir)
		   )
		 dist
		 )
	      (entmod (subst (cons 10 (trans cen ucszdir 0))
			     (assoc 10 nlst)
			     (entget n)
			     )
		      )
	      )
	   (if (<= (distance
		     cen
		     (trans (cdr (assoc 11 nlst)) 0 ucszdir)
		     )
		   dist
		   )
	     (entmod (subst (cons 11 (trans cen ucszdir 0))
			    (assoc 11 nlst)
			    (entget n)
			    )
		     )
	     )
	   )



	  ((and	(= (cdr (assoc 0 (entget n))) "LWPOLYLINE")
		(equal (cdr (assoc 210 nlst)) ucszdir 1e-9)
		(equal (cdr (assoc 38 nlst)) elev 1e-9)
		)
	   (setq pt_lst	(mapcar	'cdr
				(vl-remove-if-not
				  '(lambda (x) (= (car x) 10))
				  nlst
				  )
				)
		 )
	   (if (<= (distance cen (car pt_lst)) dist)
	     (entmod (subst (cons 10 (list (car cen) (cadr cen)))
			    (assoc 10 nlst)
			    nlst
			    )
		     )
	     )
	   (if (<= (distance cen (last pt_lst)) dist)
	     (entmod (subst (cons 10 (list (car cen) (cadr cen)))
			    (assoc 10 (reverse nlst))
			    nlst
			    )
		     )
	     )
	   )



	  ((and	(= (cdr (assoc 0 (entget n))) "LEADER")
		(equal (cdr (assoc 210 nlst)) ucszdir 1e-9)
;;;	      (equal (cdr (assoc 38 nlst)) elev 1e-9)
		)
	   (setq pt_lst	(mapcar	'cdr
				(vl-remove-if-not
				  '(lambda (x) (= (car x) 10))
				  nlst
				  )
				)
		 )
	   (if (<= (distance cen (car pt_lst)) dist)
	     (entmod (subst (cons 10 (list (car cen) (cadr cen)))
			    (assoc 10 nlst)
			    nlst
			    )
		     )
	     )
	   (if (<= (distance cen (last pt_lst)) dist)
	     (entmod (subst (cons 10 (list (car cen) (cadr cen)))
			    (assoc 10 (reverse nlst))
			    nlst
			    )
		     )
	     )
	   )

	  )

	)
      )
    (entdel circle)
    )
  (alert
    "\nL'objet sélectionné n'est pas\ndans le plan XY du SCU."
    )
  )
)
     (alert
"\nL'objet sélectionné n'est pas\nun point, un cecle ou un bloc."
)
     )



;;;(entmod ENT)

   (setq COMPT (1+ COMPT))
















   )
















 (princ)
 )

;;; SelByObj -Gilles Chanteau- 06/10/06
;;; Crée un jeu de sélection avec tous les objets contenus ou 
;;; capturés, dans la vue courante, par l'objet sélectionné
;;; (cercle, ellipse, polyligne fermée).
;;; Arguments :
;;; - un nom d'entité (ename) 
;;; - un mode de sélection (Cp ou Wp)
;;; - un filtre de sélection ou nil

(defun SelByObj	 (ent opt fltr / dist n lst prec dist p_lst)
 (vl-load-com)
 (if (= (type ent) 'ENAME)
   (setq ent (vlax-ename->vla-object ent))
   )
 (cond
   ((member (vla-get-ObjectName ent)
     '("AcDbCircle" "AcDbEllipse")
     )
    (setq dist	(/ (vlax-curve-getDistAtParam
	     ent
	     (vlax-curve-getEndParam ent)
	     )
	   50
	   )
   n	0
   )
    (repeat 50
      (setq
 lst
  (cons
    (trans
      (vlax-curve-getPointAtDist ent (* dist (setq n (1+ n))))
      0
      1
      )
    lst
    )
 )
      )
    )
   (T
    (setq p_lst (vl-remove-if-not
	   '(lambda (x)
	      (or (= (car x) 10)
		  (= (car x) 42)
		  )
	      )
	   (entget ent)
	   )
   )
    (while p_lst
      (setq
 lst
  (append
    lst
    (list (trans (append (cdr (assoc 10 p_lst))
			 (list (cdr (assoc 38 (entget ent))))
			 )
		 ent
		 1
		 )
	  )
    )
 )
      (if (/= 0 (cdadr p_lst))
 (progn
   (setq prec (1+ (fix (* 50 (abs (cdadr p_lst)))))
	 dist (/ (- (if	(cdaddr p_lst)
		      (vlax-curve-getDistAtPoint
			ent
			(trans (cdaddr p_lst) ent 0)
			)
		      (vlax-curve-getDistAtParam
			ent
			(vlax-curve-getEndParam ent)
			)
		      )
		    (vlax-curve-getDistAtPoint
		      ent
		      (trans (cdar p_lst) ent 0)
		      )
		    )
		 prec
		 )
	 n    0
	 )
   (repeat (1- prec)
     (setq
       lst (append
	     lst
	     (list
	       (trans
		 (vlax-curve-getPointAtDist
		   ent
		   (+ (vlax-curve-getDistAtPoint
			ent
			(trans (cdar p_lst) ent 0)
			)
		      (* dist (setq n (1+ n)))
		      )
		   )
		 0
		 1
		 )
	       )
	     )
       )
     )
   )
 )
      (setq p_lst (cddr p_lst))
      )
    )
   )
 (ssget (strcat "_" opt) lst fltr)
 )

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

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é