AUTOLISP 選取圖元取其串列

 2024/10/26修改

Windows 11 專業版 23H2
BricsCAD V21

(setq pickObj nil) ;確認有無選取到物件,預設為無nil
(while (= pickObj nil) ;當沒有選取到圖元時重覆執行
(setq pickObj (entsel "選取圖元:"))
(if (= pickObj nil) (princ "沒有選取到圖元"))
);while
(setq objList(entget (car pickObj ))) ;取得選取圖元串列objList

Godot GDScript 剪刀石頭布

2022/07/08修改
Windows 10 專業版 21H1
Godot v3.4.4.stable.official [419e713a2]



以三個按鈕作為輸入,與隨機產生的電腦對手進行猜拳
輸贏的狀態有三種(平手,勝利或失敗)
判定輸贏的方式,先以IF排除平手的結果
再將手動輸入與電腦隨機兩個變數加入陣列
以MATCH語句將勝利的結果列出
最後以_將失敗的結果列出


scenemaster.gd

extends Control

var moraType = ["rock", "paper", "scissrs"]
var moraTypeTc = {"rock":"石頭", "paper":"布", "scissrs":"剪刀"}

func _ready():
randomize()

func mora(playerChoice):
var computerChoice = moraType[randi() % 3]
var drawWinLose
if playerChoice == computerChoice:
drawWinLose = "平手"
else:
match [playerChoice,computerChoice]:
["rock","scissrs"],["paper","rock"],["scissrs","paper"]:
drawWinLose = "你贏"
_:
drawWinLose = "你輸"
$LabelResult.text="你選擇%s, 電腦選擇%s, %s"%[moraTypeTc[playerChoice],moraTypeTc[computerChoice],drawWinLose]


func _on_ButtonScissors_pressed():
mora("scissrs")


func _on_ButtonRock_pressed():
mora("rock")


func _on_ButtonPaper_pressed():
mora("paper")

LibreCAD 指令 空白鍵

2021/10/11修改
Windows 10 專業版 21H1
LibreCAD 2.2.0-rc2

輸入指令後預設值為鍵入Enter來執行指令command
在2.2的版本後可以透過修改空白鍵Space來執行指令
修改方式如下:
在menu>Option>Application Preferences>Defaults>Keyboard Settings>
勾選Evaluate commands when SPACE BAR is pressed

開啟空白鍵執行指令選項

開啟該選項後可以以空白鍵取代Enter執行指令

line指令以空白鍵執行


Librecad Unicode常用符號及查詢

2021/10/07修改
Windows 10 專業版 21H1
LibreCAD 2.2.0-rc2

MText及Text指令視窗左下角提供的插入符號

