访问图纸集组件
.NET 。获取对图纸集管理器对象的引用 。
IAcSmSheetSetMgr sheetSetManager = default(IAcSmSheetSetMgr);。
sheetSetManager = new AcSmSheetSetMgr();。
。
打开图纸集文件 。
AcSmDatabase sheetSetDatabase = default(AcSmDatabase);。
sheetSetDatabase = sheetSetManager.OpenDatabase(DSTPath, true);。
。
从数据库获取图纸集 。
AcSmSheetSet sheetSet = sheetSetDatabase.GetSheetSet(); 。
。
AcSmSubset = 。
。
是我陷入困境的部分,如何访问已知“名称”的子集:图纸集上的子集?类似于 (vla-item SheetSetCollection “Irrigation”) AcSmSubset subset = default(AcSmSubset);。
subset = (sheetSetDatabase.GetName(), SubsetName);谢谢你。
**** Hidden Message ***** 查看:
AcSmSheetSet。GetSheetEnumerator()方法,该方法返回IAcSmEnumComponent。类似于:
var iterator = sheetSet。GetSheetEnumerator()
var sheet = iterator。Next()作为AcSmSheet
while (sheet!= null)
{
//对工作表执行某些操作....
迭代器。Next()
}
不确定两者之间是否相等。 对我来说,也许与vlax转储非常接近的将是Visual Studio中的智能感知。 在使用lisp这么多年后,不得不打破我的大脑来学习.Net。 我不认为你可以从Lisp访问SSM? dotNET中有大量(vla-Item...)的等效项。该函数用于从索引集合中获取条目,类似于Item()或ElementAt()方法。在dotNET中,访问集合的方法将取决于集合的类型。 将. net与工作表集一起使用的一个很好的例子:
http://adndevblog.typepad.com/autocad/2013/09/using-sheetset-manager-api-in-vbnet.html 谢谢你的Area 51Visitor,我有这个来检索Sheet Set ObjectID,。
[命令方法(“RetriveInfoSSM”)]。
公共空检索信息SSM()。
{。
。
IAcSmSheetSetMgr sheetSetManager=默认(IAcSmSheetSetMgr);。
sheetSetManager=new AcSmSheetSetMgr();。
。
AcSmDatabase SheetSetDatabase=默认(AcSmDatabase);。
sheetSetDatabase=sheetSetManager.OpenDatabase("Z:\\Plachold\\Sheet SetTemplate.dst", false);。
。
MessageBox.Show(sheetSetDatabase.GetObjectId(),GetHandle());。
。
sheetSetManager.Close(sheetSetDatabase);。
}。
问题:有没有办法将值传递给命令退出时可用的变量,而不是MessageBox.Show?我仍在研究这个。据我所知,IAcSmEnumComponent确实是解决它的方法。。
我假设通过它,所以你可以用它来自动lislisp。如果我错了,请纠正我。
我自己没有这样做,但我的直觉告诉我使用currentDocument.SendStringToExecute(),但格式会有点棘手......有关示例,请参见下文。
currentDocument.SendStringToExecute(“(setq test (append test (list \”“ + i.ToString() + ”\“)) ” “ , true, false, false);
IMO这就像使用破坏球来完成锤子工作一样。不过,我不能强调我建议使用c#和.net进行多少操作。 起初很奇怪,与直接在命令行中编写lisp相比,调试是一种痛苦,但最终我认为你很难再次想要用lisp编写。.net有太多的好处。
谢谢你的提示。
不知何故,我知道你会这么说。,我开始观看Bob Tabor的C#视频教程并浏览Little Wonder系列。由Kerry发布的James Michael Hare,我还买了Pat McGee的一本书,我喜欢我所看到的。
但现在,该程序已完成90%,我只需要使用. NET的帮助运行一个程序。在10%。所以请在这方面耐心等待我。
当我知道足够多时,我肯定会重新编写整件事。NET。
感谢您的所有帮助。 谢谢Area51visitor,SendStringToExecute工作。string Tolisp = sheetSetDatabase.GetObjectId().GetHandle();。
acDoc.SendStringToExecute(“(_fromNet \”“ + Tolisp +”\“) ”, true, false, false);。
页:
[1]
2