🔢
Dynamoサンプル:数字の操作
連番リストを作成
1~10の連番リストを作成したい場合、Code Block
で1..10;
を入力。
リストから和のリスト(累積和)を作成
Python Script
で、最初のほうにimport itertools
とimport operator
を加える。最後のOUT=0
をOUT = itertools.accumulate(IN[0])
に変更する。
# Load the Python Standard and DesignScript Libraries
import sys
import clr
+ import itertools
+ import operator
# Assign your output to the OUT variable.
- OUT=0
+ OUT = itertools.accumulate(IN[0])
エラー対処(2022以前)
# The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN
adoc = Application.DocumentManager.MdiActiveDocument
editor = adoc.Editor
- with adoc.LockDocument():
- with adoc.Database as db:
-
- with db.TransactionManager.StartTransaction() as t:
- # Place your code below
- #
- #
-
- # Commit before end transaction
- #t.Commit()
- pass
+ def cumsum(xs):
+ result = [xs[0]]
+ for x in xs[1:]:
+ result.append(result[-1] + x)
+ return result
# Assign your output to the OUT variable.
+OUT = cumsum(IN[0])
小数点の桁数を指定して文字列に変換
小数点を3桁にしたい場合、Python Script
で、一番最後のOUT=0
をOUT = [f"{num:.3f}" for num in IN[0]]
に変更する。
# Assign your output to the OUT variable.
- OUT=0
+ OUT = [f"{num:.3f}" for num in IN[0]]
割り算の商と余りを取得
Python Script
で、一番最後のOUT=0
をOUT = divmod(IN[0], IN[1])
に変更する。
# Assign your output to the OUT variable.
- OUT=0
+ OUT = divmod(IN[0], IN[1])
距離を測点に変更
距離から「00+00」形式の文字列に変更する。この辺はPython Script
が便利な感じ。
# Assign your output to the OUT variable.
- OUT=0
+ num=divmod(IN[0], IN[1])
+ result = str(int(num[0])) + "+" + '{:.3f}'.format(num[1])
+ OUT = result
距離を測点に変更(リスト)
距離のリストから「00+00」形式の文字列に変更する。この辺はPython Script
が便利な感じ。
ただし、リストに対応する必要があるので、少し記述が増えるけど、慣れればそれほど難しくない。
# Assign your output to the OUT variable.
- OUT=0
+ result = []
+ for num1 in IN[0]:
+ num2 = divmod(num1, IN[1])
+ str1 = str(int(num2[0])) + "+" + '{:.3f}'.format(num2[1])
+ result.append(str1)
+ OUT = result
Discussion