之前写了“关于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
版权归原作者 诺羽@ 所有, 如有侵权,请联系我们删除。