元の質問:LinuxのBlender v2.93.4でテキスト/数値フィールドの値をクリップボードにコピーする方法は?https://blender.stackexchange.com/questions/239139/how-to-copy-a-text-numeric-field-value-to-clipboard-on-linux-for-blender-v2-93-4
ブレンダーを開き、
キューブをクリックすると
変換が表示されます。
を
クリックし、マウスが選択した数字「5」の上にあるときにCtrl + Cキーを押しながらTabキーを押します(Yフィールドに移動します)。 、ctrl + vを押しましたが、クリップボードの以前の内容が「5m」の代わりに貼り付けられています!試してみると「5」もできません!
マウスの移動、F5などの「text.copy」操作に複数のキーマップ(ctrl + c ctrl + insertに加えて)を追加しましたが、問題はBlenderがXクリップボードに何も送信できないようです。
端末やブレンダーに情報をダンプする方法を見つけようとしていますが、正確にこれを行う方法を見つけることができません。
Blenderを実行すると、blender --log "*undo*"
役に立ちますが、十分ではない正確な合計値「2.12345」ではなく、「2.12m」などの不正確にマークされた値がダンプされます。
正確に記録できる場合は、表示された値を正確に表示できる場合は正常に動作する可能性があります。
これを可能にする他のトリックを考えることができますか?
gcore ... |strings
そこに入力した「プレーンテキスト」の数だけ(テキストを選択した状態で3回、テキストを選択しない状態で1回)見つけることができますが、近くには選択したテキストに対する手がかり/ヒント/フックとして使用できる定数テキストがありません。おそらく16進数で何かがありますか?
私の考えでは、これはPythonのバグかもしれません。しかし、Blenderコードのどこにあるのかを見つけることができませんでした。
Blender 2.93.4 Ubuntu 20.04
関連:https://blender.stackexchange.com/questions/124294/clipboard-not-working-on-ubuntu-18-04-in-blender-2-79bしかし、何も役に立ちません。
答え1
これは関連する質問ですparcellite
。
Blender と Parcellite を互換性のあるものにするには、Parcelellite の「クリップボード/コピーの使用 (Ctrl+C)」オプションを無効にし、「デフォルト (選択)」でのみ動作するようにする必要があります。
古い過剰回答:
次のスクリプトは何をしますか?
- マウス選択でスクリーンショットを撮ります。
- 光学文字認識、
- クリップボードに送信
- または失敗を報告してください。
完全に過剰ですが、他のアプリケーションでも機能する可能性があります。
cat >copyThruOCR.sh
#!/bin/bash
echo "HELP:"
echo "depends on: scrot, tesseract, yad, xterm"
echo "bind this script to ex.: Alt+C using xbindkeys-config (remember to run xbindkeys just after)"
echo "use dark mode for best contrast on the application, so ex.: clicking the the field in blender will make it black background and white text!"
echo "tip: select more to the left than the limit of the text/number, works better"
echo "tip: select just below the text/number, if it is too much below it may just fail"
echo "it may still fail sometimes..."
set -x
FUNC() {
strFl="/tmp/`basename $0`.png";
rm "$strFl" "$strFl.txt"
bFail=false
str=""
strP=""
fSleep=0.25
iScrotRetryMax=8; # 2s
for((iScrotRetry=0;iScrotRetry<iScrotRetryMax;iScrotRetry++));do
if scrot -s "${strFl}";then break;fi
declare -p iScrotRetry
sleep $fSleep;
done
if [[ -f "${strFl}" ]];then
# if tesseract --dpi 300 --psm 8 "${strFl}" "$strFl";then
# if tesseract --dpi 300 "${strFl}" "$strFl";then
if tesseract --psm 6 "${strFl}" "$strFl" -c tessedit_char_whitelist="+-.0123456789" >/dev/null 2>&1;then
str="$(head -n 1 "${strFl}.txt")" #1st line
str="$(echo "$str" |cut -d " " -f1)" #1st word/column
str="$(echo "$str" |tr -d "\r\n ")" #remove anything invalid
echo "RESULT:"
echo "$str"
echo
echo "TextFile:"
cat "${strFl}.txt"
echo
if [[ -z "`echo -n "${str}" |tr -d '[:digit:].+-'`" ]];then #COMMENT this number check if you prefer everything
echo "COPYING TO CLIPBOARD: '${str}'"
echo -n "$str" |xclip -i -selection primary -rmlastnl;
echo -n "$str" |xclip -i -selection secondary -rmlastnl;
echo -n "$str" |xclip -i -selection clipboard -rmlastnl;
else
strP="PROBLEM: not a number"
bFail=true
fi
else
strP="PROBLEM: tesseract fail"
bFail=true
fi
else
strP="PROBLEM: scrot fail"
bFail=true
fi
echo "$strP"
if $bFail;then yad --geometry=100x50+0+0 --title "`basename $0` FAILED" --text "$strP. '$str'" --timeout 1 --ontop --center;fi #COMMENT to get no warning
read -p "press a key to exit (2s)..." -t 2 -n 1
};export -f FUNC;
xterm -geom 50x100+0+0 -e bash -c FUNC;exit #COMMENT to not show terminal log
FUNC
改善できる場合(より安定したものにするために)あなたのヒントを残してください!
マウス位置の周りの四角形を自動的につかみたいです。問題は、OCRが正しく機能するように不要な内容を消去する方法です。