<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
エクセルVBAのプロシージャみたいにCopy&Pasteで利用出来るようなメモ・記事はTiddlyWikiの軽快さが非常に助かる。
SiteSubtitleに各公式サイトへのリンクと、エクセルVBAのサイトへのリンクを設置した。
~DropBoxのような機能を自分のサーバー相手に使えるソフトがあれば潤沢なサーバー容量を有効に使えるのに。
・DropBoxで進めるのがなんとなく気持ちが悪かったのでFFFTPのコマンドライン処理をタスクスケジューラに登録してサーバーに上げるように変更
・サーバー内で画像が表示されないようだ
*様々な図面に横断して記述される同じ内容の文字列に関してはすべてファイル参照変換が使えるということか。それがエクセルで管理できれば激しく楽かも。
*ファイル参照変換機能、実はかなりのポテンシャルがあるんじゃなかろうか。今自分が使えていないだけで。
*画像が表示されなかったのは途中で試したftpコマンドによる転送時に転送モードが間違っていてアスキーモードで画像を転送していたためだった模様。画像ファイルをバイナリ形式で再アップロードしなおして復旧完了。
[[JWWのファイル変換参照機能|JWW_文字のファイル参照変換機能]]を[[エクセルのシート上で管理するプロシージャ|VBA_ファイル参照変換機能]]を作成した
擬似インクリメンタルサーチが面白い。
1万件を超えるデータベースで実験してみても一瞬。
もう少しコードに手を加えれば複雑な検索も自動化できる。
オートフィルタのオプションによる絞り込みが、列ごとに絞り込み条件が決まっている場合はマクロ化出来る。
検索が超高速でかつ手軽になるだけで強力な効果を生む事を知った。
RSlayersでレイヤを切り替えて複数のモデルを比較検討するときにそれぞれのレイヤ専用のデータはグループ化又はコンポーネント化しておかないとやっかいなことになる事が判明。
グループ化されていない要素はその要素が属するレイヤが非表示であったとしても他のレイヤにある非グループ化要素に干渉する仕様なのでどうにも困った。
干渉したほうがメリットが多いようなのでやむなし。グループ化を仕込むかどうか試行錯誤中。

----

検索しながらエクセルで[[GooglMapを開くマクロコード|VBA_GoogleMapを開く]]を考えていて、もっとシンプルに出来るんじゃないかと閃いて試したらあっけなく作動。おまけにこのコードなら関連付けさえされていれば何でも開けるはず。
これと先日の擬似インクリメンタルサーチを組み合わせるとさて何が出来るだろうか。
自前である程度秩序を与えて整理したデータ群から目的の情報にたどり着く強力なショートカットが出来る。
以前試作したRJTMのように複数の単語で検索できるようになればさらに良いのだが。
エクセルのバージョン互換性に起因するリソースの浪費が目に余る。
今さらMSが旧版との互換性を上げてくる可能性は絶望的。
ということでモノにできるかどうか分からないけれどOOoBASICを勉強し始めることにした。
まずは小さいプロシージャからでも。
忘れないようにカテゴリを作成した。
ただOOoは起動が遅いのでエクセルのように外部変形エンジンとして使うのには無理がある。
外部変形はRubyに移行せざるを得ないのかも知れない。
新しいPCにしてから動的コンポーネントの作成も編集もできない。
3Dギャラリーへの投稿もできない。
Javaがらみが怪しいのだが。
謎だ。
opt4で未だに描けていないのが
・「マウス倍率で四角ソリッド+矩形輪郭線」
制御コード760ではX座標が負の時にソリッドが上下反転し、768ではX座標が負の時に当然矩形輪郭線が上下反転する。
かと言ってopt1~opt3ではソリッドが扱えない。
何か良い方法はないものだろうか。
opt4の指示線の属性を変える機能は、今まで私が認識していたより多くの可能性を秘めているんじゃないかとふと考えた。
iPadでCADデータがスムーズに閲覧できないかと考えてJWWの外部変形からSVGデータへのコンバーターを試作してみたが、PDFの方が軽いようだ。
SURubyのメソッドインデックスを流し見していたら「add_note」メソッドに気がついた。
なんとも簡単に画面内に文字列を配置できた。知れば簡単。あるかどうかも判らず探すのは大変。
webdialogを試している。
ツールバーへのアイコン登録とダイアログの表示までは出来たのだけれどそれから先が動かない。
[[そういえば不具合がおきている|2010年8月7日]]ことを思い出した。
webdialogと動的コンポーネントのダイアログには関連があると見て良いのではないだろうか。
--Gecko--WebkitとmozzilaとIEの各エンジンで調べてみるとIEだけ明らかに表示がおかしい。
どうやら原因はIEで間違いなさそうなのだが復旧の方法が皆目わからない。
動的コンポーネントとwebdialogが使えないのは業務に支障が出る。
PCを更新するべきだろうか。
ダイナミックコンポーネント及びWebdialogを有効化することが出来た。
コマンドラインで「regsvr32 jscript.dll」と入力してjavascriptを有効化。
これだけで全部解決した。永かった。
webdialogでプラグインを管理するツールをエクセルで作成中。
プラグインファイル単位で各rbファイルの編集がすぐ出来る機能を追加。
ちょっとしたスクリプトの手直しが最短で出来るのは気楽で良い。
VBAでrbとhtmlとjavascriptを生成してcssで外観調整。カオス。
プラグイン(やコマンド)を管理するプラグイン「RStoolbar」を作成中。
正確には「プラグインを管理するプラグインとして機能するrbファイル及びそのwebdialog用htmlファイルを自動生成するエクセルブック」を開発中。

上部のボタンでカテゴリごとに整理とかどうだろうかと試作。
ウィンドウサイズなどは自由。
プラグインの登録や配置はエクセルブックで管理。
常にフロートツールバーとして作動するwebdialogを利用。
各rbファイル及び登録フォルダをワンクリックで開けるボタンを配置した。
しばらくは運用&改善。
左カラムのメニューに3Dギャラリーへのリンクを設置した。
そのついでにコンポーネントの整理をしていたら以前苦労して動きを仕込んだいくつかの動的コンポーネントが何故かなくなってることに気がついた。残念。また作らないと。
RStoolbar運用改善中。

上部のメニューバーにもプラグインを登録できるようにし、とりあえずレイヤ制御系を配置した。
左カラムはスクロールを無効にし、ショートカットキーを登録するほどではないがある程度の使用頻度でかつ使用する局面が全般的なものを配置。
右カラムはそれ以外のものをカテゴリ分けして配置。
右カラムは上部メニューバーのボタンでカテゴリごとにジャンプするかスクロールして遷移。
ウィンドウサイズは自由。
プラグイン内でrequireで外部をスクリプトを呼んでいる場合はpluginsフォルダにそれを配置する必要がある。
全てのプラグインが登録できるわけではなく、requireとclass等の構成がシンプルなものは登録できている模様。
各ボタンの配置等に関しては全てエクセルブック上で管理している上、外観はcssと画像を使用しているためボタンデザインを含めフルカスタム可。
基本設定等を簡易なものにする必要がある。まだしばらくは試運用。
線の不要な切断を整理する[[Repair broken lines|http://rhin.crai.archi.fr/RubyLibraryDepot/plugin_details.php?id=334]]プラグインで「面に属さない線」を消去できるようにしてみたところ意外と便利に。
13行目からのこのあたりに
{{{
    if (e.kind_of?(Sketchup::Edge))
      p=e.parent
      #take both vertices 
}}}
一行追加
{{{
    if (e.kind_of?(Sketchup::Edge))
      p=e.parent
      trunk.push(e) if e.faces.length==0
      #take both vertices 
}}}
権利関係が明記されていないのでこのカスタマイズを施して良いのか判断がつきません。
問題があったら指摘下さい。
減色済画像
↓
OOoDrawでベクトル化
↓
PDFエクスポート
↓
PDF2DXF
↓
RSJWW
↓
SketchUp

で比較的楽に画像をベクトル化。
JWWの「表計算」→「範囲内合計」の範囲指定を、今までずっと右クリック確定していたため、追加したい数値も全てドラッグ追加範囲で行っていたのが少しめんどくさかった。
ところが実は最初の範囲指定時に左クリック確定すれば、追加したい数値は左クリックで追加できることを

今知った。

今 知 っ た 。
選択された要素の中にある面を探してそれらに設定されているマテリアルを固有化するプラグインを作成中。
あるマテリアルに別のマテリアル(の名前以外全て)を適応させるメソッドがわからない。
これが出来れば比較案が楽になりそうなのだけれど。
RSjwwを改良。
面を張るかどうか選択できるようにしたりいくつか。
数値をなぜか思い込みで「.to_i」で整数扱いしていた事に気が付いて「.to_f」で実数扱いに。
面を張る精度が劇的に上がった。今までの苦労はなんだったのかと反省。

最近このサイトをAndroidで見やすいように改良中。
CSSは勉強が足りていないのでなかなか上手くいかない。
昨日のRSjwwがコンポーネントエラーもないのに必ずメッセージボックスを表示して鬱陶しかったので、取り込み完了のダイアログと統合した。

久しぶりに3Dギャラリーにコンポーネントを2つアップ。
鏡と時計。両方共動的コンポーネントで、クリックで色変更。
時計はダイアログで時刻指定も可。

サイトリデザインとコンテンツ整理完了。
Rレベル調整を作成したので即日公開。
SUの建具で少しひらめいたので実験中。
*RSSを発行するようにプラグイン調整
*[[以前の掲示板から発掘した|http://hinoado.com/cgi-bin/bbs/hinoado.cgi?command=read&log=&no=2005120422553221&ap=last]]カラーサンプルを再登録。
Rubyスクリプト>面の構成 にサンプルコードを3つ追加。
なぜに毎回書いてたのか。
AndroidのDropBoxアプリのSDカード内の保管場所が変わっていて戸惑った。
新しいバージョンでは必要なファイルの同期がまとめてワンタップでできるので便利。
明けましておめでとうございます。
今年のテーマは「諦めない」でがんばります。
当サイトをFireFox以外で見ると困ったことになっているのを、akiさんに教えてもらうまで気が付きませんでした。
akiさんありがとうございます。
*FireFox
**正常
*GoogleChrome
**概ね正常。BBS枠が1/4サイズに。
*IE9
**あちこち変。タイトルがオレンジ一色。
**尋常でない重さ。
**BBSは枠も文字も1/4サイズで判読不可
対処法を調べてみます。
RSjwwを更新しました。
円弧の変換不具合解消と、グループ化を選択できるようにしました。
Raymond Loewy作の鍋「[[Coquelle|http://sketchup.google.com/3dwarehouse/details?mid=886b11557448d71674831f59e1188b9c]]」を3Dwarehouseにアップしました。
ChromeとIEでもBBSが見えるようにしたつもりです。
iframeタグにzoomを設定しただけですが。
明けましておめでとうございます。
今年もよろしくお願いいたします。
・SketchUpのPlugin RSjww を更新しました。
!~TouchJW
MiyanishiさんがiOS上でJWC,JWWデータを閲覧できるビューアを公開されました。
アノテーション機能も追加されています。

<html>
<center>
<a href="https://itunes.apple.com/jp/app/touchjw/id717594959?mt=8&ign-mpt=uo%3D4">
<img src="http://soft.anshu.biz/touchjw_logo.png">
</center></a>
</html>
!解説書
<html>
<center>
<a target="_blank" href="http://www.amazon.co.jp/%E9%80%86%E5%BC%95%E3%81%8DJw_cad%E5%BB%BA%E7%AF%89%E8%A3%BD%E5%9B%B3-%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%8A%E3%83%AC%E3%83%83%E3%82%B8%E3%83%A0%E3%83%83%E3%82%AF-Jw_cad%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-12-jw_HP%E9%96%A2%E6%9D%B1/dp/4767816262/?_encoding=UTF8&camp=247&creative=1211&keywords=jw_cad%20%E9%80%86%E5%BC%95%E3%81%8D%20%E5%BB%BA%E7%AF%89%E8%A3%BD%E5%9B%B3&linkCode=ur2&qid=1372819854&sr=8-1&tag=hinoadocom-22">
<img src="http://hinoado.com/r/d/jwbook.jpg"><br><br><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=hinoadocom-22&l=ur2&o=9" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
第7章を担当させて頂きました。
</center></a>
</html>
[[RSJww]]を更新しました
[[jwfコメント復旧ツール]]を登録しました
~SketchUpのファイル内にマテリアルセットを保存する[[RSmaterialrecorder]]を登録しました。
RSJwwを更新しました



<html><div align="center"><a href="http://soft.anshu.biz/TouchJW_v2/TouchJW_v2.html" target="_blank" ><img src="http://soft.anshu.biz/TouchJW_v2/img/TouchJW_v2_title.png"/><br>TouchJW v2 iPad/iPhone/Windows</a></div></html>
<<options>>
config.autoCloseMessage = {
	timeout: 1000
};

javascript:(
	function() {
		var orig_displayMessage = displayMessage;
		displayMessage = hook_displayMessage;

		function hook_displayMessage(text,linkText) {
			orig_displayMessage(text,linkText);
			setTimeout("clearMessage()", config.autoCloseMessage.timeout);
		}
	}
)();
表示がおかしい時は[[こちら|http://hinoado.com/index.cgi?id=3]]
<html><iframe src="http://hinoado.com/index.cgi?id=3" align="center" width="530" height="400" STYLE="zoom: 100%"></iframe></html>
[[ |BBS]]
~FireFox / ~GoogleChrome / Safari推奨
<<slider tocSlider JWW JWW "JWW">><<slider tocSlider Sketchup Sketchup "Sketchup">><<slider tocSlider Kerkythea Kerkythea "Kerkythea">><<slider tocSlider Others Others "Others">><<slider tocSlider BBS BBS "BBS">><<displaydiary 5>>
/***
|Name|DcTableOfContentsPlugin|
|Created by|Doug Compton|
|Source|http://www.zagware.com/tw/plugins.html#DcTableOfContentsPlugin|
|Version|0.3.0.2 - 14/9/2011 - changed kuraku|
!Description
This macro will insert a table of contents reflecting the headings that are used in a tiddler and will be automatically updated when you make changes.  Each item in the table of contents can be clicked on to jump to that heading.  It can be used either inside of select tiddlers or inside a system wide template.

A parameter can be used to show the table of contents of a seperate tiddler, <<showtoc tiddlerTitle>>

It will also place a link beside each header which will jump the screen to the top of the current tiddler.  This will only be displayed if the current tiddler is using the <<showtoc>> macro.

The appearance of the table of contents and the link to jump to the top can be modified using CSS.  An example of this is given below.

!Examples
If you had a tiddler with the following headings

 ! Heading1
 !! Heading2
 !! Heading3
 !!! Heading4
 ! Heading5

this table of contents would be automatically generated
*Heading1
**Heading2
**Heading3
***Heading4
*Heading5

!Changing how it looks
The styling can be modified in the StyleSheetDcTableOfContents shadow tiddler.

!Usage
!!Only in select tiddlers
The table of contents above is an example of how to use this macro in a tiddler.  Just insert <<showtoc>> in a tiddler on a line by itself.

It can also display the table of contents of another tiddler by using the macro with a parameter, <<showtoc tiddlerTitle>>
!!On every tiddler
It can also be used in a template to have it show on every tiddler.  An example ViewTemplate is shown below.

//{{{
<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'>Created <span macro='view created date DD-MM-YY'></span>, updated <span macro='view modified date DD-MM-YY'></span></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class="toc" macro='showtoc'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
//}}}

!History
!!0.3.0.2 - 2011.09.14
*Added shadow tiddler StyleSheetDcTableOfContents - kuraku
!!0.3.0.1 - 2007.06.07
*patched - KuRaKu
!!0.3.0 - 04/12/2006
*Added the ability to show the table of contents of a seperate tiddler.
*Fixed an error when a heading had a ~WikiLink in it.
!!0.2.0 - 04/10/2006
*Added the [top] link on headings to jump to the top of the current tiddler.
*The appearance can now be customized using CSS.
*All event handlers now return false.
!!0.1.0 - 04/07/2006
*Initial version

!Code
***/
//{{{

version.extensions.DcTableOfContentsPlugin= {
	major: 0, minor: 3, revision: 0,
	date: new Date(2006, 4, 12), 
	type: 'macro',
	source: "http://www.zagware.com/tw/plugins.html#DcTableOfContentsPlugin"
};

// Replace heading formatter with our own
for (var n=0; n<config.formatters.length; n++) {
	var format = config.formatters[n];
	if (format.name == 'heading') {
		format.handler = function(w) {

			// following two lines is the default handler
			var e = createTiddlyElement(w.output, "h" + w.matchLength);
			//w.subWikify(e, this.terminator);
			w.subWikifyTerm(e,this.termRegExp); //change krk

			// Only show [top] if current tiddler is using showtoc
			//if (w.tiddler.isTOCInTiddler == 1) {
			if (w.tiddler && w.tiddler.isTOCInTiddler == 1) { // change krk
				// Create to outter SPAN containing the default CSS values
				var span = createTiddlyElement(e, "span");
				span.style.fontSize = ".5em";
				span.style.color = "blue";

				// Create the link to jump to the top
				createTiddlyButton(span, " [top]", "Go to top of tiddler", window.scrollToTop, "dcTOCTop", null, null);
			}
		}
		break;
	}
}


config.macros.showtoc = {
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var text = "";
		var title = "";
		var myTiddler = null;

		// Did they pass in a tiddler?
		if (params.length) {
			title = params[0];
			myTiddler = store.getTiddler(title);
		} else {
			myTiddler = tiddler;
		}

		if (myTiddler == null) {
			wikify("ERROR: Could not find " + title, place);
			return;
		}

		var lines = myTiddler .text.split("\n");
		myTiddler.isTOCInTiddler = 1;

		// Create to SPAN so the TOC can be customized using CSS
		var span = createTiddlyElement(place, "span", null, "dcTOC");

		if (lines != null) {
			for (var x=0; x<lines.length; x++) {
				var line = lines[x];
				if (line.substr(0,1) == "!") {
					// Find first non ! char
					for (var i=0; i<line.length; i++) {
						if (line.substr(i, 1) != "!") {
							break;
						}
					}
					var desc = line.substring(i);
					// Remove WikiLinks
					desc = desc.replace(/\[\[/g, "");
					desc = desc.replace(/\]\]/g, "");

					text += line.substr(0, i).replace(/[!]/g, '*');
					text += '<html><a href="javascript:;" onClick="window.scrollToHeading(\'' + title + '\', \'' + desc+ '\', event)">' + desc+ '</a></html>\n';
				}
			}
		}
		wikify(text, span);
	}
}

window.scrollToTop = function(evt) {
	if (! evt)
		var evt = window.event;

	var target = resolveTarget(evt);
	var tiddler = story.findContainingTiddler(target);

	if (! tiddler)
		return false;

	window.scrollTo(0, ensureVisible(tiddler));

	return false;
}

window.scrollToHeading = function(title, anchorName, evt) {
	var tiddler = null;

	if (! evt)
		var evt = window.event;

	if (title) {
		story.displayTiddler(store.getTiddler(title), title, null, false);
		tiddler = document.getElementById(story.idPrefix + title);
	} else {
		var target = resolveTarget(evt);
		tiddler = story.findContainingTiddler(target);
	}

	if (tiddler == null)
		return false;

	var children1 = tiddler.getElementsByTagName("h1");
	var children2 = tiddler.getElementsByTagName("h2");
	var children3 = tiddler.getElementsByTagName("h3");
	var children4 = tiddler.getElementsByTagName("h4");
	var children5 = tiddler.getElementsByTagName("h5");

	var children = new Array();
	children = children.concat(children1, children2, children3, children4, children5);

	for (var i = 0; i < children.length; i++) {
		for (var j = 0; j < children[i].length; j++) {
			var heading = children[i][j].innerHTML;

			// Remove all HTML tags
			while (heading.indexOf("<") >= 0) {
				heading = heading.substring(0, heading.indexOf("<")) + heading.substring(heading.indexOf(">") + 1);
			}

			// Cut off the code added in showtoc for TOP
			heading = heading.substr(0, heading.length-6);

			if (heading == anchorName) {
				var y = findPosY(children[i][j]);
				window.scrollTo(0,y);
				return false;
			}
		}
	}
	return false
}

// add kuraku 11.09.14(wed)
config.shadowTiddlers.StyleSheetDcTableOfContents = "/*{{{*/\n"
	+ ".dcTOC ul {\n	color: red;\n	list-style-type: lower-roman;\n}\n"
	+ ".dcTOC a {\n	color: #666;\n	border: none;\n}\n"
	+ ".dcTOC a:hover {\n	background: white;\n	border: solid 1px\n}\n"
	+ ".dcTOCTop {\n	font-size: 2em;\n	color: #666;\n}\n"
    + "/*}}}*/";
store.addNotification("StyleSheetDcTableOfContents", refreshStyles);
//}}}
Contents
/***
|Name|DisableWikiLinksPlugin|
|Source|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version|1.6.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|selectively disable TiddlyWiki's automatic ~WikiWord linking behavior|
This plugin allows you to disable TiddlyWiki's automatic ~WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.
!!!!!Usage
<<<
You can block automatic WikiWord linking behavior for any specific tiddler by ''tagging it with<<tag excludeWikiWords>>'' (see configuration below) or, check a plugin option to disable automatic WikiWord links to non-existing tiddler titles, while still linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.  You can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]] (see configuration below), separated by whitespace.  This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.  

Note: WikiWords contained in default ''shadow'' tiddlers will be automatically linked unless you select an additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as AdvancedOptions or SideBarTabs)
<<<
!!!!!Configuration
<<<
<<option chkDisableWikiLinks>> Disable ALL automatic WikiWord tiddler links
<<option chkAllowLinksFromShadowTiddlers>> ... except for WikiWords //contained in// shadow tiddlers
<<option chkDisableNonExistingWikiLinks>> Disable automatic WikiWord links for non-existing tiddlers
Disable automatic WikiWord links for words listed in: <<option txtDisableWikiLinksList>>
Disable automatic WikiWord links for tiddlers tagged with: <<option txtDisableWikiLinksTag>>
<<<
!!!!!Revisions
<<<
2008.07.22 [1.6.0] hijack tiddler changed() method to filter disabled wiki words from internal links[] array (so they won't appear in the missing tiddlers list)
2007.06.09 [1.5.0] added configurable txtDisableWikiLinksTag (default value: "excludeWikiWords") to allows selective disabling of automatic WikiWord links for any tiddler tagged with that value.
2006.12.31 [1.4.0] in formatter, test for chkDisableNonExistingWikiLinks
2006.12.09 [1.3.0] in formatter, test for excluded wiki words specified in DisableWikiLinksList
2006.12.09 [1.2.2] fix logic in autoLinkWikiWords() (was allowing links TO shadow tiddlers, even when chkDisableWikiLinks is TRUE).  
2006.12.09 [1.2.1] revised logic for handling links in shadow content
2006.12.08 [1.2.0] added hijack of Tiddler.prototype.autoLinkWikiWords so regular (non-bracketed) WikiWords won't be added to the missing list
2006.05.24 [1.1.0] added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)
2006.02.05 [1.0.1] wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.09 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.DisableWikiLinksPlugin= {major: 1, minor: 6, revision: 0, date: new Date(2008,7,22)};

if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks=false;
if (config.options.txtDisableWikiLinksList==undefined) config.options.txtDisableWikiLinksList="DisableWikiLinksList";
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;
if (config.options.txtDisableWikiLinksTag==undefined) config.options.txtDisableWikiLinksTag="excludeWikiWords";

// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
initDisableWikiLinksFormatter();
function initDisableWikiLinksFormatter() {
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);
	config.formatters[i].coreHandler=config.formatters[i].handler;
	config.formatters[i].handler=function(w) {
		// supress any leading "~" (if present)
		var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
		var title=w.matchText.substr(skip);
		var exists=store.tiddlerExists(title);
		var inShadow=w.tiddler && store.isShadowTiddler(w.tiddler.title);
		// check for excluded Tiddler
		if (w.tiddler && w.tiddler.isTagged(config.options.txtDisableWikiLinksTag))
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// check for specific excluded wiki words
		var t=store.getTiddlerText(config.options.txtDisableWikiLinksList);
		if (t && t.length && t.indexOf(w.matchText)!=-1)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// if not disabling links from shadows (default setting)
		if (config.options.chkAllowLinksFromShadowTiddlers && inShadow)
			return this.coreHandler(w);
		// check for non-existing non-shadow tiddler
		if (config.options.chkDisableNonExistingWikiLinks && !exists)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// if not enabled, just do standard WikiWord link formatting
		if (!config.options.chkDisableWikiLinks)
			return this.coreHandler(w);
		// just return text without linking
		w.outputText(w.output,w.matchStart+skip,w.nextMatch)
	}
}

Tiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function()
{
	// if all automatic links are not disabled, just return results from core function
	if (!config.options.chkDisableWikiLinks)
		return this.coreAutoLinkWikiWords.apply(this,arguments);
	return false;
}

Tiddler.prototype.disableWikiLinks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
	this.disableWikiLinks_changed.apply(this,arguments);
	// remove excluded wiki words from links array
	var t=store.getTiddlerText(config.options.txtDisableWikiLinksList,"").readBracketedList();
	if (t.length) for (var i=0; i<t.length; i++)
		if (this.links.contains(t[i]))
			this.links.splice(this.links.indexOf(t[i]),1);
};
//}}}
/***
''Usage:''
{{{
<<displaydiary [days count:default 3]>>
}}}
''Source:''
***/
/*{{{*/
config.macros.displaydiary = {};
config.macros.displaydiary.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
  var tiddlers = store.reverseLookup("tags","excludeLists",false,"title");
  var cnt = params[0]?params[0]:3;
  var dsptid = [];

  for(var t=tiddlers.length-1; t>=0; t--) {
    var diary = tiddlers[t];
    if(diary.title.match(/^\d\d\d\d\-\d\d\-\d\d/)) {
      dsptid.push(diary);
      cnt--;
    }
    if(cnt<=0)
      break;
  }

  for(var t=0; t<dsptid.length; t++) {
      var tid = dsptid[t];
      story.displayTiddler("bottom", tid.title);
  }
}
/*}}}*/
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler guidejp deleteTiddler'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
/***
|''Name:''|GenerateRssHijack|
|''Description:''|Generate an RSSFeed with plaintext, html and TiddlyWiki content|
|''Version:''|0.1.4|
|''Date:''|Oct 23, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#GenerateRssHijack|
|''Documentation:''|http://tiddlywiki.bidix.info/#GenerateRssHijackDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.0.0|
|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|
|''Include:''|none|
|''Require:''|none|
***/
//{{{
version.extensions.GenerateRssHijack= {
	major: 0, minor: 1, revision: 3, 
	date: new Date(2006,9,29),
	source: 'http://tiddlywiki.bidix.info/#GenerateRssHijack',
	documentation: 'http://tiddlywiki.bidix.info/#GenerateRssHijackDoc',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.0.0',
	browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'	
};

// Return the tiddlers as a sorted array
TiddlyWiki.prototype.getTiddlersTaggedWith = function(field,includeTag)
{
	var results = [];
	this.forEachTiddler(function(title,tiddler) {
		if(tiddler.tags.find(includeTag) != null)
			results.push(tiddler);
		});
	if(field)
		results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
	return results;
}

// generate RSS file with tiddlers tagged with toRSS
window.generateRss_ori = window.generateRss;
window.generateRss = function ()
{
	var s = [];
	var d = new Date();
	var u = store.getTiddlerText("SiteUrl",null);
	// Assemble the header 
	s.push("<" + "?xml version=\"1.0\"" + " encoding='UTF-8'" + "?>");
	s.push("<rss version=\"2.0\" xmlns:tiddlywiki=\"http://tiddlywiki.bidix.info/#TiddlyWikiNamespace\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\">");
	s.push("<channel>");
	s.push("<title>" + wikifyPlain("SiteTitle").htmlEncode() + "</title>");
	if(u)
		s.push("<link>" + u.htmlEncode() + "</link>");
	s.push("<description>" + wikifyPlain("SiteSubtitle").htmlEncode() + "</description>");
	s.push("<language>en-us</language>");
	s.push("<copyright>Copyright " + d.getFullYear() + " " + config.options.txtUserName.htmlEncode() + "</copyright>");
	s.push("<pubDate>" + d.toGMTString() + "</pubDate>");
	s.push("<lastBuildDate>" + d.toGMTString() + "</lastBuildDate>");
	s.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
	s.push("<generator>TiddlyWiki " + version.major + "." + version.minor + "." + version.revision + "</generator>");
	// The body
	var tiddlers = store.getTiddlersTaggedWith("modified","journal");
	var n = config.numRssItems > tiddlers.length ? 0 : tiddlers.length-config.numRssItems;
	for (var t=tiddlers.length-1; t>=n; t--)
		s.push(tiddlers[t].saveToRss(u));
	// And footer
	s.push("</channel>");
	s.push("</rss>");
	// Save it all
	return s.join("\n");
}

Tiddler.prototype.getAsInnerHTML = function() {
 var wrapper = createTiddlyElement(document.body,"span",null,null);
 wikify(this.text,wrapper ,null,this);
 var text = wrapper.innerHTML;
 wrapper.parentNode.removeChild(wrapper);
 //replace tddlylink with externallink
 var u = store.getTiddlerText("SiteUrl",null);
var pattern;
var substitution;
 if ((version.major = 2) && (version.minor > 0)) {
 	pattern = /<a\s+tiddlylink="([^"]+)"\s+refresh="link"\s+class=\"([^"]+)\"\s+title=\"([^"]+)\"\s+href="([^"]+)"/mg;
 	substitution = "<a href=\""+u+"#[[$1]]\" class=\"$2\" title=\"$3\" tiddlylink=\"$1\" refresh=\"link\" ";
 }
 else {
	pattern = /<a\s+tiddlylink="([^"]+)"\s+refresh="link"\s+title="([^"]+)"\s+href="([^"]+)"/mg;
	substitution = "<a tiddlylink=\"$1\" refresh=\"link\" title=\"$2\" href=\""+u+"#[[$1]]\"";
 }
 text = text.replace(pattern, substitution);
 return text;
};

