水曜日, 2月 05, 2025

TCDW8303
突然見かけなくなったりすると色々と気になります

散歩の時によく見かける犬を突然見かけなくなったりすると色々と気になりますね。もちろんリードを持っているお爺さんも。

火曜日, 2月 04, 2025

Let's start JavaScript 55 
HTML上で指定した画像とそのネガを表示

HTML上で指定した画像とそのネガを表示します。

<!-- index.html -->
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
    <meta name="viewport"
        content="width=device-width, initial-scale=1.0">
<title>ファイル読み込みとネガ表示</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
margin: 20px;
}
.container {
display: flex;
justify-content: center;
gap: 20px;
margin-top: 20px;
}
.image-box {
display: flex;
flex-direction: column;
align-items: center;
}
img {
max-width: 300px;
height: auto;
border: 2px solid #ccc;
border-radius: 10px;
}
.negative img {
filter: invert(1);
}
.caption {
margin-top: 10px;
font-size: 14px;
color: #333;
}
.hidden {
display: none;
}
</style>
</head>
<body>
<h2>画像とネガ画像を表示</h2>
<p>画像ファイルを選択してください:</p>
<input type="file" id="fileInput" accept="image/*">
<!--accept="image/*" で画像ファイルのみに制限-->
<div id="imageContainer" class="container hidden">
<div class="image-box">
<img id="originalImage" alt="オリジナル画像">
<div class="caption">オリジナル画像</div>
</div>
<div class="image-box negative">
<img id="negativeImage" alt="ネガ画像">
<div class="caption">ネガ画像</div>
</div>
</div>

<script>
document.getElementById("fileInput").
addEventListener("change", function(event) {
const file = event.target.files[0];
if (file) {
// FileReader を使用して選択したファイルを読み込む
const reader = new FileReader();
reader.onload = function(e) {
const imageSrc = e.target.result;
// オリジナル画像を表示
const originalImage =
document.getElementById("originalImage");
originalImage.src = imageSrc;

// ネガ画像を表示
// ネガ画像の表示は .negative クラスで制御
const negativeImage = document.
getElementById("negativeImage");
negativeImage.src = imageSrc;

// コンテナを表示
// 初期状態では画像表示エリアを非表示 (.hidden) にし、
// 画像が読み込まれた後に表示
document.getElementById("imageContainer").
classList.remove("hidden");
};
// readAsDataURL を使い、画像をデータURLとして取得
reader.readAsDataURL(file);
}
});
</script>
</body>
</html>
<!-- index.html -->

実行したら[ファイルを表示]で処理ファイルを指定すれば・・・

一気に両方を表示します。

TCDW8302
そろそろ本気で断捨離しないとダメだと痛感

Baby Alien 060
身長60cmぐらいなら可愛いかも(^o^)
自分にしか分からない絶妙の積み上げ方で整理していた資料の山が崩れて呆然。そろそろ本気で断捨離しないとダメだと痛感。

月曜日, 2月 03, 2025

Excel VBA 39 
Excelで選択したセルを指定文字列で埋める

今回も何の意味も無い処理ですが・・・
Excelで選択したセルをランダムカラーで塗ってみます。

Sub FillCellsWithSpecifiedText()
Dim rng As Range
Dim cell As Range
Dim inputText As String

' ユーザーに入力を求める
inputText = _
InputBox("セルに入力する文字を指定してください:", "指定文字の入力")
' キャンセルボタンが押された場合は終了
If inputText = "" And StrPtr(inputText) = 0 Then Exit Sub

' 選択範囲を取得
On Error Resume Next
Set rng = Selection
On Error GoTo 0

' 選択範囲がない場合は終了
If rng Is Nothing Then
MsgBox "セル範囲を選択してください。", vbExclamation
Exit Sub
End If

' 範囲内の各セルに指定文字を入力
Application.ScreenUpdating = False
For Each cell In rng
cell.Value = inputText
Next cell
Application.ScreenUpdating = True

MsgBox "選択したセルを指定した文字で埋めました。", vbInformation
End Sub

処理したいエリアを選択して実行すれば・・・

入力したい文字列の入力パレットが出るので入力すれば・・・

こんな感じになります。具体的な用途は出席管理で、取りあえず全出席してから欠席処理をするといった使い方はありますね。

TCDW8301
歩きスマホも車中スマホもしないので余計に気になって

地下鉄の通路や社内で、ほぼ全員がスマホ見ているシーンって、笑えないですね。むしろホラーです。私は歩きスマホも車中スマホもしないので余計に気になってしまいます。

日曜日, 2月 02, 2025

Illustratorでの色変更はオブジェクトを再配色

質問がありましたので・・・
Illustratorでの色変更は[オブジェクトを再配色]が一番簡単です。

変更したい部分を選択し・・・

