TheSwamp
Code Red => AutoLISP (Vanilla / Visual) => XDRX-API => Topic started by: xdcad on April 15, 2024, 05:41:51 AM
-
https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/insert-mleader-on-x-y-with-number-from-excel/td-p/12691597
(defun c:tt (/ arrowlen basept box el inx l loglen lst maxsum ml pl pt pt2 pts range ratio ss str txth x x1
xy y1
)
(defun _makemleader (basept pt2 str)
(setq ml (xdrx_mleader_make basept pt2 str #xd-var-global-text-height
#xd-var-global-mleader-dogleg-length
)
)
(xdrx_setpropertyvalue ml "arrowsize" 0.0 "textattachmenttype" 6)
ml
)
(defun xd::string:alignformat (el / maxsum)
(setq maxsum (apply
'max
(mapcar
'(lambda (x)
(strlen x)
)
el
)
)
)
(mapcar
'(lambda (x)
(setq l (strlen x))
(if (< l maxsum)
(repeat (- maxsum l)
(setq x (strcat " " x))
)
x
)
)
el
)
)
(if (and
(or
*XD:excel*
(setq *XD:excel* (vlax-get-or-create-object "excel.application"))
)
(setq range (vlax-get *XD:excel* 'selection))
(setq lst (xd::excel:readrange range))
)
(progn
(xd::doc:getdouble (xdrx-string-multilanguage "\n文字高" "\nText Height") "#xd-var-global-text-height"
4.0
)
(xd::doc:getdouble (xdrx-string-multilanguage "\n引线长度" "\nLeader Line Length")
"#xd-var-global-mleader-line-length" 10.0
)
(xd::doc:getdouble (xdrx-string-multilanguage "\n水平基线长度" "\nHorizontal Baseline Length")
"#xd-var-global-mleader-dogleg-length" 10.0
)
(xdrx-document-safezoom lst)
(mapcar
'(Lambda (x)
(setq x1 (rtos (car x) 2 4)
y1 (rtos (cadr x) 2 4)
xy (xd::string:alignformat (list x1 y1))
x1 (strcat "X=" (car xy))
y1 (strcat "Y=" (cadr xy))
)
(setq str (xdrx-string-join (list x1 y1) "\r\n"))
(setq box (xdrx-points->box x (xd::doc:getpickboxheight)))
(if (and
(setq ss (ssget "cp" box '((0 . "*polyline") (-4 . "&=")
(70 . 1)
)
)
)
(setq pl (ssname ss 0))
(setq inx (xdrx-getpropertyvalue pl "nearindex" x))
)
(progn
(setq pts (xdrx-points-offset #xd-var-global-mleader-line-length lst)
pt (nth inx pts)
)
)
)
(_makemleader x pt str)
)
lst
)
)
)
(princ)
)