明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1160|回复: 1

[【PyCAD】] pycad 更改块基点

  [复制链接]
发表于 2022-4-21 09:27:08 | 显示全部楼层 |阅读模式


# -*- coding: utf-8 -*
from pycad.system import *
from pycad.runtime import *


@command()
def reinspt(doc):
    with dbtrans(doc) as tr:
        obj1 =tr.getobject(edx.entsel("选择要修改的块").ObjectId)
        btrec = tr.getobject(obj1.BlockTableRecord,acdb.OpenMode.ForWrite)
        bkmat = obj1.BlockTransform
        inspt= edx.getpoint("新基点").value.TransformBy(bkmat.Inverse())
        btrec.UpgradeOpen()
        mat1= acge.Matrix3d.Displacement(btrec.Origin.GetVectorTo(acge.Point3d(0,0,0)))
        mat2= acge.Matrix3d.Displacement(inspt.GetAsVector())
        btrec.Origin=inspt
        ids= btrec.GetBlockReferenceIds(True, False)
        for id in ids:
            brfobj = tr.getobject(id,acdb.OpenMode.ForWrite)
            blkmat = brfobj.BlockTransform
            brfobj.Position=inspt.TransformBy(mat1).TransformBy(mat2).TransformBy(blkmat)
        ed=doc.Editor
        ed.Regen()


发表于 2022-9-22 09:46:03 | 显示全部楼层
学习了,最近我也在学习 pycad。
之前都是用 win32 来用 vba的接口的python开发插件,总是断连。
非常感谢分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 04:30 , Processed in 0.141050 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表