AoboSir 博客

与15年前的我比,我现在是大人;与15年后的我比,我现在还是个婴儿

Blender:下载并安装文本编辑器(Text Editor)代码自动补全插件


参考网站:


一. 下载

到这个GitHub网页上下载:https://github.com/JacquesLucke/code_autocomplete

image_1bt2nufct11ueb6u8611pa51c8m9.png-96.5kB

注意:无需解压

二. 安装

第1步:启动Blender,然后点击:File -> User Preferences…

image_1bt2ogbpl15ch190776k1tc18m.png-89.3kB

第2步:选择 Add-ons 选项卡,然后点击下面的Install from File.. 按钮:

image_1bt2oj47jt921v237bh1kflfav13.png-81.2kB

第3步:然后选择刚下载的压缩文件,然后点击 Install from File… 按钮:

image_1bt2oltvlk36ls1pbo1dqn5nh1g.png-63.8kB

第4步:勾选它,如下。大功告成。(现在被安装在红色框框里面的这个目录下。)

image_1bt2oohndsnvd2p1sv0nok15dg1t.png-85.8kB

注意,最后不要忘记点击 Save User Settings 这个按钮来保存你当前的设置。


三. 如何启动 Autocomplete 插件

第1步:先将Blender的场景布局切换为 Scpriting 布局,然后新建一个文件。

你可以看到在Text Editor(文本编辑器)窗口的左侧上角的位置有一个小小的加号:

image_1bt2pec1i1ekc1jve1pg39nc105f2a.png-18.6kB

第2步:点击它(当鼠标放到这个小小的加号上面时,会变成双箭头图标),会将文本编辑器的左边栏弹出来。鼠标往下滚,会看到Autocomplete 选项,直接点击 Start 按钮,就可以启动文本编辑器的自动补全功能:

image_1bt2pin6edvm1gpg3g516eot8o37.png-37.8kB

提示:文本编辑器的左边栏如何缩回去:直接使用鼠标拖动就可以缩回去。

但是现在这里有一个错误:Jedi library not found

image_1bt2prpvm1n09ndhao51svc1ada3k.png-14.1kB

第3步:好的,我们现在就来修复这个错误。带GitHub上下载Jedi库,网页地址:https://github.com/davidhalter/jedi/tree/7651157487511aadc118f7a8753adf709fad1708

第4步:下载好了后,解压它,然后在将里面的所有文件全部拷贝到刚刚安装的code_autocomplete-master/Jedi文件夹里面:

image_1bt2qbkdi1nehk21n721v1pudg41.png-94.5kB

拷贝好了:

image_1bt2qcpvo1has70v1hct9cv88u4e.png-66.5kB

第5步:现在重新启动Blender软件。现在上面的错误就解决了:

image_1bt2qhlpc1mo38hj1o1a7f21o675b.png-16.6kB

四. 如何使用

注意,使用前,需要点击Start按钮。

就和其他的编程软件一样,全自动,自动补全:

image_1bt2qjo1k1e4kbl31jmhlofe65o.png-6.3kB

image_1bt2qlub21i5iej26aj18tpf7365.png-11kB

Over


Blender 如何创建一个中空圆柱(圆筒、空心柱)


  • 我使用的Blender版本:Blender v2.77
  • 我使用的电脑系统:Windows 10 64位

扩展:


1. 在场景中添加一个无上下底面的圆柱:(添加模型的快捷键是:Shift+A)

image_1bsgisdjd100v1i47vde4itt4a9.png-80.6kB

在其中一个视图中,按快捷键T,弹出左边栏:

image_1bsgivk2s1m39a7rub3131um09m.png-68.8kB

这里的Cap Fill Type(类型)选择:Nothing:(即:无上下底面的圆柱)

image_1bsgj19ti1opgi5d1hmmjiv8vk13.png-70.9kB

然后我们将Align to View(正对视角创建)这个复选框的勾选去掉:

image_1bsgj49qf1j45nqdeaqmn3tdv1g.png-73.4kB

好,这样我们就创建了一个没有上下底面的圆柱。

接下来,将这个没有上下底面的圆柱变成一个圆筒。


2. 挤出 成圆筒

Tab键,从Object Mode模式切换到Edit Mode

image_1bsgk7mhe1191rkj81ohjseh51m.png-69.1kB

接下,切换到面显示

image_1bsgk9e1p147p1a1ab2spec14er23.png-66kB

刚好,现在是全选的状态。我们现在按键盘上的E(挤出),然后再鼠标右键。

image_1bsgkcpnp1ut21lqu1igbl381r252g.png-72.7kB

