nobody 发表于 2016-5-21 09:26:15

如何收集/爆炸AECC物体?

我想使用API在绘图中爆炸所有民用3d对象......有没有一种有效的方法可以做到这一点,而无需遍历每个实体并检查“AEC”然后单独爆炸它们?或者至少有一种方法来限制我检查的数据?
**** Hidden Message *****

Jeff_M 发表于 2016-5-21 15:00:27

使用{0,"AECC-*"}获取过滤器的选择集?

nobody 发表于 2016-5-21 18:21:52

是的 :/希望有一个秘密的aecc.explodeeverything方法,我不知道哈哈

nobody 发表于 2016-5-22 04:01:12

在我看来,迭代不是问题...例如,对数据库的 736 323 个对象(DWG 大小大于 50 Mb)进行迭代时,需要 00:00:00,2781968(即小于 1 秒)。public static ObjectId[] GetDBObjectIds(this Database db,。
Func filter) {。

检查参数。
if (null == db)。
throw new ArgumentNullException(“null == db”);。
如果(空 == 筛选器)。
抛出新的 ArgumentNullException(“null == filter”);。
如果 (db.已处置)。
throw new ArgumentException(“true == db.IsDisposed“);。

-------------------。
Int32 approxNum = db.近似值对象;。
列表 ids = new List();。

for (Int64 i = db.BlockTableId.Handle.Value;我。
&& approxnum > 0; ++i) {。

句柄 h = 新句柄(i);。
ObjectId id = ObjectId.Null;。

布尔解析结果 = db.TryGetObjectId(h, out id);。

if (parseResult) {。
--大约数;。
if (filter(id)) {。
ids.Add(id);。
}。
}。
}。
返回 id,ToArray();。
}我使用它来搜索,分解和删除数据库中的所有代理(通常为AutoCAD)。

nobody 发表于 2016-5-22 16:38:52

但是一次一个地分解每个AEC对象
在我看来,迭代不是问题……例如,对736 323个数据库对象(DWG大小超过50 Mb)的迭代需要00:00:002781968(即不到一秒)
公共静态ObjectId[]getdbobjectid(此数据库数据库为
Func
filter){
//检查参数
如果(null==db)
抛出新的ArgumentNullException(“null==db”)
如果(null==filter)
抛出新的ArgumentNullException(“null==filter”)
如果(db.IsDisposed)
抛出新的ArgumentException(“true==db.IsDisposed”)
/------------
Int32:approxNum=db.ApproxNumObjects
<div>List<ObjectId>id=新列表<ObjectId>(a)
用于(Int64 i=db.BlockTableId.Handle.Value;i
&&approxNum>0++i) {
手柄h=新手柄(i)
ObjectId id=ObjectId.Null
布尔parseResult=db。TryGetObjectId(h,out id)
如果(parseResult){
——近似数
如果(过滤器(id)){
id.Add(id)
}
}
}
返回id.ToArray()
}
我使用它搜索、分解和删除数据库中的所有代理(常用AutoCAD)。

huiz 发表于 2016-5-22 16:47:51

我不理解你。你什么意思?

nobody 发表于 2016-5-22 20:31:06

我不理解你。你什么意思?

呃...我只是希望有一个我不知道的可用的allae objects . explode instant()方法。

Jeff_M 发表于 2016-5-23 05:12:35

爆炸对象将创建新的AutoCAD对象,之后您需要擦除原始对象。
擦除对象会影响其他对象的存在,如果您在爆炸后立即擦除对齐,所有配置文件和配置文件视图和部分等也将被删除。
所以您最好先爆炸所有对象,然后擦除所有原始对象在try-catch中。
或者,发送一个命令行字符串:“全部爆炸”。

huiz 发表于 2016-5-23 05:49:01

谢谢慧兹和所有人
页: [1]
查看完整版本: 如何收集/爆炸AECC物体?