[發問]SSGET 相關問題
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[發問]SSGET 相關問題
我是會一點點lsi的程式菜雞 來問版上大大一些問題
下面是我的程式 想修改 卻摸不著頭緒 也不太會用ssget
下面程式簡單說 點取一點 然後輸入我要的內容 在那點產生一個單行文字
然後在點擊產生出來的文字 讓他改變旋轉角度跟斜度 有1~6模式
我想把程式改良成 直接用 (ssget "L") 之類的方式 直接讀取到我要的資料
省去(setq en2 (entsel "文字")) 還需要去點擊那個文字的時間
但我用(setq en2 (entsel (ssget "L"))) 行不通 是否有其他手段 還是我的方式錯誤?
(defun c:CC1()
(setvar "cmdecho" 0)
(SETQ RR1 (getpoint "起點"))
(SETQ RR11(getstring "內容"))
(command "TEXT" RR1 "2" "" RR11)
(SETQ INTXT2 (GETSTRING "(1)(2)(3)(4)(5)(6)"))
(if (= INTXT2 "1")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 5.75959)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 0.523599)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "2")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 0.523599)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 5.75959)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "3")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 5.75959)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 5.75959)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "4")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 0.523599)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 0.523599)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "5")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 1.5708)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 0.523599)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "6")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 1.5708)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 5.75959)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(prin1)
)
下面是我的程式 想修改 卻摸不著頭緒 也不太會用ssget
下面程式簡單說 點取一點 然後輸入我要的內容 在那點產生一個單行文字
然後在點擊產生出來的文字 讓他改變旋轉角度跟斜度 有1~6模式
我想把程式改良成 直接用 (ssget "L") 之類的方式 直接讀取到我要的資料
省去(setq en2 (entsel "文字")) 還需要去點擊那個文字的時間
但我用(setq en2 (entsel (ssget "L"))) 行不通 是否有其他手段 還是我的方式錯誤?
(defun c:CC1()
(setvar "cmdecho" 0)
(SETQ RR1 (getpoint "起點"))
(SETQ RR11(getstring "內容"))
(command "TEXT" RR1 "2" "" RR11)
(SETQ INTXT2 (GETSTRING "(1)(2)(3)(4)(5)(6)"))
(if (= INTXT2 "1")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 5.75959)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 0.523599)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "2")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 0.523599)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 5.75959)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "3")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 5.75959)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 5.75959)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "4")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 0.523599)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 0.523599)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "5")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 1.5708)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 0.523599)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(if (= INTXT2 "6")
(progn
(setq en2 (entsel "文字"))
(setq en2_data (entget (car en2)))
(setq en2_txt (cdr (assoc 50 en2_data)))
(setq newt (cons 50 en2_txt))
(setq old 1.5708)
(setq oldt (cons 50 old))
(setq en2_data (subst oldt newt en2_data))
(entmod en2_data)
(setq en3_data (entget (car en2)))
(setq en3_txt (cdr (assoc 51 en2_data)))
(setq newt3 (cons 51 en3_txt))
(setq old3 5.75959)
(setq oldt3 (cons 51 old3))
(setq en3_data (subst oldt3 newt3 en3_data))
(entmod en3_data)
)
)
(prin1)
)
as920029as- 一般會員
- 文章總數 : 110
年齡 : 33
來自 : 台南市
職業 : 繪圖員
愛好 : 電腦遊戲
個性 : 開朗
使用年資 : 3年
使用版本 : 2010
經驗值 : 5228
威望值 : 47
注冊日期 : 2012-05-06
回復: [發問]SSGET 相關問題
as920029as 寫到:
我想把程式改良成 直接用 (ssget "L") 之類的方式 直接讀取到我要的資料
省去(setq en2 (entsel "文字")) 還需要去點擊那個文字的時間
但我用(setq en2 (entsel (ssget "L"))) 行不通 是否有其他手段 還是我的方式錯誤?
將(setq en2 (entsel "文字"))
改成(setq en2 (ssname (ssget "L") 0))
因為ssget得到的是選擇集,並非物件
需要用ssname 從選擇集取出物件
另外entsel 也不能這樣用
下一行(setq en2_data (entget (car en2)))
要改成(setq en2_data (entget en2))
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4544
威望值 : 564
注冊日期 : 2016-11-29
Tiger&蘋果爸 likes this post
回復: [發問]SSGET 相關問題
原來如此 感謝大大 完美解決了我的問題naruto018 寫到:as920029as 寫到:
我想把程式改良成 直接用 (ssget "L") 之類的方式 直接讀取到我要的資料
省去(setq en2 (entsel "文字")) 還需要去點擊那個文字的時間
但我用(setq en2 (entsel (ssget "L"))) 行不通 是否有其他手段 還是我的方式錯誤?
將(setq en2 (entsel "文字"))
改成(setq en2 (ssname (ssget "L") 0))
因為ssget得到的是選擇集,並非物件
需要用ssname 從選擇集取出物件
另外entsel 也不能這樣用
下一行(setq en2_data (entget (car en2)))
要改成(setq en2_data (entget en2))
as920029as- 一般會員
- 文章總數 : 110
年齡 : 33
來自 : 台南市
職業 : 繪圖員
愛好 : 電腦遊戲
個性 : 開朗
使用年資 : 3年
使用版本 : 2010
經驗值 : 5228
威望值 : 47
注冊日期 : 2012-05-06
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章