不同位置上的参考块
大家好,我创建了一些块,并用以下代码(C#)将它们引用到一个层:
myBlock.Layer = strLayerName;
现在我希望块被多个层引用。
如何将此块的引用设置为另一层,同时保持当前层引用?
谢谢你的帮助!
干杯,Max。
易于理解的将块复制到位(即相同的插入点、比例等)到所需层:眨眼: 谢谢你,伦德曼!
你是对的。它很简单而且有效。
// Create a circle with a radius
Circle r = new Circle();
r.SetDatabaseDefaults();
r.Center = new Point3d(x, y, 0);
r.Radius = fltRadius;
r.Layer = strLayerName;
// Add the new object to the block table record and the transaction
btr.AppendEntity(r);
acTrans.AddNewlyCreatedDBObject(r, true);
Circle rClone = r.Clone() as Circle;
rClone.Layer = strLayerName;
btr.AppendEntity(rClone);
acTrans.AddNewlyCreatedDBObject(rClone, true);
但是,如果我想将整个块复制到一个层,我必须做什么?
不客气。
这个评论让我困惑。。。
块是单个对象(可以由其他块、组件等组成),但复制时,*应*复制每个子组件。
也许这将提供一些明确性:
http://docs.autodesk.com/ACD/2010/ENU/AutoCAD%20.NET%20Developer's%20指南/索引。html
... 请参见“创建和编辑AutoCAD图元>创建对象>编辑命名和二维对象>复制对象>复制对象”中的C#示例代码 看来,这是没有参考价值的。如果冻结层,我希望隐藏块。但块的实体在其他层上仍然可见。
我希望整个块在第一层(隐藏/可见),块的几个实体在不同的层中分别隐藏它们。
有什么想法吗?
当我写“block”时,我想到了一个BlockTableRecord。此BlockTableRecord具有名称,但没有层属性。
例如,圆是具有属性层的实体。所以我想知道是否可以将BlockTableRecord分配给一个层?
也许搞错了。。。抱歉:不确定:
::简单的解决方案:
为了不显示块,可以:
[列表]
[*]块及其子组件必须位于同一层(正在冻结)
[*]或块子组件的附加层也需要冻结。
::稍微复杂一点的解决方案:
开发一个编辑器反应器,这样当包围层冻结时,块的可见属性设置为False(如果块存在于块集合中)。
注意-该反应器还应处理层解冻时的情况,以便它还应将Visible属性设置为True。
编辑:
“visible属性”的引用来自ActiveX COM API,因为我目前无法访问Visual Studio,也无法从工作中访问ObjectARX SDK。
不如果不使用插入到图形中的反应器强制实例,则无法将块集合(或其项)指定给特定图层。这可以由命令式回调函数触发,然后用所需名称创建所有块的选择集,然后逐步通过选择集并检查驻留层,如果不匹配,则更改块对象本身的层属性。 非常感谢你的建议!
我会试试的。
不客气。
当你完成后,一定要张贴成品(帮助他人)。
干杯
页:
[1]
2