接下来,按快捷键S(缩放),确定好了之后,按鼠标左键:

image_1bsgkebd81hbv6hfk481kd3kv2t.png-84.4kB

最后,在场景的左边栏里的Constraint Axis下,勾选XY 复选框:

image_1bsgkfuvh1t5l1te11q5d1kj01pa23a.png-75.9kB


搞定,现在我们已经成功的创建了一个圆筒:(按Tab键切换回Object Mode模式,看看我们创建好的圆筒)

image_1bsgkjl7u13d97h6vqc1ib0c5j3n.png-150.7kB


记录笔记时得到的人生的两个道理


Alt text

今天遇到一个问题,这个对于以前的我来说,简直就是小菜一碟,但是今非昔比啊,学过的东西忘记得太快了,虽然我以前也记过笔记,到那时可笑的是:我记得笔记我都不知道放到哪里了。通过这件事情,我就知道了两个人生的道理:

  • 笔记是重要的,人学过的东西回随着时间的流逝会渐渐的忘记,这句话是错误的。正确的说法应该是:随着时间的流逝,以前学过的东西慢慢的放到了大脑的不经常使用区域。如果你今天突然想到要使用这些知识,如果你没有任何的提示的话,你就感觉自己已经将这部分的知识给忘记了。但是如果这个时候你看了已经记过的笔记,此时这个笔记对于你的大脑来说既是一个提示,笔记会让你快速回忆起之前学过的知识点、遇到过的问题、以及你当时是如何解决这个问题的方法。
  • 记笔记是一个学问,知识意味的记录也是没有用的。你需要一个好的记笔记的工具和一种好的归类知识点的技巧。这样,你记录的笔记才有真正的意义。

树莓派 Learning 003 — GPIO 003 中断模式 — 按键控制LED


我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# -*- coding:UTF-8 -*-

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(24, GPIO.IN, pull_up_dwon=GPIO.PUD_DOWN)
GPIO.setup(25, GPIO.OUT)

ledStatus = True

def my_callback(channel):
    print("button pressed!")
    global ledStatus
    ledStatus = not ledStatus
    if ledStatus:
        GPIO.output(25, GPIO.HIGH)
        pass
    else:
        GPIO.output(25, GPIO.LOW)
        pass
    pass

GPIO.add_event_detect(24, GPIO.RISING, callback=my_callback)

while True:
    try:
        print("I'm working...")
        time.sleep(5)
        pass
    except KeyboardInterrupt:
        break
        pass
    pass

GPIO.cleanup()

代码讲解:

  • global ledStatushttp://c.biancheng.net/cpp/html/1827.html
  • GPIO.add_event_detect(24, GPIO.RISING, callback=my_callback) :给24引脚添加一个事件函数,触发条件是:捕获到上升沿(GPIO.RISING)。这个参数还可以是:GPIO.FALLING(下降沿)、GPIO.BOTH(两者都有)
  • except KeyboardInterrupt: 是用来捕获用户是否按了Ctrl + C 组合键。退出程序
  • GPIO.cleanup():之前都没有使用过这个函数。这个函数的功能是:jaingaobo所有的GPIO还原回初始输入状态。我们建议在使用RPi.GPIO模块的所有Python程序的最后,都写上这个函数。

现在这个程序我们来运行一下:

1
2
sudo chmod +x key_control_led_callback.py
python key_control_led_callback.py

现在的运行效果就已经很好的,即使我们上面写的程序脚本里面没有编写按键去抖的相关程序,并且我们也没有安装硬件去抖的电容。但是为了安全起见,我们还是应该摆去抖的程序给它加上。

对于中断模式的检测按键,我们给这种程序添加去抖程序,相当的简单,我们只需要将上面的程序中的这行语句:

1
GPIO.add_event_detect(24, GPIO.RISING, callback=my_callback)

修改为:

1
GPIO.add_event_detect(24, GPIO.RISING, callback=my_callback, bouncetime=200)

其中bouncetime=200 是延时200ms的意思。就是当检测到上升沿后,进入这个中断,要延时200ms才会执行这个中断里面的程序。

这就是软件去抖。


搞定


参考网站:https://sourceforge.net/p/raspberry-gpio-python/wiki/Inputs/

树莓派 Learning 003 — GPIO 002 输入模式 — 按键控制LED


我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2


我们在之前学会了如何进行输出,现在来讲讲如何进行输入:

使用按键为例。

我们先按照下面这幅图片连接电路:

Alt text

知识点:当你设置一个GPIO为输入模式的,这个GPIO口要么是连接到信号端,要么是接GND。注意设置为输入模式的GPIO口不允许悬空(floating)。(因为这种情况下GPIO输入的值是不确定的。)

