(defun c:mletest (/ Ent1 *mlObj* *Text*)
(while (not Ent1)
(setq Ent1 (entsel "\rPlease select mleader:"))
)
(setq *mlObj* (vlax-ename->vla-object (car Ent1)))
(if (= (vla-get-contenttype *mlObj*) acblockcontent)
(progn
(vla-put-contenttype *mlObj* acmtextcontent)
(setq *Text* (getstring T "\nEnter text:"))
(if *Text*
(vla-put-TextString *mlObj* *Text*) ;******** This line seems to cause the mleader to be erased or to return an error of Description Not Provided
(vla-put-TextString *mlObj* "TEMP\\PTEXT") ;******** This line seems to cause the mleader to be erased or to return an error of Description Not Provided
)
)
)
)
(defun c:mletest (/ Ent1 *mlObj* *Text* *NewMlObj*)
(while (not Ent1)
(setq Ent1 (entsel "\rPlease select mleader:"))
)
(setq *mlObj* (vlax-ename->vla-object (car Ent1)))
(setq *Text* (getstring T "\nEnter text:"))
(if (= (vla-get-contenttype *mlObj*) acblockcontent)
(progn
(setq *NewMlObj* (MleaderBlockToMtext *mlObj* *Text*))
(if *NewMlObj*
(setq *mlObj* *NewMlObj*
*NewMlObj* nil
)
)
)
)
)
(defun MleaderBlockToMtext (*MlObj* *Text* / *ThisDrawing* *Space* *NewMlObj* *InsPt* NewPoints2 *Pt1* *FxPt* *MtObj* *ArrowheadSize* *ArrowheadType* *DogLegged* *DogLegLength* *EntityTransparency* *LandingGap* *Layer* *LeaderLineColor* *LeaderLineType* *LeaderLineWeight* *LeaderType* *Linetype* *LinetypeScale* *Lineweight* *PlotStyleName* *StyleName* *TextWidth* *NewPoints*)
;Written by: Chris Wade - 02/25/2019
;Changes leader content from Block to mText
;Usage: (setq *NewMlObj* (MleaderBlockToMtext *mlObj* *Text*))
(if *MlObj*
(progn
(setq *ThisDrawing* (vla-get-activedocument (vlax-get-acad-object)) ;_ Set Drawing and Space
*Space* (vlax-get-property *ThisDrawing* (if (= 1 (getvar 'cvport)) 'paperspace 'modelspace)); Code adjustment from Lee Mac at: http://www.theswamp.org/index.php?topic=54349.msg589159#msg589159
)
(setq *ArrowheadSize* (vla-get-ArrowheadSize *MlObj*)
*ArrowheadType* (vla-get-ArrowheadType *MlObj*)
*DogLegged* (vla-get-DogLegged *MlObj*)
*DogLegLength* (vla-get-DogLegLength *MlObj*)
*EntityTransparency* (vla-get-EntityTransparency *MlObj*)
*LandingGap* (vla-get-LandingGap *MlObj*)
*Layer* (vla-get-Layer *MlObj*)
*LeaderLineColor* (vla-get-LeaderLineColor *MlObj*)
*LeaderLineType* (vla-get-LeaderLineType *MlObj*)
*LeaderLineWeight* (vla-get-LeaderLineWeight *MlObj*)
*LeaderType* (vla-get-LeaderType *MlObj*)
*Linetype* (vla-get-Linetype *MlObj*)
*LinetypeScale* (vla-get-LinetypeScale *MlObj*)
*Lineweight* (vla-get-Lineweight *MlObj*)
*PlotStyleName* (vla-get-PlotStyleName *MlObj*)
*StyleName* (vla-get-StyleName *MlObj*)
*TextWidth* 0
*NewPoints* (vlax-make-safearray vlax-vbDouble '(1 . 6))
*NewPoints* (vla-GetLeaderLineVertices *mlObj* 0)
NewPoints2 (vlax-safearray->list (vlax-variant-value *NewPoints*))
*Pt1* (list (nth 0 NewPoints2) (nth 1 NewPoints2) (nth 2 NewPoints2))
*FxPt* (list (nth 3 NewPoints2) (nth 4 NewPoints2) (nth 5 NewPoints2))
*NewMlObj* (vla-AddMLeader *Space* *NewPoints* 0)
)
(if *NewMlObj*
(progn
(if (> (car *Pt1*) (car *FxPt*))
(progn
(vla-put-dogleglength *NewMlObj* 0); This code is from http://www.theswamp.org/index.php?topic=31348.msg369336#msg369336
(vla-SetDogLegDirection *NewMlObj* 0 (vlax-3D-point (list (if (<= (car *pt1*) (car *FxPT*)) 1 -1) 0 0))); Code from: http://www.theswamp.org/index.php?topic=30817.0
(vla-put-dogleglength *NewMlObj* *DogLegLength*); This code is from http://www.theswamp.org/index.php?topic=31348.msg369336#msg369336
)
)
(vla-put-textstring *NewMlObj* *Text*)
(if (> (car *Pt1*) (car *FxPt*))
(vla-put-TextJustify *NewMlObj* acAttachmentPointTopRight)
)
(vla-put-StyleName *NewMlObj* *StyleName*)
(vla-put-ArrowheadSize *NewMlObj* *ArrowheadSize*)
(vla-put-ArrowheadType *NewMlObj* *ArrowheadType*)
(vla-put-EntityTransparency *NewMlObj* *EntityTransparency*)
(vla-put-LandingGap *NewMlObj* *LandingGap*)
(vla-put-Layer *NewMlObj* *Layer*)
(vla-put-LeaderLineColor *NewMlObj* *LeaderLineColor*)
(vla-put-LeaderLineType *NewMlObj* *LeaderLineType*)
(vla-put-LeaderLineWeight *NewMlObj* *LeaderLineWeight*)
(vla-put-Linetype *NewMlObj* *Linetype*)
(vla-put-LinetypeScale *NewMlObj* *LinetypeScale*)
(vla-put-Lineweight *NewMlObj* *Lineweight*)
(if (= (getvar "PSTYLEMODE") 0)
(vla-put-PlotStyleName *NewMlObj* *PlotStyleName*)
)
(vla-SetLeaderLineVertices *NewMlObj* 0 *NewPoints*)
(vla-delete *MlObj*)
)
)
*NewMlObj*
)
)
)
Off topic question, but why do you use *var* for all your variables? I've always interpreted that naming convention as a global.
Well, I decided to roll my own method of making this work. Basically, this creates a new leader using the same properties as the existing leader, then erases the old leader. It is a bit of a kludge, but it works as near as I can tell.
It is actually part of a larger routine where I am using them as a naming convention for a specific reason. Basically in my larger routine the *var* represent items that get reused throughout the routine and complimentary routines, so basically I guess they are global variables, you just don't get to see that in the small extract and I kept the variable names consistent so that I wouldn't have to go back and change them all to incorporate into my larger routine.Cool .. FWIW you could simplify your properties get and set with something like so: