justice is cute.

justice is cute.

てかかわゆすぎてごめんね♪

Amebaでブログを始めよう!
python2*.dllを入れなくても,python-2.*.*.msiを本家からDLしてインストしたら動いた.

Tkinterをコンソールから使う際には,以下の2行が必要

import sys
sys.argv = ['']

*''はシングルクオート2つ

import maya.cmds as cmds

import Tkinter
import tkMessageBox
import tkFileDialog

root = Tkinter.Tk()
root.withdraw()

filename = tkFileDialog.asksaveasfilename(filetypes = [('Text file','*.txt')], defaultextension = '.txt')

f = open(filename, 'w')

pdict = {}


# 親ノードを取得
def getParent( object ):
    temp= cmds.listRelatives( object , p=True, f=True )
    if temp == [] or temp== None:
        return False
    if not temp:
        return "|"
 
    return temp[0]
 

# 子ノードを取得
def getChildren( object, useFullPath ):
    childs = cmds.listRelatives( object, c=True, f=useFullPath, pa=(not useFullPath) )
    if childs == [] or childs == None:
        return '0'
 
    return childs


def printJointNames( object ):
    s = ''
    if object.find('|') == -1:
        s = "%s\tROOT\n" % (object)
        pdict[object] = "ROOT"
    else:
        stree = object.split('|')
        s = "%s\t%s\n" % (stree[len(stree)-1], stree[len(stree)-2])
        pdict[stree[len(stree)-1]] = stree[len(stree)-2]
    # f.write(s)
    for ch in getChildren( object, True ):
        if ch != '0' :
            printJointNames(ch)

def printJointAttributes( object ):
    s = object

    s = "%s\t%s" % (s, pdict[object])
    prm = object + ".translateX"
    s = "%s\t%f" % (s, cmds.getAttr(prm))
    prm = object + ".translateY"
    s = "%s\t%f" % (s, cmds.getAttr(prm))
    prm = object + ".translateZ"
    s = "%s\t%f" % (s, cmds.getAttr(prm))
    prm = object + ".rotateX"
    s = "%s\t%f" % (s, cmds.getAttr(prm))
    prm = object + ".rotateY"
    s = "%s\t%f" % (s, cmds.getAttr(prm))
    prm = object + ".rotateZ"
    s = "%s\t%f" % (s, cmds.getAttr(prm))

    f.write(s)
    f.write('\n')

    for ch in getChildren( object, False ):
        if ch != '0' :
            printJointAttributes(ch)
# end def

printJointNames(cmds.ls(long=False, selection=True, type='dagNode')[0])

f.write("name\tparent\ttx\tty\ttz\trx\try\trz\n")
printJointAttributes(cmds.ls(long=False, selection=True, type='dagNode')[0])


f.close()

Mayaディレクトリ内の"Python/lib/tcl"にある

"tcl8.5","tk8.5"ディレクトリを

"Python/lib"ディレクトリにコピー
■CMakeをインストール

■slnファイルの作成
・コマンドプロンプト
 cd C:\~\OpenCV-2.2.0
 cmake -G"Visual Studio 9 2008"

・CMakeCache.txtをひらき,
 CMAKE_CXX_FLAGS_DEBUG,CMAKE_C_FLAGS_DEBUG,の/MDdを/MTdに,
 CMAKE_CXX_FLAGS_RELEASE,CMAKE_C_FLAGS_RELEASE,の/MDを/MTに修正

・もいちどcmake

■slnファイルをひらく
 ・すべてのプロジェクトのプロパティについて,
  構成の種類を「スタティックライブラリ」に,
  コード生成>ランタイムライブラリを「マルチスレッド(MT)」に変更

 ・どっかの#pragmaなんとかがエラーおきたかも→コメントアウト

 ・リンカエラーが起きたら,
  適宜,libcmt.libを加えたり,msvcrt.libをはずしたり

■ビルドできたら,
 ・"modules"ディレクトリのすべてのサブディレクトリにある
  "*.lib"ファイルを
  "OpenCV-2.2.0\lib\Release"ディレクトリにコピー
  
 ・"modules"ディレクトリのすべてのサブディレクトリにある
  "include\opencv2"ディレクトリを
  "OpenCV-2.2.0\include\opencv2"ディレクトリにコピー
  
 ・"3rdparty\lib\Release"ディレクトリのすべてのサブディレクトリにある
  "*.lib"ファイルを
  "OpenCV-2.2.0\lib\Release"ディレクトリにコピー

