起因

今天想用Python+CAD画一个挺炫酷的小玩意

起因是前几天我刷某音的时候看见一个挺有意思的视频,将随机的多边形进行取中点连线,最后会变成一个椭圆。大概就是这个样子。

↑这个是一开始找同事画的初始多边形,感觉足够随机了。

通过不断的取中点连线之后。


变成了这个样子。

-------------------------------------------------------------------分割线---------------------------------------------------------------------

然后

是不是很有意思,至于为什么会这样我也不知道,但是通过一波查资料之后倒是发现了点东西。

2010年有一个大神在SIAM REVIEW上发表了一篇文章(From Random Polygon to Ellipse: An Eigenanalysis∗)里面全是数学论证,有条件的可以看看,链接放在下面了。
上面那篇论文的传送门.

这篇论文还有不少引用呢毕竟期刊比较牛×,看来任何科学发现都能带来一些技术进步最后造福人类。

咳咳~扯远了。。。

回归正题,别的不说,这个东西生成的过程看起来还挺炫\color{red}{炫}炫酷\color{green}{酷}酷的呢。给大家看看我搞的几个图形。


初始图形的点控制在正圆的边线上,生成的图形。


手动把外边那个圆圈加粗了感觉不一样了是吧~~


加上了颜色以后是不是更加炫酷了,五\color{red}{五}五颜\color{orange}{颜}颜六\color{green}{六}六色\color{blue}{色}色才更好看啊~

画一个奥利给~


这下有些小伙伴该说了,这也不是椭圆啊。

咳咳其实,是我设置的迭代次数不够多~~~

代码

想学么!,想用Python在CAD里面画出这样炫酷的图形么!
不要久久八,不要久⑩八,我免费送给你们源码!

#!/usr/bin/env python
# -*- coding: utf-8 -*-import win32com.client # 想在python里面调用CAD开放的接口这两个东西
import pythoncom # 是必须的ac = win32com.client.Dispatch("AutoCAD.Application.23") # 这几行是规定动作
do = ac.ActiveDocument # 这几行是规定动作
do.Utility.Prompt("Hello AutoCAD\n") # 这几行是规定动作
mo = do.ModelSpace # 这几行是规定动作
# 如果想在CAD里面绘制炫酷的RGB颜色这个东西是必须的,后面的数字是ProgID,根据你的AutoCAD版本号来定。
color = ac.GetInterfaceObject("AutoCAD.AcCmColor.23") def Doub(listinp): # 这个是用来转换数据类型的return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, listinp)def plpl(ply): # 这个函数是用来计算下一个多边形的坐标点的ply.append(ply[0]) # 把坐标点的列表尾部加两个元素为了比较好计算坐标点ply.append(ply[1]) # 加的是最前面的两个元素for i in range(len(ply) - 2):ply[i] = (ply[i] + ply[i + 2])/2 # 求两点之间中点的公式就是横纵坐标求和除2ply = ply[0:-2] # 把刚才加的两个元素删掉return plyif __name__ == "__main__":try:do.SelectionSets.Item("aaa").Delete()except:print("Delete selection failed")ss = do.SelectionSets.Add("aaa") # 创建选择集ss.SelectOnScreen() # 在屏幕上选一个多段线poly = ss[0]points = poly.coordinates # 提取出它的坐标points = list(points) # 转化为列表for j in range(6): # 为了出现彩虹的效果,RGB分为6个变化的阶段for i in range(20):if j == 0:color.SetRGB(255, 13 * i, 0)elif j == 1:color.SetRGB(255 - 13 * i, 255, 0)elif j == 2:color.SetRGB(0, 255, 13 * i)elif j == 3:color.SetRGB(0, 255 - 13 * i, 255)elif j == 4:color.SetRGB(13 * i, 0, 255)elif j == 5:color.SetRGB(255, 0, 255 - i * 13)points = plpl(points) # 调用刚才的函数poi = Doub(points) # 数据转化nei = mo.AddLightweightPolyline(poi) # 绘制多段线nei.TrueColor = color # 修改多段线的颜色nei.Closed = True # 将多段线改为封闭图形

RGB变换的6个阶段示意图。

上图应该能看懂的吧,小人不才,只能用这等笨拙的办法画出五\color{red}{五}五颜\color{orange}{颜}颜六\color{green}{六}六色\color{blue}{色}色的效果了。

看到现在的各位大神们,打字不易,求点赞~~~~

