カスタムツールボックスの方が好きです。なぜなら、ツールプロパティダイアログをスクリーンキャプチャできるからです。テキスト情報を集めるのは少し面倒なので、これを簡単に行い、または自分のツールボックスに組み込むことができるスクリプトを含めました。
ツールボックス、そのツールセット、およびツールから始めます。
これは入力パラメータ付きのツールです。これは *.atbx ツールボックスを文書化するためのものです。
ツールの結果はメッセージに送られ、クリップボードにコピーしてテキストプロセッサなどに貼り付けることができます。
こちらはテキストプロセッサでのサンプル出力です。
カスタムツールボックスでは、ダイアログでパラメータを入力します。以下のさまざまなオプションに従うことができます。
こちらはサンプルツールです。
一般的なパラメータは以下に示されています。
コード実行は埋め込むことも、ツールボックス自体に相対的な場所に保存することもできます。それは同じフォルダ内か、ツールボックスに相対的な別のフォルダ内である可能性があります。
ダイアログ内で検証を提供でき、コードをすっきり保つのが簡単になったり、検証が単純または存在しない場合にも役立ちます。
同様に、ダイアログ内で環境変数を指定することもできます。
============================
さて、もし私が atbx info ツールを実行すると、次の結果が得られます。
atbx info
=====================
ツールパス
C:\arcpro_npg\arcpro_36\npg_36\npg_36.atbx\atbxInfo
=====================
パラメータ
ツールボックスパス C:\arcpro_npg\arcpro_36\npg_36\npg_36.atbx
=====================
メッセージ
開始時間: 2026年6月16日 21:00:03
--------
実行中 ... C:\arcpro_npg\arcpro_36\scripts_npg_36\atbx_info.py
--------
----
ツールボックス : C:\arcpro_npg\arcpro_36\npg_36\npg_36.atbx
----
プロパティ 値
------------------
エイリアス npg36
--ツール ツールセット
FeatureVerticesToPoints Featureclass tools
atbxInfo Toolbox properties
fcToGeo Featureclass tools
fcTonpz NumPy tools
npzTofc NumPy tools
ツールとプロパティ
--ツール : FeatureVerticesToPoints
--ツールセット : Featureclass tools
種類 : ScriptTool
表示名 : feature vertices to points
スクリプトファイル : C:\arcpro_npg\arcpro_36\scripts_npg_36\feature_vertices_to_points.py
説明 : ポリ*フィーチャーを頂点に変換します。
製品コード : 100
--パラメータ
名前 : point_type
表示名 : point type
方向 : 入力
データ型 : String
パラメータタイプ : 必須
有効 : True
カテゴリ : None
シンボロジー : None
複数値 : False
ツールとプロパティ
--ツール : atbxInfo
--ツールセット : Toolbox properties
種類 : ScriptTool
表示名 : atbx info
スクリプトファイル : C:\arcpro_npg\arcpro_36\scripts_npg_36\atbx_info.py
説明 : ツールボックス情報を取得します。
製品コード : 100
--パラメータ
名前 : toolbox_path
表示名 : toolbox path
方向 : 入力
データ型 : File
パラメータタイプ : 必須
有効 : True
カテゴリ : None
シンボロジー : None
複数値 : False
ツールとプロパティ
--ツール : fcToGeo
--ツールセット : Featureclass tools
種類 : ScriptTool
displayname : featureclass to Geo
script_file : C:\arcpro_npg\arcpro_36\scripts_npg_36\featureclass_to_Geo.py
description : Convert a featureclass to a Geo array.
product_code : 100
--Parameters
name : input_features
display name : input features
direction : Input
data type : Feature Layer
parameter type : Required
enabled : True
category : None
symbology : None
multi-value : False
Tools and Properties
--Tool : fcTonpz
--Toolset : NumPy tools
type : ScriptTool
displayname : featureclass to npz
script_file : C:\arcpro_npg\arcpro_36\scripts_npg_36\featureclass_to_npz.py
description : Convert a featureclass to a numpy *.npz file.
product_code : 100
--Parameters
name : npz_filename
display name : npz filename
direction : Input
data type : String
parameter type : Required
enabled : True
category : None
symbology : None
multi-value : False
Tools and Properties
--Tool : npzTofc
--Toolset : NumPy tools
type : ScriptTool
displayname : npz to featureclass
script_file : C:\arcpro_npg\arcpro_36\scripts_npg_36\npz_to_featureclass.py
description : Convert a numpy *.npz file to a featureclass.
product_code : 100
--Parameters
name : output_fc
display name : output featureclass
direction : Output
data type : Feature Class
parameter type : Required
enabled : True
category : None
symbology : None
multi-value : False
Succeeded at June 16, 2026 9:00:04 PM (Elapsed Time: 0.68 seconds)
Here is the code
# -*- coding: utf-8 -*-
"""
@author: dan_patterson
"""
import sys
import arcpy
from arcgisscripting._arcgisscripting import _utbx
pth_ = arcpy.GetParameterAsText(0) # the path to the toolbox
script = sys.argv[0] # print this should you need to locate the script
def toolbox_info(t_box):
"""Return toolbox information.
Parameters
----------
t_box : toolbox in *.atbx format
Example
-------
t_box = "C:/temp/npGeom_32.atbx"
"""
def _hdr_(hdr_n):
"""Format the header."""
return "{{:<{}s}}".format(hdr_n) + " {!s:<}"
t_box = t_box.replace("\\", "/")
t_props = _utbx.getToolboxProps(t_box, "*")
t_keys = sorted(list(t_props.keys()))
hdr_n = max([len(i) for i in t_keys])
frmt0 = _hdr_(hdr_n)
msg = frmt0.format("Property", "Value") + "\n" + ("-")*(hdr_n + 7)
z0 = ['name', 'display name', 'direction', 'data type', 'parameter type',
'enabled', 'category', 'symbology', 'multi-value']
keys0 = [i for i in t_keys if i != 'tools']
keys1 = 'tools' if 'tools' in t_keys else None
for k in keys0: # toolbox properties
v = t_props[k]
msg += "\n" + frmt0.format(k, v)
if keys1: # `tool` properties
v = t_props[keys1]
v_keys = sorted(list(v.keys()))
hdr_1 = max([len(i) for i in v_keys])
frmt1 = _hdr_(hdr_1)
msg += "\n" + frmt1.format("--Tool", " Toolset")
for k1 in v_keys:
v1 = v[k1]
msg += "\n " + frmt1.format(k1, v1)
for k1 in v_keys:
pth = "{}/{}".format(t_box, k1)
t_0 = _utbx.getToolProps(pth, '*')
tool_keys = list(t_0.keys())
msg += "\n\nTools and Properties"
msg += "\n--Tool : {!s:<}\n--Toolset : {!s:}\n".format(k1, v[k1])
for k2 in tool_keys:
if k2 != 'params':
msg += " {!s:} : {!s}\n".format(k2, t_0[k2])
elif k2 == 'params':
for i in t_0['params']:
z1 = [str(j) if j != '' else 'None'
for j in [i.name, i.displayName, i.direction,
i.datatype, i.parameterType, i.enabled,
i.category, i.symbology, i.multiValue]
]
msg += "--Parameters\n"
txt = "\n".join([" {!s:<} : {!s:}".format(*j)
for j in list(zip(z0, z1))])
# msg += "parameter"
msg += txt
else:
msg += "unknown"
return msg
# -------
msg = toolbox_info(pth_) # -- run
out_ = "\n--------\nRunning ... {}\n--------\n".format(script)
out_ += "\n----\nToolbox : {}\n----\n".format(pth_)
arcpy.AddMessage(out_)
arcpy.AddMessage(msg)
# ----------------------------------------------------------------------
# __main__ .... code section
if __name__ == "__main__":
# print the script source name.
print('\n{} in source script... {}'.format(__name__, script))
# parameters here
So between screen grabs and the atbx info tool, your documentation is complete.