上面这个图中, 按键的一个引脚连接一个10K电阻和树莓派的24引脚上,然后10K电阻连接GND。按键的另一个引脚连接到3V3。

LED还是正极连接到25引脚上,另一个引脚连接GND。


写程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# -*- coding:UTF-8 -*-

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25, GPIO.OUT)

ledStatus = True

while True:
    if (GPIO.input(24) == GPIO.HIGH):
        print("button pressed!")
        ledStatus = not ledStatus
        if ledStatus:
            GPIO.output(25, GPIO.HIGH)
            pass
        else:
            GPIO.output(25, GPIO.LOW)
            pass
        time.sleep(0.03)
        pass
    time.sleep(0.01)
    pass

执行下面的命令,来启动这个程序脚本:

1
2
sudo chmod +x key_control_led.py
python key_control_led.py

你会发现这个运行效果并不是很好:主要的原因就是因为按键的去抖。你可以使用硬件去抖(就是在按键的引脚上并联一个电容),也可以软件去抖,上面的程序中已经进行软件去抖了(你可以通过增大延时时间来改善程序运行效果)。


到现在应该学会了如何使用GPIO的输入模式了。

上面检测按键的程序,它是用轮询的方式,接下来,我们来学习,如果使用GPIO的中断模式,来实现使用中断的方式来检测一个按键是否被按下。

树莓派 Learning 003 — GPIO 001 — 点亮一个LED


我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2


我们使用Python程序来编写树莓派的程序

导入 RPi.GPIO 模块 — 检测当前树莓派中,是否含有 RPi.GPIO模块,如果没有,我们就安装

我们在终端中执行:

1
python

默认启动的是Python2的终端交互程序:

1
2
3
4
5
pi@raspberrypi:~$ python
Python 2.7.9 (default, Mar  8 2015, 00:52:26) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

接着,我们试着导入 RPi.GPIO 模块 来看看有没有这个模块。

1
>>> import RPi.GPIO

如果出现了ImportError错误提示:没有这个模块。我们可以先按Ctrl + D 来退出Python终端交互程序,然后执行下面的命令来安装RPi.GPIO模块:

sudo apt-get install RPi.GPIO

如果你的树莓派里面已经存在RPi.GPIO模块,但是它不能正常的工作的话,我们可以这样解决这个问题:删除现有的RPi.GPIO模块,然后在重新安装它:

sudo apt-get remove RPi.GPIO
sudo apt-get install RPi.GPIO

编写第一个程序:hello_raspberrypi.py 程序脚本

你可以参考我之前写的这篇博文:(操了,我都他妈的忘记了之前写过树莓派点亮LED)树莓派 Learning 003 — GPIO 001 — 点亮LED


树莓派 Learning 002 装机后的必要操作 11 解决在使用SecureCRT软件链接树莓派时,SecureCRT软件的终端中显示树莓派的中文字体乱码的问题


我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2


如果你已经将你的树莓派上面默认字体设置为了:中文。(编码方式为:UTF-8)(如果不是,你可以参考这篇博文进行设置)

当你使用SecureCRT软件连接上树莓派后,回看到原本应该显示中文的,但是是乱码。

Alt text


解决办法:

Alt text

Alt text

然后,点击 OK


搞定

现在在执行一下 sudo apt-get update。中文就正常的显示了:

Alt text


参考网站:http://riching.iteye.com/blog/349754

Linux 如何使用桂电ipclient出校器上网 --- 最新的方法 --- 可以使用


我之前写过在Linux系统或者树莓派上使用ipclient上网的教程,但是自从 2016年9月1号,学校换了新的ipclient出校器后,我之前记录的那些方法都不能使用了。

下面介绍一种新的方法。这个方法我已经测试过,可行!!


树莓派等开发板(比如pcduino) 使用ipclient出校器上网

对于树莓派,如果你在桂电这个学校,如果一个初学者,你手头没有一个树莓派专用的Wifi USB无线模块的话,你都不知道如何使用网线让你的树莓派连接外网。

下面介绍一个方法,你学会了这个方法后,你没有树莓派Wifi USB专用模块,只需要一根网线,就可以上网。(前提是:我没有在宿舍试过。)


到GitHub上,下载这个网站里面的源代码:https://github.com/xuzhipengnt/ipclient_gxnu

下载完成后,在终端中来到刚刚下载后的源代码的这个路径下:ipclient_gxnu /ipclient_python/

我们先使用文本编辑器打开这个路径里面的ipclient.py文件,然后修改一个地方:

Alt text