■自分のプロジェクトでは,
 ・"OpenCV-2.2.0\lib\Release"ディレクトリにあるすべての
  "*.lib"ファイルを読み込む
 ・"vfw32.lib"も読み込む


以上(/TДT)/ヤッテラレルカ!!
■CGAL
http://www.cgal.org/

■CGALダウンロード
https://gforge.inria.fr/frs/?group_id=52

・CGAL-3.9-Setup.exe

■Boostバイナリパッケージダウンロード
http://www.boostpro.com/download/

・BoostPro 1.47.0 Installer (205K .exe)

■CMAKEダウンロード
http://www.cmake.org/

・Windows (Win32 Installer) cmake-2.8.6-win32-x86.exe

■Boostインストール
・VS9,全タイプのライブラリ
・環境変数BOOST_ROOTチェック
 C:\Program Files\boost\boost_1_47

■CMAKEインストール

■CGALインストール
・コマンドプロンプト
cd C:\~\CGAL-3.9
cmake -G"Visual Studio 9 2008"

・(もしBOOST_ROOT環境変数を設定するのを忘れてcmakeしちゃったら)
CMakeCache.txtを開く
 Boost_INCLUDE_DIR:PATH=C:/Program Files/boost/boost_1_47
に修正

・できた.slnファイルを開き,
関連プロジェクト(CGAL,CGAL_Core,CGAL_ImageIO,CGAL_Qt4)の
プロパティ>コード生成からマルチスレッド(/MT)にして,
Releaseでリビルド

・環境変数CGALROOT,CGAL_DIRチェック
 いずれもC:\Program Files\CGAL-3.9

■ライブラリ名を変える
・CGAL-vc90-mt.lib → CGAL-vc90-mt-s.lib ほか3つも
・libboost_thread-vc90-mt-1_47.lib → libboost-thread-vc90-mt-s-1_47.lib

ライブラリはCGALのヘッダから自動的にリンクされるので,ソース中で明示的に指定する必要はない.
ただし,libgmp-10.libだけはプロジェクトに加えること.

以上!
<script type='text/javascript'>

function div_erase_class(class_name){
var divlists = document.getElementsByTagName('div');
for(var i=0;i&lt;divlists.length;i++){
if(divlists[i].className==class_name){
var div_id = divlists[i];
div_id.innerHTML = '';
div_id.style.display='none';
div_id.parentNode.removeChild(div_id);
}
}}

function div_erase(id_name){
var div_id = document.getElementById(id_name);
if(div_id == null) return;
div_id.innerHTML = '';
div_id.style.display='none';
div_id.parentNode.removeChild(div_id);
}

function change_bgimage(src){
var div_id = document.getElementById('header');
div_id.style.backgroundImage = 'url(' + src + ')';
}

window.onload = function(){ //---id/class使用の広告消し
div_erase_class('gadBox');
div_erase_class('headerBnr');
div_erase_class('subAdBannerArea subModule');
div_erase_class('registArea subModule');
div_erase_class('subAdList skinFieldBlock');
div_erase_class('designSelectBtnArea');
div_erase_class('advertising2');
div_erase('headerBnrArea');
div_erase('defaultAd');
div_erase('advertising2');
div_erase('userNaviArea');
div_erase('footer_ad');
div_erase('footerArea');
div_erase('sideTextAd');
div_erase('resPointArea');
} //func()
</script>


#include <iostream>
#include <string>
#include <boost/bind.hpp>
#include <boost/signals2.hpp>
//using namespace boost;

class myClass
{
public:
    //constructor
    myClass(void){
        //capsulate slots
        val = boost::bind(&myClass::_val,this,_1);
    }

    //-- normal methods --------
    void setVal(int value){
        n = value;
    }

    //-- define slot methods ---
    int _val(int a){
        return n+a;
    }

    //-- define signals --------
    boost::signals2::signal<int> getValue;

    //-- capsulated slots ---------
    boost::function<int> val;

private:
    int n;
};


int main(int argc, char *argv[])
{
    myClass a,b;
    a.setVal(60);
    b.setVal(100);

    a.getValue.connect(b.val);

    //Why pointer returns?
    int v = *a.getValue(99);
    printf("%d", v);

    return 0;
}