代码拉取完成,页面将自动刷新
#if acad
namespace Test;
public class CmdTestDwgFilerEx
{
[CommandMethod(nameof(CmdTest_DwgFilerEx), CommandFlags.UsePickSet)]
public static void CmdTest_DwgFilerEx()
{
var ed = Env.Editor;
var r1 = ed.GetSelection();
if (r1.Status != PromptStatus.OK)
return;
using var tr = new DBTrans();
var ents = r1.Value.GetEntities<Entity>();
foreach (var ent in ents)
{
var dwgFiler = new IFoxDwgFiler();
ent.DwgOut(dwgFiler);
foreach (var objectId in dwgFiler.SoftPointerIdList)
{
objectId.ObjectClass.DxfName.Print();
}
// ed.WriteMessage(Environment.NewLine + dwgFiler.ToString());
}
}
// [CommandMethod(nameof(CmdTest_EntDxfout))]
// public static void CmdTest_EntDxfout()
// {
// var dm = Acap.DocumentManager;
// var doc = dm.MdiActiveDocument;
// var db = doc.Database;
// var ed = doc.Editor;
//
// // 定义选择集选项
// var pso = new PromptSelectionOptions
// {
// RejectObjectsOnLockedLayers = true, // 不选择锁定图层对象
// AllowDuplicates = true, // 不允许重复选择
// };
// var ssPsr = ed.GetSelection(pso);// 手选 这里输入al会变成all,无法删除ssget的all关键字
// if (ssPsr.Status != PromptStatus.OK)
// return;
//
// using DBTrans tr = new();
// var ids = ssPsr.Value.GetObjectIds();
// foreach (var id in ids)
// {
// if (!id.IsOk())
// continue;
// var ent = tr.GetObject<Entity>(id, OpenMode.ForRead);
// if (ent is null)
// continue;
// // ResultBuffer rbDxf = new();
// var filer = new DxfFiler(ent.UnmanagedObject, true);/// 这里有问题
// ent.DxfOut(filer);
// }
// }
// [CommandMethod(nameof(CmdTest_TextOut))]
// public static void CmdTest_TextOut()
// {
// var dm = Acap.DocumentManager;
// var doc = dm.MdiActiveDocument;
// var db = doc.Database;
// var ed = doc.Editor;
//
// #if true
// var peo1 = new PromptEntityOptions(Environment.NewLine + "点选源TCH_WIREDIM2:")
// {
// AllowObjectOnLockedLayer = false,
// AllowNone = false
// };
// var gt1 = ed.GetEntity(peo1);
// if (gt1.Status != PromptStatus.OK)
// return;
// #else
// var peo2 = new PromptEntityOptions(Environment.NewLine + "点选目标TCH_WIREDIM2:")
// {
// AllowObjectOnLockedLayer = false,
// AllowNone = false
// };
// var gt2 = ed.GetEntity(peo2);
// if (gt2.Status != PromptStatus.OK)
// return;
// #endif
//
// using DBTrans tr = new();
// var dwgFilerEx = new DwgFilerEx();
// var bText = tr.GetObject<DBText>(gt1.ObjectId, OpenMode.ForRead);
// if (bText is null)
// return;
//
// // DwgFilerEx.StringList[0] = "1@2@3@4@5@6@7@";
// // 复制 TCH_WIREDIM2 不行,TEXT 也不行,直接崩溃。line等线就没事
// bText.DwgOut(dwgFilerEx.DwgFiler);
//
// int testNum = 1 | 2 | 4 | 8;
//
// if ((testNum & 1) == 1)
// {
// // 错误,原地克隆也是不行的,它会生成在了模型中.
// var sIds = new List<ObjectId>
// {
// bText.ObjectId
// };
// // 克隆到目标块表内
// using ObjectIdCollection bindIds = new(sIds.ToArray());
// using IdMapping map = new();
//
// tr.CurrentSpace.DeepCloneEx(bindIds, map);
// var newTexts = map.GetValues().GetObject<DBText>();
// newTexts.ForEach(nText => {
// if (nText == null)
// return;
// // 通过上面的克隆就已经在块表上面了.所以下面的设置也跟设置到已有图元上一样报错.
// nText.UpgradeOpen();
// nText.DwgIn(dwgFilerEx);
// tr.CurrentSpace.AddEntity(nText);
// nText.DowngradeOpen();
// });
// }
// if ((testNum & 2) == 2)
// {
// // 出错
// // 直接设置
// bText.DwgIn(dwgFilerEx);
// }
// if ((testNum & 4) == 4)
// {
// // 出错
// // 此时是内存中对象....
// var nText = (DBText)bText.Clone();
// nText.DwgIn(dwgFilerEx);
// tr.CurrentSpace.AddEntity(nText);
// }
// if ((testNum & 8) == 8)
// {
// // 新对象相当于克隆,是ok的
// DBText nText = new();
// nText.SetDatabaseDefaults();
// nText.DwgIn(dwgFilerEx);
// tr.CurrentSpace.AddEntity(nText);
// }
// }
}
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。