[編集]>[カラーを編集]>[オブジェクトを再配色]を表示されるパレットの一番大きな円を摘まんで・・・

動かすだけです。ちなみに、ハーモニーカラーをリンクしている必要があります。

詳細オプションをクリックして・・・

[編集]で処理し手もOKです。 

コツは色分けしての選択です。

TCDW8300
「武士のありかた」は「智・仁・勇」

葉隠に書かれていた「武士のありかた」は「智・仁・勇」。「智」とは「人と相談する」、「仁」とは「人のためになることをする」、「勇」とは「歯を食いしばること」の三徳兼備。何処かの政治家にぶつけたい「ありかた」ですね。

土曜日, 2月 01, 2025

Blender Study Notes 49 
地球儀作成はマッピングデータがキモ

Blenderで地球を作成するのは、UVマッピングではなく画像テクスチャがとても簡単です。

用意するのはマッピングデータ。上は自作の画像で公開していないのでここではモザイク処理しています。

球体を作成し、スムース設定としてから・・・

画像テクスチャを設定して用意した画像を読み込むだけです。
具体的な設定方法は以下を参考にしてください。


これで余計なことを考えずに綺麗に配置されます。

もちろんシームレスでつなぎ目は分かりません(※)。

※画像データの作成は正確にする必要があります。

Blender 4.3.1 macOS

TCDW8299
自宅でもティーバックで出来そうですね

東京銭湯によると、2月6日は「風呂の日」なので、東京都内の銭湯では、2月6日(木)に「ルイボスティー湯」を実施するそうです。銭湯代550円が大きな壁ですね。考えてみれば自宅でもティーバックで出来そうですね。他県ではどうなのだろう? 

金曜日, 1月 31, 2025

Excel VBA 38 
Excelで選択したセルをランダムカラーで塗る

 
何の意味も無い処理ですが・・・
Excelで選択したセルをランダムカラーで塗ってみます。

Sub FillCellsWithRandomColors()
Dim rng As Range
Dim cell As Range
Dim randomColor As Long

' 選択範囲を取得
On Error Resume Next
Set rng = Selection
On Error GoTo 0

' 選択範囲がない場合は終了
If rng Is Nothing Then
MsgBox "セル範囲を選択してください。", vbExclamation
Exit Sub
End If

' 範囲内の各セルをランダムな色で塗る
Application.ScreenUpdating = False
For Each cell In rng
' ランダムなRGB値の生成
randomColor = RGB(Int((256) * Rnd), Int((256) * _
            Rnd), Int((256) * Rnd))
    ' セルの塗りつぶし
cell.Interior.Color = randomColor
Next cell
' 画面の更新を一時停止し、処理速度を向上
Application.ScreenUpdating = True

MsgBox "選択したセルをランダムな色で塗りつぶしました。", _
        vbInformation
End Sub


処理したいエリアを選択して実行すれば・・・

こんな感じになります。具体的な用途は謎ですが・・・。

TCDW8298
最近は野菜が高騰していて悲しいです

Baby Alien 059
ぎょ魚ギョ〜(^o^)
刺身など、生の魚は苦手ですが、焼いたり煮たりの魚料理は大好きです。どから、どちらかというと魚料理が多いですね。あと根菜が好きです。ちなみに、最近は野菜が高騰していて悲しいです。

木曜日, 1月 30, 2025

modoローポリモデリング 52 
レイアウトが壊れたら環境設定のリセットで乗り切ります

昨年のmodo開発終了で、modoのTipsは取りやめていましたがユーザーはまだマシン環境があるかぎり使い続けられるので、ゆったりと再開することにしました。

というコトで、パレットなどのレイアウトが無意識に触ってしまったショートカットなどで崩れてしまった場合は,[システム]>[設定をリセット]で初期設定の戻すことが出来ます。ただし、本当に全ての設定がリセットされることを理解して対処しましょう。

Windows版の場合・・・

macOS版の場合・・・

TCDW8297
何故か私が買うと・・・もれなく外れが届く

何故か相性の悪いメーカーってありますね。メーカーの製品は優れているのに、何故か私が買うと・・・もれなく外れが届くのです。何でなのだろう?

水曜日, 1月 29, 2025

Let's start JavaScript 54 
HTML上で図形の面積を計算

HTML上で正円、長方形、三角形の面積を計算してみます。

<!-- index.html -->
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, initial-scale=1.0">
<title>図形の面積を計算</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
margin: 20px;
color: #000;
background-color: #f5f5f5;
}
.container {
margin: 20px auto;
max-width: 300px;
text-align: left;
}
label {
display: block;
margin: 10px 0 5px;
}
input[type="number"] {
width: 100%;
padding: 5px;
margin-bottom: 15px;
font-size: 1rem;
}
button {
display: block;
width: 100%;
padding: 10px;
font-size: 1rem;
background-color: #3498db;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #2980b9;
}
.result {
margin-top: 20px;
font-size: 1.2rem;
color: #2c3e50;
text-align: center;
}
</style>
</head>
<body>
<h2>図形の面積を計算</h2>
<div class="container">
<label for="shape">図形を選択:</label>
<select id="shape" onchange="updateInputs()">
<option value="circle">正 円</option>
<option value="rectangle">長方形</option>
<option value="triangle">三角形</option>
</select>

