思い立ってスクリプトを書いてみました。何気に初めて書きます。
単純に選択したシェイプの稜線の長さの合計を求めるスクリプトです。
import math
def sumRom():
count = 0
r = 0
# 稜線数
edges_num = xshade.scene().active_shape().number_of_edges
while count < edges_num:
if xshade.scene().active_shape().edge(count).active == True:
# 頂点のインデックス値
edge_v0 = xshade.scene().active_shape().edge(count).v0
edge_v1 = xshade.scene().active_shape().edge(count).v1
# 頂点の座標
vertex_v0 = xshade.scene().active_shape().vertex(edge_v0).position
vertex_v1 = xshade.scene().active_shape().vertex(edge_v1).position
# 長さ
r = math.sqrt((vertex_v0[0] - vertex_v1[0]) ** 2 + (vertex_v0[1] - vertex_v1[1]) ** 2 + (vertex_v0[2] - vertex_v1[2]) ** 2) + r
else:
r = 0 + r
count = count + 1
return r
def main():
print "R = " + str(sumRom())
main()
意図としては、例えば円周を求めたりするためですが、開いていようが稜線が飛び出していようが edge のインデックスを順番に回るので不要な(?)稜線まで含んでしまう可能性があります。if 文で稜線の active を判定していますが、書き方として冗長な気がします。
![](https://tenteroring.org/sierra/http://tenteroring.luna.ddns.vc/sierra/wp-content/uploads//2019/04/shade-plugin-1024x788.jpg)
githubに公開しました。→ウィジェット化しました!
コメントを残す