Jump to content

Recommended Posts

Posted (edited)

I just saw your drawing
The problem is that the code assumes that all the origin points of each dimension are aligned. The cases in which they are not, are not contemplated in the code.

That is, the code is intended for the 'dimaligned' command.

 

Img1-1.png

Edited by GLAVCVS
  • Thanks 1
Posted

Fixing this will make the code a bit more complicated.

 

Wait

  • Thanks 1
Posted
50 minutes ago, GLAVCVS said:

Fixing this will make the code a bit more complicated.

 

Wait

Drawing2.dwghere I all everything and it still gives me an error

Posted

 

Modified for 'dimaligned' and 'dimlinear'.
Give it a go.
I haven't tested it thoroughly.
Do it for me

 

(defun c:agrupaDIMs (/ n	conj	 ent	  lstent   pt
		       pt1	pt2	 ptIni	  ptFin	   desplz
		       desplzX	desplzY	 punto	  tamTX	   gapTX
		       desplzMax	 osmant	  ang	   ptTx1
		       ptTx2	params	 escala	  rotDIM
		      )
  (setq	n      0
	osmant (getvar "OSMODE")
  )
  (setvar "OSMODE" 0)
  (if (setq conj (ssget '((0 . "DIMEN*"))))
    (progn
      (while (setq ent (ssname conj n))
	(setq pt1     (cdr (assoc 13 (setq lstent (entget ent))))
	      pt2     (cdr (assoc 14 lstent))
	      ptTx1 (cdr (assoc 10 lstent))
	      ptTx2 (if	(setq rotDIM (= (cdr (last lstent)) "AcDbRotatedDimension"))
		      (if (< (abs (- (cadr pt2) (cadr ptTx1))) 0.0001)
			(list (car ptTx1) (cadr pt1));o sea,  acotación tumbada
			(list (car pt1) (cadr ptTx1));o sea,  acotación levantada de arriba abajo o viceversa			
		      )
		      (polar pt1 (angle pt2 ptTx1) (distance pt2 ptTx1))
		    )
	      ang     (angle pt2 (cdr (assoc 10 lstent)))
	      tamTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextHeight"
		      )
	      gapTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextGap"
		      )
	      escala (vlax-get-property
			(vlax-ename->vla-object ent)
			"ScaleFactor"
		      )
	      desplz  (+ (* tamTX escala) gapTX)
	)
	(if (not params)
	  (setq params (list tamTX (vlax-get-property (vlax-ename->vla-object ent) 'ArrowheadSize)))
	)
	(if desplzMax
	  (setq desplzMax (max desplzMax desplz))
	  (setq desplzMax desplz)
	)
	(if (< (car ptTx2) (car ptTx1))
	  (setq	pt  ptTx1
		ptTx1 ptTx2
		ptTx2 pt
	  )
	  (if (= (car ptTx2) (car ptTx1))
	    (if	(< (cadr ptTx2) (cadr ptTx1))
	      (setq pt	ptTx1
		    ptTx1	ptTx2
		    ptTx2	pt
	      )
	    )
	  )
	)
	(if ptIni
	  (if (and
		(/= (car ptTx2) (car ptTx1))
		(< (car ptTx1) (car ptIni))
	      )
	    (setq ptIni ptTx1)
	    (if (= (car ptTx1) (car ptTx2))
	      (if (< (cadr ptTx1) (cadr ptIni))
		(setq ptIni ptTx1)
	      )
	    )
	  )
	  (setq ptIni ptTx1)
	)
	(if ptFin
	  (if (and
		(/= (car ptTx2) (car ptTx1))
		(> (car ptTx2) (car ptFin))
	      )
	    (setq ptFin ptTx2)
	    (if (= (car ptTx2) (car ptTx2))
	      (if (> (cadr ptTx2) (cadr ptFin))
		(setq ptFin ptTx2)
	      )
	    )
	  )
	  (setq ptFin ptTx2)
	)
	(setq n (+ n 1))
      )
      (setq punto (polar ptIni
			 (angle ptIni ptFin)
			 (/ (distance ptIni ptFin) 2.0)
		  )
	    punto (polar punto ang (* desplzMax 2.0))
      )
      (if rotDIM
	(vl-cmdf "_dimlinear" ptIni ptFin punto)
	(vl-cmdf "_dimaligned" ptIni ptFin punto)
      )
      (vlax-put-property (vlax-ename->vla-object (entlast)) 'TextHeight (* (car params) escala))
      (vlax-put-property (vlax-ename->vla-object (entlast)) 'ArrowheadSize (* (cadr params) escala))
      (setvar "OSMODE" osmant)
    )
  )
  (princ)
)

 

  • Thanks 1
Posted
On 2/7/2025 at 5:30 PM, GLAVCVS said:

 

Modified for 'dimaligned' and 'dimlinear'.
Give it a go.
I haven't tested it thoroughly.
Do it for me

 

(defun c:agrupaDIMs (/ n	conj	 ent	  lstent   pt
		       pt1	pt2	 ptIni	  ptFin	   desplz
		       desplzX	desplzY	 punto	  tamTX	   gapTX
		       desplzMax	 osmant	  ang	   ptTx1
		       ptTx2	params	 escala	  rotDIM
		      )
  (setq	n      0
	osmant (getvar "OSMODE")
  )
  (setvar "OSMODE" 0)
  (if (setq conj (ssget '((0 . "DIMEN*"))))
    (progn
      (while (setq ent (ssname conj n))
	(setq pt1     (cdr (assoc 13 (setq lstent (entget ent))))
	      pt2     (cdr (assoc 14 lstent))
	      ptTx1 (cdr (assoc 10 lstent))
	      ptTx2 (if	(setq rotDIM (= (cdr (last lstent)) "AcDbRotatedDimension"))
		      (if (< (abs (- (cadr pt2) (cadr ptTx1))) 0.0001)
			(list (car ptTx1) (cadr pt1));o sea,  acotación tumbada
			(list (car pt1) (cadr ptTx1));o sea,  acotación levantada de arriba abajo o viceversa			
		      )
		      (polar pt1 (angle pt2 ptTx1) (distance pt2 ptTx1))
		    )
	      ang     (angle pt2 (cdr (assoc 10 lstent)))
	      tamTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextHeight"
		      )
	      gapTX   (vlax-get-property
			(vlax-ename->vla-object ent)
			"TextGap"
		      )
	      escala (vlax-get-property
			(vlax-ename->vla-object ent)
			"ScaleFactor"
		      )
	      desplz  (+ (* tamTX escala) gapTX)
	)
	(if (not params)
	  (setq params (list tamTX (vlax-get-property (vlax-ename->vla-object ent) 'ArrowheadSize)))
	)
	(if desplzMax
	  (setq desplzMax (max desplzMax desplz))
	  (setq desplzMax desplz)
	)
	(if (< (car ptTx2) (car ptTx1))
	  (setq	pt  ptTx1
		ptTx1 ptTx2
		ptTx2 pt
	  )
	  (if (= (car ptTx2) (car ptTx1))
	    (if	(< (cadr ptTx2) (cadr ptTx1))
	      (setq pt	ptTx1
		    ptTx1	ptTx2
		    ptTx2	pt
	      )
	    )
	  )
	)
	(if ptIni
	  (if (and
		(/= (car ptTx2) (car ptTx1))
		(< (car ptTx1) (car ptIni))
	      )
	    (setq ptIni ptTx1)
	    (if (= (car ptTx1) (car ptTx2))
	      (if (< (cadr ptTx1) (cadr ptIni))
		(setq ptIni ptTx1)
	      )
	    )
	  )
	  (setq ptIni ptTx1)
	)
	(if ptFin
	  (if (and
		(/= (car ptTx2) (car ptTx1))
		(> (car ptTx2) (car ptFin))
	      )
	    (setq ptFin ptTx2)
	    (if (= (car ptTx2) (car ptTx2))
	      (if (> (cadr ptTx2) (cadr ptFin))
		(setq ptFin ptTx2)
	      )
	    )
	  )
	  (setq ptFin ptTx2)
	)
	(setq n (+ n 1))
      )
      (setq punto (polar ptIni
			 (angle ptIni ptFin)
			 (/ (distance ptIni ptFin) 2.0)
		  )
	    punto (polar punto ang (* desplzMax 2.0))
      )
      (if rotDIM
	(vl-cmdf "_dimlinear" ptIni ptFin punto)
	(vl-cmdf "_dimaligned" ptIni ptFin punto)
      )
      (vlax-put-property (vlax-ename->vla-object (entlast)) 'TextHeight (* (car params) escala))
      (vlax-put-property (vlax-ename->vla-object (entlast)) 'ArrowheadSize (* (cadr params) escala))
      (setvar "OSMODE" osmant)
    )
  )
  (princ)
)

 

It is tested and it is excellent , thanks

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...