cad标注样式替代的处理
原因
lisp语句:
(setvar "dimtxt" 123)  ;控制标注⽂字⾼度
当我们使⽤这些标注样式变量,会令标注出现<;样式替代>,那么怎么去掉这个东西呢?
(command "-dimstyle" "S" "dim100" "" "");保存样式
放弃<;样式替代>
[CommandMethod("DimRestoreAndEnable")]
public static void DimRestoreAndEnable()
{
Database db = HostApplicationServices.WorkingDatabase;//当前的数据库
Editor ed = Acap.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage(Environment.NewLine + "****惊惊连盒-恢复标注替代样式");
db.Action(tr =>
{
var oldDimData = tr.GetObject(db.Dimstyle, OpenMode.ForRead) as DimStyleTableRecord;
db.SetDimstyleData(oldDimData);
});
}
获取<;样式替代>并且设置新标注样式
[CommandMethod("DimRestoreAndEnable")]
public static void DimRestoreAndEnable()
{
Database db = HostApplicationServices.WorkingDatabase;//当前的数据库
Editor ed = Acap.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage(Environment.NewLine + "****惊惊连盒-恢复标注替代样式");
db.Action(tr =>
{
var currentDimData = db.GetDimstyleData();//临时样式的数据
var dt = tr.GetObject(db.DimStyleTableId, OpenMode.ForRead) as DimStyleTable;
dt.UpgradeOpen();
currentDimData = currentDimData.Clone() as DimStyleTableRecord; //需要与否
currentDimData.Name += "我是新标注样式"; //同时存在的样式,名字冲突了并不会覆盖,后者会变成空⽩名字在⾯板上
dt.Add(currentDimData);
tr.AddNewlyCreatedDBObject(currentDimData, true);
db.SetDimstyleData(currentDimData);
});
}
应⽤<;样式替代>到当前标注上
[CommandMethod("DimRestoreAndEnable")]
public static void DimRestoreAndEnable()
{
Database db = HostApplicationServices.WorkingDatabase;//当前的数据库
Editor ed = Acap.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage(Environment.NewLine + "****惊惊连盒-恢复标注替代样式");
db.Action(tr =>
{
// 临时样式的数据
var currentDimData = db.GetDimstyleData();
// 当前标注样式
小程序editor样式大全var dim = tr.GetObject(db.Dimstyle, OpenMode.ForRead) as DimStyleTableRecord;
dim.UpgradeOpen();
var name = dim.Name;//名字这些不能删除,否则会变空⽩
dim.CopyFrom(currentDimData);//复制样式到当前
dim.Name = name;
});
}
1. 起初我单纯认为当前标注样式是替代样式的宿主,事实上并不是,否则删除当前标注样式,替代样式也应该删掉,
⽽我删掉之后,它会跑到新设定的当前标注上.
那么这就表⽰了替代样式是唯⼀的,也可称为临时样式,它仅仅为样式变量的副本.
⽽为什么有这个副本呢?
⼤概是临时对象设定到真实对象时候需要有⼀个缓存,这个缓存是cad的操作⼀切的标准.
2. 如果新建⼀个标注样式替代旧的,那么已有引⽤的会引发错误,你需要遍历全图标注设置到新标注样式上,所以这不是很正确的思路. (完)