CAD练习题3——顶点到对边垂线、三边相切画圆、缩放、阵列

题目:

https://github.com/longlongpicture/myblogpicture/raw/master/p3-5.PNG

这道题只给了一个100,其他的条件都不明确。像这样的对称图形,都应优先考虑多边形的使用,再加上一圈都有圆弧相切,应能想到利用相切画圆,又由于无法确定半径,所以肯定要构造三边相切画圆。

1、因为是七个花瓣,所以画一个七边形,利用顶点到对边垂线,构造三边相切画圆。

https://github.com/longlongpicture/myblogpicture/raw/master/p3-1.PNG

2、利用镜像或者阵列,得到一圈图形。

https://github.com/longlongpicture/myblogpicture/raw/master/p3-2.PNG

3、清理图形。

https://github.com/longlongpicture/myblogpicture/raw/master/p3-3.PNG

4、画中心的圆,连接垂线,缩放图形。

https://github.com/longlongpicture/myblogpicture/raw/master/p3-4.PNG

CAD练习题1——平行、偏移、移动

题目:

https://github.com/longlongpicture/myblogpicture/raw/master/p1-6.PNG

这道题主要涉及到平行、偏移和移动,三个主要的工具。

1、利用平行,画出部分已知图形。

https://github.com/longlongpicture/myblogpicture/raw/master/p1-1.PNG

2、因为没法直接连上,先在旁边画上其他已知图形,找找机会。

https://github.com/longlongpicture/myblogpicture/raw/master/p1-2.PNG

3、图中的106是连接两个图形的关键点,另外就是图中蓝色的垂线,这条垂线给定了偏移距离。

https://github.com/longlongpicture/myblogpicture/raw/master/p1-3.PNG

4、偏移左边图形顶端线,与106水平线交于一点,这个点就是右边图形要移动到的目标点,移动图形。

https://github.com/longlongpicture/myblogpicture/raw/master/p1-4.PNG

5、去掉多余的线,得到结果。

https://github.com/longlongpicture/myblogpicture/raw/master/p1-5.PNG

wxPython学习(1)——基本窗口

基于Web的程序不方便操作本地文件,不得不回退到当初用Tkinter做界面的年代,但是Tkinter做一些复杂界面确实不容易,这回研究个相对成熟一些的桌面GUI库wxPython。前些年wxPython不支持Python3,现在支持了,可以好好学习一下了。

一个基本的wxPython窗口程序如下:

import wx

class MyFrame1(wx.Frame):

    def __init__(self, title, parent=None, fid=-1, pos=wx.DefaultPosition, size=wx.DefaultSize):
        wx.Frame.__init__(self, parent, fid, title, pos, size)

class App(wx.App):

    def OnInit(self):
        self.f =  MyFrame1(title="你好")
        self.f.Show()
        return True

if __name__=="__main__":
    app = App()
    app.MainLoop()

运行结果:

https://github.com/longlongpicture/myblogpicture/raw/master/wxPython1.PNG

这样就创建了一个最简单的窗口程序,在这个量级上,和Tkinter的写法非常相似。程序是App的事件循环,Frame是App的容器。后边我们将一个一个欣赏wxPython提供的窗口控件。

清空音乐文件的标签以避免播放器显示乱码

有时候我们拿到的音乐文件会包含专辑、歌手、音轨、年份等等标签信息,英文的还好,但是中文的,跨操作系统的时候就容易出现乱码。这时放到播放器里,十分影响观感,那不如把这些信息都清空。

import os
from mutagenx.easyid3 import EasyID3
from mutagenx.easymp4 import EasyMP4
baseurl = "C:/musics"
flist = os.listdir(baseurl)
for f in flist:
    fname = baseurl + "/" + f
    if fname.endswith(".mp3"):
        try:
            m = EasyID3(fname)
        except Exception as e:
            print(e)
    elif fname.endswith(".mp4") or fname.endswith(".m4a"):
        try:
            m = EasyMP4(fname)
        except Exception as e:
            print(e)
    else:
        print(fname) + " is unable to be converted."
    m["title"] = ""
    m["album"] = ""
    m["artist"] = ""
    m["tracknumber"] = "0"
    m["genre"] = ""
    m["date"] = ""
    m.save()