<div id="inputs">
<!-- 入力フィールドがここに動的に生成されます -->
</div>

<button onclick="calculateArea()">面積を計算</button>

<div class="result" id="result"></div>
</div>

<script>
function updateInputs() {
const shape = document.getElementById("shape").value;
const inputs = document.getElementById("inputs");

// 入力フィールドをリセット
inputs.innerHTML = "";

// 正円に応じた入力フィールドを生成
if (shape === "circle") {
inputs.innerHTML = `
<label for="radius">半径 (r):</label>
<input type="number" id="radius"
                placeholder="半径を入力" min="0" required>
`;
// 長方形に応じた入力フィールドを生成
} else if (shape === "rectangle") {
inputs.innerHTML = `
<label for="width">幅 (w):</label>
<input type="number" id="width"
                placeholder="幅を入力" min="0" required>
<label for="height">高さ (h):</label>
<input type="number" id="height"
                placeholder="高さを入力" min="0" required>
`;
// 三角形に応じた入力フィールドを生成
} else if (shape === "triangle") {
inputs.innerHTML = `
<label for="base">底辺 (b):</label>
<input type="number" id="base"
                placeholder="底辺を入力" min="0" required>
<label for="height">高さ (h):</label>
<input type="number" id="height"
                placeholder="高さを入力" min="0" required>
`;
}
}

function calculateArea() {
const shape = document.getElementById("shape").value;
let area = 0;

//正円の処理(半径×半径×3.14)
if (shape === "circle") {
const radius = document.getElementById("radius").value;
if (radius) {
area = Math.PI * Math.pow(radius, 2);
}

//長方形の処理(高さ×幅)
} else if (shape === "rectangle") {
const width = document.getElementById("width").value;
const height = document.getElementById("height").value;
if (width && height) {
area = width * height;
}

//三角形の処理(底辺×高さ÷2)
} else if (shape === "triangle") {
const base = document.getElementById("base").value;
const height = document.getElementById("height").value;
if (base && height) {
area = (base * height) / 2;
}
}

//結果表示
const result = document.getElementById("result");
if (area > 0) {
result.textContent = `面積: ${area.toFixed(2)} 平方単位`;
} else {
result.textContent = "正しい値を入力してください。";
}
}

// 初期状態で円の入力フィールドを表示
window.onload = updateInputs;
</script>
</body>
</html>
<!-- index.html -->

実行直後の画面です。

半径を入力して[面積を計算]で正円の面積が出ます。

[長方形]を選択して幅と高さを入力し[面積を計算]で長方形の面積が出ます。

[三角形]を選択して底辺と高さを入力し[面積を計算]で三角形の面積が出ます。

TCDW8296
バトルになるのは避けたいですからね

私はあまり登場しない某SNSで、とあるツールが使えないという書き込みが知人から上がり、賛同のコメントを書き込もうとしたら、電話が入って作業を中断していたら、「アレはとても良いツールだ〜!」というコメントが入っていたので、私はコメントを控えました。バトルになるのは避けたいですからね。

火曜日, 1月 28, 2025

JavaScriptでAI遊び 33 
四角形でスパイラル配置作成(RGB版)


四角形でスパイラル配置を作成してみました。(RGB版)

// Illustrator RGBモードで四角形スパイラルを描画するスクリプト
(function() {
if (app.documents.length === 0) {
alert("ドキュメントを開いてください。");
return;
}

var doc = app.activeDocument;

// RGBカラーモードを確認
if (doc.documentColorSpace !== DocumentColorSpace.RGB) {
alert("ドキュメントをRGBモードに設定してください。");
return;
}

// ドキュメントのサイズを取得
var artboard = doc.artboards[0];
var artboardRect = artboard.artboardRect;
var centerX = (artboardRect[2] + artboardRect[0]) / 2;
var centerY = (artboardRect[3] + artboardRect[1]) / 2;

// スパイラルの設定
var numSquares = 50; // 四角形の数
var initialSize = 5; // 最初の四角形のサイズ
var sizeIncrement = 2; // サイズの増加量
var angleIncrement = 15; // 回転角度の増加量(度)
var distanceIncrement = 5; // 距離の増加量

for (var i = 0; i < numSquares; i++) {
var size = initialSize + i * sizeIncrement;
var angle = i * angleIncrement;
var distance = i * distanceIncrement;

// 角度をラジアンに変換し四角形の中心座標を計算
var radian = (angle * Math.PI) / 180;
var x = centerX + Math.cos(radian) * distance;
var y = centerY + Math.sin(radian) * distance;

// 四角形を作成
var rect = doc.pathItems.rectangle(y, x, size, size);

// ランダムなRGB色を設定
var red = Math.random() * 255;
var green = Math.random() * 255;
var blue = Math.random() * 255;

rect.fillColor = new RGBColor();
rect.fillColor.red = red;
rect.fillColor.green = green;
rect.fillColor.blue = blue;

rect.stroked = false;

// 回転
rect.rotate(angle);
}

alert("スパイラルの描画が完了しました!");
})();

