关于python操作cad的2021-06-18

之前写了“关于python通过pyautocad操作cad的2021-06-10”,由于pyautocad根据图元生产面域的方法没找到,所以改用win32com.client了,找到了生成面域的方法及面域相交的方法,下面分享一下过程:

1最开始的需求是不规则图形与圆相交,求重合部分面积,圆的半径、不规则图形的基点与圆心距离、不规则图形根据指定点旋转角度为变量,

思路是:先有设计人员把不规则图形设计好,然后保存成块,使用的时候,通过路径,插入块到cad,圆也可以插入块,或者现画都可以。然后把块打散,变回图形,因为块是不能做交集操作的,求不了面积,所以还是要使用图元,然后将图元生成面域,然后交集,最后输出面积。

2需求有变动,由不规则图形,变为圆环,

思路:这样一来,就变成了规则图形--圆,完全可以现画,根据参数,画出对应的圆,

然后再根据圆生成面域,然后将两个圆差集,生成圆环面域,然后两个圆环面域交集,最后输出交集面域的面积

下面上代码:

1链接CAD:略(网上有的是)

2画圆:参数为圆心坐标和半径

circleObj=msp.AddCircle(ConvertArrays2Variant(inputdata=[70.0000,0.0000,0], vartype="Double"), 10)

3旋转:参数为旋转基点坐标和旋转角度

circleObj.Rotate(ConvertArrays2Variant(inputdata=[0.0000, 0.0000, 0], vartype="Double"), math.pi / 180 * 30)  # 旋转(基点,角度)

4生成面域:生成面域要将图元做成数组,然后转化成变体才能用

gList = [circleObj]
ObjectList = ConvertArrays2Variant(inputdata=gList, vartype="ArrayofObjects")
regionList = msp.AddRegion(ObjectList)  # 创建面域

5面域差集

regionObj.Boolean(2,regionObj2) 

6面域交集:差集和交集就是参数不同

regionObj.Boolean(1,regionObj2)

7输出面积

print(regionObj.Area)

8面域颜色赋值

R, G, B = 0, 0, 255
Version = doc.Application.Version  # 软件版本
AcCmColorID = "AutoCAD.AcCmColor.%s" % Version[:2]
color = doc.Application.GetInterfaceObject(AcCmColorID)
color.SetRGB(R, G, B)
regionObj.TrueColor = color

备注:ConvertArrays2Variant这个是变体方法

有需要源码的,可以到我的资源里下载,不要998,只要5分哦

https://download.csdn.net/download/m0_46490988/19710766

欢迎私聊QQ327666484

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值