(defun c:xdtb_mleaderdragfx
(/ e msg my_err old str tf
) (xdrx_end)
)
(xd::doc:checkacadversion '> "2008" "")
(xdrx_begin)
"\nSelect multileader<Exit>:"
'((-4 . "<or")
(0 . "MULTILEADER")
(2 . "XMLEADER*")
(-4 . "or>")
)
)
)
)
(if (setq tf
(xdrx
-object
-isa e
"AcDbBlockreference")) (xdrx-entity-explode e)
)
)
(xd::mleader:drag
e
"\nMove the mouse to determine the direction<Exit>:"
1
)
(xdrx-getpropertyvalue e "handle")
)
)
(xdrx_block_make
str
e
(xdrx-getpropertyvalue e "firstvertex" 0)
t
)
(xdrx
-entity
-setpropertiesfrom
(entlast) e
) )
)
)
)
(xdrx_end)
)
Input Point Monitor to realize dynamic dragging MLEADER
Function: XD::MLeader:Drag
The function has been encapsulated in xd-lisp-lib.vlx,
;|
XD::MLeader:Drag
Input Point Monitor to realize dynamic dragging MLEADER
parameter:
e ---- mleader entity name
info ---- prompt string
clr ---- crosshair axis color
Return: T
|;
(e info clr / dynpt old pnt qua quadrantpnt str tf x)
(setq qua
(xdrx_getpropertyvalue e
"quadrant" dynpt
) pnt
(nth (1- qua
) #quadrantpoint
) )
(xdrx_setpropertyvalue e
"lastvertex" (list 0 pnt
)) p1
(polar #firstvertex an h
) p2
(polar #firstvertex an
(- h
)) p3
(polar #firstvertex
(+ an
(/ pi
2.0)) h
) p4
(polar #firstvertex
(+ an
(/ pi
2.0)) (- h
)) )
(xdrx_grdraw clr clr
(list p1 p2
)) (xdrx_grdraw clr clr
(list p3 p4
)) )
(if (setq tf
(xdrx_object_isa e
"AcDbBlockreference")) (xdrx_entity_explode e)
)
)
(setq #firstvertex
(xdrx_getpropertyvalue e
"firstvertex" 0)) (setq #quadrantpoint
(xdrx_getpropertyvalue e
"quadrantpoint")) (setq lxd #quadrantpoint
) (setq xdir
(xdrx_entity_direction e
) an (xdrx_vector_angle xdir)
)
(xdrx_pointmonitor "_callback")
(xdrx_pointmonitor)
(xdrx_block_make
str
e
(xdrx_getpropertyvalue e "firstvertex" 0)
t
)
(xdrx_entity_setpropertiesfrom
(entlast) e
) )
)
t
)