Tiddler.prototype.saveToRss = function(url)
{
	var s = [];
	s.push("<item>");
	s.push("<title>" + this.title.htmlEncode() + "</title>");
	//plain text
	s.push("<description>" + this.text.replace(regexpNewLine,"<br />").htmlEncode() + "</description>");
	// html text
	s.push("<content:encoded><![CDATA[	" + this.getAsInnerHTML() +"]]></content:encoded>");
	// tiddler
	s.push("<tiddlywiki:title>" + this.title.htmlEncode() + "</tiddlywiki:title>");
	s.push("<tiddlywiki:wikitext>" + this.text.htmlEncode() + "</tiddlywiki:wikitext>");
	s.push("<tiddlywiki:modifier>" + this.modifier.htmlEncode() + "</tiddlywiki:modifier>");
	s.push("<tiddlywiki:modified>" + this.modified.convertToYYYYMMDDHHMM() + "</tiddlywiki:modified>");
	s.push("<tiddlywiki:created>" + this.created.convertToYYYYMMDDHHMM() + "</tiddlywiki:created>");
	//s.push("<tiddlywiki:links>" + this.text.htmlEncode() + "</tiddlywiki:links>");
	s.push("<tiddlywiki:tags>" + this.getTags().htmlEncode() + "</tiddlywiki:tags>");
	for(var t=0; t<this.tags.length; t++)
		s.push("<category>" + this.tags[t] + "</category>");
	s.push("<link>" + url + "#" + encodeURIComponent(String.encodeTiddlyLink(this.title)) + "</link>");
	s.push("<pubDate>" + this.modified.toGMTString() + "</pubDate>");
	s.push("</item>");
	return(s.join("\n"));
}
//}}}
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<showtoc>>
!逆ジオコード
http://negimemo.net/1860
!よく使う情報を登録
本来はクリップボードの拡張と定型文の貼付けを行うソフト。
常駐してショートカットで即表示される特性を応用して「たまに使うけれども憶える程でもなくいつもメモを参照するような情報」を登録するとかなり楽。
<<showtoc>>
!外部変形
*[[エスキースフィルタ]]
*[[R求積]]
*[[R建具]]
*[[R写真台紙]]
*[[RDT4]]
*[[R敷地]]
*[[R外部仕上]]
*[[R螺旋階段]]
*[[R図面日付]]
*[[Rレベル調整]] 2011-12-01追加
*[[R天空比較]]
*[[R平均地盤]]
*[[R座標敷地]]
*[[Rtextbaker]]
*実験的なもの
**[[Rカラーパレット]] 2011-12-02追加
**[[RJTM]]
**[[RT24]]
**[[R25D]]
**[[RJ2SVG]]
**[[VBSのsendkeysでJWWを操作]]
!その他
*[[線記号変形]]
*[[柱状図作成]]
*[[人物平面(4体)]]
*[[ソリッドブロック]]
*[[添景フォント]]
*[[内部仕上表]]
*[[JWW_JWF切り替え(vbs)]]
*[[jwfコメント復旧ツール]] 2015-01-22追加
*[[jwg_vrml設定]]
*[[外部変形用エクセルVBA]]
*[[寸法設定の切り替え]]
*''[[その他のメモ|http://hinoado.com/index.cgi?id=5&eid=2]]''
[[ |JWW]]
{{{
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "jw_win"
WScript.Sleep 100
WshShell.SendKeys "{F3}"
WScript.Sleep 750
WshShell.SendKeys "c:\jww\jw_win.jwf"
WScript.Sleep 200
WshShell.SendKeys "{Enter}"
}}}
上記をjww.vbs等と名前をつけて保存。
出来たファイルをダブルクリックすれば環境設定ファイルが読み込まれる。
外部変形化を試みたものの、JWWの制御下で開かれるプロンプトはjw_winをアクティブ化できずに固まるため断念。
クリックしやすいところにファイル又はショートカットを置いて切り替え。


*[[SU2KT]]
*[[ロケーションファイル]]
*[[PhotonMap - Quick + AA 0.3]]
*[[連続レンダリング]]
*[[色温度]]
[[ |Kerkythea]]
[img[ico_hino.png][index.html]][img[rss.png][index.xml]]
*[[名前を変えてコピーして開くvbs]]2012-11-12
*[[HotClip]]
*[[クラウドストレージ]]2012-03-19
*[[四辺と面積から対角線を求める]]2012-03-13
*[[国土地理院 基盤地図]]
*[[通常使うプリンタの切り替え]]
*[[エクセルでロゴを作成]]
*[[ウィンドウのシェード]]
*[[ダミーファイルの作成]]
*[[エクセルからGoogleCalendarへアクセス]]
*[[エクセル文字列計算関数]]
*[[VB.NET]]
*[[javascript]]
*[[HTML5]]
[[ |Others]]
<!--{{{-->
<div class='header' macro='gradient vert #888 #333 #333 #333 #333 #333 #333 #333 #000'>
<div class='headerShadow'  macro='gradient vert #f95 #e50 #e50 #e50 #e50 #e50 #e50 #e50 #940'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<<showtoc>>
!~PhotonMap - Quick にアンチエイリアスを追加
Kerkytheaに標準で付属するレンダリング設定の「~PhotonMap - Quick」にアンチエイリアスを追加したレンダリング設定ファイルです。
昼間のレンダリングには耐えませんが、夜間の照明によるレンダリングではなかなかのクオリティを見せてくれます。
レンダリング時間はかなり短くて済みます。
!ダウンロードとインストール
ファイルは[[こちらからダウンロード|files/00. PhotonMap - Quick + AA 0.3.zip]]して下さい。
ダウンロードしたファイルを解凍して出来たファイルの保存先はKerkytheaのインストールフォルダ内にある「~RenderSettings」フォルダです。
標準では
{{{
C:\Program Files\Kerkythea Rendering System\RenderSettings
}}}
のはずです。
!~PhotonMap-Highと比較
単独でレンダリングする場合はQuick+AAが圧倒的に短時間。しかしクオリティは低い。
連続でレンダリングする場合はHigh+AAの場合、最初のシングルスレッド処理にかなり時間がかかるものの、それが完了した後の1枚あたりのレンダリング時間はQuick+AAと殆ど差がない。
<<showtoc>>
!概要
JWWの2.5Dを高さ方向に数値パラメトリック変形させる外部変形です

[[Download|http://hinoado.com/r/d/r25d.lzh]]

!機能
これを
[img[img/r25d_1.png]]

こんな風に変形させます
[img[img/r25d_2.png]]

※サンプルは土器手氏の jwg_vrml で作成しています
※床はあらかじめ段差の部分で要素を分けてあります


外部変形でR25Dを起動すると

この画面が立ち上がります
[img[img/r25d_3.png]]
「H」を高さの値と読み替えて
条件によってテキストボックスに数値を入力してください
数値を減ずる場合はマイナス値を加えます
入力後に「Hino」ロゴをクリックで変換します


!更新履歴

2004.5.2 V0.10 初公開

!あとがき
2011.11
以前この外部変形に出会って衝撃を受けました。
それから永い間、これを効率的に活用する手法を探り続けて幾つかのツールも作成しました。
そして様々な形状をパーツ化し、いよいよ実用出来るレベルに辿り着いた時、ようやく時代がこの外部変形に追いついてきたのか、私はSketchupに移行して、これらのツール群とパーツ類はお蔵入りしてしまいました。
しかし、Webブラウザ上で誰でも3Dモデルが閲覧できるという環境においては、このjwg_vrmlは未だにアドバンテージを保っています。
今私がSketchupのプラグインを作っている根幹には、jwg_vrmlが大きく存在しています。
<<showtoc>>
!概要
線記号変形(jw_opt4*.dat)を作成する外部変形です

[[DownLoad|http://hinoado.com/r/d/rdt4.lzh]]

圧縮ファイルには以下のファイルが含まれます
RDT4.xls・・・・ 外部変形本体(Excel2000以降)
RDT4.bat・・・・ 外部変形用バッチファイル
RDT4.jww・・・・ サンプルファイル

!基本事項
・JWWで描かれたデータから線記号変形を作成します

!JWでの準備作業
・変換したいデータをJWWで作成して下さい

・元データは単一のグループに描画して下さい

・選択データ内に「:」で始まる文字列がある場合は
 それをデータ名として取得します
 また、「:名称:500 10 10:999 2 ↓」
等と記入することで
 一覧表示の位置及び倍率を指定できます
 末尾の矢印は2線指示を選択した場合に指示線2の
 方向を指定できます.その他では無視されます

!外部変形の選択
・JWの外部変形から「RDT4.bat」を選択して下さい
[img[img/rdt4_01.png]]
!データの選択
・データの選択方法は移動・複写と同じです
・基点=線記号変形の原点となります

!動作画面

・「実寸指定」と「マウス倍率」を同時に設定するとややこしいことになります
・マウス倍率の制御コードは「マウス倍率」をチェックした場合のみ有効です
・「2線指示」は現在指示のみで加工には対応していません
・「2線指示」の制御コードは各自で把握してください
・「四角変換」はソリッド図形の四角に対してのみ有効です
・線記号変形を作成するにはロゴマークをクリックしてください

!その他
予約文字列
(全て半角)
文字列先頭
  「:」・・・・ 「:データ名:表示位置:表示倍率」が指定できます.無くても可.
  「^#」・・・・文字が入力モードになります

単独文字列
  「^&m」・・・・ 任意の線分の中点に配された場合のみその線分を寸法図形化します

文字列末尾
  「^-」・・・・ 文字列の角度を強制的に(ほぼ)水平にします
  「"+1」・・・・ 連続番号文字にします</P>

・吐き出すコードは以下
  実寸指定:ヘッダに制御コード800を記述して実寸描画します
  スタンプ:1クリックで描画されます
  1線指示:線分1クリックで線分に追従します。2クリック目で位置を確定します
  マウス倍率:1クリックで最初の基点を指示し、2クリック目で大きさを指定します
      制御コード「760 10 10」を記述しますので10mm角を基準に作図し、左下を基点としてください
  2線指示:二つの線分の角度等に追従します
     指示線2の上下は文字列で指定できます
  線端部スタンプ:クリックされた線分の端部で、クリック位置に近い側に描画します
  四角変換:四角ソリッドを各形状に変換します
    三角は4番目の座標を無視します
    対角線は1番目及び3番目のデータを線形ソリッドで結びます
    線分は1番目と2番目のデータを線形ソリッドで結びます
・ソリッド図形で倍率を指定する場合は、X,Yが等しくなる制御コードを選択した場合のみ
 正常に描画されるデータを作成できます
・素材は全て1:1のスケールで作成してください(実寸指定の場合は別)
・変換時の基点は、JWWの複写コマンド等と同じです
・マウス倍率変換時の基点は左下です
・変換後の文字列には、各定義文字は省かれます

・配布するデータによる損害について作者は一切の責任を負いません
 使用者の自己責任においてご使用下さい
・転載及び改変後の再配布の際はご連絡下さい

!改訂履歴
2007/9/5 1.22
 ・「表示位置調整」チェックボックスを追加した
 ・上記で制御コード500番の調整を自動で出来るようにした
 ・表示倍率の計算方法を変更した
  (x方向の巾のみだったのをy方向も検討するようにした)
 ・線要素がない場合に倍率計算が出来ずにエラーが出ていたのを修正した
  (倍率及び位置は線要素のみが計算対象)

2007/8/15 1.20
 ・「線切断」ボタンを追加した
 それに伴って線切断の仕様を以下に定めた
 (以下は「線切断」が選択されている場合のみ有効になる)
  ・実点が基点を通る水平位置に2のみある場合、その点の間を切断する
   (その実点はopt4に変換されない)
  ・上記の条件以外は要素の最小値と最大値を取得して切断する
 ・表示倍率を自動で設定できるようにチェックボックスを追加した
 ・予約文字の「|」を「:」(共に半角)に変更した


2007/2/1 1.11
 ・コメントの出力を選択できるようにした

2006/2/17 1.02
 ・連番指定がおかしかったのを修正した
 ・「元データを消去」オプションを追加した

2005/8/15 1.00
 ・指定ファイルが存在する場合はファイルに追記するようにした
 ・ファイルが存在しない場合は指定ファイルを作成するようにした
 ・指定できる制御コードを追加した
 ・出力ファイルにデータ区切りを付加するようにした
 ・2線指示時の上下方向を文字列(↑↓)で定義できるようにした
 ・「線端部スタンプ」を追加した
 ・一覧表示のデータ区切りを挿入できるようにした
   (タイトルのないグレーのソリッドを出力する)
 ・制御コードの選択方法を調整した
 ・点マーカが変換できなかったのを修正した
 ・文字列の強制水平がおかしかったのを修正した
 ・点マーカの判定でコードの処理に不具合があったのを修正した
 ・上記により連番バルーンがうまく変換出来なかったのを改善した

2005/5/25 0.96
 ・「2線」指定に一部対応した
 ・上記に伴い2線指示時の制御コードを選べるようにした
 ・「|」で始まる文字列をデータ名として取得するようにした
 ・上記文字列で表示位置と表示倍率を指定できるようにした
 ・線分の中点に文字列「^&m」がある場合は寸法図形化するようにした
 ・エクセルのバージョン違いによるエラー対策をした
 ・JWW4.04で追加された「#zc」に対応した
 ・上記に伴いbatファイルを一部変更した
 ・同じく「^$」フッタを廃止した
 ・サンプルファイルを添付した

2005/1/3 0.95
 ・マウス倍率の制御コードを選択できるようにした

2004/10/24 0.92
 ・縦書き文字に対応してなかったので対応
 ・軸角を含む円弧の処理を修正
 ・傾角を含む円ソリッドの処理を修正
 ・半角スペースを含むフォント名に対応
 ・三角ソリッドの処理を修正

2004/10/23 0.90
 ・初登録
!選択されたデータをSVG形式に変換する外部変形
試作してみたアルファ版ですが置いておきます。
多角形ソリッドと線分しか変換できません。
作ってみたもののあまり使い道が見当たらないのでバージョンアップの予定は特にありません。
[[ダウンロード|file/RJ2SVG.zip]]

[[大黒学氏著 SVGマニュアル(PDF)はこちら|http://tutorial.jp/graph/svg/svgman.pdf]]


!概要
JWWファイルをタグで検索するツールです
・JWWファイル内にタグを記入し外部変形で登録→タグマネージャで検索します。
・タギングは各ファイルごとに手作業で行います

ダウンロード

・書庫には以下のファイルが付属します
RJTM.bat
RJTM.xls
RJTM.txt

!タギング
・図面内に「tag:*,*,*,*,」(*はタグ,区切りは半角「,」(コンマ))で記述します
[img[img/rjtm01.png]]
・「RJTM.bat」を外部変形から起動し、タグ文字列(「tag」で始まる文字列)のみを選択します
・「RJTM.txt」にファイルのフルパスとタグが記録されます
・登録されたタグ文字列の先頭には「#」が付加されます
 (外部変形に渡すデータはタグ文字列以外は含まないように注意してください)
・タグの数に制限はありません

!検索
・「RJTM.txt」に登録された情報は「RJTM.xls」を直接起動して検索できます
[img[img/rjtm02.png]]
・「検索」ボタンを押すと入力されたタグを登録されているファイルが、ヒット数順に表示されます
・ファイルリストの左端にヒットしたタグ数が表示されます
・入力されたタグは左から入力された順に優先してソートされます
 (ヒット数が同じ場合に、左側のキーワードから優先してソートされます)
・ヒットしたタグは強調表示されます
・「自動」にチェックが入っている場合はタグが入力されると自動で検索します
 (タギングされたファイル数が多くなると検索に時間が掛かります)

!ファイル及びフォルダの参照
・ファイル名をダブルクリックすると該当ファイルがJWWで開かれます
・フォルダ名をダブルクリックすると該当フォルダが開きます

!JWW起動パスの設定
・「RJTM.txt」の一行目にJWWの起動パスを記述してください
 (デフォルトでは「c:\jww\jw_win.exe」です)

!RJTM.txtのメンテナンス
・右上の「メンテ」ボタンを押すと「RJTM.txt」に登録されたデータ内に存在する同じファイル名のタグリストから古いデータ(上に記述されたデータ)を削除します

!その他
・ファイルは絶対パスで登録されるためPC内でファイルが移動された場合はダブルクリックでも開けなくなります

!免責
※配布するデータによる損害について作者は一切の責任を負いません.使用者の自己責任においてご使用下さい
※配布するデータに何らかの不具合があった場合作者はその訂正の義務を負いません
※著作権は作者に帰属します
※転載及び改変後の再配布の際はご連絡下さい
<<showtoc>>
!概要
jwc_temp.txtを読み込むプラグインです。
今出来ることは以下のとおりです。(2015-01-03更新)
#線・多角形ソリッド・線形ソリッド読み込み
#線分・円弧の取り込み(楕円非対応)←不具合修正済(2012/02/08)
#任意色ソリッドの色を保持したまま取り込み
#パス指定によるコンポーネント配置
#コンポーネントパスに続けて「|***」(「|」はShift+キーボードの一番右上のボタン。***にはmm単位の高さ)と記述すると記述された高さに配置する(2010/12/05)
##コンポーネントは図面内に文字列でファイル名を書いて指定する
##パスはスケッチアップ標準の「components」フォルダからの相対パスを指定する(先頭に「\」は不要)
##文字角度と文字基点を取得してコンポーネントを配置する
##指定されたコンポーネントにエラーがある場合(存在しない等)は処理後にリスト表示される
#取り込み時に面を張るか否か選択(2011/04/08)
#グループ化を選択できるようにした(2012/02/08)
#ソリッドの端部に日影高さを入力できるようにした(2013-01-02)
#日影の真北角度文字列を~SketchUpに取り込めるようにした(2013-01-02)
#補助線を無視するようにした(2013-01-02)
#サンプルファイル~RSjww.jwwを添付した(2013-01-02)
#円管2.5Dと角管2.5Dに一部対応(2015-01-03)
#テクスチャ指定を追加(2015-01-03)
#球に対応(2015-01-03)
#web上のコンポーネントに対応した(2016-01-25)
#その他詳細は~RSJww.rbの末尾に記載

!ダウンロード
[[DownLoad RSJww_2016_01_25.zip|http://hinoado.com/r/d/RSJww_2016_01_25.zip]]

!導入
配布ファイルには以下のものが含まれます

+Jwwのインストールフォルダに置くファイル(フォルダ)
 -~RSJww.BAT			(外部変形本体)
 +Texture				(テクスチャを格納するフォルダ)
  -asphalt.png
  -concrete.png
  -floor_tile.png
  -floor_wood.png
  -glass.png
  -grass.png
  -tile.png
+~SketchUpのプラグイン導入フォルダに置くファイル(及びフォルダ)
 -~RSJww.rb				(SUプラグイン本体)
 +rsico(フォルダ)
  -~RSjww.png			(アイコンファイル)
-~RSJww_hiraya.jww		(平屋2.5Dサンプル) 
-~RSJww_kakukan.jww	(角管2.5Dサンプル)
-~RSJww_Sample_01.jww	(円弧・コンポーネント・2.5Dの簡単なサンプル)
-~RSJww_Sample_lv.jww	(レイヤ名の#と円管モデルのサンプル)
-~RSJww_nikaidate.jww	(2階建2.5Dサンプル)
-~RSJww.txt				(このファイル)

各フォルダを適宜配置する

※SketchUpはバージョン毎にプラグインを保管するフォルダが異なります
{{{
SketchUp 8
(32ビット) C:\Program Files\Google\Google SketchUp 8\Plugins
(64ビット) C:\Program Files (x86)\Google\Google SketchUp 8\Plugins

SketchUp 2013
(32ビット) C:\Program Files\Google\Google SketchUp 2013\Plugins
(64ビット) C:\Program Files (x86)\Google\Google SketchUp 2013\Plugins

SketchUp2014以降
C:\ユーザー\ユーザー名\AppData\Roaming\SketchUp\SketchUp 2014\SketchUp\Plugins
C:\ユーザー\ユーザー名\AppData\Roaming\SketchUp\SketchUp 2015\SketchUp\Plugins
C:\ユーザー\ユーザー名\AppData\Roaming\SketchUp\SketchUp 2016\SketchUp\Plugins
}}}

SUで「表示」→「ツールバー」→「~RSjww」でボタンが表示される
あるいは「プラグイン」→「~RSjww」からでも実行可

!変換できるデータ
*補助線以外の線
**全て実線に変換
*任意色ソリッド図形
**標準色は全て黒
*日影高さを設定した任意色ソリッド図形(三角のみ)
**JWWではソリッドの端部に日影高さを設定できないためソリッドの輪郭を補助線で描画し、その補助線に高さを設定する
*日影の真北文字
**真北文字列を選択すると、SketchUpモデルの真北角度をそれに合わせます。
*円管2.5Dの「T」と角管2.5Dの「D」(面の傾斜非対応)
*「@TX」で始まる文字列でテクスチャを指定
*球
*レイヤ名及びレイヤグループ名の「#lv」

!使い方 
jwwの外部変形で「~RSjww.bat」を起動する
「基点指定」と「左下基点」のいずれかを選択する
※左下基点を選択した場合、SU側で常に同じ場所に読み込まれる
[img[http://hinoado.com/r/d/RSJww_20150103_001.png]]

SU に持って行きたい要素を選択して確定する
選択確定時の基点がSUでの原点になる
[img[http://hinoado.com/r/d/RSJww_20150103_002.png]]

実行完了時は画面左上に「未実行」と出るのは無視
[img[http://hinoado.com/r/d/RSJww_20150103_003.png]]

~SketchUpを起動して、青地にJWと書かれたアイコンをクリックする
[img[http://hinoado.com/r/d/RSJww_20150103_004.png]]

変換条件を設定
[img[http://hinoado.com/r/d/RSJww_20150103_005.png]]

取り込んだファイル名、取り込んだファイルのタイムスタンプ、真北角度とエラーが生じた面の数が表示されれば完了
※下記画像が表示されない場合は途中でエラーが起きている
[img[http://hinoado.com/r/d/RSJww_20150103_006.png]]

取込完了
[img[http://hinoado.com/r/d/RSJww_20150103_007.png]]

!その他
デフォルトでは「c:\jww \jwc_temp.txt」
jwwを上記以外のフォルダにインストールしている場合はRSjww.rbを直接編集する
楕円は非対応

ちなみに[[秋天越さんのサイト|http://akitenh.dip.jp/blog/cat7/sketchup_1/]]では以前からインポートツールを公開されています。


!更新履歴
2016/01/25
・web上のコンポーネントに対応した
・その他いくつか調整した

2015/01/03
・2.5Dに一部対応した
・「#lv」に対応した
・球に対応した
・円管・角管2.5Dに一部対応した
・テクスチャ指定を追加した
・「基点指定」と「左下基点」を追加した

2013/01/02
・ソリッド端部に日影高さを設定できるようにした
・補助線を無視するようにした
・日影の真北角度文字列を読み取れるようにした

2012/02/08
・グループ化を選択できるようにした
・円弧の不具合を修正した

2011/04/09
・取り込み完了時のメッセージとエラーメッセージをまとめた

2011/04/08
・取り込み時に面を張るか否かを選択できるようにした

2011/04/06 
・数値の取り扱いを整数から実数に変更した

2010/12/04
・コンポーネントのパスをフルパスからスケッチアップのcomponentフォルダからの相対パスに変更した
・任意色ソリッド図形をそのままの色で取り込むようにした(標準色は未対応)
・ソリッド取り込みに伴って面張りを廃止した
2010/02/11 初公開
手抜きな植裁を生成する動作の重いプラグインです。
!ダウンロード
ファイルは[[こちらからダウンロード|files/RShedges.lzh]]して下さい。

インストールについては[[プラグインのインストール]]を参照してください。

!使い方
インストールされたプラグインのアイコンはこれです。
[img[img/RShedges00.png]]

植裁化したい要素を選択して
[img[img/RShedges01.png]]

実行すればしばらくして植裁化されます。
[img[img/RShedges02.png]]

テクスチャのバリエーションもいくつかあります。
[img[img/RShedges03.png]]

割石も。
[img[img/RShedges04.png]]

ここまで[[色々な方にご意見いただきながら|http://hinoado.com/index.cgi?id=4&eid=145]]改良してきています。

''※選択した要素が多かったり大きかったりすると非常に時間がかかることがあります。ご注意ください。''


!更新履歴
2009/02/07
乱れのパラメータをダイアログに追加
元Faceへのマテリアル設定を選択できるようにした
元Faceを塗らない時は消去するようにした

2009/02/03
テクスチャを複数セットしました

2009/02/02
面の表裏に関わらず描画出来るようにしました


<<showtoc>>
レイヤを操作するプラグインです。
!ダウンロード
ファイルは[[こちらからダウンロード|files/RSlayers.zip]]して下さい。

インストールについては[[プラグインのインストール]]を参照してください。

!使い方
インストールされたプラグインはこんなアイコンです。
[img[img/RSlayers_image.png]]

!!レイヤの切り替え

部分的な複数案をボタンで切り替えるのが目的です。

数字の1~8はラジオボタンのようにレイヤを切り替えます。
使用するレイヤはプラグインが自動で生成し、レイヤ名は「~RSlayers_radio_1」から「~RSlayers_radio_8」です。
[img[img/RSlayers_image2.png]]
''何も要素が選択されていない状態''で「1」を押した場合は「1」のみを表示し、2~8のレイヤを非表示にします。
同様に「2」を押した場合は「2」のみを表示してそれ以外を非表示にします。
''※同時にカレントレイヤも変更します。''

!!レイヤのOn・Off

編集時に余計なモノを非表示にして操作性を上げるのが目的です。

絵の付いたアイコンは、押すたびにそのレイヤのみ「表示」と「非表示」を切り替えます。
先述の「1」~「8」アイコンのような他レイヤとの連動はありません。
上記と同様に使用するレイヤはプラグインが自動で生成し、レイヤ名はアイコン左から順に
*添景レイヤ用の「~RSlayers_Landscape」
*外構レイヤ用の「~RSlayers_Exteriors」
*天井・照明用の「~RSlayers_Ceil」
*家具用の「~RSlayers_Furnitures」
の四つです。
''何も選択されていない状態''でボタンを押すと、対象レイヤのOnとOffを切り替えます。
[img[img/RSlayers_image3.png]]

!!対象レイヤへの移動

レイヤを制御するためには対象物が適当なレイヤに存在する必要があります。
このプラグインでは''何かを選択した状態''でボタンを押すと、選択されている要素が押されたボタンに対応したレイヤに移動します。

[img[img/RSlayers_image4.png]]
「いいえ」を押すとキャンセルされます。

!更新履歴
*2010/10/14 レイヤトグルボタンに合わせて画面左上に文字が表示できるようにした
*2010/07/26 下記をとりやめた
*2010/07/25 レイヤを切り替えたときにカレントレイヤも変更するようにした
*2010/07/05 レイヤの排他処理を追加した
*2010/01/03 選択要素のレイヤ移動にアラートを出すようにした
*2010/01/03 レイヤ移動とレイヤオンオフトグルを統合した
*2009/11/14 22:39 ひとまず作成

!メモ
グループ間でのコピーが非常に複雑化するケースが多い。
グループ化された階層下の要素まではレイヤの変更が及ばないことによるらしい。
作業時のアクティブレイヤは切り替えずに、作業用の共通レイヤとすれば改善できそうな気がする。
この問題とグループ化の考え方を合わせてもう少しまとめたい。

追記(2010/08/21)
レイヤはグループ化やコンポーネント化によって階層化する。
その入れ子状態でレイヤの表示・非表示を切り替えると親階層から子階層に向かって優先順位がある。
子階層で表示する設定になっていてもその上の階層で非表示にされていれば表示されない。
よって、作業時にRSlayersで制御するレイヤ内に要素を作成すると現実的には制御しづらい状態になってしまう。
これを回避するにはRSlayersでスイッチングするレイヤを与えるのは最上位の階層のみとするべきではないだろうか。
スイッチング対象を全体でグループ化あるいはコンポーネント化し、その下の階層にある(全体でグループ化されたものに内包される)要素は全てRSlayersの制御外にあるレイヤに置かれている必要がある。
RSで始まる名前のマテリアルを保存したり呼び出したりします。
一つのファイルで複数のマテリアルパターンを切り替えられるように作りました。

テクスチャも保存できますが、ファイル内に画像ファイルを保存していないので、画像ファイルのパスが変わると呼び出しても表示されません。
JWWで画像同梱をしていない状態と同じです。

UVマップが帰られているものやや画像ファイルの色をSUで変えたりしたマテリアルもうまく再現できません。
ファイルごとにAttributeで保存しているので、他のファイルでは呼び出せません。

新規登録するときは下向き矢印のアイコンボタンクリックで「~RSmr_add_new」のまま「OK」を押して下さい。

登録された名前のマテリアルセットを呼び出すときは上向き矢印のアイコンをクリックし、コンボボックスから登録したマテリアル名を選択して下さい。

[[Download|http://hinoado.com/r/d/RSmaterialrecorder.zip]]
!概要
内観のモデリングを補助するプラグイン集です。
・棚板
・腰壁
・梁型
・部屋シェル
を作成できます。

各プラグインではRGB値の覧に定義済のマテリアル名を書くことでマテリアルが指定出来ます。

※希にSketchUp本体が落ちることがありますので使用時には上書き保存をして下さい。

[[Download|http://hinoado.com/r/d/RSroomshell.zip]]

解凍して生成されたファイル及びフォルダをそのままSketchUpのPluginフォルダに移動して下さい。

!動作画面
[img[img/rsroomshell.gif]]

!棚板
[img[img/rsroomparts.png]]
・選択されたFaceから上下面を、Edgeから木口面を生成します
・複数要素を選択できます
・天端高さと厚み及びマテリアルが設定できます
・元要素のエッジは削除します
・スクリプト実行毎にグループ化します


!腰壁
[img[img/rsroomparts2.png]]
・選択されたFaceから笠木を、Edgeから壁面を生成します
・複数要素を選択できます
・天端高さと笠木厚及び各マテリアルが設定できます
・笠木が不要な場合は笠木厚を0にして下さい
・元要素のエッジは削除します
・スクリプト実行毎にグループ化します


!梁型
[img[img/RStotsu.png]]
・選択されたFaceから梁型底面を、Edgeから梁型側面を生成します
・複数要素を選択できます
・天井高、梁せい、廻り縁せい及び各マテリアルが設定できます
・廻り縁が不要な場合は笠木厚を0にして下さい
・元要素のエッジは削除します
・スクリプト実行毎にグループ化します


!部屋シェル
[img[img/roomshell.png]]
・選択されたFaceから床及び天井を、Edgeから巾木,壁面,廻り縁を生成します
・複数要素を選択できます
・天井高,巾木せい,廻り縁せい,天井描画の有無及び各マテリアルが設定できます
・巾木又は廻り縁が不要な場合は笠木厚を0にして下さい
・元要素は全て削除します
・スクリプト実行毎にグループ化します

フェンスを生成するスケッチアップのプラグインです。

デフォルトで10種類のフェンスがセットされています。
[[DownLoad|http://files.getdropbox.com/u/584550/rsfence/RSfence2.zip]]
[[前のバージョンはこちら|http://hinoado.com/r/d/RSfence.lzh]]

[img[img/rsfence2.gif]]

・選択されたエッジにフェンスを生成します
・縦交差とメッシュはエッジで描画してあるので面積を持ちません
・割り付けは指定値以下になるように均等割りしています
・メッシュはZ軸方向に勾配がある場合ゆがみます
※以前のバージョンとファイル名は異なりますがメソッド名が同じですので共存出来ません

各フェンスは高さが指定できます。
[img[img/rsfence.png]]

一つのスクリプトにパラメータを与えて描かせているので、デフォルトセットに無い形状を作成したい時はパラメータを書き換えて使用してください。

!実行後
見本はこんな感じです。

ルーバー
[img[img/rsfence01.png]]


横桟1
[img[img/rsfence02.png]]


横桟2
[img[img/rsfence00.png]]


横桟3
[img[img/rsfence03.png]]


縦桟1
[img[img/rsfence04.png]]


縦桟2
[img[img/rsfence05.png]]


縦桟3
[img[img/rsfence06.png]]


パネル
[img[img/rsfence07.png]]


縦交差
[img[img/rsfence08.png]]


メッシュ
[img[img/rsfence09.png]]

!免責
作者はこのスクリプトに対する一切の責任を負いません。
使用者の自己責任でご使用下さい。
改造及び配布に制限はありません。


!更新履歴
2008/11/24
 ・フェンスの元線を非表示にするよう変更した

2008/7/7
 ・選択された(複数の)要素からエッジを探し、そのエッジ上にフェンスを描画出来るようにした
 ・ツールバーを添付しました
 ※フェンスの元になったエッジは消去します

2008/2/24
 ・出力結果をグループ化するようにしました

2008/1/25
 ・初公開
!概要
大和塀を横張りにした塀を作成するスケッチアップのプラグインです。

[[DownLoad|http://hinoado.com/r/d/RSyokoyamato.lzh]]

1以上の水平な線要素を選択してから実行して下さい。
選択範囲に面があっても無視します。
全体の高さ、板厚、板せい、柱寸、柱ピッチと色が設定できます。

!動作画面
[img[img/rsyokoyamato.gif]]

!現物
低めだとこんな感じ
[img[img/rsy_01.jpg]]


こちらは高め
[img[img/rsy_02.jpg]]
支柱はドブ漬鋼管を塗装してフェンス基礎に建ててます。
27mmの分厚い板の炭化色塗装がミソです。

目線を切れども風は切らず。
<<showtoc>>
!概要
階段を作成するスケッチアップのプラグインです。
一般的な片持ち形状と、S造螺旋階段の二種類が作成できます。

[[DownLoad|→http://hinoado.com/r/d/RSkaidan.lzh]]

!螺旋階段
螺旋階段(S造)は鉄骨の螺旋階段を生成します。
各パラメータはダイアログで確認して下さい。
[img[img/rskaidans.png]]


デフォルトで生成させるとシンプルな螺旋階段を生成します。
[img[img/rskaidan(1).jpg]]


・「ソフトニング」と「モデルと交差」をすると少し綺麗になります。
[img[img/rskaidan(2).jpg]]


・「受け金物の先端高さ」にゼロより大きい数値を入れると受けを追加できます。
[img[img/rskaidan(3).jpg]]


・「側桁せい」にゼロより大きい数値を入れると側桁を追加できます。
[img[img/rskaidan(4).jpg]]


・「手摺子ピッチ(段単位)」にゼロより大きい数値を入れると手摺子を追加できます。
[img[img/rskaidan(9).jpg]]


!片持ち階段(RC)
片持ち階段(RC造)はRC造の片持ち階段を生成します。
各パラメータはダイアログで確認して下さい。
[img[img/rskaidanc.png]]


デフォルトでは段のみを生成します。
[img[img/rskaidan(5).jpg]]


・「中壁」の厚みを与えると中壁と受け梁を追加できます。
[img[img/rskaidan(6).jpg]]


・「手摺壁」の厚みを与えると手摺壁を追加できます。
[img[img/rskaidan(7).jpg]]


・「中壁手摺(:無 1:有)」に1を与えると、鼻先から800mmの位置にφ38mmの手摺を壁から芯まで50mmとした手摺を中壁に追加できます。
[img[img/rskaidan(10).jpg]]


・「金物手摺高さ」に高さを与えると金物手摺を追加できます。
[img[img/rskaidan(11).jpg]]


・「手摺高さ」をゼロにして「金物手摺高さ」のみを与えると金物手摺のみ描画します。
[img[img/rskaidan(12).jpg]]

・「段数」と「下段数」に同じ値を設定すると直階段を生成します。
[img[img/rskaidan(8).jpg]]


※配布・改変に制限はありません。
※このスクリプトに関して作者は一切の責任を負いません。
※全て使用者の自己責任で使用して下さい。


!更新履歴

2008.2.23
 ・グループ化出来るようにしました
 ・螺旋階段の手摺子を描けるようにしました
 ・片持ち階段で金物手摺を描けるようにしました
 ・同じく中壁に取り付く手摺を描けるようにしました
 ・文字コードUTF-8で日本語が表示できるようにしました

2008.1.1
 ・初公開
<<showtoc>>
!概要
複数行の定型文字列を線記号変形で管理するためのエクセルブックです。
(外部変形ではありません)
JWWでの複数行の入力に関して色々と試行錯誤してみたのですが、最終的に辿り着いたのが結局JWWの内部機能(opt4)を補助するツールを自作すること、でした。

[[Download|http://hinoado.com/r/d/RT24.lzh]]

!起動画面
起動するとこんな画面です。
[img[img/rt24_01.gif]]
一度に4種類のopt4を管理できます。

拡大するとこんな感じです。
[img[img/rt24_02.gif]]
上から
・パス
・タイトル
・文字種
・行間隔
・レイヤ
を設定します。
パスはフルパスで指定して下さい。
タイトルは線記号変形のツリービューで表示されるタイトルを指定します。

!仕組み
・本体はエクセル論理行の10行目からです。
・「\」で始まる文字列を、各データ区切り及びその下に続くデータのタイトルと見なしています。
(デフォルトでは「\」ですが、内部処理では10行目以降に書かれた最初の文字列の最初の一文字をタイトルとみなして変換しています。
 これは4種類あるデータ毎に変更して構いません)
・編集は範囲選択>ドラッグで出来ると思います。
・セルの内容が変更されると即時opt4を吐き出しています。(吐き出すボタンを押す作業を省きました)
・opt4データは即時吐き出されますが、RT24.xlsファイルは手動で保存する必要があります。ご注意下さい。
・縦のデータが増えすぎると、編集後の硬直時間が永くなる可能性があります。
・フォルダはあらかじめ作成しておく必要があります。(安全のためフォルダは自動作成されません)

※JWで適当に範囲選択してコピーしたデータは、エクセルのシートに貼ると文字列のみが抽出されて意外と便利です。
※このエクセルブックはJWWとの同時起動を想定して作成しています

!免責
・配布するデータによる損害について作者は一切の責任を負いません。使用者の自己責任においてご使用下さい
・配布するデータに何らかの不具合があった場合、作者はその訂正の義務を負いません
・著作権は作者に帰属します

!更新履歴
2007.1.3 V0.10 初公開
!ファイル参照変換文字を焼き付ける外部変形
ダウンロードは[[こちら|files/Rtextbaker.zip]]

外部変形から起動すると作業フォルダを自動取得してきます。
[img[img/Rtextbaker.jpg]]
参照ファイルの欄にJWFで設定してある参照ファイルを設定してください。
ここのファイル名は殆どの場合固定だと思いますので設定したらエクセルブックを上書き保存しておいてもよいです。
あとは「Run」です。

!更新履歴
2010/08/30 試作

!メモ
・バージョン表記をしておかないと
・焼き付けたことが視認できるようにしたい
・特殊文字も焼き付けたい
!概要
JWWのソリッドからプリンタに出力される色の確認用です。
2005年に作成したものを発掘しました。

[[DownLoad|http://hinoado.com/r/d/Rcolorpallet.lzh]]

!使い方
JWWから起動すると、画面中央にパレットの左下を基点として色見本パレットを描画します。
デフォルトでは16色おきに16個のセルを横に並べた4,096色の色見本が出力されます。
[img[http://hinoado.com/r/d/rcolorpallet_sample.png]]

各セルにはJWWのソリッド色コードとR,G,Bのコードを記入してあります。
スケールを1/1とし、作図領域を「10m」等にしてから実行してください。

!設定
[img[http://hinoado.com/r/d/Rcolorpallet.png]]
W:セルの横幅
H:セルの高さ
Skip:何色おきに描画するかの指定
n:横に並べるセルの数

各色:作成する色の範囲

Skipの値を小さくすると壮大な事になるのでおすすめできません。
''全部描画させると256×256×256で1,600万色を超えます。
お気をつけ下さい。''
!概要
配置図等に記されているレベル値を一括して増減する外部変形です。

[[DownLoad|http://hinoado.com/r/d/Rlevel.zip]]

!使い方
※エクセル外変ですので、例にもれずマクロセキュリティは中以下に。
外部変形から「Rレベル調整.bat」を選択して、レベル値を記載した半角数字を選択して下さい。
実行しますと増減値を聞いてきますので入力すると完了します。
値は正負号を添付するのと、ゼロでは「±0」と表記します。
このあたりを変える場合はマクロコードを編集して下さい。

!更新履歴
2011-12-01 初公開
!概要
単独のエクセルファイルです。
大量の工事写真をアルバムに貼り付ける手間を軽減するために作成しました。

''[[Download|http://hinoado.com/r/d/Rshasindaisi.lzh]]''

動作環境
Excel2000以降

!基本
ブック内に下記の様なA4サイズの
L版縦3枚のアルバム台紙が12枚×10シートあります

片面印刷書式
[img[img/album_00.png]]

両面印刷書式
[img[img/album_01.png]]

各写真を貼るセルをダブルクリックするとファイル選択画面になりますので
拡張子「jpg」のファイルを選択して下さい.
デフォルトではL版サイズに調整して貼り付けます.

!その他出来ること
!!「List」シート
[img[img/album_02.png]]

各ボタンの機能(左から順に)
1・「OpenFolder」 フォルダ選択>リスト作成
2・「Import List to Sheets」 リストから各ページに貼り付け
3・「Print All」 写真の枚数分を一気に印刷
4・「Clear」 写真とコメントとリストと全て消去
5・片面印刷用書式
6・両面印刷用書式
その他
・「DATE」「No.」等のセルにある行数の設定は、一括取込時の行数を設定します
・2列目のセル(通しナンバーの入っているセル)をダブルクリックすると
 3列目が空欄以外の時は空行を挿入し、3列目が空欄の時は1行詰めます
 ※写真が360枚登録されているときは挿入できません
・ファイル名のダブルクリックで写真のプレビューが可能です
・「Title」に記載されたものが各シートのヘッダになります
・フォルダ選択では別フォルダを追加取り込み可能です
・全部で360枚が上限です
・取り込んだファイルはソート,配置調整等が可能です
・ファイルリストの空欄は、台紙上も空欄として取り扱います
・印刷時には部数が設定できます
・ファイル名のセルは罫線・計算式等設定していませんのでドラッグ移動が可能です

!!モードレスツールバー
[img[img/album_03.png]]
・左上の数字群は各台紙をズーム
・ZoomOutで現在のウィンドウに合わせてズームアウト
・Clearでそのシートのみ写真とコメントを消去
・IndexPでは全体を1枚に縮小してインデックス印刷
・下部に並んだ数字群は各シートへジャンプ
・PagePrintは各台紙を個別に印刷
・ツールバーが消えたときはListシートに移動して下さい
※「コメント」を押すとコメント入力用のボタン群が表示されます
[img[img/album_04.png]]
・このボタン群の内容は「com1」シートで編集したものが反映されます
※更新のタイミングは上記画像の「種目1」の欄が変更されたときです
・このボタンは「Listi」シートのコメント欄または各写真シートのコメント欄に
アクティブセルがある場合のみ有効になります

!!ページプリント
[img[img/album_05.png]]
押したページが直で印刷されます

!!取り込み設定
[img[img/album_06.png]]
下から2番目のボタンは進捗を表示せずに
高速に貼り付け処理が出来ます

!!その他のメニュー
・「FileName」のセルをダブルクリックすると、上記プレビューのソフトが選択できます
 (デフォルトはエクスプローラ)
 ※ソフトによってはパスの受け渡しに失敗して開けないことがあります

・「Title」セルのダブルクリックで不要なシートを削除して保存します

・念のためダブルクリックで作動するセルにはコメントとして目印を付けておきました

!!保存設定シート
[img[img/album_07.png]]
ファイルをスリム化して保存する場合の設定を行います
※保存先を指定する場合、パスの最後は「\」で終わって下さい
※保存先を「指定」にし、指定内容を空欄にすると最後に写真を開いたフォルダに保存します

!その他注意事項
・各シート及びモジュール類にパスワードは掛けていません.
・書式を変更することは構いませんがマクロコードでセルを指定していますので
 セルの位置等は変更しないで下さい.マクロ類が動作しなくなります.
・再配布は構いませんが公に配布する場合はご連絡下さい.
・エクセルの不具合で保存毎にファイルサイズが大きくなることがあります.
 その場合はVector等で配布されているツールで適正化することをオススメします.

!更新履歴
05.1.3 Ver1.30 	・コメント挿入機能を付加した
04.11.23 Ver1.23 	・1.22で追加した削除機能が働いていなかったので修正した
・保存時の仕様を若干調整した

04.11.20 Ver1.22 	・余分なシートを削除して保存出来るようにした
  ※削除時の仕様は以下
   ・写真の無いシートの削除
   ・「List」シートの削除
   ・マクロは保持
・上記保存時の設定が出来るようにした
・ナンバリングに「Listから」を追加した

04.11.16 Ver1.20 	・Listシートでコメントを準備できるようにした(5行分)
・ソート用の手入力ナンバリングの列を設定した
・2列目セルダブルクリックで行の挿入・詰めが出来るようにした
 (3列目のセルが空欄以外で挿入,空欄なら詰め)
・FileNameセルダブルクリックでプレビュー用アプリが選択できるようにした
・コメント転記を選択できるようにした
・モードレスツールバーのタグ順を変更した

04.11.11 Ver1.10 	・出力時の縦横比を調整
・画像ををL版サイズに上下トリミングするように変更
・取り込み後自動で名前によるソートを掛けるように変更
・通し番号の先頭番号を指定できるように変更
・一括出力時のメッセージを変更

04.11.6 Ver1.00 	・書式を変更
・片面,両面書式を選択できるように変更
・モードレスツールバーの意匠変更
・ナンバリング・タイムスタンプ機能を追加
・1シートに12ページ格納
・上記により360枚まで対応
・リストへ追加読み込みするように変更
・コードの整理
・その他細部ブラッシュアップ

2004.1.28 	・機能強化
!概要
図面の日付を変更する小さな外部変形です。
[[DownLoad|http://hinoado.com/href.cgi?url=http://hinoado.com/r/d/Rhizuke.zip]]

!書き換え対象
文字列の先頭が半角スペース3つで始まる文字列を「西暦年」
文字列の先頭が半角スペース2つで始まる文字列を「月」
文字列の先頭が半角スペース1つで始まる文字列を「日」
と見なして今日の日付を流し込みます。
付属のR図面日付.jwwを参考に。

!作動例
上記フォーマットで書かれた日付文字列のみを範囲選択して
[img[img/zumen_date_00.jpg]]
実行すると
[img[img/zumen_date_01.jpg]]
今日の日付に書き換えます。
[img[img/zumen_date_02.jpg]]
半角スペースだけの文字列も
[img[img/zumen_date_03.jpg]]
書き換えます。
[img[img/zumen_date_04.jpg]]
この外変で書き換えられた文字列は、別の日に再度この外変で当日の日付に書き換えられます。
<<showtoc>>
!概要
図面内に書かれた文字列から外部仕上表の体裁を作成する外部変形

[[Download|http://hinoado.com/r/d/r_gaibu.lzh]]

圧縮ファイルには以下のファイルが含まれます

R外部仕上.xls 	・・・ 外部変形本体(Excel2000以降)
R外部仕上.bat 	・・・ 外部変形用バッチファイル
R外部仕上.jww 	・・・ 動作確認様サンプルファイル
R外部仕上.chm 	・・・ このファイルのhtmlヘルプ版

!基本事項
 ・「 ^$9 」で始まる文字列を参照します

!JWでの準備作業
 ・立面図の仕上を記入したい場所に「 ^$9 」で始まる仕上文字列を配置して下さい
 ・引き出し線の始点は文字列の左下になります
 ・^$9に続く直後の3文字で表作成時の順位をソートします

記述例
{{{
 ^$9100外部仕上
}}}

!外部変形の選択
 ・JWの外部変形から「R外部仕上.bat」を選択して下さい


!データの選択
 ・準備した仕上文字列を含む範囲で選択します
  (元データと描画データは別グループで構いません)
 ・不要なデータを範囲に入れても動作しますが若干遅くなります
 ・範囲確定後、引き出し線を引き出す位置を上下2カ所×2選択し
  (2点で良い場合はどこか遠くに3,4点目を指定して下さい)
  5番目に仕上表を作成する基点を指示して下さい
  (仕上表は左上基点です)

!動作画面

 付属のR外部仕上.jwwです。
 引き出す位置に仕上文字列を記入しておきます
[img[img/r_gaibu_01.png]]

 上の平面図の外部変形処理後です
 指定位置に引き出し、仕上の一覧表を作成しています
[img[img/r_gaibu_02.png]]


 外部変形が吐き出したデータのみを表示
[img[img/r_gaibu_03.png]]


!その他
 ・引き出し線は文字列から指示された4カ所の中で最も近いY座標に作成されます
 ・出力条件は「 cfg 」シートで設定できます
 ※cfgシートの設定を変更するためには 「ツール」→「マクロ」→「セキュリティ」
  のレベルを中又は高(オススメは中)にしてマクロの動作を止めて下さい。

!改訂履歴
 2003.6.30(Ver1.01)  ・終了処理を変更
 2003.6.18(Ver1.00)  ・公開
!概要
JWWの標準添付外部変形「TENHYOU.BAT」で作成された表を用いた天空図の天空率比較を一気に行う外部変形です。
[[DownLoad|http://hinoado.com/href.cgi?url=http://dl.dropbox.com/u/584550/rtenku/Rtenku.lzh]]

!実行画面
天空図を作図完了の状態から
[img[img/rtenku01.png]]
表を丸ごと選択して実行すると
[img[img/rtenku02.png]]
天空率の比較を行うと同時に数値の余裕に合わせて背景に着色します。
[img[img/rtenku03.png]]
現状では
・10%以下でオレンジの濃淡
・0.5%以下で赤の濃淡
・0.02%未満で真っ赤
に塗られます。
必要に迫られて作成しました
試作版です。
<<showtoc>>
!概要
==============================================
【ソフト名】R平均地盤 v0.5
【著作者名】Hino
【動作確認】JWW6.00a及びExcel2002
【備 考】フリー&改変も自由ですが再配布はご連絡ください
==============================================
[[DownLoad|http://hinoado.com/href.cgi?url=http://hinoado.com/r/d/Rjiban.lzh]]
JWWで描かれた日影データを元に平均地盤面を算定し、作図および作表を行う外部変形です。

添付ファイル
・R平均地盤.bat
・R平均地盤.xls
・R平均地盤.txt
・R平均地盤.jww

!使い方
 外部変形から「R平均地盤」を起動します。
[img[img/jiban01.png]]
 対象の日影高さが設定された図形のみを選択します
[img[img/jiban02.png]]
 表の作図位置を指示します
[img[img/jiban03.png]]
 日影高さが設定されたデータのうち基点とする一つ目の点を右クリックします
[img[img/jiban04.png]]
 算定の進行方向を指示するための隣接する次点を右クリックします
[img[img/jiban05.png]]
 完了
 
!注意事項
・図形は完全に一周している必要があります
 (「範囲選択」コマンドの右クリックで選択できる状態)
・現在は単一の閉鎖領域にしか対応していません
・高さ入力は日影コマンドで行ってください
・複数レイヤに入力されたデータに対応しています
 (段差等はこれで対応してください)
・描画の設定が出来ますが、その際はマクロのセキュリティを中以上にして
 マクロが実行されないようにしてファイルを起動させてください。

!免責
※実行は自己責任で。
※当方では一切の責任を負いません。

!改訂履歴

2007.11.24 v0.5
 初公開
<<showtoc>>
!概要
座標値による測量結果から敷地図と座標求積を作成する外部変形です。
V0.96
外部エディタで座標ファイルを作成
↓
JWWで読み込み
↓
zahyou.batで座標求積

の流れを簡略化してみました。
(座標値による測量結果が存在する場合のみ)

[[DownLoad|http://hinoado.com/r/d/Rzahyou.lzh]]

!使い方
外部変形から「R座標敷地」を起動し、図と表の基点をそれぞれ指示して下さい。
後はエクセルブック上で各種設定を行って「Genarate」ボタンを押せば完了です。
座標値が入力されていない状態でボタンを押すと座標ファイルが読み込めます。

[img[img/rzahyo00.png]]
・設定,入力,確認の3エリアに分かれています。
・入力エリアに座標を入れて下さい。
・確認エリアは元資料との整合を確認するためのエリアです。
・確認エリアマクロが計算して書き込むので入力できません。

[img[img/rzahyo01.png]]
いくつかのセルにはヘルプ代わりにコメントを入れておきましたので
よくわからないときはそれを参照してみてください。

※実行は自己責任で。
※当方では一切の責任を負いません。


!改訂履歴

2007.11.23 v0.96
 ・パスが取得できない場合は座標ファイルをデスクトップに保存するようにした
 ・XY座標出力がうまくいかないのを修正した

2007.11.20 v0.95
 ・面積が負になる事があるバグを修正した
 ・座標ファイル書き出しがうまくいかないケースに対処した
 ・「YX座標出力」チェックボックスを追加した

2007.11.14 v0.9
 公開
<<showtoc>>
!概要
図面内の文字列と対応したopt1データから建具伏図と建具表を作成する外部変形です
建具を数える単純作業から開放されるために作成しました

[[Download (V0.90)|http://hinoado.com/r/d/R_tategu.lzh]]

圧縮ファイルには以下のファイルが含まれます
R建具.xls 	外部変形本体(Excel2000以降)
R建具.bat 	外部変形用バッチファイル
R建具.jww 	動作確認様サンプルファイル
R建具.chm 	このファイルのhtmlヘルプ版
R建具ラベル.txt 	建具符号の汎用座標ファイル

!基本事項
 ・建具表の元になるのは文字データ及び線色5の補助線です
 ・建具の集計を行い1:50スケールの建具表を作成します
 ・建具記号の配置は2通り
   ・補助線がある場合はその中心
   ・巾が指定の時は文字の基点
 ・R建具.xlsと同じフォルダに「jw_opt3r.dat」が存在する場合
 それを起動毎に参照し姿図を描きます
 ・エクセル2000以降で動作確認済です
!JWでの準備作業
 ・開口部の数と同じだけの建具パラメータを記入しておきます
 ・建具パラメータは長くなるため、私の環境では文字種10を
 0.1mmの補助文字にしてそれで書き込んでいます
 ・各パラメータを「|」(shift+\
半角)で区切ります
※先頭に「|」が存在する文字列を建具パラメーターと判断しています
 ・各パラメータの末尾に「" $
階数」と続けて記入し、その近くに
 「^$9」で始まる文字列を配置することで建具の階数及び室名を取得します
 ・文字列の左下基点から半径500mm以内に端部が存在する線色5の
 補助線種の線分のうち最も文字列に近い線分の長さを取得します
記述方法
|A|B|C|D|E|F|G|H|I|J|K|L" $ 階数
A 	opt3のデータ名
B 	下端レベル
C 	有効高さ
D 	建具符号の分類
E 	有効巾
F 	形状
G 	見込
H 	材質
I 	ガラス
J 	金物1
K 	金物2
L 	備考欄

記述例

|突出|1200|800|AW|470|突出し窓|70mm|アルミ ・カラー|網入フロート6.8mm|カムラッチ|-|防火設備" $ 1F
 ※上記青文字部分は必須入力項目
 ※上記緑太字は自動で取得出来る項目
 ※建具巾が記入されている場合は記入値が優先
 ※階数及び場所はそれより前のパラメータの有無に関わらず記入可能

!外部変形の選択
 ・アクティブレイヤグループのスケールは1:50にして下さい
 ・JWの外部変形から「R建具.bat」を選択して下さい

!データの選択
 ・準備した文字データ及び補助線を含む範囲で選択します
 (元データと描画データは別グループで構いません)
 ・不要なデータを範囲に入れても動作しますが若干遅くなります
 ・範囲確定後、建具表を描画する位置をクリックしてください

!動作画面

 付属のR建具.jwwです。
 この画面では判別しようもありませんが
 建具には全てパラメータが記入してあります
 1階平面図と2階平面図です
 [img[img/r_t_01.gif]]


外部変形からエクセルを起動した画面です。
 [img[img/r_t_02.gif]]


しばらくすると横に並べる数を聞いてきますので入力して下さい。
 [img[img/r_t_d1.gif]]


次に縦に並べる数を入力して下さい。
 [img[img/r_t_d2.gif]]




R建具.xlsと同じフォルダに「R建具ラベル.txt」というファイル名の座標ファイルが存在すれば
それを使用するかどうかを聞いてきます。
 [img[img/r_t_d3.gif]]


 上の平面図の外部変形処理後です
 opt3が存在する建具は姿図を描画します
 ※符号は手で配置し直してください
 [img[img/r_t_03.gif]]



!その他
 ・基準階が複数ある場合は集計のために階数分複写しておきます
 ・opt3データはJW標準とODT143で作成したもので動作確認をしています
 ・opt3データ内に縦方向分割数「s」(ODTは自動出力)が存在しない場合
 縦方向分割数は10と見なします
 ・求積表と同じく見苦しいコードですが、コードの閲覧が可能です
 ・当方の作図環境は
pen
noが若い方が太くなっています
 ・出力線種はR建具.xlsを立ち上げてマクロを無効にして「cfg」シートで
 変更できます
 ・動作画面はシートにロックをかけています
 ・opt3データ及びODT143については各自で理解して下さい
※付属のR建具.JWWのデータはJWWに付属するjw_opt3.datで描画出来る
  ように作成してあります
  jw_opt3r.datにリネームしてコピーし、R建具.xlsと同じフォルダに置くことで
  使用可能になります
※座標ファイルの埋め込み文字は付属の「R建具ラベル.txt」を参考にして下さい
 JWWから吐き出した物から「lg」要素を削除した物が使用できます。

!改訂履歴

2007.1.3(Ver0.90)
   ・縦横に並べる枚数を指定できるようにした
   ・縦方向の指定枚数毎に「建具表*」を表の左上に表記するようにした

2006.10.16(Ver0.85 非公開)
   ・建具符号を座標ファイルで指定できるようにした
    ・座標ファイル存在時に選択できるようにした
    ・座標ファイルは1/1で作成する
    ・指定文字で各パラメータを埋め込めるようにした
   ・進捗状況をエクセル本体のステータスバーに表示するようにした

2005.1.3(Ver0.81)
   ・補助寸法を右側に書き出すように変更
   ・属性無指定要素の属性をcfgシートで設定できるように変更
   ・寸法の線色がcfgシートを参照していなかったのを修正
   ・終了時に上書き確認が出る場合があったのを修正
   ・エクセル2000で正常に動作するように修正

2004.5.6(Ver0.80)
   ・opt3内にある線色9の線を元に小割寸法を書き込む機能を追加
   ・opt3の線種 ・線色で書き込まないケースがあったのを修正
   ・文字の下に点線が入っていたのを修正

2003.6.30(Ver0.71)
   ・終了処理を変更

2003.6.14(Ver0.70)
   ・cfgシートを追加した
   ・cfgシートに設定されたPenNo.で出力できるようにした
   (マクロを無効にして設定する)

2003.6.13(Ver0.61)
   ・建具巾を指定したときに建具符号位置がおかしくなる
   不具合を修正
   ・室名文字列が存在しなかった場合の表示を補助色に変更
   ・ヘルプファイル更新

2003.6.12(Ver0.60)
   ・建具表に記載する室名を「^$9」で始まる文字列の中から
   最も建具文字列に近い物から取得するように変更
   (上記変更で建具文字列中の室名称は無効)
   ・V0.50で追加した建具巾の取得に存在した不具合を解消

2003.6.11(Ver0.50)
   ・文字列の近傍に存在する線色5の補助線種から建具巾を
   取得出来る仕様に変更
   ・上記変更に伴い選択要素を文字のみから
   全ての要素に変更
   ・上記線分が存在する場合は建具符号位置をその中心
   座標に配置されるように変更
   ・建具符号の配置ルーチンを見直し
   ・上記見直しで建具符号が欠落しないように修正
   ・異縮尺レイヤグループの処理がおかしかったのを修正
   ・動作画面をウィンドウサイズに合わせる仕様に変更
   ・その他数カ所内部的に見直し

2003.4.20(Ver0.41)
   ・エクセル2000で動くように微調整
   ・作図位置がおかしかったのを修正

2003.4.19(Ver0.4)
   ・建具の姿図を描画できるように変更
   ・各建具の場所を拾えるように変更
   ・建具の元データが別スケールのグループにある場合に
   描画できるように変更
   ・シート構成とコードを見直し

2003.2.23(Ver0.3)
   ・エラー処理を追加
   ・描画が暴れる事があったのを修正

2003.2.21(Ver0.2)
   ・書き込みフォントで描画するように変更
   ・建具パラメーターにフラグを設定
   ・建具パラメーターが存在しない時は終了するよう変更
   ・コード内に建具符号を2種類記述(2箇所)

2003.2.18(Ver0.1)
   ・テスト版初公開
!概要
かつてのxikiに書いた[[外部変形の作り方|http://hinoado.com/index.cgi?id=5&eid=58]]で作成したモノです。
ソリッドと線要素で構成された図を、描かれているソリッド図形の面積を任意の指定値に整合するように拡大縮小する外部変形です。
字図と謄本だけのように、土地に関する資料の精度が十分でない場合に、極力簡単に形と面積を整合させるために作成しました。

[[Download|http://hinoado.com/r/d/r_sikiti.lzh]]

!解説
れっどさんが使い方を説明して下さいました。
[[■現場のJW+Web2.0■|http://unyored.blog59.fc2.com/]]の[[こちらのエントリ|http://unyored.blog59.fc2.com/blog-entry-255.html]]です。

れっどさん、ありがとうございます。
<<showtoc>>
!概要
ソリッド図形から建物求積図を作成する外部変形です
JWWでは面積の測定とソリッド図形の作成が同じ手間であることに気が付いて作成しました

[[Download|http://hinoado.com/r/d/r_kyuseki.lzh]]

圧縮ファイルには以下のファイルが含まれます
R求積.bat 	外部変形用バッチ
R求積2.bat 	高速終了バッチ
R求積3.bat 	R求積_c>R求積 連続起動バッチ
R求積.xls 	外部変形本体(Excel2000以降)
R求積_compact.ini 	小型面積表定義ファイル
R求積_default.ini 	標準面積表定義ファイル
R求積_Large.ini 	大型面積表定義ファイル
R求積_c.bat 	動作環境設定用バッチファイル
R求積_c.xls 	同上本体
R求積_name.txt 	定義情報記録用一時ファイル
R求積.jww 	動作確認用サンプルファイル
R求積.chm 	このファイル

以下のファイルは随時作成・更新されます
R求積.txt 	求積結果のテキストファイル

!基本事項
・エクセルはマクロのセキュリティが「高」であると一切のマクロ
 が実行できません。「中」以下で実行してください
・~WindowsXPでは外部変形に半角スペースを含むフォルダ名は
 使用できません。「Program Files」等では動作しませんので
 ご注意下さい・*.xlsと*.batファイルは同一フォルダに置いて下さい
・1レイヤ当たり集計できる用途種別は15種類までです
・レイヤごとに集計を行っているため、複層階の算定も可能です
・最初の一度目の起動ではR求積_cで色設定を確認して下さい
・線色,ソリッド色を変更する場合はこちらをご覧下さい

!JWでの作業
・用途別に必要な色分けを行いながらソリッドを作成します
・使用できるソリッド形状は以下の通り
  ・正方形,長方形
  ※上記以外の四角も面積は出ますが式は省略しています
  ・三角形
  ・内角90度以下の円弧と弦に囲まれた形状
  ・内角90度以下の円弧と端部からの2接線に囲まれた形状
  ※上記図形は角度が付いていても計算可
・上記仕様により、
   台形は 長方形+三角形
  扇形は 弧弦+三角形
 に分割しておく必要があります
・三角形は最初に描画した線形状部分を底辺と見なします
・0レイヤに描かれたソリッドは建築面積として扱います

!外部変形の選択
・JWの外部変形から目的のbatファイルを選択して下さい
  R求積.bat ・・・ 通常版(進捗状況を表示)
  R求積2.bat ・・・ 高速終了版(エクセルを最小化で起動)
  R求積3.bat ・・・ R求積_cから連続してR求積を起動

!データの選択
・作成したソリッド図形を選択します
 書き込みグループのデータのみが選択可能です
・複数グループに描画されたソリッド図形は集計できません
・範囲確定後、求積図の計算結果を描画する位置をクリックしてください
!動作画面
[img[img/r_kyuseki_01.png]]
JWWで描画したソリッド図形です
簡単な説明書きを兼ねていますのでご一読下さい

[img[img/r_kyuseki_02.png]]
外部変形処理後の図です
レイヤと色毎に集計を行っています
計算結果はコード内で指定されたレイヤに描画します
その際描画されるデータの仕様は以下です

・色毎に面積の大きい順にソートしてナンバリング(デフォルト)
(VBコード内のソートモジュールで変更可)
・ナンバリングはレイヤ毎に1から開始
・各図形の輪郭をトレースして矩形は対角線を描画
・円弧関係は半径と内角を描画
・図面名称及び表タイトルをレイヤ名から取得します
!設定
・面積判定のソリッド色及び描画線色を変更する場合は
 外部変形で「R求積_c.bat」を選択して下さい
[img[img/r_kyuseki_03.png]]
・このシートで設定された条件で面積の分類を判断します
・左上ボタンに使用するiniファイル名が表示されます
・上記ボタンを押すと別のiniファイルが読み込めます
・iniファイルはデフォルトで
  R求積_compact.ini (番号・寸法文字
1.5mm)
  R求積_default.ini (番号・寸法文字
2.5mm)
  R求積_Large.ini (番号・寸法文字
5.0mm)
 の3種を同梱してあります
・iniファイルを増やしたい場合はエクスプローラ等で
 コピーし、名前を変更してから再度R求積_cで読み込んで下さい
・ウチのロゴマークを押すと、設定を保存しJWWの画面の中央に
 設定した色のソリッド図形を吐き出します
 1:100程度を目安に配置しますのでスケールには留意して下さい
・吐き出された図形をJWS登録する等で使用して下さい
!その他

・ソリッドの形状が想定外の場合は、答えの部分に線色5で
 「Error」と表示されます
・稀に正確に描画されているにも関わらずエラーとなる場合が
 ありますが、その場合は 範囲確定の時に基点を変えてみ
 てください。(何度やり直してもエラーが出る場合はこちらの
 掲示板まで報告いただけると助かります)
・曲線化された不定型なソリッドも(条件に合えば)片っ端から
 3角形に切って求積表を作成できます
・エクセルのマクロのセキュリティレベルが「中」以下の場合に
 マクロを実行させない選択を行うと、マクロコードが閲覧出来
 ます
・マクロコードをユーザーが自己責任において変更すること及び
 各シートを変更することは問題ありませんが再配布はご遠慮
 下さい
・エクセルを外部変形のエンジンとして使用することについて
 こちらに簡単な説明をしておきました。
 興味のある方はご覧下さい。
・標準モジュール内の「d求積表の作成」で階毎の集計及び
 総合計を出力するかの設定が出来ます
・各階の図面名称の位置はアバウトです
・エクセルブックにパスワードはありません。

※配布するデータによる損害について作者は一切の責任を負いません
 使用者の自己責任においてご使用下さい
※配布するデータに何らかの不具合があった場合
 作者はその訂正の義務を負いません
※著作権は作者に帰属します
※転載及び改変後の再配布の際はご連絡下さい

!改訂履歴
2005.1.3(Ver2.20)
  ・矩形以外の四角も面積を算定するようにした
   (上記は式が冗長なため省略される)

2004.8.25(Ver2.10)
  ・R求積_c
   ・サンプルをクリックでカラーパレットを追加
   ・色コードと10進値いずれかの入力で壊れていたのを修正
   ・iniファイルから色情報が読み込まれなかったのを修正
  ・R求積
   ・図面名を「*床面積求積図(表)」から「*求積図(表)」に変更

2004.8.16(Ver2.00)
  ・求積表で面積のない区分は無視して割り付ける仕様に変更
  ・一度に算定出来る用途を15種に変更
  ・R求積_cで設定できる描画属性を追加
  ・R求積_cで十進数及び色コードが直接入力出来る仕様に変更
  ・それに伴いサンプルの色を即反映するように変更
  ・16進表示の「###」を解消
  ・R求積_cで画面の固定を解除
  ・R求積_cのRGB記述順序を変更
  ・R求積_cのスライダを若干見易く変更
  ・R求積_cによる設定を外部ファイルに保存する仕様に変更
  ・上記に伴い同梱ファイルにR求積.ini等3種を追加
  ・R求積_cが吐き出すサンプルの形状を変更
  ・R求積_cの設定が保存されない不具合の解消
  ・集計セルを該当ソリッド色で塗る設定を追加
  ・計算結果をR求積.txtに出力するようにした
  ・最小化で高速に動作するBATファイルを添付した
  ・コードの見直しと整理
  ・その他いくつか

2003.12.11(Ver1.50)
  ・図形の寸法を0.1mm以下は切り捨てで算定する仕様に変更
  ・内部ルーチンを見直して動作を若干軽くした

2003.7.6(Ver1.41)
  ・R求積_cでの設定が反映しない不具合を解消

2003.6.30(Ver1.40)
  ・レイヤグループを全て使用できるように変更
  ・終了処理を変更

2003.6.16(Ver1.31)
  ・円弧の計算式に「/2」が抜けていました
  ・ソリッドが少ない場合に動作しない不具合を修正

2003.3.29(Ver1.30)
  ・図面名等をレイヤ名から取得して描画できるように変更
  ・エラー処理を若干変更

2003.3.15(Ver1.22)
  ・設定した色が反映されない不具合を修正(1.21で発生)

2003.3.13(Ver1.21)
  ・建築面積の処理に不具合があったのを修正
  ・名前をsquareからR求積に変更

2003.3.12(Ver1.20)
  ・0レイヤを建築面積専用に割り当てて同面積の結果を総合計に
   表示するように変更
  ・0-Fレイヤが使えるように修正

2003.3.5(Ver1.11)
  ・レイヤ毎集計及び総合計で小数2位に誤差が出る場合が
   あったのを修正

2003.3.1(Ver1.10)
  ・総合計を作成出来るように変更
  ・square_cファイルを2つ追加
  ・上記ファイルでソリッド色及び線種の設定が出来るように変更
  ・同じく指定色ソリッドを吐き出せる機能の追加
  ・設定された色を上から順にソートする仕様に変更
  ・JWSの仕様を変更
  ・動作画面の構成をオートシェイプに変更

2003.2.18(Ver1.00)
  ・円弧ソリッドを計算しないことがあるのを修正
  ・動作画面を更新
  ・タイムスタンプでバージョンを表示
  ・Ver1.00とした

2003.2.14
  ・線形ソリッドを無視するように改良

2003.2.9
  ・誤差を収斂するために小数点以下9桁までを
   取り込む仕様に変更(当初は11桁)

2003.2.8
  ・計算式が一部削られる場合があったのを修正
  ・ナンバリングのソートをしやすく改良
  ・「ソート」モジュールの追加
  ・モジュール名を変更
  ・BATファイルの記述を改良

2003.2.3
  ・末尾0が9999等になることがある不具合を修正
  ・余計な縦線を書いていたのを修正
  ・線色・レイヤの変更を容易に出来るように修正
  ・レイヤ毎の集計が出来るように改良
   (作表モジュール内で指定可能)
  ・作表モジュールのコードを少し整理

2003.1.28
  ・計算結果の表示位置がずれる不具合を修正
  ・BATファイルのパス表記の方法を変更
  ・任意のフォルダから実行できる様に修正
  ・サンプルJWWファイルを添付
R螺旋階段
!概要
エクセル上で設定された条件で螺旋階段の平面図と立面図を描画する外部変形です
[[ダウンロード|http://hinoado.com/href.cgi?url=http://hinoado.com/r/d/rasen.lzh]]

!起動
外部変形から「R螺旋階段」を起動し、基点を決めます。
後はエクセルブック上で各種設定を行って「Genarate」ボタンを押せば完了です。
[img[img/rasen01.png]]

・角度はXY座標系の水平線で反時計回りです
・隠蔽線と300mmの表示は線種2になります
・踏み巾は10mm刻みで計算してます
・「有効巾」は手摺どうしの内寸で描いています
 (100mm以内の手摺緩和に対応していません)
・反転は移動や座標ファイル読み込みで倍率反転してください
・陰線処理は現在の私では不可です
・手摺は側桁厚と関連せず踏み板外ツラから外に書かれます
・手摺子も同様です
・サンプルの設定を6個入れてあります
[img[img/rasen00.png]]
!設定
設定は6種類をブック上に保管できます。
 左から順に
 ・鉄骨一般
 ・鉄骨側桁自立
 ・鉄骨ボックス片持
 ・RC一般
 ・RC一方向スラブ
 ・RCボックス片持
です。

・設定は好きに書き換えてください
・シートにプロテクトをかけていますがパスワードは設定していません
・設定を保存したい場合は実行前に上書きしてください。
・人モデルのソリッド色は「BGR」順です。(ex:青=~FF0000)
・人モデルの身長はセンチです

いくつかのセルにはヘルプ代わりにコメントを入れておきましたので
よくわからないときはそれを参照してみてください。

!免責
※実行は自己責任で。
※当方では一切の責任を負いません。

!改訂履歴
2007.10.2 v1.0
 人モデルを書けるようにした
 実行ボタンをオートシェイプから画像に差し替えた
 柱にRの表現を書けるようにした

2007.9.18
 最小内径を指定できるようにした

2007.9.18
 立面図が出力できるようにした
 設定を6個まで保存できるようにした

2007.9.17
 平面図の設定項目を追加した

2007.9.16
 R螺旋平面として掲示板にテスト公開
!SketchupのデータをKerkytheaにエクスポートするプラグイン
最新版は[[3.17|http://goo.gl/zQBMo]]
*マテリアルは裏表適用しておいたほうがベター
*KerkytheaのマテリアルをSketchupに埋め込んでおくことも可
**ただし埋め込めるマテリアルは基本的なもののみでそれ以外は何故かエラーに

!マテリアルの埋め込み
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "YYYY-0MM-0DD" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options ≫" "Change TiddlyWiki advanced options">>
on cloud
~HinoADO
<<showtoc>>
!プラグイン
*[[RSJww]] 2016-01-25更新
*[[RS階段]]
*[[RSフェンス]]
*[[RS横大和塀]]
*[[RSroomshell]]
*[[RShedges]]
*[[RSlayers]]
*[[RSmaterialrecorder]] 2015-02-21追加
!コンポーネント
*''[[Components(3Dwarehouse)|http://goo.gl/70kQt]]''
!その他
*[[プラグインのインストール]]
*[[プラグイン用Rubyスクリプト]]
*''[[その他のメモ|http://hinoado.com/index.cgi?id=5&eid=3]]''
[[ |Sketchup]]
/***
http://www1.tcnet.ne.jp/leo/Files/TiddlyWiki/TiddlyWiki.html#StyleSheet
***/
/*{{{*/


.annotation {
  color:#e60;
  text-align:center;
  text-decoration:underline;
  background:#333;
  border:#e60 1px solid;
}

.tiddler .subtitle{
  color:#888;
  font-size:0.8em;
  margin:0px;
  padding:0px;
  height:0.8em;
}

iframe {
border:none;
zoom: 0.5;
overflow-x : hidden ;
}

#messageArea{
  color:#fff;
  background:#333;
  border:none;
  border-radius:3px;
  opacity:0.6;
}

#messageArea a{
  color:#fff;
  background:#333;
  border:none;
  border-radius:3px;
  opacity:0.8;
}

#messageArea .button{
  color:#fff;
  background:#333;
  border:none;
  border-radius:3px;
  opacity:0.8;
}

.tagged{
  display:none;
}


.title {
  border-bottom: 2px #E50 solid;
  background-color: #333;
  z-index:10
}
h1{
  background-color: #333;
  color: #ffffff;
  border-left: 20px #E50 solid;
}
h2{
  background-color: #E50;
  color: #ffffff;
}
h4{
  border-left: 16px #E50 solid;
}
h5{
  border-left: 16px #E50 solid;
}
.sliderPanel{
  border: 1px #aaa solid;
  background:#fff;
  margin-bottom:10px;
}

.button {
  border:none;
  background:#fff;
  margin:0px;
}
.button:hover {
  background:#fff;
  text-shadow: 0px 0px 2px #bbb;
  border: #fff;
}
.button:active {
  background:#fff;
  text-shadow: 0px 0px 2px #666;
  border: #fff;
}


.viewer a.button {
  display:block;
  text-align:center;
  font-weight:bold;
  line-height: 1.5em;
  margin: 0px;
  color: #fff;
  font-size:11pt;
  background: #e50;
  border-left: 125px #333 solid;
  border-right: 125px #333 solid;
  border-top: none;
  border-bottom: none;
  padding-top:5px;
  padding-right:25px;
  padding-bottom:5px;
  padding-left:25px;
}
.viewer a.button:hover {
  text-shadow: 0px 0px 6px #fff;
  background: #920;
  border-left: 125px #000 solid;
  border-right: 125px #000 solid;
}
.viewer a.button:active {
  text-shadow: 0px 0px 6px #fff, 0px 0px 10px #fff, 0px 0px 15px #fff;
  font-weight:bold;
}



.title {
  border-top: 0px #000 solid;
  border-right: 0px #000 solid;
  border-left: 0px #000 solid;
  color:#fff;
  text-shadow: 0px 0px 3px #aaa;
  line-height:30pt;
  margin-right:0px;
  margin-left:0px;
  padding-left: 16px;
  padding-right: 16px;
  margin-top: 6px;
  text-align: center;
}

h1{
  font-size: 10pt;
  margin-right:0px;
  margin-left:0px;
  line-height:1.8em;
  padding-left: 16px;
  border-bottom: 0px #666666 solid;
}

h2{
  font-size: 10pt;
  line-height:14pt;
  margin-right:0px;
  border-top: 0px #666666 solid;
  border-right: 0px #333 solid;
  border-bottom: 0px #333 solid;
  border-left: 20px #333 solid;
  padding-left: 6px;
  margin-right:10px;
  margin-left:5px;
}

h3{
  color: #000;
  font-size: 10pt;
  line-height:14pt;
  border-left: 20px #333 solid;
  border-bottom: 0px #333 solid;
  padding-left: 6px;
  margin-right:10px;
  margin-left:5px;
}

h4{
  color: #000;
  font-size: 10pt;
  line-height:12pt;
  padding-left: 6px;
  margin-right:10px;
  margin-left:5px;
}

h5{
  color: #000;
  font-size: 10pt;
  line-height:4pt;
  padding-left: 10px;
  margin-top: 10px;
  margin-bottom: 6px;
  margin-right:10px;
  margin-left:5px;
}

.viewer pre{
  font-size: 1.0em;
  font-family:MS ゴシック;
  color: #fff;
  background-color: #484848;
  border: solid 1px #bbbbbb;
  line-height: 120%;
  margin-right: 80px;
  padding: 0.99em;
  overflow-x: auto;
  overflow-y: auto;
  white-space: -moz-pre-wrap;
  white-space: -pre-wrap;
  white-space: -o-pre-wrap;
  white-space: pre-wrap;
  word-wrap: break-word;
}

.viewer pre:hover{
  font-size: 1.0em;
  font-family:MS ゴシック;
  color: #fff;
  background-color: #222;
  border: solid 1px #222;
  line-height: 120%;
  margin-right: 80px;
  padding: 0.99em;
  overflow-x: auto;
  overflow-y: auto;
  white-space: -moz-pre-wrap;
  white-space: -pre-wrap;
  white-space: -o-pre-wrap;
  white-space: pre-wrap;
  word-wrap: break-word;
}

body{min-width: 680px}


.tiddler {
  border: 1px #ddd solid;
  background-color: #fff;
  margin-top:0px;
  margin-bottom:20px;
  padding-bottom:20px;
}
.tiddler:hover {
  border: 1px #aaa solid;
  background-color: #fff;
}

.toolbar{
  border: 0px #ccc solid;
  background-color: #fff;
  line-height:16pt;
}

.headerForeground{
  text-shadow: 5px 5px 4px #000;
  margin-top: 0px;
  width: 100%
  border-top: 35px #000 solid;
  border-left: 0px #000 solid;
  padding-left:42px;
  padding-top:42px;
}
.headerShadow {
  font-size:12pt;
  color: #e50;
  width:00px;
  padding-top:32px;
  padding-left:40px;
  height:40px;
}

#mainMenu {
  position: relative;
  float: right;
  top: 0px;
  right: 15px;
  width: 160px;
  font-size: .5em;
  text-align: left;
}

#displayArea {
  position:  absolute;
  top: 100px;
  margin-left:3px;
  margin-top:3px;
  margin-right:170px;
  margin-bottom:3px;
  padding:-2;
  min-width: 480px;
  max-width: 800px;
}

#sidebar {
  position: relative;
  float: right;
  top: 100px;
  right: -150px;
  width: 150px;
  font-size: .9em;
}


/*}}}*/

/*{{{*/
.dcTOC ul {
	color: #006;
	list-style-type: upper-roman;
}
.dcTOC a {
	color: #666;
	border: none;
}
.dcTOC a:hover {
	background: #eee;
}
.dcTOCTop {
	font-size: 2em;
	color: #666;
}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}







/***
|''Name:''|TWGuideForJPMacro|
|''Source:''|http://tw.kuraku.net/tw.html#TWGuideForJPMacro|
|''Author:''|kuraku|
|''License:''|http://creativecommons.org/licenses/by-sa/2.5/|
|''Version:''|0.1.5 (2007-08-22)|
|''CoreVersion:''|2.2|
!!Description
編集時にガイドを表示できます。

[[HelpTextMacro]] の姉妹品です。
ガイドを含んでいますので、このマクロさえインストールすればテキストのコピーは要りません。

<<toolbar guidejp>> こんなボタンを編集時に使えます。

!!Install
この [[TWGuideForJPMacro]] をコピーした後、タグに systemConfig を追加の後、保存してリロードしてください。

[[EditTemplate]] に以下のように「guidejp」を追記します。
//{{{
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler guidejp deleteTiddler'></div>
...
//}}}
([[EditTemplate]] はこれまでに修正したことが無ければ {{{SideBar: More>Shadow}}} を見てください。

!!~TiddlyWiki Guide Tiddler
導入により、{{{SideBar: More>Shadow}}} に [[TWGuideForJP]] が追加されます。
もし自分用に修正するのであれば、[[こちら|TWGuideForJP]]を直してください。
***/
/*{{{*/
config.shadowTiddlers["TWGuideForJP"]="''文字装飾:''\n{{{\n''太字''\n--取消線--\n__下線__\n//斜体//\n2^^3^^=8\na~~ij~~ = -a~~ji~~\n}}}\n''太字''\n--取消線--\n__下線__\n//斜体//\n2^^3^^=8\na~~ij~~ = -a~~ji~~\n{{{\n@@ハイライト@@\n@@color(green):着色(ここでは緑)@@\n@@color:red;文字列(赤)@@\n@@bgcolor(#000000):color(#00FFFF):背景色の設定もできます。@@\n@@color:#f0f;background-color:#aaa;文字列@@\n}}}\n@@ハイライト@@\n@@color(green):着色(ここでは緑)@@\n@@color:red;文字列(赤)@@\n@@bgcolor(#000000):color(#00FFFF):背景色の設定もできます。@@\n@@color:#f0f;background-color:#aaa;文字列@@\n{{{\n{{{固定幅の表示}} }\n{{{\n 固定幅の表示(ブロック)\n}} }\n/% comment %/ これは見えません。\n\"\"\"装飾無し(「\"」三つで囲む)\"\"\"\n~装飾無し\n----\n}}}\n(※「}} }」と3文字目にスペースが入っているのは表示に問題があるためです。実際はスペースを詰めてください。)\n\n{{{固定幅の表示}}}\n{{{\n 固定幅の表示(ブロック)\n}}}\n/% comment %/ これは見えません。\n\"\"\"装飾無し(「\"」三つで囲む)\"\"\"\n~装飾無し\n----\n\n''通常リスト:''\n{{{\n* 一段目\n** 階層化もできます。\n** 同一レベルに記述するとこんなかんじ。\n* そして元に戻ります。\n}}}\n* 一段目\n** 階層化もできます。\n** 同一レベルに記述するとこんなかんじ。\n* そして元に戻ります。\n\n''番号リスト:''\n序数を付けたリストです。\n{{{\n#item1\n#item2\n##item2.1\n##item2.2\n##item2.3\n#item3\n##item3.1\n###item3.1.1\n###item3.1.2\n}}}\n#item1\n#item2\n##item2.1\n##item2.2\n##item2.3\n#item3\n##item3.1\n###item3.1.1\n###item3.1.2\n\n''リストの折り返し:''\n{{{\n*item1\n**item1-1\n***ここで折り返します<br>いかが?\n}}}\n*item1\n**item1-1\n***ここで折り返します<br>いかが?\n\n''定義:''\n定義を記述します。\n{{{\n;名前\n:意味・内容\n}}}\n;名前\n:意味・内容\n\n''見出し:''\nいわゆる <h2>...</h2> などに相当する見出しです。六段階に対応してます。\n{{{\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5\n!!!!!!Header 6\n}}}\n!Header 1\n!!Header 2\n!!!Header 3\n!!!!Header 4\n!!!!!Header 5 \n!!!!!!Header 6\n\n''外部リンク:''\n他のサイトへのリンクをする場合、[[Google|http://www.google.com/]]などと記載します。\n \n''画像の埋込み:''\n{{{\n[img[Google|http://www.google.co.jp/images/logo_sm.gif]]\n}}}\n[img[Google|http://www.google.co.jp/images/logo_sm.gif]]\nさらにリンク\n{{{\n[img[Google|http://www.google.co.jp/images/logo_sm.gif][http://google.co.jp/]]\n}}}\n[img[Google|http://www.google.co.jp/images/logo_sm.gif][http://google.co.jp/]]\n同じフォルダにある場合はパス名は不要なようです。\n\n''引用:''\n{{{\n<<<\n引用しています。\n引用しています。\n<<<\n}}}\n<<<\n引用しています。\n引用しています。\n<<<\n{{{\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1\n}}}\n>level 1\n>level 1\n>>level 2\n>>level 2\n>>>level 3\n>>>level 3\n>>level 2\n>level 1 \n\n''表組:''\n{{{\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|bgcolor(#a0ffa0):colored| center |\n|caption|c\n}}}\n|!th1111111111|!th2222222222|\n|>| colspan |\n| rowspan |left|\n|~| right|\n|bgcolor(#a0ffa0):colored| center |\n|caption|c\n\n''ドキュメント内リンク:''\n{{{\n[[GettingStarted]]\n[[スタートのメモ|GettingStarted]]\n}}}\n[[GettingStarted]]\n[[スタートのメモ|GettingStarted]]\n\n''スタイルの指定:''\n{{{<span class='subtitle'>subtitle class を指定</span>}}} のようにスタイルを指定可能。\n{{{\n{{subtitle{subtitle class を指定}}}\n}}}\n{{subtitle{subtitle class を指定}}}\n\n";
/*}}}*/
/***
!!Configration: ScrollBar is used
スクロールバーを表示する: <<option chkTWGuideJPScrollOptions>>

上のチェックボックスをチェックすることで、ガイド Popup にスクロールバーを付けて、小さな窓の状態での参照が可能になります。

!!History
*2007.08.22, ver 0.1.5
**見出し「六段階」まで
**スタイル修正
*2007.08.21, ver 0.1.4
**Popup にスクロールバーを表示することにより、ブラウザ自体のスクロールを無くすことが可能に
**padding を追加
*2007.08.20, ver 0.1.3
**スタイル設定の Bug を修正
***TWGuideJP class へスタイルを追加する
*2007.06.20, ver 0.1.2
**スタイルの設定部分の修正
**「定義」を追記
*2007.05.10, ver 0.1.1
**ガイドの内容を修正
**IE できちんと表示できなかったので対応
*2007.04.27, ver 0.1.0
**Init

!!Source
***/
/*{{{*/
version.extensions.guidejp = { major: 0, minor: 1, revision: 5, date: new Date(2007,8,22), source: "http://kuraku.net/tw/tw.html#TWGuideForJPMacro"
};

config.commands.guidejp = {};
config.commands.guidejp.version = "Version %0.%1.%2".format([version.extensions.guidejp.major,version.extensions.guidejp.minor,version.extensions.guidejp.revision]);
config.commands.guidejp.helptiddler = "TWGuideForJP";
config.commands.guidejp.layout = {
	overflow: "auto",
	width: "40em",
	height: "40em"
};

if(config.options.chkTWGuideJPScrollOptions == undefined)
  config.options.chkTWGuideJPScrollOptions = false;

config.commands.guidejp.handler = function(event,src,title){
	var popup = Popup.create(src);

	if(popup) {
		addClass(popup, "TWGuideJP");

		if(config.options.chkTWGuideJPScrollOptions){
			popup.style.overflow = this.layout.overflow;
			popup.style.width = this.layout.width;
			popup.style.height = this.layout.height;
		}

		createTiddlyElement(popup,"H1",null, null, "TiddlyWiki 書き方ガイド:");
		var guidejpText = store.getTiddlerText(this.helptiddler);
		guidejpText = "~~<<option chkTWGuideJPScrollOptions>>:scrollbar~~\n\n" + guidejpText;

		var wrapper = createTiddlyElement(popup, "span");

		wikify(guidejpText, wrapper, null, store.getTiddler("SiteTitle"));
		var version = createTiddlyElement(popup,"div",null ,null ,"\n\nTWGuideForJPMacro " + this.version);
		version.style.fontSize = "0.8em";
		version.style.paddingTop = "5px";
	}
	Popup.show(popup,false);
	event.cancelBubble = true;
	if (event.stopPropagation) event.stopPropagation();
		return false;
	}

	merge(config.commands.guidejp,{
	 text: "guide",
	 tooltip: "tw guide for japanese"}
);

// Popup で表示するための Style を指定
setStylesheet(".TWGuideJP {padding:0em .5em .5em .5em !important;color:#222222 !important;background:#FFFFFF !important;} .TWGuideJP a{color:#0044BB !important} .TWGuideJP a:link{color:#0044BB} .TWGuideJP blockquote{border-left:3px solid;margin-left:2em;padding-left:0.8em;} .TWGuideJP pre{font-size:1.0em;background:#FFFFCC none repeat;border:1px solid #FFEE88;} ", "TWGuideJP");
/*}}}*/
config.macros.imagebox ={};
config.macros.imagebox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    var e = place.lastChild;
    e.onclick = function(){TiddlyLightBox.initBox('image',this,params[1],params[2],params[0]);return false;};
}

config.macros.divbox ={};
config.macros.divbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    if (params[0]!=".")
        createTiddlyButton(place,params[0],params[0],function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;});
    else
        {
        var e = place.lastChild;
        e.onclick = function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;};
        }
}

config.macros.tiddlerbox ={}
config.macros.tiddlerbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    config.macros.divbox.handler(place,macroName,[params[0],"tiddler:"+params[1],params[2],params[3],params[4]]);
    return false;
}

store.addNotification("TiddlyLightBoxStyles",refreshStyles);

if (!window.TiddlyLightBox)
    window.TiddlyLightBox = {};
    var loadingImage = "ajax-loader.gif";
    window.TiddlyLightBox =
    {
    _curBox: null, // [sentinel]

    lightBoxHtml : '<div id="lightBoxOverlay" onclick="TiddlyLightBox.hideBox()" style="display:none"></div><div id="lightboxprogress" style="display:none;"><img src=\''+loadingImage+'\' alt=\'loading\' style="width:128px;height:128px;"></div><div class="lightBox" id="lightBox" style="display:none"><div id="lightBoxContent"></div><div id="lightBoxTitle">This is a title</div><div id="lightBoxClose"><a href:"#" onclick="TiddlyLightBox.hideBox();return false;"> </a></div></div>',

    createBoxWrapper : function()
        {
        var wrapper = createTiddlyElement(document.getElementsByTagName("body")[0],"div","tiddlyLightBoxWrapper");
        wrapper.innerHTML = this.lightBoxHtml;
        },

    initBox : function(contentType,url,w,h,text)
        {
        if (this._curBox)
            return;
        this.showProgress();
        this.hideSelects("hidden");
        this.showBg();
        this._curBox = true;
        this.sizeTheBox(contentType,w,h);
        if (contentType == 'image')
            this.showImage(url,text);
        else if (contentType == 'html')
            this.showHtml(url,text);
        return false;
        },
        
    sizeTheBox : function(contentType,w,h)
        {
        var box = document.getElementById("lightBoxContent");
        if (w && isNaN(parseInt(w)))
            {
            addClass(box,w);
            }
        else if (w ||h || contentType == 'html')
            {
            box.style.width = w? w+ "px" : "450px";
            box.style.height = h? h+ "px" : "280px";
            if (contentType=='image')
                setStylesheet("#lightBoxContent img{height:100%;width:100%;}","lightBoxImageSizeHack");
            }
        },

    showProgress : function()
        {
        var progress = document.getElementById("lightboxprogress");
        progress.style.display='';
        this._center(progress);
        },
    
    hideProgress: function()
        {
        var progress = document.getElementById("lightboxprogress");
        progress.style.display='none';
        },

    //this function lifted from Lightbox Gone Wild
    hideSelects: function(visibility)
        {
        var selects = document.getElementsByTagName('select');
        for(i = 0; i < selects.length; i++)
            {
            selects[i].style.visibility = visibility;
            }
        },

    showBg: function()
        {
        var overlay = document.getElementById('lightBoxOverlay');
        if (config.browser.isIE)
            {
            overlay.style.height = Math.max(document.documentElement.scrollHeight,document.documentElement.offsetHeight);
            overlay.style.width = document.documentElement.scrollWidth;
            }
        overlay.style.display = 'block';
        },

    showImage: function (url,text)
        {
        imgPreloader = new Image();
        imgPreloader.onload = function ()
            {
            var lb = document.getElementById("lightBoxContent");
            lb.innerHTML = "<img src="+url+">";
            lb.onclick = function(){TiddlyLightBox.hideBox();return false;};
            TiddlyLightBox.posBox(text);
            };
        imgPreloader.src = url;
        },
        
    showHtml : function(theID,text)
        {
        var lb = document.getElementById("lightBoxContent");
        if (theID.indexOf("tiddler:")==-1)
             lb.innerHTML = document.getElementById(theID).innerHTML;
        else
            { 
             wikify(store.getTiddlerText(theID.replace("tiddler:","")),lb);
             lb.className='tiddler';
            }
        lb.style.overflow = "auto";
        this.posBox(text);
        },

    posBox: function(text)
       {
       this.setTitle(text);
       this.hideProgress();
       var lb = document.getElementById("lightBox");
       lb.style.display = "";
       lb.style.visibilty = "hidden";
       lb.style.position = "absolute";
       this._center(lb);
       if(!TiddlyLightBox._curBox) return;
       lb.style.visibility = "visible";
       lb.style.display = "block";
       },

     setTitle: function(text)
        {
        document.getElementById("lightBoxTitle").innerHTML=  (text==undefined)? '': text;
        },

    _center: function(lb)
       {
       var lbSize = new TiddlyLightBox.getElementSize(lb);
       lb.style.left = (Math.round(findWindowWidth()/2) - (lbSize.width /2) + findScrollX())+'px';
       lb.style.top = (Math.round(findWindowHeight()/2) - (lbSize.height /2) + findScrollY())+'px';
       },

    //this function lifted from Ibox
    getElementSize : function(elem)
       {
       this.width = elem.offsetWidth || elem.style.pixelWidth;
       this.height = elem.offsetHeight || elem.style.pixelHeight;
       },

     hideBox: function()
         {
         if(!this._curBox)
             return;
         document.getElementById("tiddlyLightBoxWrapper").innerHTML= this.lightBoxHtml;
         setStylesheet("","lightBoxImageSizeHack");
         this._curBox = null;
         return false;
         }
}

TiddlyLightBox.createBoxWrapper();

Story.prototype.findContainingTiddler = function(e)
{
    while(e && (!hasClass(e,"tiddler") || !e.getAttribute("tiddler")))
        e = e.parentNode;
    return(e);
}

config.shadowTiddlers.TiddlyLightBoxStyles="/*{{{*/\n#lightBoxOverlay {\n position:absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 90; \n background-color: #000;\n -moz-opacity: 0.25;\n opacity: .25;\n filter: alpha(opacity=25);\n}\n#lightBoxOverlay[id]{ \n position: fixed;\n}\n\n#lightboxprogress { \n margin:0;padding:0;\n position: absolute;\n z-index:95;\n}\n\ndiv.lightBox {\n background: #fff;\n color: #fff;\n border: 0px solid #525252;\npadding:0px 0px 0px 0px; position:absolute; z-index:99;\n}\n\n#lightBoxClose {text-align:right; color:#000; font-size:1.0em; position:absolute; bottom:6px; right:20px;}\n#lightBoxClose a{color:#666; border-bottom:0px solid #666;cursor:pointer;}\n#lightBoxClose a:hover {color:#111; border-bottom:0px solid #666; cursor:pointer; background:transparent;}\n\n#lightBoxContent {border:0px solid #525252;color:#000; background:#fff;}\n#lightBox .tiddler {background:#fff;}\n\n#lightBoxContent img {border:0;margin:0;padding:0;display:block;cursor:pointer;}\n\n#lightBoxTitle {padding:0px; font-weight:bold; position:absolute; left:20px;bottom:6px; font-size:1.1em; color:#000;}\n\n/*}}}*/";
<<showtoc>>
!設定
!!ビルド名
ソリューションエクスプローラで「MyProject」ダブルクリック→左上の「アセンブリ名」に入力

!!アイコン設定
ソリューションエクスプローラで「MyProject」ダブルクリック→右中でアイコン設定

!!コンソールアプリをxp以降のスタイルに
{{{
        Application.EnableVisualStyles()
        Application.DoEvents()
}}}
上記をSub Main()に記入
!ファイル入出力
!!実行ファイルがあるフォルダ名を取得する
{{{
        'カレントパスを取得
        Dim Pth As String
        Pth = Environment.CurrentDirectory
}}}

!!jwc_temp.txtを開いて読み込む
{{{
        'jwc_temp.txtを開いて読み込む
        Dim s1 As String()
        s1 = File.ReadAllLines(Pth & "\jwc_temp.txt", Encoding.Default)
        For Each tmp As String In s1

        Next
}}}

!!Shift-JISでテキストファイルを作成する
{{{
        'Shift-Jisでr_temp.txtを作成
        Dim r_tmp As New StreamWriter(Pth & "\r_temp.txt", True, System.Text.Encoding.GetEncoding("Shift_Jis"))
        r_tmp.WriteLine("hd")
        'r_temp.txtストリームを閉じる
        r_tmp.Close()
}}}

!文字列操作
!!文字列から一部を取り出す
{{{
text.Substring(StartPosition, TextLength)
}}}

!!文字コードを取得する
{{{
Asc("A")
}}}
例としてJWLの切り替え
{{{
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "jw_win"
WScript.Sleep 200
WshShell.SendKeys "%S"
WScript.Sleep 50
WshShell.SendKeys "F"
WScript.Sleep 50
WshShell.SendKeys "R"
WScript.Sleep 200
WshShell.SendKeys "{TAB}"
WScript.Sleep 200
WshShell.SendKeys "{DOWN}"
WScript.Sleep 200
WshShell.SendKeys "{DOWN}"
WScript.Sleep 200
WshShell.SendKeys "{ENTER}"
WScript.Sleep 200
WshShell.SendKeys "+{TAB}"
WScript.Sleep 200
WshShell.SendKeys "JW_WIN.JWL"
WScript.Sleep 200
WshShell.SendKeys "%O"
}}}
sendkeysのコマンド類は[[外部変形用エクセルVBA]]の「sendkeys」の項を参照。
<<showtoc>>
!全般
!!ウィンドウを閉じる時にアラートを出す
headの中に
{{{
<script>window.onbeforeunload = function() {return 'データの保存を確認して下さい'}</script>
}}}
!Form類
!!ラジオボタン
ラジオボタンのグループ分けはnameで決まる。
値の取得は戻り値が配列になっていて面倒なので、どこかに
{{{
<input type="hidden" name="radio_1">
}}}
等を準備して
{{{
<label><input type="radio" name="r1" onclick="radio_1.value='001'">ラジオ1</label>
<label><input type="radio" name="r1" onclick="radio_1.value='002'">ラジオ2</label>
}}}
のように扱えば他のフォームの値と同じに扱える。
上記のようにラジオボタンをラベルで囲うとタップ範囲が広がって便利。
<<showtoc>>
!目的
*コメントが失われたjwfファイルにSample.jwfを参照してコメントを復旧する
*Sample.jwfと項目内容の過不足を比較する

!~DownLoad
本ツールはExcel2010で作成したエクセルブックです
[[DownLoad|http://goo.gl/4KjXBy]]

!使い方
*エクセルのマクロを有効にする
*起動してコメントを復活させたいjwfファイルを選択する
*内容を確認して「名前をつけてJWFファイルを保存」を押して保存する

!免責
全て自己責任でご使用下さい。

!更新履歴
2015-01-22 公開
!概要
土器手 茂氏作の名外部変形「jwg_vrml」のテクスチャ設定等を少しだけ簡便に行えるエクセルファイルです

[[Download|http://hinoado.com/r/d/jwg_vrml.lzh]]

!機能
JW側のレイヤ名とJWG_VRML側の各設定をエクセルのブックで管理します。
[img[img/vrml_01.png]]
・jwfファイルを作成してJWWに読み込ませる
・jwg_vrml.cfgを作成する

等の機能も付いています

※セルをダブルクリックすると場所に合わせたマクロが起動します。
色々なセルにマクロを組んだのですが詳細は忘れました。
JWG_VRMLの設定を手動でしていた方は触れば理解できる
と思いますので説明ファイルがありません。

!サンプル

閲覧にはvrmlブラウザが必要です
光源を2つずつ入れてあります
ヘッドライトを消してどうぞ

[[VRMLプラグインはこちら|http://www.parallelgraphics.com/products/cortona/download/]]
*[[椅子とパペット|http://hinoado.com/r/d/chair.wrl]]
*[[ベッド|http://hinoado.com/r/d/bed.wrl]]
*[[ドア|http://hinoado.com/r/d/door.wrl]]
*[[キッチン|http://hinoado.com/r/d/kitchen.wrl]]
*[[テーブル|http://hinoado.com/r/d/table.wrl]]

上記は全てJWWとJWG_VRMLで作成しました
Vistaまでは[[WinRoll|http://www.palma.com.au/winroll/]]が使えたもののWindows7ではエクスプローラが中途半端にしかシェード出来ない。
そこで発見したのが[[かざぐるマウス|http://www.staticflower.net/software/kazaguru.html]]。
とても多機能で便利な上に、このソフトだけが今のところWidows7できちんとシェードをしてくれている。
<<showtoc>>
!総本山
[[GoogleカレンダーのAPI とツール|http://code.google.com/intl/ja/apis/calendar/]]
[[Protocol Guide|http://code.google.com/intl/ja/apis/calendar/data/2.0/developers_guide_protocol.html]]

!サンプル
VBAコード
[[honda0510/Google-Calendar-Library-for-VBA - GitHub|https://github.com/honda0510/Google-Calendar-Library-for-VBA]]


マクロが付属したエクセルブックを配布しているサイト
[[FX and Program Memo|http://fxscore.blog59.fc2.com/blog-entry-50.html]]

The Stylish LifeHacker さんの
「Excel で Web2.0 風画像を量産する方法」
http://lifehacker.blog86.fc2.com/blog-entry-19.html
という記事を見て少し応用してみました。
[img[img/w016.gif]]
こんなロゴをエクセルで作ります。
まず「ワードアート」で文字を書きます。
[img[img/w001.gif]]

塗りつぶし効果で輪郭を消しつつグラデーションを設定します
[img[img/w002.gif]]

[img[img/w003.gif]]

[img[img/w004.gif]]

GLOSSYにしたいところに丸を描いて形を調整します
[img[img/w005.gif]]

今描いた丸の輪郭を消して、白の半透明なグラデーションをかけます
[img[img/w006.gif]]

[img[img/w007.gif]]

文字を下にコピーして180度回します
[img[img/w010.gif]]

下にコピーした文字の右端中のコントロールポイントを
「Ctrl」を押しながら左にぐいっと持って行って反転させます
[img[img/w011.gif]]

[img[img/w012.gif]]

その文字の鏡像効果を与えたい範囲に四角を描きます
[img[img/w013.gif]]

そして前にGLOSSY効果を与えたのと同様に、白の半透明でグラデーションを掛けます
[img[img/w014.gif]]

下の余計な部分は別途四角を描いて見えなくします
[img[img/w015.gif]]

完成
[img[img/w016.gif]]

GLOSSY効果は波や直線や角丸矩形などエクセルが描ける図形は全て使えます。
途中で仕込んだ左右反転は挿入された画像でも使えますのでお試し下さい。
{{{
Function Evl(ByVal Rng As String)
  Dim st As String
  st = StrConv(Rng, vbNarrow)
  st = Replace(st, "×", "*")
  st = Replace(st, "÷", "/")
  st = Replace(st, "x", "*")
  st = Replace(st, " ", "")
  Evl = Evaluate(st)
End Function
}}}
#上記プロシージャを標準モジュールに貼る
#ワークシートでA1セルに計算式文字列が入力されているとして以下のように記述
{{{
=Evl(A1)
}}}
<<showtoc>>
!概要
出力用手書き風フィルタです。

[[DownLoad|http://hinoado.com/r/d/esquisse.lzh]]

圧縮ファイルには以下のファイルが含まれます
エスキースフィルタ.xls・・・・外部変形本体(Excel2000以降)
エスキースフィルタ.bat・・・・外部変形用バッチファイル
エスキースフィルタ.txt・・・・このページのテキスト版
エスキースフィルタ.jww・・・・サンプルファイル
~HinoADO.jwf・・・・サンプル作成時のJWF(線等定義部分のみ)

!基本事項
・JWWで描かれたデータを出力用にフィルタリングする外部変形です
[img[img/es_01.png]]
これが

[img[img/es_02.png]]
こうなります。

[[サンプルPDF|http://hinoado.com/r/d/01.pdf]]
・エクセル2000以上がインストールされている必要があります
・エクセルマクロのセキュリティレベルが「中」以下で稼働します

!JWでの準備作業
・変換したいデータをJWWで作成して下さい
・デフォルトで植栽として処理するのは線種7です

!外部変形の選択
・JWの外部変形から「エスキースフィルタ.bat」を選択して下さい

!データの選択
・データは複数のグループにまたがっていても構いません
・複数のスケールも同時に処理できます
・ブロック図形,ソリッド図形も選択して構いません(処理上は無視してます)

!動作画面
[img[img/es_03.png]]
・フィルタリング用フォントは上部のサンプル文字が表示されているセルに設定して下さい
・設定画面を背後にツールボタンが表示されますのでフィルタを選択して下さい
・設定は5つまで保存できます
・設定を保存する場合は上書き保存して下さい

!その他
・このフィルタは印刷前に一時的に使用するためのものです
・印刷後は「戻る」で確実に元図に戻して下さい
・フォントは各自用意してください
・サンプルで使用しているのは あくあ様作の「あくあフォント」[Link]です
・デフォルト設定の「エスキース」はJWWのランダム線を使用しています
・点線・鎖線等は指定された長さに切断して乱れさせています
・座標のランダム化は要素の角度に追従させています

・配布するデータによる損害について作者は一切の責任を負いません
 使用者の自己責任においてご使用下さい
・転載及び改変後の再配布の際はご連絡下さい


!改訂履歴

2007/9/5 V1.30
・円弧もフィルタリングできるようにした
 (円弧の実線以外は処理出来ない)

2007/8/17 V1.20
・データを図寸で取り扱うようにした
 (複数スケールの同時処理可)
・設定保存用のボタンを廃止した

2006/4/25 V1.10(非公開)
・PC内全てのフォントを使えるようにした
・ソリッド及びブロック図形を無視するようにした

2005/8/15 V1.0
・実線以外の線種も処理出来るようにした
・上記及び植栽フィルタの設定が出来るようにした
・線種で植栽を判断するようにした
・植栽はフィルタリングを2重に処理するようにした
・それに伴い起動時のボタンから「植栽フィルタ」を削除した
・アクティブグループの縮尺を取得するようにした
・座標の回転に再度計算間違いがあったのを修正した
・サンプル作成時の環境設定ファイルを添付した

2005/8/2(Minor release3)
・「植栽フィルタ」を追加した
・実行時にフィルタの種類を選択できるようにした
・座標の回転に間違いがあったのを修正した
・はみ出しの最大量が反映されていなかった不具合を修正した


2005/7/26(Minor release2)
・ハッチ線の判断を廃止した
・8つの線色それぞれに定義が出来るようにした(9色に訂正)
・繰り返し描画出来るようにし、線色ごとに回数が設定できるようにした
・設定を5個まで保存できるようにし、ラジオボタンで選択するようにした
・先端部のはみ出し量に加えて巾方向のあばれ量を設定できるようにした

2005/7/17(Minor release1)
<<showtoc>>
!各種サービス比較
|サービス名|フリースペース|日本語表記|共有|同期|
|[[DropBox|https://www.dropbox.com/]]|2G+|自動|◎:別アカウントから承認されたフォルダは自分のフォルダと同じようにローカルでも使える。ただし共有フォルダも自分の容量を使う。フォルダごとダウンロード不可。|◎:ローカルの「DropBox」フォルダに自動同期。ほぼシームレス。|
|[[Nドライブ|http://ndrive.naver.jp/]]|30G|自動|◯:別アカウントから承認されたフォルダはローカルにも「N:¥共有されたフォルダ」として表示される。容量の取り扱いは未調査。フォルダごとのダウンロードはweb上でFlashプラグインを経由して可。ローカルドライブでのコピーははじかれるものが幾つかあるもよう。|◯:同期設定でローカルへの保存に対応している。ただ同期速度はDropBoxと比べて''だいぶ遅い''印象。|
|[[BOX.net|http://www.box.com/]]|50G|設定可|◯:招待されたユーザーは共有フォルダを自分のものと同様に扱える。|△:ローカルからは「ネットワークプレイスの追加」から[[http://box.net/dav/|http://box.net/dav/]]を指定することでネットワークドライブ扱い可能。ローカルには保存されない。同期ソフトによるローカルへのコピーで対応可能。|

!PCクラウド化ソフト「Tonido」
http://www.tonido.com/index.html
http://gigazine.net/news/20120324-tonido/
ソリッド図形をブロック化したデータ集です。
[img[img/crazysolid.gif]]
重いです。

[[Download|http://hinoado.com/r/d/crazysolid.lzh]]


{{{
fsutil file createnew c:\dummy 104857600
}}}
コマンドプロンプトで上記記述でCドライブ直下に「dummy」という名の100Mサイズのファイル生成

*DropBoxの容量拡張ではjpgかmpg以外は無視されるもよう
**movファイルもmp4ファイルも可能なもよう。YUUMAITAさんありがとうございます。
**適当な巨大ファイルの拡張を変えるだけでも出来るという話もアリ(確認作業はしてません)
*ファイル名とファイルサイズで判断しているようなので
{{{
fsutil file createnew c:\mov10001.mpg 100010000
fsutil file createnew c:\mov10002.mpg 100020000
fsutil file createnew c:\mov10003.mpg 100030000
}}}
のようにダミーファイルを100M程度のサイズで''少しずつ容量を変えて''作成して、上記ファイルをスマホのSDカードのデジカメ画像フォルダに一度転送し、''その後PCに接続した際にDropBoxへのインポートを選択。''
*たまにDropBoxインポート時に無視されるファイルがある様子
*今回増える容量は4.5Gが上限のようです。追記:5Gらしいです。
*追加容量は500M単位ですので、500Mを超えるような巨大ファイルを一気に渡すとたぶん不可です。
*とりあえず上記ダミーファイルを --45-- 50個作ってSDカードに転送し、再接続でDropBoxにインポートさせるが最も手っ取り早いのかな
*iPhoneでは1分ほどの動画が良い具合だそうです
*ダミーファイルは200M程度でも良いかも知れません
*私のスマホでは1G転送に10分程度掛かりますので、PC>SDで10分、再度SD>PCで10分。つまり1G容量を増やすのに20分は最低かかりました。
*スマホでなくSDカード直挿しでも行けますね。''速度が桁違いです。''

始めてDropBoxを利用する方は、誰かの紹介で登録すれば+250Mのボーナスを登録者と紹介者の両方が受け取れます。
廻りの誰かが既に使っている場合はその方とボーナスが共有できますのでお得です。

ちなみに私とボーナスを共有していただける場合はこちらから登録をどうぞ。→http://db.tt/BOZ92h9
!ファイルの保存先
スケッチアップのインストールフォルダ内に「Plugins」フォルダがあります。
ダウンロードしたプラグインファイルはこのフォルダに直接置けば動作します。
スケッチアップの起動中にインストールした場合、スケッチアップの再起動が必要です。

私のVista環境ではここです。
[img[img/plugin_install_folder.png]]

!RSシリーズで注意するところ

RSシリーズではだいたいアイコンがセットになっていて、同梱のテクスチャ等をまとめて「rsico」フォルダに置いてあります。
この「rsico」フォルダは、ここで配布しているプラグイン共通のものです。
そのためここで配布している何かしらのプラグインをインストールするする際に、一つでも拙作プラグインがインストールされている場合は必ずフォルダの上書きを聞いてきますが''気にしないで上書きしてください。''

*[[公式サイト|http://www.sketchup.com/intl/en/developer/?hl=ja]]
<<showtoc>>
!レイヤ関連
!!共通事項
冒頭に
{{{
model = Sketchup.active_model
layers = model.layers
}}}
の記述をお忘れなく。

!!レイヤを追加するメソッド
{{{
  def add_layer(layer_name)
    layers = Sketchup.active_model.layers
    layers.add layer_name unless layers.include?(layer_name)
  end #def
}}}

!!アクティブレイヤ(書き込みレイヤ)の変更
{{{
model.active_layer = layers["レイヤ名"]
}}}


!!要素を指定レイヤに描画・移動
{{{
entities.layer = "レイヤ名"
}}}

!!レイヤの可視・不可視
不可視化
{{{
layers["レイヤ名"].visible = false
}}}

可視化
{{{
layers["レイヤ名"].visible = true
}}}

!マテリアル関連
!!テクスチャマテリアル登録メソッド
マテリアル名が既に存在している場合は登録せずに終了する。
{{{
  def add_textured_material(material_name ,texture_file ,texture_size ,alpha)
    materials = Sketchup.active_model.materials
    check = false
    for mt in materials
      check = true if material_name == mt.name
    end #for
    if check == false
      material = materials.add material_name
      material.texture = texture_file
      material.texture.size = texture_size
      material.alpha = alpha
    end #if
  end #def
}}}
!!カラーマテリアル登録メソッド
マテリアル名が既に存在している場合は登録せずに終了する。
{{{
  def add_color_material(material_name ,r ,g ,b ,alpha)
    materials = Sketchup.active_model.materials
    check = false
    for mt in materials
      check = true if material_name == mt.name
    end #for
    if check == false
      material = materials.add material_name
      material.color=Sketchup::Color.new [ r , g , b ]
      material.alpha = alpha
    end #if
  end #def
}}}
!!マテリアルを面に適用
{{{
  face.material = clr1
}}}
裏面は
{{{
 face.back_material = clr1
}}}
両面に適用する場合は
{{{
  face.material = face.back_material = clr1
}}}
マテリアル名がskp内に定義されていない場合はエラーで停止する。

!!全てのマテリアルに対してテクスチャを色に変更してファイルサイズを軽くする一行メソッド
{{{
  def materials_to_colors
    Sketchup.active_model.materials.each{|tmp|tmp.texture=nil}
  end #def
}}}

!コンポーネント

!!コンポーネントを選択・尺度
{{{
  def flip_component
    model = Sketchup.active_model
    entities = model.active_entities
    ss = model.selection
    for tmp in ss
      if tmp.typename=="ComponentInstance"
        point=tmp.transformation.origin
        transform = Geom::Transformation.scaling point,-1,-1,1
        tmp.transform!(transform)
      end # if
    end # of for
  end # of def
}}}

!!コンポーネントを選択・回転
{{{
  def turn_component
    model = Sketchup.active_model
    entities = model.active_entities
    ss = model.selection
    for tmp in ss
      if tmp.typename=="ComponentInstance"
        point=tmp.transformation.origin
        vector = Geom::Vector3d.new 0,0,1
        transform = Geom::Transformation.rotation point,vector,3.14159265
        tmp.transform!(transform)
      end # if
    end # of for
  end # of def
}}}
上記の vector は回転軸。

平面上で回転させる時はZ軸となる Vector3d を指定する。

!!コンポーネントの位置
{{{
 point=tmp.transformation.origin
}}}

!編集関連

!!同一平面のエッジを整理
{{{
erase_coplanar_edges改
  planer_edge = []
    for tmp in entities
    if tmp.typename=="Edge" && tmp.faces.length==2 
      if tmp.faces[0].material == tmp.faces[1].material && tmp.faces[0].normal == tmp.faces[1].normal
        planer_edge.push(tmp)
      end
    end
  end
  for tmp in planer_edge
    tmp.erase!
  end
}}}

!!モデルと交差_1行スクリプト
{{{
  entities.intersect_with(true,[0,0,0],entities, [0,0,0],true,entities.collect)
}}}

!!面の表裏反転
面をオブジェクトに格納して
 例:
{{{
 face=entities.add_face pt
}}}
このfaceオブジェクトに対して
{{{
 face.reverse!
}}}
で面の表裏を反転。

* 「!」は破壊的メソッドの宣言用フッタ

!!元図の消去
メソッドの最後に
{{{
 entities.erase_entities ss
}}}

!!ソフトニング
{{{
      for j in entities
        if j.typename=="Edge"
          j.soft=true
          j.smooth=true
        end#if
      end # for
}}}
みたいな感じ。
softだけではエッジが消えるだけでスムージングはされない。
smoothとセットで使うといわゆるソフトニング効果。

!!グループ化
冒頭に
{{{
model = Sketchup.active_model
}}}
と記述してアクティブモデルを「model」に格納してあるとして。
{{{
entities=model.active_entities.add_group.entities
}}}
と書いた''以降''に生成されるエンティティはグループ化される。
今のところグループの階層化のやりかたは不明。
数カ所に上記コードを入れた場合は各々が別々にグループ化される。

注意
要素をP&Pで立体化する際、複数の条件で正負が決定されているようだが、これの規則が要素毎のグループ化で乱れてしまう。
これを制御するためにはP&Pではなく、ベクトルを具体的に指定できるFollwMeを使用する以外にはなさそうだ。

!!エラー処理
{{{
begin
#対象の処理
rescue
#エラー処理
end
}}}

!モデリング系

!!PushPull
上記と同様に
{{{
 face=entities.add_face pt
}}}
としてptオブジェクトから構成された面をfaceオブジェクトに格納して
{{{
 face.pushpull 100.cm
}}}
でプッシュプル完了。

!!面を張る一行スクリプト
所謂make_faceのようなもの
{{{
 entities.each {|tmp| tmp.find_faces if tmp.typename == "Edge"}
}}}
!!面の構成
座標の追い掛けは線と同様だが、同一平面上にないとエラーが出て処理中断

コードは上記の線を書く場合とほぼ同じで
{{{
 entities.add_face pt
}}}
でOK

幾つかの面構成パターーン
{{{
  def add_vert_square_face(z1,z2,x1,y1,x2,y2,mat)
    #垂直な矩形の面
    pt=[]
    pt<<[ x1 , y1 , z1 ]
    pt<<[ x1 , y1 , z2 ]
    pt<<[ x2 , y2 , z2 ]
    pt<<[ x2 , y2 , z1 ]
    face = Sketchup.active_model.active_entities.add_face pt
    face.material=face.back_material=mat
  end#def
}}}
{{{
  def add_horiz_face(z,x1,y1,x2,y2,x3,y3,x4,y4,mat)
    #水平な面
    pt=[]
    pt<<[ x1 , y1 , z ]
    pt<<[ x2 , y2 , z ]
    pt<<[ x3 , y3 , z ]
    pt<<[ x4 , y4 , z ]
    face = Sketchup.active_model.active_entities.add_face pt
    face.material=face.back_material=mat
  end#def
}}}
{{{
  def add_slant_face(z1,z2,x1,y1,x2,y2,x3,y3,x4,y4,mat)
    #傾斜面
    pt=[]
    pt<<[ x1 , y1 , z1 ]
    pt<<[ x2 , y2 , z1 ]
    pt<<[ x3 , y3 , z2 ]
    pt<<[ x4 , y4 , z2 ]
    face = Sketchup.active_model.active_entities.add_face pt
    face.material=face.back_material=mat
  end#def
}}}

上の2つを組み合わせてボックス生成
{{{
  def add_box(z1,z2,x1,y1,x2,y2,x3,y3,x4,y4,mat)
    #箱
    add_horiz_face(z1,x1,y1,x2,y2,x3,y3,x4,y4,mat)
    add_horiz_face(z2,x1,y1,x2,y2,x3,y3,x4,y4,mat)
    add_vert_square_face(z1,z2,x1,y1,x2,y2,mat)
    add_vert_square_face(z1,z2,x3,y3,x2,y2,mat)
    add_vert_square_face(z1,z2,x3,y3,x4,y4,mat)
    add_vert_square_face(z1,z2,x1,y1,x4,y4,mat)
  end#def
}}}

!!線
{{{
 i=0;pt=[]
 x=*;y=*;z=*
 pt[i]=[x,y,z];i=i+1
 x=*
 pt[i]=[x,y,z];i=i+1
 y=*
 pt[i]=[x,y,z]
 entities.add_line pt
}}}
で線。座標はいくつでも可。

↑この書き方がメジャーなのかと思って使っていたけど
{{{
 pt=[]
 x=*;y=*;z=*;pt<<[x,y,z]
 x=*;pt<<[x,y,z]
 y=*;pt<<[x,y,z]
 entities.add_line pt
}}}
という記述でも構わない。

セミコロンを使うのはケースバイケースとして、要素数を数える必要がない時にはこちらの方がシンプルかつRubyらしくて良い気がする。

!!円
{{{
 entities.add_circle(pt, Z_AXIS, 2.cm, 16)
}}}
左から・中心座標,鉛直な軸,半径,演習分割数

このままでは円の輪郭のみ
{{{
 circle = entities.add_circle($ptz, Z_AXIS, 2.cm, 16)
}}}
で格納してあとは面を張るなりそれをPushPullするなり

''既存face上に描いたcircleは、faceとしての取り扱いがうまくいかないっぽい''

!!FollowMe
線又はエッジに沿って立体を構成するので
仮に線を「line」面を「face」とすると
{{{
 face.followme line
}}}
で完了

''followmeはlineではうまくいかないことが多いのでEdgeを使う''


!その他

!!最初に書くこと
まずはSketchUpのRubyを宣言
{{{
  require 'sketchup.rb'
}}}

取り扱うデータの宣言として
{{{
  model=Sketchup.active_model
}}}

アクティブなエンティティを流用するために
{{{
  entities=model.active_entities
}}}

マテリアルを使うとき
{{{
  materials = model.materials
}}}

ビュー系を使うとき
{{{
  view =model.active_view
}}}

レイヤを使うとき
{{{
  layers = model.layers
}}}

選択要素を参照するとき(下記ではssに選択要素を格納)
{{{
  ss = model.selection
  for tmp in ss

  end#of for
}}}

*保存時に文字コードをUTF-8(BOM無し)にしておくと日本語が文字化けしない

!!透かし文字を配置する
{{{
 model = Sketchup.active_model
 # Add a note 1/10 ways down the screen and 1/10 ways right from the
 # upper left corner of model window.
 note = Sketchup.active_model.add_note "Hello World", 0.1, 0.1
}}}

座標はx,yの順。各値はウィンドウサイズを基準に0~1。
文字側の基点は左中。JWWで言うと「3」
程良い左上なら
{{{
note = Sketchup.active_model.add_note "Hello World", 0.02, 0.04
}}}
ぐらい。
レイヤを指定するなら
{{{
  note = Sketchup.active_model.add_note "Hello World", 0.02, 0.04
  note.layer="RSlayers_radio_1"
}}}
で可。RSlayersで使いたい。

!!メッセージボックスあれこれ
詳細はhttp://code.google.com/intl/ja/apis/sketchup/docs/ourdoc/ui.html
{{{
 result = UI.messagebox "Do you like cheese?", MB_YESNO
 if result == 6 # Yes
   UI.messagebox("Sketchup likes cheese, too.")
 end
}}}
でYes,Noの返事待。

!!~WebDialog
rbファイルで起動したhtmlダイアログはSUの制御下に置かれる。
htmlダイアログ内で操作された情報はjavascriptのfunctionを介して自身を呼び出したrbに送られる。
rbはadd_action_callbackで情報を受け取り、情報ごとに定義されたメソッドを実行する。

rbでは
{{{
    dlg.add_action_callback('RS_layer_check1') {|d,p|RSlayers.new.RS_layer_check1}
}}}
として「RS_layer_check1」というコールバックを受けて「RSlayers.new.RS_layer_check1」というメソッドを実行するように指定。

htmlでは
{{{
<script>
function RS_layer_check1() {window.location = 'skp:RS_layer_check1';}
</script>
}}}
というようにhead部分にscriptタグで囲んで定義。
上記では「RS_layer_check1()」というファンクションで「 'skp:RS_layer_check1'」としてSUに「RS_layer_check1」を渡している。
上記例ではファンクションとコールバックの名前が「RS_layer_check1」で同じだが、同一である必要はなし。
ファンクションを実行するためのフォームは、チェックボックスで例えると
{{{
<input type="checkbox" id="ch1"  onClick='RS_layer_check1();' checked><label for="ch1">外構 </label>
}}}
で、肝心なのは「onClick='RS_layer_check1();'」。ここでファンクションを返す。

!!ステータスバーメッセージ
{{{
statusbar_message = Sketchup.set_status_text "メッセージ"
}}}

!!1行InputBox
{{{
  num=UI.inputbox(["先頭の数字を指定"],[$number],"StereoGram")[0]
}}}

!!単位

デフォルトで数値を記入するとインチになる。

よってmmやcm等を使う場合には
{{{
 foo=2.cm
 hoo=20.mm
}}}
と記述する。

!!分割ダイアログ
ダイアログは二段構えで組めた。
RS階段では金物手摺を描くフラグを設定していたので、そのフラグ(金物手摺の高さがゼロより大)の場合だけ金物手摺の設定ダイアログが開くようにした。
デフォルトデータの受け渡し部分の記述に注意が必要だと感じてる。
XGAでは入力ボックスが19個で縦方向のピクセルサイズが760程度になるのでこれ以上は分岐する事。

!!アンドゥ制御
{{{
 model.start_operation "******"
}}}
をアンドゥ制御の始点に記述し、
{{{
 model.commit_operation
}}}
をアンドゥ制御の終点に記述。

!!FaceからEdgeを取得
{{{
 edges = face.edges
}}}
以上で格納完了。
{{{
 for outline in edges
 end
}}}
で全てを呼び出せる。

!!要素を隠す
{{{
  status = ss[lines].hidden = true
}}}
要注意:ここで指定できるのは'''単一のEntity'''であること。

複数のEntityは出来ないっぽい。

!!面の複製

ここでは「ss[i]」で選択要素を格納している
{{{
  if( ss[i].typename == "Face" )
    getface=[]
    ss[i].vertices.each {|p| 
      getface << p.position + [0,0,takasa]
    }
    face=entities.add_face getface
    face.material = face.back_material = clr0
  end
}}}
最後の方では表裏に色を塗っている為ここは無くても良し。

!!線に接する面の数

lineにEdgeが格納されているとして
{{{
 a=line.faces.length
}}}
でaにFaceの数が格納される


! Ruby基本

!!実数
{{{
.to_f
}}}

!!整数
{{{
.to_i
}}}

!!classを設定する

スクリプト先頭で
{{{
 class hoge
 .
 .
 end
}}}

!!変数
{{{
 $hoge
}}}
はグローバル関数。SUが再起動するまで継承される。
使いすぎるのはよろしくないもよう。

!!n乗
{{{
 x**n
}}}
でxのn乗

!!三角関数
{{{
 Math.sin(n)
 Math.cos(n)
 Math.tan(n)
}}}
など。 詳しくは[[こちら|http://www.ruby-lang.org/ja/man/?cmd=view;name=Math]]

!!乱数
{{{
 a = rand
}}}
で0~1未満の実数を返す。
{{{
 a = rand(100)
}}}
で0~100未満までの整数を返す。

!!値を入れ替える
{{{
 a , b = b , a
}}}

!!

!関数系
!!線分の角度を求める
{{{
 ss = model.selection
 for outline in ss
   if outline.typename == "Edge"
     p1 = outline.start.position
     p2 = outline.end.position
     angle = Math.atan2(p2.y-p1.y,p2.x-p1.x)
   end # of if
 end
}}}
これが基本。y/x のアークタンジェントを ラジアン[-π, π] の範囲で返す組み込み関数。

ss[i]にエッジが格納されていたとして、両端点の座標を取得するには
{{{
 pts = ss[i].vertices
 p1 = pts[0].position
 p2 = pts[1].position
}}}
又は
{{{
 p1=ss[i].start.position
 p2=ss[i].end.position
}}}
と記述。この2点から角度を求めるためにp1座標を原点に変換し、atan2に流し込む。
{{{
 Math.atan2(p2.y-p1.y,p2.x-p1.x)
}}}
これでXY平面上での角度が求められる。

!!点と点の距離
{{{
  p1 = Geom::Point3d.new 1,1,1
  p2 = Geom::Point3d.new 10,10,10
  d = p1.distance p2
}}}

!!2次元ベクトルの延長点
P1(x1,y1),P2(x2,y2)からなる線分のP2端からex延長した点P3(x3,y3)
{{{
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      x3=x1+ex*(x1-x2)/vl)
      y3=y1+ex*(y1-y2)/vl)
}}}

P1からの延長点は
{{{
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      x3=x1+ex*(x2-x1)/vl)
      y3=y1+ex*(y2-y1)/vl)
}}}

メソッド化
{{{
  def get_extend_point_x(x1,y1,x2,y2,ex)#p1延長
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      return x1+ex*(x2-x1)/vl
  end #def
}}}
{{{
  def get_extend_point_y(x1,y1,x2,y2,ex)#p1延長
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      return y1+ex*(y2-y1)/vl
  end #def
}}}

複数の戻り値を配列で返す
{{{
  def get_extend_point(x1,y1,x2,y2,ex)#p1延長
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      return x1+ex*(x2-x1)/vl,y1+ex*(y2-y1)/vl
  end #def
}}}


!!線端点からの鉛直点
※方向は制御し難い
{{{
  def get_vert_point_x(x1,y1,x2,y2,ex)
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      return x1+ex*(y2-y1)/vl)
  end #def
}}}
{{{
  def get_vert_point_y(x1,y1,x2,y2,ex)
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      return y1-ex*(x2-x1)/vl)
  end #def
}}}
{{{
  def get_vert_point_x2(x1,y1,x2,y2,ex)
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      return x1-ex*(y2-y1)/vl)
  end #def
}}}
{{{
  def get_vert_point_y2(x1,y1,x2,y2,ex)
      vl=Math.sqrt((x2-x1)**2+(y2-y1)**2)
      return y1+ex*(x2-x1)/vl)
  end #def
}}}

!!点と線分の距離
{{{
  def get_distance_p_l(xx, yy, x1, y1, x2, y2)
    dx = (x2 - x1)
    dy = (y2 - y1)
    a = dx**2 + dy**2
    b = dx * (x1 - xx) + dy * (y1 - yy)
    t = -b / a
    t = 0 if t < 0
    t = 1 if t > 1
    tx = x1 + dx * t
    ty = y1 + dy * t
    distance = Math.sqrt((xx - tx)**2 + (yy - ty)**2)
    return distance
  end #def
}}}

!ファイル系
!!ファイルを開いて処理して閉じる
{{{
  File::open("index.html") {|f|
    while line = f.gets
      print line
    end
  }
}}}
!!ファイルに書きこむ
{{{
  foo = File.open("foo.txt",'w')
  foo.puts 'bar'
  foo.close
}}}
!!フォルダ名を取得する
{{{
File.dirname("/usr/local/bin/ruby") #=> "/usr/local/bin"
}}}

!属性辞書
!!基本的な使い方
{{{
 model = Sketchup.active_model
 value = model.set_attribute "testdictionary", "test", 115
}}}
上記では「testdictionary」という辞書のカテゴリを作成し、「test」という項目に「115」という値を与えている。

{{{
 attrdicts = model.attribute_dictionaries
 attrdict = attrdicts["testdictionary"]
}}}
「attrdicts」にモデル内の属性辞書を格納し、「attridict」に「testdictionary」を格納している。

{{{
value = attrdict["test"]
}}}
「testdictionary」内の「test」の値を取得。
!!SU7.1で再現する問題
中身が空でタイトルだけのdictionaryを作成したファイルは二度と開けないもよう
「setting」>「Sun and Sky...」で最初に選択する位置情報を管理しているファイルがあります

[img[img/kt_001.gif]]

ここでモデルの地球上の位置情報を設定するのですが、ロケーションファイルでこのリストを編集できます。
[img[img/kt_002.gif]]

ロケーションファイルの場所はここです
[img[img/kt_003.gif]]
元のファイルも名前を変えて保存しておきましょう。

上のサンプルで使用しているロケーションファイル(locations.txt)の内容は以下です。

}}}
% Japan
       Japan
        kagoshima                 31 56' N    130 55' E +9 G
        Fukuoka                   33 35' N    130 27' E +9 G
        Sapporo                   43 4' N     141 21' E +9 G
        Tokyo                     35 41' N    139 46' E +9 G
}}}
ソリッド図形で構成された平面図用の人物添景です。
モデルはyo-1さんです。
yo-1a~yo-1dは通常のソリッド
yo-1e~yo-1hは線形ソリッドでスケール次第では半透明の様な効果が得られます
[img[img/yo-1.gif]]

[[Download|http://hinoado.com/r/d/yo%252d1.lzh]]

2004.5.6公開
!概要
内部仕上表をエクセルで作成する雛形ファイルです.
JWWの図面とするにはx-j等のJWW<>Excel変換ソフトを必要とします.

[[Download|http://hinoado.com/r/d/surface.lzh]]

※だいぶ古いデータです.特に更新してません.

!使い方
!!出来ること
1 	ウィンドウ分割を固定して
室名及び部位を確認しながら入力する
2 	部位の欄をダブルクリックでマスターデータの
該当項目へジャンプして編集可
3 	入力はデータベースからの入力規則による
マウス選択で行う(セル内でも書き換え可)
4 	コンボボックスで室タイプを選択し
タイプ別マスターデータから取込可
5 	備考の項目をマウスで選択して
プレビューで確認した後備考欄に転送
6 	耐火やその他の仕様についての
特記事項を別枠で作成する
7 	特記事項もコンボボックスで項目を選択し
マスターデータから取込可
8 	X-J等でJWに出力するための罫線の記入
その他空欄の隠蔽等の書式の調整をマクロで行う
!!マクロボタン
[img[img/surface_01.png]]
''消去'' 	仕上表の内容を消去します
''入力'' 	セルを全て表示して編集可能な状態にします(次項の復帰)
''出力スタイル'' 	空白のセルを非表示にする等の書式の調整を行います
''コンボボックス'' 	マスターデータの名称を選択します
''<Import'' 	前項で選択されたマスターをアクティブセルのある行に取り込みます
''その他'' 	該当部位へスライドします


その他備考欄の作成等幾つかの機能があります
!目的
私は通常JWWファイルのファイル名の先頭に「001**」とナンバリングし、変更が入ると「002**」とカウントアップして管理しています。
これを毎回ファイルをコピーして名前を変えてダブルクリックして開くというのが面倒だったのでvbsで自動化してみました。
!使い方
copyas.vbsとそれを単に実行ファイル化したcopyas.exeの2つを同梱してあります。
2つともやることは同じです。
ですが[[contexter|https://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=contexter&qscrl=1]]のようなソフトで右クリックのコンテキストメニューに登録して使おうとしたところ、私のWin7 64bit環境のせいかvbs版ではうまく"%1"の引数が渡りませんでした。
思いつきでexe化したら右クリックメニューでもきちんと動作できたのでexe版が存在しています。
ちなみにexe化は[[MakeExe|http://www.vector.co.jp/soft/dl/winnt/prog/se389017.html]]を使用させて頂きました。
!何をするか
このスクリプトはD&Dあるいは右クリックメニューからファイルを受け取ると、まずファイルヘッダを観察します。
デフォルトでは最初の3文字を見て、数字であればファイル名を1だけカウントアップして表示します。
「001hogehoge.txt」の場合は「002hogehoge」と表示されます。
数字でなければそのまま表示します。
表示されるファイル名は拡張子を除いた部分のみで、拡張子の変更は出来ません。
ファイル名が確定したら「OK」を押して下さい。
新しいファイル名と同名のファイルが存在した場合は「同名のファイルが存在します.上書きしますか?」と聞いてきます。
新しいファイル名でファイルをコピーした後、1500ミリ秒待ってからコピーされたファイルを関連付けで開きます。
この1500ミリ秒はただ単にエクセルなどの大きめのファイルを開く時にWaitを掛けないと開いてくれないことが多かったので、適当に決めました。
!ダウンロード

[[ダウンロードはこちらから|http://hinoado.com/r/d/copyas.lzh]]
*copyas.vbs
*copyas.exe
の2つのファイルをLHA圧縮してあります。
copyas.vbsはソースそのものですので自由にカスタムしてもらって構いません。
ただ右クリックで使うにはexe化が必要かもしれませんのでその時は上記[[MakeExe|http://www.vector.co.jp/soft/dl/winnt/prog/se389017.html]]などでexeファイル化するのを忘れないで下さい。
桁数を変更するのは11行目辺りにある「keta = 3 」の「3」をいじればOKです。
四辺と面積が把握できている場合に対角線を求めて形状を決定するためのツールです。
[[こちら|http://bit.ly/xTLbFw]]の記事を参考にしました。
エクセルのゴールシーク機能を使ったごくシンプルなワークブックです。
マクロのセキュリティを「中」以下にして実行して下さい。
[[DownLoad|http://hinoado.com/r/d/HeronsFormulax2.xls]]
<<showtoc>>
!国土地理院のデータをJWWに取り込めるソフト
[[VectorMapMaker|http://www.geocities.jp/morita_shin2/vectormapmaker/vectormapmaker.htm]]
道路や建物まで入れられるので便利です。
~JW_CADで外部変形等を作成する際にエクセルで用いるプロシージャ集の備忘録
<<showtoc>>
!jwc_temp.txt解析
!!外変か編集モードかを判断する
{{{
Private Sub Workbook_Open()
  If Dir(ThisWorkbook.Path & "/jwc_temp.txt") <> "" Then
    a = FileDateTime(ThisWorkbook.Path & "/jwc_temp.txt")
    If Abs(DateDiff("s", Now(), a)) < 10 Then main
  End If
End Sub
}}}
起動時に現在時刻とjwc_temp.txtのタイムスタンプを比較して、10秒以内なら外変として起動し、それ以外ならマクロを実行しないプロシージャ。
~ThisWorkBookに記述する。

!!アクティブスケール取得
{{{
 Sub Get_Scale(Active_Scale)
 Application.StatusBar = "スケールを取得しています"
 Set tf = CreateObject("Scripting.FileSystemObject")
 Set tf_txt = tf.OpenTextFile(ThisWorkbook.Path & "\jwc_temp.txt", 1, True)
 Do Until tf_txt.AtEndOfStream
    tmp = tf_txt.readline                       '1行読み込み
    If Left(tmp, 2) = "hs" Then scale_tmp1 = Split(tmp, " ")
    If Left(tmp, 2) = "lg" Then
        scale_tmp2 = Val("&H" & Right(tmp, 1)) + 1
        Active_Scale = scale_tmp1(scale_tmp2)
        Exit Do
    End If
 Loop
 End Sub
}}}

!!作業ファイルのフォルダパスを取得
{{{
REM  #hf
}}}
が必要
{{{
Sub Get_jwc_temp_path(currentpath)
  'Call Get_jwc_temp_path(currentpath)
  '最後に「¥」を付加済
  Set tf = CreateObject("Scripting.FileSystemObject")
  Set tf_txt = tf.OpenTextFile(ThisWorkbook.Path & "\jwc_temp.txt", 1, True)
  Do Until tf_txt.AtEndOfStream
    tmp = tf_txt.readline
    If Left(tmp, 5) = "file=" Then
      a = Right(tmp, Len(tmp) - 5)
      b = Split(a, "\")
      c = ""
      For i = 0 To UBound(b) - 1
        c = c & b(i) & "\"
      Next
      currentpath = c
      MsgBox c
      End
    End If
  Loop
End Sub
}}}

!!ファイル名を含むフルパスを取得(#hfが指定された場合)
{{{
 Sub Get_Path(File_Path)
 'パスを取得(#hfが指定された場合)
 'Call Get_Path(File_Path)
 Set tf = CreateObject("Scripting.FileSystemObject")
 pth = ThisWorkbook.Path
 Set tf_txt = tf.OpenTextFile(pth & "\jwc_temp.txt", 1, True)
 Do Until tf_txt.AtEndOfStream
    tmp = tf_txt.readline                       '1行読み込み
    If Left(tmp, 5) = "file=" Then
        File_Path = Right(tmp, Len(tmp) - 5)
        Exit Do
    End If
 Loop
 End Sub
}}}

!!作図基点を取得
"hp"に求める基点の番号を指定し戻り値のx0,y0を記してCallで呼びます。
ex:
{{{
 Call Get_hp(2 ,x0 ,y0)
}}}

{{{
 Sub Get_hp(hp, x, y)
 Application.StatusBar = "基点を取得しています"
 Set tf = CreateObject("Scripting.FileSystemObject")
 pth = ThisWorkbook.Path
 Set tf_txt = tf.OpenTextFile(pth & "\jwc_temp.txt", 1, True)
 Do Until tf_txt.AtEndOfStream
    tmp = tf_txt.readline                       '1行読み込み
    If Left(tmp, 3) = "hp" & Right(Str(1), 1) Then
        kiten_tmp = Split(Right(tmp, Len(tmp) - 6))
        x = Val(kiten_tmp(0))
        y = Val(kiten_tmp(1))
        Exit Do
    End If
 Loop
 End Sub
}}}

!!アクティブグループを取得
{{{
Call Get_Active_Group(AG)
}}}
{{{
Sub Get_Active_Group(AG)
'アクティブグループを取得
Set tf = CreateObject("Scripting.FileSystemObject")
Set tf_txt = tf.OpenTextFile(ThisWorkbook.Path & "\jwc_temp.txt", 1, True)
Do Until tf_txt.AtEndOfStream
   tmp = tf_txt.readline                       '1行読み込み
   If Left(tmp, 2) = "lg" Then
       AG = tmp
       Exit Do
   End If
Loop
End Sub
}}}

!!jwc_temp.txt内から線色定義を探す
{{{
 Sub linecolor_get(tmp, lc_tmp)
 'jwc_temp.txt内から線色定義を探す
    Dim a, b
    a = Split(tmp)                          'スペースで切り分け
    b = UBound(a)                           '切り分けられた区分数を取得
    If b = 0 And Left(a(0), 2) = "lc" Then  '線色定義文字列の場合
        lc_tmp = Right(a(0), 1)             '線色を「lc_tmp」に格納
    End If
 End Sub
}}}

!!jwc_temp.txt内から線種定義を探す
{{{
 Sub linetype_get(tmp, lt_tmp)
 'jwc_temp.txt内から線種定義を探す
    Dim a, b
    a = Split(tmp)                          'スペースで切り分け
    b = UBound(a)                           '切り分けられた区分数を取得
    If b = 0 And Left(a(0), 2) = "lt" Then  '線種定義文字列の場合
        lt_tmp = Right(a(0), 1)             '線種を「lt_tmp」に格納
    End If
 End Sub
}}}

!!jwc_temp.txt内からレイヤグループ定義を探す
{{{
 Sub group_get(tmp, lg_tmp)
 'jwc_temp.txt内からレイヤグループ定義を探す
    Dim a, b
    a = Split(tmp)                          'スペースで切り分け
    b = UBound(a)                           '切り分けられた区分数を取得
    If b = 0 And Left(a(0), 2) = "lg" Then  'レイヤグループ定義文字列の場合
        lg_tmp = Right(a(0), 1)             'レイヤグループ番号を「ly_tmp」に16進数で取得
    End If
 End Sub
}}}

!!jwc_temp.txt内からレイヤ定義を探す
{{{
 Sub layer_get(tmp, ly_tmp)
 'jwc_temp.txt内からレイヤ定義を探す
    Dim a, b
    a = Split(tmp)                          'スペースで切り分け
    b = UBound(a)                           '切り分けられた区分数を取得
    If b = 0 And Left(a(0), 2) = "ly" Then  'レイヤ定義文字列の場合
        ly_tmp = Right(a(0), 1)             'レイヤを「ly_tmp」に格納
    End If
 End Sub
}}}

!!文字種からサイズを取得
{{{
 Sub Get_ch_size(no, cw, ch, cd)
 '文字種2を取得する場合は
 'Call Get_ch_size(2, hcw, hch, hcd)
 Set tf = CreateObject("Scripting.FileSystemObject")
 Set tf_txt = tf.OpenTextFile(ThisWorkbook.Path & "\jwc_temp.txt", 1, True)
 Do Until tf_txt.AtEndOfStream
    tmp = tf_txt.readline                       '1行読み込み
    If Left(tmp, 3) = "hcw" Then
        cw_tmp = Split(tmp)
        cw = Val(cw_tmp(no))
        tmp = tf_txt.readline
        ch_tmp = Split(tmp)
        ch = Val(ch_tmp(no))
        tmp = tf_txt.readline
        cd_tmp = Split(tmp)
        cd = Val(cd_tmp(no))
        Exit Do
    End If
 Loop
 End Sub
}}}

!ファイル処理
!!外部テキストファイルの参照
{{{
 Dim tf
 Set tf = CreateObject("Scripting.FileSystemObject")
 Set tf_txt = tf.OpenTextFile(thisworkbook.path & "\jwc_temp.txt", 1, True)
 Do Until tf_txt.AtEndOfStream
   tmp = tf_txt.readline    '1行読み込み
     'ここに処理を記述
 Loop
}}}

!!テキストファイルの書き出し
{{{
 Dim fs
 Dim jwtmp
 Set fs = CreateObject("Scripting.FileSystemObject")
 Set jwtmp = fs.CreateTextFile("jwc_temp.txt", True)
    jwtmp.writeline("書き出す内容")
 jwtmp.close
}}}

!!ファイルの有無をチェック
{{{
If fso.FolderExists(full_path) Then
  Call Shell("explorer.exe  " & full_path, 1)
Else
  MsgBox ("No exist")
End If
}}}

{{{
  If Dir("ファイルのフルパス" ) <> "" Then
    MsgBox "Exist"
  Else
    MsgBox "No exist"
  End If
}}}

!!ファイルリスト取得
{{{
Sub カレントフォルダ内でxlsファイルを探す()
  Columns("A:A").ClearContents
    Dim Path_name As String
    Dim File_name As String
    Dim row As Long
    row = 1
    Path_name = ThisWorkbook.Path
    File_name = Dir(Path_name & "\*.*", vbNormal)
    Do While File_name <> ""
      row = row + 1
      Cells(row, 1).Value = File_name
      File_name = Dir()
    Loop
End Sub
}}}
!!フォルダの有無をチェック
{{{
  If Dir("フォルダのフルパス", vbDirectory ) <> "" Then
    MsgBox "Exist"
  Else
    MsgBox "not Exist"
  End If
}}}

!!フォルダを作成する
~CHDirでカレントフォルダを設定可。フルパス表記も可。
{{{
MkDir "フォルダ名"
}}}

!!フォルダを開く
{{{
Shell "explorer " & フォルダ名, vbNormalFocus
}}}
!!ファイルを開く
{{{
Shell "explorer " & ファイル名, vbNormalFocus
}}}

!!ファイルをコピー
{{{
FileCopy ファイル名
}}}

ファイル名を変更してコピーする場合は
{{{
FileCopy ファイル名 , 変更後のファイル名
}}}

!!バックアップを作成
{{{
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
path1 = ThisWorkbook.Path & "\bak"
  If Dir(path1, vbDirectory) = "" Then
    MkDir path1
  End If
path2 = ThisWorkbook.Path & "\bak\" & Replace(Date, "/", "") & "_" & ThisWorkbook.Name
ThisWorkbook.SaveCopyAs path2
End Sub
}}}
~ThisWorkBook内に記述。
上記のプロシージャではカレントフォルダ内に「bak」フォルダを(無ければ)作成し、ファイル名のヘッダに「日付」を付けて保存している。
一日作業分の最終上書き直前のファイルを退避させている。
保存間隔を時間単位にするときなどは調整が必要。

!!テキストファイルを文字コードUTF-8N指定で出力する
{{{
  'オブジェクトを作成
    Dim tmp_txt As Object
    Set tmp_txt = CreateObject("ADODB.Stream")
  
  'オブジェクトに保存するデータの種類を文字列型に指定する
    tmp_txt.Type = 2
  
  '文字列型のオブジェクトの文字コードを指定する
    tmp_txt.Charset = "UTF-8"
  
  'オブジェクトのインスタンスを作成
    tmp_txt.Open
    'ファイル内容をtmp_txtに格納
    tmp_txt.WriteText "", 1
    tmp_txt.WriteText "require 'sketchup.rb'", 1
  
  'オブジェクトの内容をファイルに保存
    '念のため最後に空白行を格納
      tmp_txt.WriteText "", 1
      tmp_txt.SaveToFile file_name, 2
    '先頭のBOM取り(UTF-8 -> UTF-8N)
      Dim bytData() As Byte
      With tmp_txt
        .Position = 0
        .Type = 1
        .Position = 3
        bytData = .Read
        
        .Position = 0
        .Type = 1
        .Write bytData
        .SaveToFile file_name, 2
        .Close
      End With
  
  'メモリからオブジェクトを削除する
    Set tmp_txt = Nothing
}}}

!関数
!!Format関数
{{{
 Format(5459.4,"##,##0.00")
}}}
さらに詳細は[[こちら|http://members.jcom.home.ne.jp/rex-uchida/vba051.htm]]

|General Number|指定された数値をそのまま返します。|例:MsgBox Format(100000,"General Number") → 100000|
|Currency|通貨や1000単位の区切り記号などを、スタートメニューの「設定」「コントロールパネル」「地域」を選択して、「通貨タブ」で設定された書式に変換した値を返します。|例:MsgBox Format(100000,"Currency") → \100,000|
|Fixed|整数部を最低 1 桁、小数部を最低 2桁表示する書式に変換した値を返します。|例:MsgBox Format(1000.234,"Fixed") → 1000.23|
|Standerd|整数部を最低 1 桁、小数部を最低 2桁表示する書式に変換した値を返します。(1000単位の区切り記号・・・「 , 」を付けます。|例:MsgBox Format(1000.234,"Standard") → 1,000.23|
|Percent|指定された数値を100倍して、小数部を最低 2桁表示する書式に変換した値を返します。(1000単位の区切り記号・・・「 , 」を付けます|例:MsgBox Format(0.234,"Percent") → 23.40%|
|Scientific|標準的な科学記法の書式に変換した値を返します。|例:MsgBox Format(0.234,"Scientific") → 2.34E-01|
|Yes/No|指定された値が 0 の場合は No、それ以外の場合にはYes を返します。|例:MsgBox Format(0,"Yes/No") → No|
|True/False|指定された値が 0 の場合は (False)、それ以外の場合には(True) を返します。|例:MsgBox Format(0,"True/False") → FALSE|
|On/Off|指定された値が 0 の場合はOff、それ以外の場合には On を返します。|例:MsgBox Format(0,"On/Off") → Off|
|Scientific|標準的な科学記法の書式に変換した値を返します。|例:MsgBox Format(0.234,"Scientific") → 2.34E-01|
|0000|指定された値が 指定した桁数以下の場合0を付した書式に変換した値を返します。|例:MsgBox Format(411,"0000")|
|####|指定された値の整数部を返します。|例:MsgBox Format(411,"####") → 411|
|0.00|指定された値を指定した少数桁表示する書式に変換した値を返します。|例:MsgBox Format(196.5,"0.00") → 196.50|
|0%|指定された値を %に変換した値を返します。|例:MsgBox Format(0.35,"0%") → 35%|


!!ソリッド色コードをRGB(Dec)に変換

{{{
Sub solidcode_to_rgb(clr, r, g, b)
'Call solidcode_to_rgb(clr, r, g, b)
  clrhex = Hex(clr)
  clrhex = String(6 - Len(clrhex), "0") & clrhex
  r = CLng("&H" & Mid(clrhex, 5, 2))
  g = CLng("&H" & Mid(clrhex, 3, 2))
  b = CLng("&H" & Mid(clrhex, 1, 2))
End Sub
}}}

!!線分の長さ
{{{
  lngth = ((x1 - x2) ^ 2 + (y1 - y2) ^ 2) ^ 0.5
}}}

!!線分と任意の点に対する垂線の交点
{{{
call vertical_cross(x1,y1,x2,y2,px,py,vx,vy)
}}}
{{{
sub vertical_cross(x1,y1,x2,y2,px,py,vx,vy)
  '任意の点から線分に下ろした垂線の交点座標
  vx = ((py - y1) * (y1 - y2) * (x1 - x2) + px * (x1 - x2) ^ 2 - x1 * (y1 - y2) ^ 2) / ((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
  vy = ((px - x1) * (x1 - x2) * (y1 - y2) + py * (y1 - y2) ^ 2 - y1 * (x1 - x2) ^ 2) / ((y1 - y2) ^ 2 + (x1 - x2) ^ 2)
end sub
}}}

!!バブルソート
値の小さい方が若い番号に格納されます
{{{
  For i = 1 To D - 1
    For j = i To D
      If Dt(i) > Dt(j) Then
        Tp = Dt(i)
        Dt(i) = Dt(j)
        Dt(j) = Tp
      End If
    Next j
  Next i
}}}

!!点が多角形の内部にあるか
{{{
 Sub in_out_check(bs, xx, yy, x1, y1, x2, y2, in_out)
 in_out = False
 sub_row = bs.Cells(Rows.Count, 1).End(xlUp).Row
 For check_row = 2 To sub_row 
    x1 = bs.Cells(check_row, 1) - xx
    y1 = bs.Cells(check_row, 2) - yy
    x2 = bs.Cells(check_row, 3) - xx
    y2 = bs.Cells(check_row, 4) - yy
    If y1 * y2 > 0 Then GoTo bottom
    If x1 < 0 And x2 < 0 Then GoTo bottom
    If x1 + y1 * (x2 - x1) / (y1 - y2) >= 0 Then
        check_count = check_count + 1
    End If
 bottom:
 Next check_row
 If check_count Mod 2 = 1 Then in_out = True
 End Sub
}}}
 callで呼び出します
:bs:多角形座標が転記されているシート名
:xx:対象点X座標
:yy:対象点Y座標
:x1,y1,x2,y2:線分の端部座標
:check_count:交差回数(奇数ならば多角形内部にある)
:in_out:内部ならtrue 外部ならfalseを返します
多角形座標をシートに転記した場合で記述してあります。
メイン部分は代入が終わった後のif文以降ですので
必要に応じて書き換えてください

十分な長さを持つ線分と、多角形の各辺が交わる回数が
・奇数であれば多角形内
・偶数ならば多角形外
という定理を使用しています。

点1を原点として、各辺がX軸と交差するかどうかを全ての辺に対して判定し、
交差した回数を観察して判定させています。

!!多角形ソリッド図形の面積取得
{{{
 Sub solid_s_get(tmp, s)
 temp = tmp & " 0 0"
 s = 0
 a = Split(temp)
 If UBound(a) = 8 Then a(7) = a(1): a(8) = a(2)
    If UBound(a) >= 8 And a(0) = "sl" Then 
        
        x0 = Val(a(1))             '各座標を格納
        x1 = 0
        x2 = (a(3) - x0) / 1000
        x3 = (a(5) - x0) / 1000
        x4 = (a(7) - x0) / 1000
        y0 = Val(a(2))
        y1 = 0
        y2 = (a(4) - y0) / 1000
        y3 = (a(6) - y0) / 1000
        y4 = (a(8) - y0) / 1000
 
        la1 = Sqr((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
        la2 = Sqr((x2 - x3) ^ 2 + (y2 - y3) ^ 2)
        la3 = Sqr((x3 - x4) ^ 2 + (y3 - y4) ^ 2)
        la4 = Sqr((x4 - x1) ^ 2 + (y4 - y1) ^ 2)
        la5 = Sqr((x3 - x1) ^ 2 + (y3 - y1) ^ 2)
 
        sh1 = (la1 + la2 + la5) / 2
        s1 = Sqr(sh1 * (sh1 - la1) * (sh1 - la2) * (sh1 - la5))
        sh2 = (la3 + la4 + la5) / 2
        s2 = Sqr(sh2 * (sh2 - la3) * (sh2 - la4) * (sh2 - la5))
 
        s = s1 + s2
            
    End If
 End Sub
}}}

※使用例
{{{
 tmp = jwc_temp_txt.readline
 s=0
 call solid_s_get(tmp, s)
}}}
tmpにはjwc_temp.txtから読み込んだ1行を代入する
sは戻り値を得るためのダミーとして0値を代入しておく

!!2点の角度を求める
{{{
call get_angle(x1, y1, x2, y2, angl)
 Sub get_angle(x1, y1, x2, y2, angl)
    '原点に対して2点間の角度を求める
    pai = 3.14159265358979
    xx = x2 - x1: yy = y2 - y1
    If yy = 0 Then
        If 0 < xx Then angl = 0
        If xx < 0 Then angl = pai
        GoTo endline
    End If
    If xx = 0 Then
        If 0 < yy Then angl = pai / 2
        If yy < 0 Then angl = -pai / 2
        GoTo endline
    End If
    angl = Atn(yy / xx)
    If xx < 0 Then angl = angl + pai
 endline:
 End Sub
}}}
:x1,y1,x2,y2:各点の各座標
:angl:点1を原点として点2がなす角度を反時計回りに計算して返します
!!点と線分の距離
{{{
 Sub get_distance_p_l(xx, yy, x1, y1, x2, y2, distance)
   'Call get_distance_p_l(xx, yy, x1, y1, x2, y2, distance)
    dx = (x2 - x1): dy = (y2 - y1)
    a = dx ^ 2 + dy ^ 2: b = dx * (x1 - xx) + dy * (y1 - yy)
    t = -b / a
    If t < 0 Then t = 0
    If t > 1 Then t = 1
    tx = x1 + dx * t: ty = y1 + dy * t
    distance = Sqr((xx - tx) ^ 2 + (yy - ty) ^ 2)
 End Sub
}}}
distanceに距離を返す

!!座標の回転
{{{
call rotate(x, y, angl, rx, ry)
}}}
{{{
Sub rotate(x, y, angl, rx, ry)
  rx = Cos(angl) * x - Sin(angl) * y
  ry = Sin(angl) * x + Cos(angl) * y
End Sub
}}}
角度はラジアン

!!文字列置換
変数としてコード内で使う場合
{{{
Temp = Replace( Text , "a" , "b" )
}}}
↑Textの中にあるaをbに置換してTempに格納

!!VBA_LenBで正確に数える
{{{
LenB(StrConv(対象文字列, vbFromUnicode))
}}}
全角と半角が混合された文字列では、Len関数及び~LenB関数では正確な文字数がカウントできない。
そのため~StrConvを挟んで一度変換する必要がある。

!!文字列から数値を抽出
{{{
Sub numerize(txt, t2)
  t1 = StrConv(txt, vbNarrow)
  t2 = ""
  For i = 1 To Len(t1)
    t3 = Mid(t1, i, 1)
    If t3 Like "[0-9]" Or t3 = "." or t3="-" Then t2 = t2 & t3
  Next
End Sub
}}}
或いは手続きとして
{{{
Function Numerize(ByVal txt As String)
  t1 = StrConv(txt, vbNarrow)
  t2 = ""
  For i = 1 To Len(t1)
    t3 = Mid(t1, i, 1)
    If t3 Like "[0-9]" Or t3 = "." Or t3 = "-" Then t2 = t2 & t3
  Next
  Numerize = t2
End Function
}}}
!ワークシート系
!!フリガナを打つユーザー関数
以下のコードを標準モジュールに追加
{{{
Function getruby(a)
getruby = Application.getphonetic(a)
End Function
}}}
セルに「=ruby(セル番地)」として呼び出す。

!!クリップボードにコピー
{{{
Dim text As String
Dim CB As New DataObject
text = "コピー!"
With CB
    .SetText text
    .PutInClipboard
End With
}}}

!!印刷
{{{
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
}}}

!!書式の変更を許可したシートプロテクト
{{{
  ActiveSheet.Protect AllowFormattingCells:=True
}}}

!!指定行にジャンプ
{{{
 ActiveWindow.ScrollRow = 10
}}}

!!入力規則
リストの内容を直接指定する場合
{{{
   With Sheets("シート名").Cells(y,x).Validation
         .Delete
         .Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=規則内容
         .ShowError = False
   End With
}}}
規則内容は「a,b,c,....」のように半角コンマで接続して記述すること
文字数上限255文字に注意

リストの内容にセル範囲を指定する場合
{{{
    With Sheets("シート名").Cells(y,x).Validation
        .Delete
        .Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="=$y$x:$y$x"
    End With
}}}

!!新しいウィンドウを開く
{{{
 ActiveWorkbook.NewWindow
}}}
この一行だけ。

!!GoogleMapを開く
{{{
Sub open_google_map()
On Error GoTo endline
Dim objIE As Object, rowno As Integer
Set objIE = CreateObject("InternetExplorer.Application")
r = ActiveCell.Row
addrss = Cells(r, 6).Value
If addrss = "" Then addrss = Cells(r, 5).Value

With objIE
  'Google Map起動
  .Navigate "http://maps.google.co.jp/"
  .Visible = True
  'IE待機
  Do While .Busy = True
  DoEvents
  Loop
  '住所をテストボックスへ入力
  .Document.getElementById("q_d").Value = addrss
  '送信ボタンクリック
  .Document.forms(0).submit
End With
Set objIE = Nothing
End
endline:
MsgBox ("少し時間をあけてもう一度クリックしてください。IEの起動に失敗しました")
End Sub
}}}
あるいは
{{{
Q = chr(34)
GMurl = "http://maps.google.co.jp/?hl=ja&q="
Shell "explorer " & Q & GMurl & Q & "住所" & Q, vbNormalFocus
}}}
デフォルトブラウザで開く、はず。
~FireFoxのみ動作確認済。
これを応用すればエクセルブックから何でも開ける、のかな。
関連付けされているファイル形式なら。

!!セルの値が計算式か否か
{{{
 Cells(44, 6).Formula
}}}
上記でセルの値ではなく、セルに書かれた内容を取得できる。

これを使って
{{{
 if left(Cells(44, 6).Formula,1) = "=" then
}}}
と書けばそのセルには計算式が入っているという算段。

!!起動時に別のエクセルで開かせる
「ツール」>「オプション」>「全般」>「ほかのアプリケーションを無視する」

!!セルの色を全て削除
{{{
 Cells.Interior.ColorIndex = xlNone
}}}

!!使用済みセルの最終行を取得する

1.シート全体の最終行を取得する場合
{{{
 last_row = ss.UsedRange.Rows.Count
}}}

2.特定の列での最終行を取得する場合
{{{
 last_row = Cells(Rows.Count, 1).End(xlUp).Row
}}}
※ここでは1列目を参照しています。

 2列目を参照するためには
{{{
 last_row = Cells(Rows.Count, 2).End(xlUp).Row
}}}
でOK。

!!使用済みセルの最終列を取得する
{{{
 For b = 255 To 1 Step -1
    Cells(a, b).Select
    If Cells(a, b).Value <> "" Then Exit For
 Next b
}}}
a:検索する行番号
b:最終列を返します
*エクセルは列数が255までしか使用できません。
*短い上に使用頻度が低いのでスクリプト内に埋め込む場合で記述してあります。

!!外部ブック上のセルを参照
{{{
 Sub get_from_another_book(vl)
 
    'ファイルを開くダイアログ
    tmp = Application.GetOpenFilename("エクセルブック(*.xls),*.xls")
    If tmp = False Then End
 
    'targetfileに開いたファイルをセット
    Set targetfile = Application.Workbooks.Open(tmp)
 
    'ここに処理内容を記述(下行はサンプル)
    vl = targetfile.Worksheets(1).Cells(1, 1).Value
    
    'アラートを出さずに開いたファイルを閉じる
    targetfile.Close SaveChanges:=False
 
 End Sub
}}}

!!オートフィルタによる擬似インクリメンタルサーチ
オートフィルタが掛けられている状態で使用可。
下記の例では検索用キーワード入力セルが上から3番目にあり、オートフィルタは4行目から開始している条件での設定。

''※プロシージャの記入は標準モジュールではなくワークシートに''

{{{
Private Sub Worksheet_Change(ByVal Target As Range)

  x = Target.Column
  y = Target.Row

  '検索用キーワード入力セルの行(オートフィルタ用タイトル行のひとつ上とかが便利。どこでも構わない。)
  Search_row=3

  'オートフィルタが設定されている最初の列-1列。(A列から開始する場合はこの値を「0」に)
  Search_clm=3

  tmp = Cells(y, x)

  '範囲選択で消去した場合のエラー回避
  On Error Resume Next

  If y = Search_row Then

    '空白にされたら絞り込み解除
    If tmp = "" Then
      Selection.AutoFilter Field:=(x - Search_clm)

    'キーワードをオートフィルタで絞り込み
    Else
      Selection.AutoFilter Field:=(x - Search_clm), Criteria1:="=*" & tmp & "*", Operator:=xlAnd
    End If
  End If

  'エラー回避終了
  On Error GoTo 0
End Sub
}}}
まれにエクセルのマクロ実行やオートフィルタにタイムロスするケースがあるが、通常時では見事に高速。
入力と同時に絞り込まれる感覚が快適。

!!セル範囲指定置換
セル上で置換する場合
{{{
 Range("a1:g31").Replace What:="g", Replacement:="w"
}}}

!イベント系
!!保存時
{{{
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub
}}}

!!ファイルを開いた時
{{{
Private Sub Workbook_Open()
 '
End Sub
}}}

!!シートがアクティブになったとき
{{{
Private Sub Worksheet_Activate()
 '
End Sub
}}}

!!シートが非アクティブになったとき
{{{
Private Sub Worksheet_Deactivate()
  '
End Sub
}}}
!!保存時
{{{
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub
}}}

!!右クリック時
{{{
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  x = Target.Column
  y = Target.Row
  tmp = Cells(y,x)
End sub
}}}
!!セルの内容が変更されたとき
{{{
Private Sub Worksheet_Change(ByVal Target As Range)
  x = Target.Column
  y = Target.Row
  tmp = Cells(y,x)
End Sub
}}}
!!選択セルが変更されたとき
{{{
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  x = Target.Column
  y = Target.Row
  tmp = Cells(y,x)
End Sub
}}}
!!ダブルクリック時
{{{
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  x = Target.Column
  y = Target.Row
  tmp = Cells(y,x)
End Sub
}}}

!その他
!!ファイルオープン時にマクロを実行する
{{{
 Private Sub Workbook_Open()
   プロシージャ名
 End Sub
}}}
ワークブックに記述

!!ファイルを保存せずにエクセルを終了
{{{
 ThisWorkbook.Saved = True
 Application.Quit
}}}

!!ステータスバーにメッセージを表示する
{{{
 '///////////////////////////////////////////////////////////////////////////
 Application.StatusBar = "メッセージ"
 '///////////////////////////////////////////////////////////////////////////
}}}
Applicaton.ScreenUpdating=False でも有効

!!カラーインデックス一覧
[img[img/xls_colorindex.png]]
セル範囲の色を変える時は
{{{
    Range("F14:J48").Interior.ColorIndex = 24
}}}
 又は
{{{
    Range(cells(1,1),cells(3,3)).Interior.ColorIndex = 24
}}}
で、セルの色を変える時は
{{{
    Range("F14").Interior.ColorIndex = 24
}}}
行を変える時は
{{{
    rows(n).Interior.ColorIndex = 24
}}}
列を変える時は
{{{
    columns(n).Interior.ColorIndex = 24
}}}

!!処理時間を測る
{{{
  T = Timer
  'ここに処理を記述
  MsgBox( Timer - T )
}}}

!!タブ文字
{{{
chr(9)
}}}

!!セル内改行
{{{
chr(10)
}}}

!!ダブルクォーテーション「"」
{{{
chr(34)
}}}
!!改行コード
{{{
 & Chr(13) & Chr(10) &
}}}


!!エラーを無視させる
{{{
 On Error Resume Next
}}}
で全てのエラーを無視するようになる。
これを復帰させるのは
{{{
 On Error GoTo 0
}}}
これで通常モードに。

!!フォントサイズとドット数の関係式
フォントが12ptの場合
12x96dpi/72=16pixel

フォントサイズと画面ドット数の関係一覧
|フォントサイズ|96dpi|120dpi|
|6pt|8|10|
|7pt|9|11|
|8pt|10|13|
|9pt|12|15|
|10pt|13|16|
|11pt|14|18|
|12pt|16|20|
|13pt|17|21|
|14pt|18|23|
|15pt|20|25|
|16pt|21|26|
|17pt|22|28|
|18pt|24|30|
|19pt|25|31|
|20pt|26|33|
|21pt|28|35|
|22pt|29|36|
|23pt|30|38|
|24pt|32|40|
|25pt|33|41|
|26pt|34|43|
|27pt|36|45|
|28pt|37|46|
|29pt|38|48|
|30pt|40|50|
|31pt|41|51|
|32pt|42|53|

!!エクセルユーザー名
{{{
 Application.UserName
}}}

!!グローバル変数
{{{
 Public a
}}}
と'''subプロシージャの外'''に記述

!!ファイル参照変換機能
JWWの[[ファイル変換参照機能|JWW_文字のファイル参照変換機能]]をエクセルで管理するプロシージャ

{{{
Sub ファイル参照変換機能()
  Dim Last_Row
  Dim Tmp_Sheet As Worksheet
  Set Tmp_Sheet = Sheets("シート名")

  'A列で使用されている最終行を取得
  Last_Row = Cells(Rows.Count, 1).End(xlUp).Row

  '出力するファイルの準備
  Dim File_Sytem
  Dim OutputText
  Set File_Sytem = CreateObject("Scripting.FileSystemObject")

  '出力するファイルを定義(下記の例ではこのエクセルブックと同じフォルダに出力)
  Set OutputText = File_Sytem.CreateTextFile(ThisWorkbook.Path & "\ファイル名.txt", True)

  'シートからファイル参照変換機能定義ファイルを作成
  For i = 1 To Last_Row
  
    '空欄は無視
    If Tmp_Sheet.Cells(i, 1) <> "" Then
    
      'A列に参照文字、B列に変換後文字の例
      参照文字 = Tmp_Sheet.Cells(i, 1)
      変換文字 = Tmp_Sheet.Cells(i, 2)
      
      '変換文字が空欄の場合はハイフンを代入(空欄のままでは参照文字列がそのまま表示される)
      If 変換文字 = "" Then 変換文字 = "-"
      OutputText.writeline ("%%" & 参照文字 & Chr(9) & 変換文字)
    
    End If

  Next

  'ファイルを閉じる
  OutputText.Close
End Sub
}}}

!!ウィンドウ枠の固定と解除
*固定
**アクティブなセルの左上で固定されます
{{{
ActiveWindow.FreezePanes = True
}}}

*解除
{{{
ActiveWindow.FreezePanes = False
}}}

!!VBAからVBSを実行する
{{{
    Shell "WScript.exe ""「ファイル名」"""
}}}

!!sendkeys
|{ENTER}|Enter|
|{ESCAPE},{ESC}|Esc|
|{TAB}|Tab|
|{INSERT}|Insert|
|{DELETE},{DEL}|Delete|
|{BACKSPACE},{BS},{BKSP}|Backspace|
|{LEFT}|←|
|{RIGHT}|→|
|{UP}|↑|
|{DOWN}|↓|
|{PGUP}|PageUp|
|{PGDN}|PageDown|
|{HOME}|Home|
|{END}|End|
|{SCROLLLOCK}|ScrollLock|
|{BREAK}|Pause|
|{NUMLOCK}|NumLock|
|{CAPSLOCK}|CapsLock|
|{F1}~{F12}|F1~F12|
|+|Shift|
|^|Ctrl|
|%|Alt|
"%S"で「Alt」と「S」の同時押し
"%(AB)"で「Alt」と「A」と「B」の同時押し
"{UP}2"で上矢印キー2回押し
"hogehoge"で文字列

!!セルに書き込まれたソリッド色コードでセルを塗る(Excel2007以降)
{{{
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim tmp As Long
  x = Target.Column
  y = Target.Row
  If IsNumeric(Cells(y, x)) Then
    If Val(Cells(y, x)) < 16777216 Then
      Cells(y, x).Interior.Color = Val(Cells(y, x))
    End If
  End If
End Sub
}}}
<<showtoc>>
!寸法文字設定を切り替える
#ショートカットキー「F2」で寸法設定ダイアログが開く
#「TAB」キー2回で寸法文字にフォーカスが移動する
#寸法文字種を入力して「Enter」でダイアログが閉じる
例えば寸法文字種を2にする時は
  {{{F2 - TAB - TAB - 2 - Enter}}}
で完了。
!概要
柱状図をJWWの座標データで吐き出すエクセルのファイルです

これを作成した後にこの技で外部変形が作成できることに気が付いたという
私の中でのマイルストーン的なツールです
[[Download|http://hinoado.com/r/d/column.lzh]]

!手順
!!1.まず設定シートで、JWW側で読み込む時の座標ファイルの色や枠巾等を定義しておきます
※「Scale」欄で定めたスケールとJWW側のスケール設定が不揃いだと文字が暴れます
[img[img/column_00.png]]
右下のソリッド設定でソリッドの色コードを見ながらRGBスライドバーで色の調整が出来ます。

!!2.入力シートで必要な事項を入力します
※左端の「N値」は作図する深さ分を全て入力
※右側の土質項目で別途土質毎深さを入力
[img[img/column_01.png]]

!!3.柱状図.txt作成ボタンを押します

!!4.作成された座標ファイルをJWWで読み込みます
JWW座標ファイルの読み込み結果(白バック)
※ソリッド使用時は出力時「カラー印刷」にチェック
[img[img/column_02.png]]

!概要
添景のデータを軽減するのが目的のフォントです

[[DownLoad|http://hinoado.com/r/d/font.lzh]]

現在使えるリストは以下
[img[img/tenkei_font_list.png]]
フォントをインストールしてご使用下さい
サイズを合わせてJWS登録して使うことをオススメします
※全て全角で作成してあります

!あとがき
以前[[ソリッドブロック]]を作成して運用しながら、そのデータの重さに閉口しました。
ソリッドブロックは、表現こそ自由ですが、データサイズが大きく描画も重い。
それを何とかするためにWindowsのフォント描画を使おうと考えました。
フォントを多色で重ねて表現すれば、ソリッドブロックのような表現も可能だろうと。
さらにこのフォントがインストールされていなければ図形として機能できないという、データ盗用のセキュリティも兼ね備えていました。
しかしJWWでは文字色に任意の色を割り当てることが出来ずに諦めました。
個別にダウンロードできます
<<showtoc>>
!j 車両軌跡 2007.9.5
[[DownLoad|http://hinoado.com/r/d/jw_opt4i.lzh]]
[img[img/opt4j.png]]
  軽から4000ccクラスまでの6車種です
  詳細はxikiの記事http://hinoado.com/index.cgi?id=5&eid=85をご覧下さい 

!k 引き出し線 2003.4.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4k.lzh]]
[img[img/opt4k.png]]
  JWW3.10以降の制御コードに準拠しました
  6段まで記入できるように変更しました

!l 矢印類 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4l.lzh]]
[img[img/opt4l.png]]
  矢印を数種類と破断記号 	

!m 端点文字 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4m.lzh]]
[img[img/opt4m.png]]
  線角度を取得して記入する文字等

!n 符号 2003.3.22
[[DownLoad|http://hinoado.com/r/d/jw_opt4n.lzh]]
[img[img/opt4n.png]]
  図面名称,建具符号,枠付文字等

!o 階段 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4o.lzh]]
[img[img/opt4o.png]]
  階段作図用の矢印,UP/DN記号,破断線等

!p 配置図セット 2003.3.22
[[DownLoad|http://hinoado.com/r/d/jw_opt4p.lzh]]
[img[img/opt4p.png]]
  レベル,法面記号,方位記号,用途地域等

!q 日影図 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4q.lzh]]
[img[img/opt4q.png]]
  真北方位記号,境界に記入する文字数種等

!r 斜線セット 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4r.lzh]]
[img[img/opt4r.png]]
  道路斜線作図用セット

!s 展開図 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4s.lzh]]
[img[img/opt4s.png]]
  展開図記号,巾木,廻り縁等

!t 詳細図 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4t.lzh]]
[img[img/opt4t.png]]
  開口部廻りの詳細図作成用

!u 建具断面 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4u.lzh]]
[img[img/opt4u.png]]
  鴨居,敷居を数種類

!v 雑記号 2004.1.3
[[DownLoad|http://hinoado.com/r/d/jw_opt4v.lzh]]
[img[img/opt4v.png]]
  断熱材,地面記号,畳断面,植栽その他

!w コーキング 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4w.lzh]]
[img[img/opt4w.png]]
  コーキングマーク

!x ナンバリング 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4x.lzh]]
[img[img/opt4x.png]]
  100までに増やしました

!y 室名称 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4y.lzh]]
[img[img/opt4y.png]]
  平面図に記入する室名のスタンプ

!z 外構名称 2003.1.26
[[DownLoad|http://hinoado.com/r/d/jw_opt4z.lzh]]
[img[img/opt4z.png]]
  同上外構用
!色温度とRGB
光源について調べ物をしていて、色温度(K)からRGBを算出するエクセルブックを作成したので置いておきます。
光源色として使うには実用的だかどうだかまだよく解っていません(汗
発光強さが等しくなることを願ってRGBの合計が255になる値と、最も強い要素を255として残りを割り当てるのとの2パターン入れてあります。

[[DownLoad|http://hinoado.com/log/3/up/120.lzh]]

[img[img/ckk2rgb.png]]

!Kerkytheaによるレンダリング比較
Render:PhotonMap Midum + Caustics + AA0.3
RenderTime 76sec
Imagesize 400x200

4300K
[img[img/ck4300k.jpg]]


4400K
[img[img/ck4400k.jpg]]


4500K
[img[img/ck4500k.jpg]]


4800K
[img[img/ck4800k.jpg]]


5000K
[img[img/ck5000k.jpg]]


5200K
[img[img/ck5200k.jpg]]


5500K
[img[img/ck5500k.jpg]]


6000K
[img[img/ck6000k.jpg]]

!batファイルをプリンタの数作成
以下の内容を記述したbatファイルを作成。
クイック起動あたりに登録しておけばワンクリックで切り替え可。
{{{
rundll32 printui.dll,PrintUIEntry /y /n "プリンタ名"
}}}

!便利な使い方
PDFファイルは右クリックから直接印刷が出来ます。
作業時にPDF化し、あとでまとめて印刷できますが、PDFの直接印刷は「通常使うプリンタ」の設定が反映されます。

そのためこのbatで通常使うプリンタを切り替えればPDFの直接印刷がだいぶ楽になります。

※PDFを右クリック印刷するためには~AdobeReaderをデフォルトで開くアプリケーションに指定しておく必要がありますが、~AdobeReaderの印刷設定を拡大縮小なしにしておくと、PDF作成時に指定した用紙サイズで出力されます。

!アニメーションレンダリングの設定を調整して連続レンダリングとして使う

この記事で使用するSketchupのファイルは[[こちら|files/KT_anim.skp]](リンクが切れていたので修正しました)


!シーンの設定

SUで「カメラの位置」にチェックの入ったシーンはそのままKerkytheaに渡ります
[img[img/KT_anim_00.jpg]]
上の画面では「シーン 1」と「シーン 2」にカメラの位置を記憶させました。
~SU2KTを使用してKerkytheaを起動して下さい。
(サンプルデータにはKerkythea用のマテリアルが埋め込んであります。)

!ウォークスルーアニメーションの設定
まず「Tools」の「Walkthrough Animation...」を選択します
[img[img/KT_anim_000.jpg]]
するとアニメーションを設定する画面が表示されます
[img[img/KT_anim_001.jpg]]
「Name」は設定名です。後でここで設定した名前を呼び出します。今回は「test」。
「Duration」は再生時間です。ここにはシーン数を設定してください。今回はシーンが2つなので「2」にします。
「Rate」は一秒間のコマ数です。アニメーションではないので「1」にして下さい。
「Interpolation」は補完です。今囘は不要なのでチェックをはずしてください。
[img[img/KT_anim_002.jpg]]
そこから下はシーンの設定です。
「Add Node」をクリックして追加していきます。
今回は「シーン 1」と「シーン 2」を設定しました。
「Speed」は「Zero」
[img[img/KT_anim_003.jpg]]

以上で連続レンダリングの準備は完了です。

!レンダリング

あとは通常通りに「Start Render」を押して
[img[img/KT_anim_004.png]]


カメラの設定に上の「Name」で設定したカメラを選択し、レンダリングを開始して下さい。
[img[img/KT_anim_005.png]]


開始するとファイルの保存場所を聞いてきますので保存先を指定してください。
ファイル名は指定したファイル名をヘッダとして連番が付加されたファイル名で、指定したフォルダに自動保存されます。

[img[img/KT_anim_0000.jpg]]

[img[img/KT_anim_0001.jpg]]

上図レンダラは[[PhotonMap - Quick + AA 0.3]]
(視野角は24mmレンズ相当)