実行直後の結果です。
サイズなどは指定できないのですが、その辺りは今後の課題ですね。

TCDW8295
PDFを閲覧するだけならChrome等のブラウザーがベスト

それにしてもAcrobatって便利だけど、重くて不安定・・・PDFを閲覧するだけならChrome等のブラウザーを使った方が精神衛生上ベストですね。

月曜日, 1月 27, 2025

Excel VBA 37 
Excelで選択したセルが塗り潰しなら太字

Excelで選択したセルのなかで、セルが塗り潰されているばあい、そのセルの文字を太字にします。

Sub MakeBoldForColoredCells()
Dim rng As Range
Dim cell As Range
' 選択範囲を取得
On Error Resume Next
Set rng = Selection
On Error GoTo 0
' 選択範囲がない場合は終了
If rng Is Nothing Then
MsgBox "選択範囲を指定してください。", vbExclamation
Exit Sub
End If
' 範囲内の各セルを処理
' Application.ScreenUpdating = Falseで
' 画面更新を停止し、処理を高速化
Application.ScreenUpdating = False
For Each cell In rng
' セルが塗りつぶしされており、色が設定されている場合、
' cell.Interior.Color を使用して、セルの塗りつぶし色を判定。
' 塗りつぶしが「透明(色なし)」または xlNone の場合はスキップ。
' 16777215 は標準の白色(RGB値: 255, 255, 255)を指す。
' 背景が白色の場合も無視するよう条件を追加。
' 塗りつぶしが色付きの場合のみ、cell.Font.Bold = True を設定
If cell.Interior.Color <> _
16777215 And cell.Interior.Color <> xlNone Then
cell.Font.Bold = True ' 文字をボールドに変更
End If
Next cell
Application.ScreenUpdating = True
MsgBox "色付きのセルの文字をボールドに変更しました。", _
vbInformation
End Sub

白も塗り潰しになってしまうことに気がつかず苦労しました。セルを選択し・・・

実行した結果です。
元に戻すときは、以下で対処してください。

Sub MakeTextNormal()
Dim rng As Range
Dim cell As Range
' 選択範囲を取得
On Error Resume Next
Set rng = Selection
On Error GoTo 0
' 選択範囲がない場合は終了
If rng Is Nothing Then
MsgBox "選択範囲を指定してください。", vbExclamation
Exit Sub
End If
' 範囲内の各セルを処理
Application.ScreenUpdating = False
For Each cell In rng
If Not IsEmpty(cell) Then
cell.Font.Bold = False ' ボールドをオフ
cell.Font.Italic = False ' イタリックをオフ
cell.Font.Underline = xlUnderlineStyleNone ' 下線をオフ
End If
Next cell
Application.ScreenUpdating = True
MsgBox "選択範囲の文字をノーマルに変更しました。", vbInformation
End Sub

TCDW8294
IKEAで気になったら速攻で撮影ですね

Baby Alien 058
こんな枕が欲しいかも(^o^)
先日IKEAへ行ったとき、色々名部屋のコーナーにさりげなく置いてあったオブジェが欲しくて、多分オモチャ売り場?と思い込んだのが大失敗。各局見つけられず断念。ネットで買うと送料が・・・(>_<)。IKEAで気になったら速攻で撮影ですね。 

日曜日, 1月 26, 2025

Blender Study Notes 48 
慣れれば簡単なカメラ設定とレンダリング処理

Blenderのカメラ設定は食わず嫌いでした。と言うのとで整理してみました。

ライティングなどを設定したら、メインオブジェクトを選択し、Shift Aで表示されるメニューから[カメラ]を選びます。 

するとオブジェクトに食い込んだような位置にカメラが設定されるので・・・

取りあえず前面に移動させます。

ココでカメラビューに切り替えると、だいたい上の様に歪んだ状態になります。

ここでモデリングモードに戻り、カメラを選択してレンズの[シフトX][シフトY]を調整して・・・

カメラの設定を調整します。

真上から野画面で大まかに調整するとイイです。

後はフォーマットでレンダリングのピクセル数を設定し・・・

レンダリングするだけです。

Blender 4.3.1 macOS