Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 02/11/2025 in Posts

  1. Perhaps not the cleanest code, this returns the alignment of a selected text, which you can apply to your selected texts in the codes above, (defun gettextalign ( txtset / txtset Edata ptx_old pty_old pty_new ptx_new mycons) ;; (setq txtset (ssget '((0 . "*TEXT")))) (setq Edata (entget (ssname txtset 0))) (setq mycons 10) (if (/= 0 (nth 1 (cdr (assoc 11 Edata))))(setq mycons 11)) (setq ptx_old (nth 1 (assoc mycons Edata))) (setq pty_old (nth 2 (assoc mycons Edata))) (command "_.justifytext" txtset "" "MC") (setq Edata (entget (ssname txtset 0))) (setq ptx_new (nth 1 (assoc mycons Edata))) (setq pty_new (nth 2 (assoc mycons Edata))) (if (< ptx_old ptx_new)(setq alignx "L")) (if (> ptx_old ptx_new)(setq alignx "R")) (if (= ptx_old ptx_new)(setq alignx "C")) (if (> pty_old pty_new)(setq aligny "T")) (if (< pty_old pty_new)(setq aligny "B")) (if (= pty_old pty_new)(setq aligny "M")) (setq xyalign (strcat aligny alignx)) (command "_.justifytext" txtset "" xyalign) xyalign )
    1 point
  2. 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) )
    1 point
  3. Look at pt3 CADR. When you use Entsel the CAR of the value returned is the entity name, the CADR is the point that was used to pick the entity.
    1 point
×
×
  • Create New...