ユーザ用ツール

サイト用ツール


矢印の作成

RhinoScriptSyntax のAPIに矢印の形をしたオブジェクトを作成する機能はない
(CurveArrows は、曲線の描画スタイルを変更するもの)

次の関数を使用することで、円柱と円錐を組み合わせた立体的な矢印を生成できる

# sp: 始点座標
# ep: 終点座標
# arrowHeadRatio: 線に対する先端円錐の高さの割合
# arrowHeadBaseR: 矢印先端円錐の底面半径
# arrowPipeR: 線の太さ半径
def makeArrow(sp, ep, arrowHeadRatio=0.3, arrowPipeR=5, arrowHeadBaseR=10): 
    objs = []
    arrowVec = rs.VectorSubtract(ep, sp)
    coneBasePoint = rs.VectorScale(arrowVec, 1.0 - arrowHeadRatio)
    coneBasePoint = rs.VectorAdd(sp, coneBasePoint)
 
    # make pipe
    arrowPipe = rs.AddCylinder(sp, coneBasePoint, arrowPipeR)
    objs.append(arrowPipe)
 
    # make head
    cone = rs.AddCone(coneBasePoint, ep, arrowHeadBaseR)
    objs.append(cone)
 
    return objs

サンプルコード1

1本の矢印を生成

import rhinoscriptsyntax as rs
 
a = []
 
def makeArrow(sp, ep, arrowHeadRatio=0.3, arrowPipeR=5, arrowHeadBaseR=10): 
    objs = []
    arrowVec = rs.VectorSubtract(ep, sp)
    coneBasePoint = rs.VectorScale(arrowVec, 1.0 - arrowHeadRatio)
    coneBasePoint = rs.VectorAdd(sp, coneBasePoint)
 
    # make pipe
    arrowPipe = rs.AddCylinder(sp, coneBasePoint, arrowPipeR)
    objs.append(arrowPipe)
 
    # make head
    cone = rs.AddCone(coneBasePoint, ep, arrowHeadBaseR)
    objs.append(cone)
 
    return objs
 
a.extend(makeArrow([0,0,0], [100,100,100]))

実行結果

矢印の作成.txt · 最終更新: 2023/01/26 11:46 by jmitani

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki