whcjg
发表于 2010-10-20 14:08:00
飞狐老师能给个修改图上!文字内容的代码不
雪山飞狐_lzh
发表于 2010-10-21 18:13:00
问题太笼统了哈
雪山飞狐_lzh
发表于 2010-12-26 19:41:34
去除格式的另一种实现 public static void ExplodeFragments<T>(this MText mt, T obj, Func<MTextFragment, T, MTextFragmentCallbackStatus> mTextFragmentCallback)
{
mt.ExplodeFragments(
(f, o) => mTextFragmentCallback(f, (T)o),
obj);
}
public static string GetUnFormatString(this MText mt)
{
List<string> strs = new List<string>();
mt.ExplodeFragments(
strs,
(f, o) =>
{
o.Add(f.Text);
return MTextFragmentCallbackStatus.Continue;
});
return string.Join("", strs.ToArray());
}
azbd
发表于 2011-1-3 11:39:53
你们这个去格式的方法太复杂啦,MText类有自带的方法:
MText.Text ,它的Text属性就是去格式的内容。
YAOSHIWEI
发表于 2012-6-5 12:55:55
学习一下,
YAOSHIWEI
发表于 2012-6-5 13:06:52
雪山飞狐_lzh 发表于 2010-5-15 13:47 static/image/common/back.gif
另外贴两个去除MText格式的函数
可以来个动态显示的图片吗
YAOSHIWEI
发表于 2012-6-5 13:08:04
楼主,可以不可以来个lisp的版本
ctgu123
发表于 2012-6-7 17:46:59
精品,顶一个~
ctgu123
发表于 2012-6-12 09:47:42
MakeScript在哪里实现的啊?初学者~~~
雪山飞狐_lzh
发表于 2012-7-15 21:05:27
本帖最后由 雪山飞狐_lzh 于 2012-7-17 08:09 编辑
/// <summary>
/// 单行文字分解
/// </summary>
public static void Test4()
{
var ed = SystemManager.Editor;
var opts = new PromptEntityOptions("\n请选择文本:");
opts.SetRejectMessage("你选择的不是文本,请重新选择!");
opts.AddAllowedClass(typeof(DBText), false);
var res = ed.GetEntity(opts);
if (res.Status != PromptStatus.OK) return;
using (var tr = new DBTransaction())
{
var btr =tr.OpenCurrentSpace(OpenMode.ForWrite);
var txt = tr.GetObject<DBText>(res.ObjectId).Copy();
var ext = txt.GeometricExtents;
var pt = ext.MinPoint;
var txts = new List<DBText>();
int color = 1;
foreach(char c in txt.TextString)
{
var s = c.ToString();
var txtx =
new DBText
{
TextString = s,
TextStyleId = txt.TextStyleId,
Height = txt.Height,
Position = pt,
ColorIndex = color ++
};
txtx.SetDatabaseDefaults();
txts.Add(txtx);
var width = AcUtils.GetTextExtents(txt.TextStyleId, s, txt.Height).X;
pt += new Vector3d(width, 0, 0);
}
tr.AddEntity(btr, txts);
//简单的拖动方式
var ss = SelectionSet.FromObjectIds(txts.Select(t => t.ObjectId).ToArray());
var ptBase = ext.MinPoint;
var resDrag =
ed.Drag(
ss,
"\n输入插入点",
(Point3d p, ref Matrix3d m) =>
{
m = Matrix3d.Displacement(p - ptBase);
return SamplerStatus.OK;
});
if (resDrag.Status == PromptStatus.OK)
{
var mat = Matrix3d.Displacement(resDrag.Value - ptBase);
txts.ForEach(c => c.TransformBy(mat));
}
else
{
tr.Erase(txts);
}
}
}