Mleader Mtext Attachment/Alignment?
遇到程序创建的MLeaders的麻烦,如果角度是从右到左,则引线将交叉文本,我试图避免这种情况。如果用户抓地力编辑了引线,它会自动更正其自身。我无法使用MgdDbg snoop来查找两者之间的更改,因为它由于某种原因在MLeaders上崩溃 Leader creation code:// create the MLeader。MLeader label = new MLeader();。
标签,SetDatabaseDefaults();。
标签,ContentType = ContentType.MTextContent;。
标签,层 = 层名;。
int ldNum = label.AddLeader();。
int idx = label.AddLeaderLine(ldNum);。
标签,AddFirstVertex(idx,leaderPoint);。
#if ACAD_APP。
标签,AddLastVertex(idx, textPoint);//。
#endif。
标签,SetLastVertex(idx, textPoint);。
。
文本的新 Mtext。
MText mText = new MText();。
mText.SetDatabaseDefaults();。
mText.Contents = labelString;。
mText.Rotation = rotation;。
mText.TextHeight = textHeight;。
mText.TextStyleId = Styles.GetTextStyleID(AID_Strings.PipeSizeTextStyle);。
mText.SetAttachmentMovingLocation(AttachmentPoint.MiddleCenter);。
。
标签,MText = mText;。
。
// 将引线添加到 currspace。
BlockTableRecord curSpace =。
(BlockTableRecord)tr.GetObject(Active.Database.CurrentSpaceId, OpenMode.ForWrite);。
curSpace.AppendEntity(label);。
断续器AddNewlyCreatedDBObject(label, true);。
我已经在 MLeader 事件中查找了刷新方法或要调用的内容,但找不到任何内容。 在附加的示例绘图中,两个引线都是用代码创建的,下部引线只是握柄编辑。有什么想法吗?。
**** Hidden Message ***** 仅当您选择夹点或执行重新生成时,mleader是否会自行更正? 仅适用于夹点编辑。Regen没用,虽然我试过了
这几乎像是需要重新计算什么的。 改变AttachmentPoint是否表现出相同的“翻转”动作?
从
mText.SetAttachmentMovingLocation(AttachmentPoint.MiddleCenter);
到
mText.SetAttachmentMovingLocation(AttachmentPoint.MiddleRight);
mText.SetAttachmentMovingLocation(AttachmentPoint.MiddleCenter);显示相同的翻转行为,它只是将文本翻转到夹点的另一侧
我实际上对该行进行了注释,得到了相同的结果。我想这是我以前试图整理这个问题的一个残余。我可能会把它拿走
我不知道这是AutoCAD的MLeader实现中的一些古怪之处,还是我搞砸了
编辑:已解决。(sorta)
从Kean那里看这篇文章,我根据相关点的X值设置了狗腿向量。有趣的是,BricsCAD不喜欢这样,所以我把它放在了#IF语句中。代码现在看起来是这样的:
//文本的新多行文本
MText:MText=new-MText()
mText.SetDatabaseDefaults()
多行文字。内容=标签串
多行文字。旋转=旋转
多行文字。TextHeight=TextHeight
多行文字。TextStyleId=Styles.GetTextStyleID(AID_Strings.PipeSizeTextStyle)
//创建MLeader
MLeader标签=新的MLeader()
label.SetDatabaseDefaults()
标签。ContentType=ContentType.MTextContent
标签。层=层名称
int-ldNum=label.AddLeader()
int-idx=label.AddLeaderLine(ldNum)
label.AddFirstVertex(idx,leaderPoint)
#if ACAD_APP//wird kludge修复程序适用于Autodesk
标签。AddLastVertex(idx,textPoint)
<div>Vector3d dl=新的Vector3d((textPoint.X>=leaderPoint.X?1:-1),0,0)
标签。SETDOGLOG(idx,dl)
#endif
标签。SetLastVertex(idx,textPoint)
标签。多行文字=多行文字
//将mleader添加到currspace
BlockTableRecord curSpace=
(BlockTableRecord)tr.GetObject(Active.Database.CurrentSpaceId,OpenMode.ForWrite)
curSpace.AppendEntity(标签)
tr.addNewlyCreatedBobObject(标签,true)
到目前为止,我有一个类似的问题,如果我在“tr”后面加上下面一行。AddNewlyCreatedDBObject(label,true);"我的领导总是水平的。有没有可能通过移动AttchmentPoint来解决您的问题。添加新对象后的MiddleCenter?
"标签。TextAttachmentDirection = TextAttachmentDirection。AttachmentHorizontal”
页:
[1]