将第8行的代码修改为:(如果你是桂电的,需要修改;但是如果你是师大的,就不需要改动。)

1
server =  ' 172.16.1.1 '

广西师范大学的服务器地址为:202.193.160.123

桂林电子科大服务器地址为:172.16.1.1

保存文件后,执行下面的命令:

在执行下面的命令之前,你需要树莓派连接网线。

1
2
sudo chmod 777 ipclient.py
python ipclient.py

如果你看到下面的输出:

1
2
3
4
5
pi@raspberrypi:~/Downloads/ipclient_gxnu/ipclient_python $ python ipclient.py
IP Client for GXNU  (xzpmail@gmail.com)
...........................................
Please input username and password:
Username:

这个时候,你输入你的学号和密码,就可以上网了。

Alt text

搞定


Linux系统(比如:Ubuntu) 使用ipclient出校器上网

同理。就不啰嗦了。

解决问题:Qt5 OpenCV “uring Startup Program Exited With Code 0xc0000135” “ Exited With Code -1073741515”


前言

之前已经搭建好的Qt5 和 OpenCV的环境(并且我之前写过博文,在这里),今天我运行了一下之前可以运行的程序, 竟然出现了问题:

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <QCoreApplication>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    cv::Mat image = cv::imread("..\\helloWorld\\image.jpg");
    cv::namedWindow("Image");
    cv::imshow("Image", image);

    cv::waitKey(0);
    return a.exec();
}

配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
QT += core
QT -= gui

CONFIG += c++11

TARGET = helloWorld
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH+=C:\third_packages\opencv\opencv2410-qt5\include\opencv \
             C:\third_packages\opencv\opencv2410-qt5\include\opencv2 \
             C:\third_packages\opencv\opencv2410-qt5\include

LIBS+=  C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_calib3d2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_contrib2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_core2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_features2d2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_flann2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_gpu2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_highgui2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_imgproc2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_legacy2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_ml2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_nonfree2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_objdetect2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_ocl2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_photo2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_stitching2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_ts2410.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_video2410.dll.a \
        C:\third_packages\opencv\opencv2410-qt5\lib\libopencv_videostab2410.dll.a \

出现的问题

调试的时候出现了下面的错误:

Alt text

Alt text

Alt text

运行程序的时候,什么的没有。但是在应用程序输出栏里面有这面截图是如数

Alt text

Alt text

我简单的用语言叙述一下出现的这个问题:

当我点击运行的时候,程序会弹出黑色的终端窗口,在应用程序窗口里面,程序会显示自动退出,然后代码是:-1073741515

我想研究一下,究竟是什么地方出现看错误,所以,我点击 调试 按钮,然后就出现了上面三个错误提示窗口。


解决办法

在我没有上网上找解决办法之前,我猜测是因为我后来在电脑上安装了什么软件或者又搭建了什么环境,然后可能是影响到了Qt 和 OpenCV 的开发环境了,可能是被神不知鬼不觉的给改了什么地方。

网上说:是因为环境变量没有添加的原因,但是我之前都添加过环境变量了。我想可能是因为其他的软件把我添加的环境变量个删除了或者挤下去了。所以现在我来查看一下当前的环境变量:

通过查看,环境变量都在:


我使用下面的程序测试Qt5软件。程序是可以正常运行的。正常的输出的 Hello World!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <QCoreApplication>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>

#include <iostream>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

//    cv::Mat image = cv::imread("..\\helloWorld\\image.jpg");
//    cv::namedWindow("Image");
//    cv::imshow("Image", image);

//    cv::waitKey(0);
    std::cout << "Hello World!" << std::endl;
    return a.exec();
}

我刚刚再次查看了一下系统的环境变量,还真的发现:OpenCV-Qt的编译生成的bin的路径不在了。(也不知道是我之前根本就没有添加,我也忘记了)

将我之前编译的OpenCV-Qt的bin路径添加到当前的系统的环境变量里面:

Alt text

然后现在,关掉Qt软件(必须要关闭,然后重新启动)。然后重新启动Qt5软件。

现在再次运行程序,问题解决:

Alt text

SolidWorks 在装配体中,如果想修改里面其中一个零部件,要怎么做


但你在制作 装配体的时候,发现有个零部件零件需要修改,这个时候,我们可以这样做:

对着这个零部件点击鼠标左键,选择里面的 打开零件 图标工具。

Alt text

这个时候,就进入了这个零部件文件里面。我们现在就可以对其进行编辑了。

Alt text

当你修改完成后,记得要保存(按 Ctrl + S)。然后在点击下面截图里面的 叉号 回到装配体文件里面:

Alt text

搞定