pBe 发表于 2016-5-12 02:17:50

访问图纸集组件

.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 *****

n.yuan 发表于 2016-5-12 10:23:09

查看:
AcSmSheetSet。GetSheetEnumerator()方法,该方法返回IAcSmEnumComponent。类似于:
var iterator = sheetSet。GetSheetEnumerator()
var sheet = iterator。Next()作为AcSmSheet
while (sheet!= null)
{
//对工作表执行某些操作....
迭代器。Next()
}

nobody 发表于 2016-5-13 01:10:47


不确定两者之间是否相等。 对我来说,也许与vlax转储非常接近的将是Visual Studio中的智能感知。 在使用lisp这么多年后,不得不打破我的大脑来学习.Net。

Master_Shake 发表于 2016-5-13 07:59:28

我不认为你可以从Lisp访问SSM?

dgorsman 发表于 2016-5-13 10:15:29

dotNET中有大量(vla-Item...)的等效项。该函数用于从索引集合中获取条目,类似于Item()或ElementAt()方法。在dotNET中,访问集合的方法将取决于集合的类型。

nobody 发表于 2016-5-14 20:03:41

将. net与工作表集一起使用的一个很好的例子:
http://adndevblog.typepad.com/autocad/2013/09/using-sheetset-manager-api-in-vbnet.html

pBe 发表于 2016-5-23 10:01:43

谢谢你的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确实是解决它的方法。。

nobody 发表于 2016-5-23 22:24:42

我假设通过它,所以你可以用它来自动lislisp。如果我错了,请纠正我。
我自己没有这样做,但我的直觉告诉我使用currentDocument.SendStringToExecute(),但格式会有点棘手......有关示例,请参见下文。
currentDocument.SendStringToExecute(“(setq test (append test (list \”“ + i.ToString() + ”\“)) ” “ , true, false, false);
IMO这就像使用破坏球来完成锤子工作一样。不过,我不能强调我建议使用c#和.net进行多少操作。 起初很奇怪,与直接在命令行中编写lisp相比,调试是一种痛苦,但最终我认为你很难再次想要用lisp编写。.net有太多的好处。

pBe 发表于 2016-5-24 00:15:26


谢谢你的提示。
不知何故,我知道你会这么说。,我开始观看Bob Tabor的C#视频教程并浏览Little Wonder系列。由Kerry发布的James Michael Hare,我还买了Pat McGee的一本书,我喜欢我所看到的。
但现在,该程序已完成90%,我只需要使用. NET的帮助运行一个程序。在10%。所以请在这方面耐心等待我。
当我知道足够多时,我肯定会重新编写整件事。NET。
感谢您的所有帮助。

pBe 发表于 2016-5-24 01:29:14

谢谢Area51visitor,SendStringToExecute工作。string Tolisp = sheetSetDatabase.GetObjectId().GetHandle();。
acDoc.SendStringToExecute(“(_fromNet \”“ + Tolisp +”\“) ”, true, false, false);。
页: [1] 2
查看完整版本: 访问图纸集组件