>>Delta

選択された稜線の長さを表示

2015年12月17日

選択された稜線の長さを表示

ポリゴンメッシュの稜線の長さを測る必要があって書きました.

選択された稜線の長さを表示します(ポリゴンメッシュ限定).

"""選択されたエッジの総延長を表示
Shade 3D ver.15で動作を確認
"""
from math import sqrt

__author__ = "CASPAR003 "
__date__ = "2015-12-17"

def main():
    """選択されたエッジの総延長を表示
    """
    shape = xshade.scene().active_shape()
    if shape.type != 7: return  # ポリゴンメッシュ以外は受け付けない
    
    s = 0.0
    for i in shape.active_edge_indices:
        s += elength(shape, i)
    
    print "{0:.1f}mm".format(s)
    return


def elength(shape, i):
    """指定されたエッジの長さを返す
    
    @param[in] shape xshade.shapeオブジェクト(ポリゴンメッシュ)
    @param[in] i エッジ番号
    @return 指定されたエッジの長さ
    """
    # 両端の頂点の座標を取得
    x0 = shape.vertex(shape.edge(i).v0).position
    x1 = shape.vertex(shape.edge(i).v1).position
    
    # グローバル座標に変換
    x0 = ctransform(x0, shape.local_to_world_matrix)
    x1 = ctransform(x1, shape.local_to_world_matrix)
    
    return sqrt((x1[0] - x0[0])**2 + (x1[1] - x0[1])**2 + (x1[2] - x0[2])**2)


def ctransform(v, m):
    """vをmで座標変換
    ベクトルvをマトリクスmで座標変換して返します.
    
    @param[in] v 座標ベクトル
    @param[in] m 変換マトリクス
    @return 変換後の座標ベクトル
    
    Reference::
    でった☆,Kouji Tanimoto,柴田孝之."Shadeスクリプト大全".ビー・エヌ・エヌ新社,2004-12-25.p.203.
    """
    x = v[0]*m[0][0] + v[1]*m[1][0] + v[2]*m[2][0] + m[3][0]
    y = v[0]*m[0][1] + v[1]*m[1][1] + v[2]*m[2][1] + m[3][1]
    z = v[0]*m[0][2] + v[1]*m[1][2] + v[2]*m[2][2] + m[3][2]
    return [x, y, z]


if __name__ == "__main__": main()
MiniDiary
横着

最近,スクリプト書いてもしかるべき所に申請したり登録したりするのが億劫で....

投稿者 CASPAR003
投稿時刻 22:47
カテゴリー Shade
コメント 0 件
トラックバック 0 件
記事へのリンク http://www.caspar003.info/delta/archive/2015/12/17/2247.html
コメント
投稿者
コメント
トラックバック
  • トラックバック

ブログ情報

カレンダー
2018年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
最近のエントリー
最近のコメント
コメントを頂いたエントリー
コメントをくださった方一覧
コピー用紙の裏表
でった☆
CASPAR003
あのー
CASPAR003
amumo
CASPAR003
mariko
kazu
お仕事で青ざめた話
iun
iun
CASPAR003
AcrobatでPDFの一括印刷
Caesar
CASPAR003
Shadeのレンダラー仕様メモ
iun
CASPAR003
ブログ同盟本 C87 3日目 東S-04b
CON$
CASPAR003
Ca3 Post_Effector 2.0
sisioumaru
CASPAR003
sisioumaru
CASPAR003
Shade15について雑感
iun
CASPAR003
iun
色について
iun
CASPAR003
Lv67
iun
CASPAR003
雪まつり行ってきたよ
iun
CASPAR003