0


关于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

标签: python cad

本文转载自: https://blog.csdn.net/m0_46490988/article/details/118014661
版权归原作者 诺羽@ 所有, 如有侵权,请联系我们删除。

“关于python操作cad的2021-06-18”的评论:

还没有评论