python与CAD——磨平了棱角的多边形相关推荐

  1. python提取cad坐标到excel_使用python来操作autocad,并且将坐标点转换成cad可见对象...

    由于工作需要,在项目中遇到一个棘手的问题,如何将(mssql)数据库中的BLOB文件转成cad可见图形 (可能每个项目需求不一样,解决方式不同) 第一步 . 需要转换的图形类型 第二步 . 那我们先查 ...

  2. python 给CAD图形标注面积,可批量

    python 给CAD图形标注面积,可批量 ########################## import win32com.client as win32#输出dwg文件 import nump ...

  3. python写cad命令_pyautocad 的一些简单操作指令

    最近一段时间在学习使用python控制autocad的一些简单指令 通过一些资料的查阅 整理了一些简单的命令及简单的绘图指令 基础设置 连接cad from pyautocad import Auto ...

  4. 用Python做CAD二次开发(打印)

    用Python做CAD二次开发(打印) 在CSDN上用CAD做二次开发的文章已经有大神做出来了,本文中也直接把部分代码搬了过来. 现在把打印图纸的代码发上来让大家看看,权当补充说明. 大部分方法查ac ...

  5. python控制CAD画图

    1.python控制CAD的依赖于pyautocad库 导入方法如下: from pyautocad import Autocad, APoint 2.链接CAD acad = Autocad(cre ...

  6. 当我拨开眼前寂寥的渔樵耕读 残碑是岁月磨平的书

    <谓我> 余归故里,春风不识路 丛生黍稷,此身在何处 飞阁流丹.纸醉金迷中错付 而今皆化尘土 郁郁青葱的往事 破土长出 长在阡陌以北 伊人的墓 当我拨开眼前寂寥的渔樵耕读 残碑是岁月磨平的 ...

  7. Python趣用—配平化学方程式

    不知不觉已经毕业多年了,不知道大家是否还记得怎么配平化学方程式呢?反正小编我是已经记不太清了,所以今天的文章除了分享如何用python配平化学方程式,顺带着还会复习一些化学方程式的知识,希望广大化学爱 ...

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

    之前写了"关于python通过pyautocad操作cad的2021-06-10",由于pyautocad根据图元生产面域的方法没找到,所以改用win32com.client了,找 ...

  9. python与cad结合_python操作cad

    from pyautocad importAutocad#自動連接上cad,只要cad是開着的,就創建了一個 對象.這個對象連接最近打開的cad文件.#如果此時還沒有打開cad,將會創建一個新的dwg ...

最新文章

  1. MYSQL 取中位数
  2. Android ListView滑动后背景变黑
  3. 银行家算法:解决多线程死锁问题
  4. Oracle中对象权限与系统权限revoke
  5. 最长回文子串java_5. 最长回文子串
  6. 遥感数字图像处理------第二章---数字图像存储与读取
  7. line-height和height的区别
  8. C语言-判断上三角矩阵
  9. Python3迅雷vip账号批量抓取导入excel中
  10. Jenkins构建项目
  11. 京东敌不过阿里、腾讯岌岌可危,都是因为商业模式出了问题
  12. numpy创建伪单位矩阵
  13. 面具root后如何解决SafetyNet不通过-SafetyNet API错误解决办法
  14. 【靶场补充】项目十二补充(shellshock原理)
  15. 关于pyecharts可视化进阶中国经济、人口等数据
  16. JQ实现小写金额转大写
  17. Spark Submit任务提交流程
  18. 【Suatin】不学编译原理就制作语言2——Concrete Syntax Tree
  19. 东南大学计算机专硕录取分数线,东南大学研究生录取分数线
  20. Oracle分页实现

热门文章

  1. 批处理文件rd \s\q **是什么意思?
  2. 扫雷小游戏(可选择简单、一般、困难三种模式、可展开,可标记)
  3. 2020年软文对于一个企业网站的重要性
  4. EIGamal encryption VS Pairing encryption
  5. 数据结构课设:基于字符串模式匹配算法的病毒感染检测问题
  6. 用来在计算机各功能部件之间,广义相对论确认光在太阳附近会弯曲,引力透镜,水星进动等实验支持广义相对论。()...
  7. 2022ICPC预选赛 A Yet Another Remainder(数学)(构造)
  8. 戴尔服务器r620引导盘,戴尔R620服务器WINDOWS的操作系统无引导盘安装方法.ppt
  9. 恺撒密码的python实现介绍
  10. 远程唤醒WOL启动服务器或电脑