SymbolUnicode
Diameter () U+2300
Degree(°)U+00B0
Plus / Minus(±)U+00B1
At(@)U+0040
Hash(#)U+0023
Dollar($)U+0024
Copyright(©)U+00A9
Registered(®)U+00AE
Paragraph(§)U+00A7
Pi(π)U+03C0
Pound(£)U+00A3
Yen(¥)U+00A5
Times(×)U+00D7
Division(÷)U+00F7

未知的字元可透過
https://unicode-table.com/
複製貼上查詢,或是查表後得知unicode

再於MText及Text指令視窗右下角提供的
下拉選單選擇字元插入,但也必須該lff字型有支援

LibreCAD 中文字型

2021/10/07修改
Windows 10 專業版 21H1
LibreCAD 2.2.0-rc2

在新增單行文字(Text)及多行文字(MText)物件時
內建的字型中選擇unicode僅能顯示部分的中文字型(單線體)
筆畫較多的中文則會無法顯示(呈現亂碼)

unicode字型僅能顯示部分中文字體

故可透過手動安裝中文字型wqy-unicode後顯示更多中文


安裝方式如下:
1.需先下載字型檔wqy-unicode.lff
 https://sourceforge.net/projects/librecad/files/Resources/fonts/
2.複製至
 C:\Program Files (x86)\LibreCAD\resources\fonts
3.重新啟動LibreCAD


改選wqy-unicode字型後可顯示更多中文字型(空心體)

wqy-unicode字型能顯示較複雜中文字體



預設的直徑符號編碼為[2300]在wqy-unicode.lff內會無法顯示(查無該字元)
可以手動的方式插入其他類似的直徑符號ø[00F8]或是∅[2205]字元

透過下拉選單插入不同的unicode字元



unicode字元的查詢可參考 https://unicode-table.com/

LibreCAD 畫線

2021/09/20修改
Windows 10 專業版 21H1
LibreCAD 2.2.0-rc2


隨意畫線

首先先來隨意畫一條線吧,熟悉一下操作流程

兩點畫線

這邊我使用工具列(Toolbars)>線(Line)>兩點(2 Points)按鈕來啟動指令,然後在繪圖窗(Drawing window)內點擊滑鼠左鍵(第一點)作為線段起點,移動一段距離後點擊滑鼠左鍵(第二點)作為線段終點,之後點擊滑鼠右鍵結束本線段的繪製,再按下一次滑鼠右鍵結束本指令。

當然你也可以透過停靠工具窗的按鈕[下圖A],或是透過輸入指令l或li或line後按下Enter[下圖C],另外Menu>Tools>Line>2 Points[下圖B]也可啟動指令。

相同指令的不同位置


座標畫線

接下來條件嚴格一點,我想在座標(10,10)的位置繪製一條長10單位的水平線。這次我使用線(line)停靠工具窗的兩點(2 Points)按鈕來啟動指令,由於需要在特定的位置繪製指定線條,於是輸入 10,10(第一點),接下來輸入 20,10(第二點),最後按下ESC來結束本線段的繪製,再按下ESC結束本指令。

*如果輸入 10,10命令列上方的文字沒有由黑轉藍(或輸入欄位沒有輸入值)時,可以按下Ctrl+M,或是直接以滑鼠點擊命令列欄位。

輸入座標

上述是以(0,0)為原點的絕對座標方式定義線段頭尾兩點的座標位置,另一個方式是以相對座標的方式來定義第二點,其格式為[@]X,Y,@為相對座標的前綴符號。(20,10)的座標對於(10,10)的座標來說,相對關係是(20-10,10-10)=(10,0),故上述的第二點也可輸入 @10,0。

相對座標也可以距離及角度來定義相對關係,其格式為[@]距離<角度,<為角度的前綴符號,角度在正X方向為0;正Y方向為9;負X方向為18;負Y方向為270。同上述@10,0來說,也可以輸入@10<0。


抓點畫線

現在我們繼續在10單位長的水平線基礎上,繪製一個直角三角形。直接鍵入l指令,點擊左下角抓端點(snap on Endpoint)圖示,滑鼠指標靠近既有線段兩端時會被吸附至端點,此時以滑鼠右鍵點擊既有線段右側端點,接著輸入@10<90繪製第二點,最後直接在抓取既有線段的左側端點以完成直角三角形。

善用抓點減少輸入時間及提升準確度

有時抓點功能開啟後吸附範圍太大造成無法在端點附近正常繪圖,可開啟Free Snap減少吸附範圍。

抓點時可透過空白鍵切換Free Snap功能,此功能預設關閉,若要開啟請參考:








LibreCAD 簡易指令

2021/09/20修改
Windows 10 專業版 21H1
LibreCAD 2.2.0-rc2

簡易指令官方名稱為指令別名(Command Aliases)
設定方式是以文字檔案的方式儲存在
C:\使用者\ _{UserName}_\AppData\Local\LibreCAD\librecad.alias


librecad.alias位置


其格式為

別名[tab]完整指令

以l及li為line指令的別名為例
檔案內會出現
...
l   line
li  line
...


其他作業系統設定檔存放位置請參考官方說明文件
https://librecad.readthedocs.io/en/latest/guides/cmdline.html#command-aliases

無法顯示C:\使用者\AppData目錄的解決方式請參考
https://worker-temple.blogspot.com/2021/09/windows.html