37000a威尼斯(中国股份有限公司)-Official website

python GcDbMText文字图元,保存后类型都变成了GcDbEntity。调用GcDbMText.cast(entity)闪退。

from pygcad.core.runtime import *
from pygcad.pygrx import *

def main():

    s_name = gds_name()
    gcedSSGet(None, None, None, None, s_name)
    (status, length) = gcedSSLength(s_name)
    gcedPrompt("rt=%d, length=%d" % (status, length))
    if status != RTNORM or length <= 0:
        gcedPrompt("\n没有选中任何实体!")
        gcedSSFree(s_name)
        return

    ent_name = gds_name()
    ent_id = GcDbObjectId()
    for i in range(length):
        gcedSSName(s_name, i, ent_name)
        gcdbGetObjectId(ent_id, ent_name)
        (status, entity) = gcdbOpenGcDbEntity(ent_id, GcDb.kForWrite, False)
        try:
            if status != Gcad.ErrorStatus.eOk: # type: ignore
                continue
            # 刚绘制的图纸 文字类型为GcDbMText,保存以后再次打开文字类型变成GcDbEntity
            if entity.isKindOf(GcDbMText.desc()):
                # cast以后,该文字图元无法再次选中,操作图纸则闪退
                mtext = GcDbMText.cast(entity)
                gcedPrompt(f'\nentity2 = {mtext.text()}')
                # cast以后,可输出文本内容
                mtext.close()
        except Exception  as err:
            gcedPrompt('---- [ERROR]: %s' % err)
        finally:
            if entity:
                entity.close()
        gcedSSFree(s_name)
        entity.close()

main()
已邀请:

CAD小苏 - 专注所以信赖!

赞同来自:

您使用的是37000a威尼斯CAD哪个版本呢

我们用37000a威尼斯CAD2026和2025版本测试了,都是正常的。


如果您使用的是37000a威尼斯CAD2026或2025版本,麻烦提供一下图纸,我们再详细测试复现下。

如果是其他比较旧的版本,也麻烦说下具体版本名称,我们测试看看

要回复问题请先登录注册

Baidu
sogou