﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3ASource%2FArchitecture%2FTool_Specification</id>
	<title>Dev:Source/Architecture/Tool Specification - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Dev%3ASource%2FArchitecture%2FTool_Specification"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Source/Architecture/Tool_Specification&amp;action=history"/>
	<updated>2026-08-14T21:10:13Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:Source/Architecture/Tool_Specification&amp;diff=48386&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Source/Architecture/Tool_Specification&amp;diff=48386&amp;oldid=prev"/>
		<updated>2018-06-28T17:48:16Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 17:48時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Dev:Source/Architecture/Tool_Specification&amp;diff=48385&amp;oldid=prev</id>
		<title>wiki&gt;Mindrones bot: Bot: Fixing redirects</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Dev:Source/Architecture/Tool_Specification&amp;diff=48385&amp;oldid=prev"/>
		<updated>2010-05-27T08:41:56Z</updated>

		<summary type="html">&lt;p&gt;Bot: Fixing redirects&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Note: superseded by [[Dev:2.5/Source/Architecture/Operators|BlenderDev/Blender2.5/Operators]] and [[Dev:2.5/Source/Architecture/DataAPI|BlenderDev/Blender2.5/DataAPI]].&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
This is just an idea of what a tool could be in the tool API. This is merely a proposal, I don't have any concrete plans to work on a tool API :). A goal for this design was to have something that is compatible with the way Blender currently works, that doesn't make declaring a tool require a lot of code, while still allowing the tool to be usable in different ways.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Brecht|Brecht]]&lt;br /&gt;
&lt;br /&gt;
==Uses of a Tool API==&lt;br /&gt;
&lt;br /&gt;
* Random notes regarding use of a tool api: http://wiki.blender.org/index.php/BlenderDev/EventsToolApiNotes&lt;br /&gt;
* Customizable Hotkeys&lt;br /&gt;
* Toolbar/Shelf&lt;br /&gt;
* Macro Recording&lt;br /&gt;
* Python Tools&lt;br /&gt;
* .. ?&lt;br /&gt;
&lt;br /&gt;
==Inputs as Tools==&lt;br /&gt;
&lt;br /&gt;
Anything that drives a button, hotkey or menu item, would be a tool, including check boxes, dropdown menu's, text and number inputs, .. . There's a good reason to make all inputs tools:&lt;br /&gt;
&lt;br /&gt;
* They often have associated code that needs to be executed.&lt;br /&gt;
* It would be possible to have them in a shelf, or driven by a hotkey. Think for example of a hotkey for selecting a vertex group from a popup menu in the 3d view, or a hotkey to increase/decrease the subsurf resolution.&lt;br /&gt;
* Macro recording could also record changes to values.&lt;br /&gt;
* Python tools could provide things like string or number inputs through a tool. So if the contents of a panel is just a collection of tools, python tools would integrate naturally.&lt;br /&gt;
&lt;br /&gt;
==Tool Specification==&lt;br /&gt;
&lt;br /&gt;
* '''Name''': unique identifier for the tool.&lt;br /&gt;
* '''Type''': runnable, checkbox, multiple choice, number input, string input, color input, .. .&lt;br /&gt;
* '''Description''': button/menu text, tooltip, undo string, documentation link, ..&lt;br /&gt;
* '''Mode''': specification of the mode(s) in which the tool is enabled. This would also include transform mode or circle select for example.&lt;br /&gt;
* '''Parameters''': input parameters for the tool, like object or material to which it is applied. These would have default values like 'current node' or 'current 3d view'. This would allow killing the use of some globals, better re-use of macro's, and for example using a material tool in both the material buttons and the outliner.&lt;br /&gt;
* '''Tool Function''': function that executes the tool or provides access to a value.&lt;br /&gt;
&lt;br /&gt;
For most tools, the mode and parameters should fully describe the '''context''' in which the tool can be executed. If the modes don't match, or a parameter cannot be set, the tool is disabled. More complicated enabled/disabled checks could be provided by the tool function if needed. Buttons or menu items could be automatically hidden or drawn based on the tool being enabled or disabled.&lt;br /&gt;
&lt;br /&gt;
Creating a tool would involve writing a declaration and a tool function. The declaration describes the tool properties, and the tool function handles events for the tool. Such '''events''' may be 'run', 'get value', 'set value', .. . For many input tools these events can just be handled by a standard function, passing a pointer to the value. But other tools can override that behaviour by manually handling events.&lt;br /&gt;
&lt;br /&gt;
Declaring a tool for every button in the user interface would lead to a lot of duplicate code. It should be possible to declare '''many tools''' with '''one declaration and tool function''', if they have a common mode and paramaters. For example, a panel in the material buttons could be handled by a single tool function, much like there is  a single drawing function now. But all the tools would be separately available from the outside.&lt;br /&gt;
&lt;br /&gt;
==Existing Tool APIs==&lt;br /&gt;
&lt;br /&gt;
XSI:&lt;br /&gt;
http://softimage.wiki.avid.com/sdkdocs/cus_cmds.htm&lt;br /&gt;
&lt;br /&gt;
Maya:&lt;br /&gt;
http://caad.arch.ethz.ch/info/maya/manual/DevKit/PlugInsAPI/PlugInsCommand.doc.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Tools]]&lt;br /&gt;
[[Category:Specifications]]&lt;/div&gt;</summary>
		<author><name>wiki&gt;Mindrones bot</name></author>
		
	</entry>
</feed>