shirazbj 发表于 2012-4-24 12:03:35

求助:如何在新建的layout里画线

先打开了图纸空间的块表记录:
            Dim'// Add the block reference to paper space
                            oBTR.AppendEntity(br) As BlockTableRecord = CType(oBT(BlockTableRecord.PaperSpace).GetObject(OpenMode.ForWrite), BlockTableRecord)

然后新建了layout,并设为当前layout. :
                     Dim oLayoutObjId As ObjectId
                        oLayoutObjId = oLayoutManager.CreateLayout("MyLayout" + Str(row))
                        Dim oLayout As Layout = tr.GetObject(oLayoutObjId, OpenMode.ForWrite)
                        oLayout.Initialize()
                        oLayoutManager.CurrentLayout = "MyLayout" + Str(row)
再在 oBTR里添加插入的块:

                            oBTR.AppendEntity(br)
但是图是显示在layout1里了,不是我新建的。

怎么能写到我新建的layout里呢?

谢谢




sieben 发表于 2012-4-24 14:46:08

oBTR 是什么东东?

shirazbj 发表于 2012-4-24 21:52:10

BlockTableRecord.

改了一点。可以写到不同的layout里了,但好像分的不是很清楚,好像乱写似的,写的那都有。不是指那写那。

BlockTableRecord里papersapce里有个layout就分一块出来,可能还要检查那一块的名字是不是指定的后再写。继续尝试。
                        oLayoutManager.CopyLayout("布局1", tfolderName)
                        Dim oLayout As Layout = tr.GetObject(oLayoutManager.GetLayoutId(tfolderName), OpenMode.ForWrite)
                        oLayout.Initialize()
                        oLayoutManager.CurrentLayout = tfolderName

sieben 发表于 2012-4-25 06:30:54

我知道 oBTR是 BlockTableRecord.否则实体添加到哪里?
但我没看到oBTR是否为CurrentSpace(当前BlockTableRecord),也没看到oBTR和CurrentLayout之间有什么关系。

shirazbj 发表于 2012-4-26 12:02:27

找了个这个,有关系了。Dim oBtr As BlockTableRecord = CType(oTrans.GetObject(oLayout.BlockTableRecordId, _

                                                                OpenMode.ForRead), BlockTableRecord)

huaxiamengqing 发表于 2012-4-26 19:40:46

兄弟,想让人回答把代码全贴出了帮你调试,这样东搞搞,西搞搞谁知道什么地方有问题

shirazbj 发表于 2012-4-28 11:55:42

找到关系了,没问题了。
页: [1]
查看完整版本: 求助:如何在新建的layout里画线