[己解決]如何使用lisp來建立圖塊?
+2
張譽璋
litung
6 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[己解決]如何使用lisp來建立圖塊?
最近在寫自動繪製螺絲的小程式,當螺絲繪製完成後,想把它建立成圖塊。
但使用命令式的指令,給了名稱、定位點、選取的資料後。還是無法建立出圖塊。
請教一下block在autolisp中要如何使用。
下列的用法那裡出錯了?(下面那個不是指令,是副程式)
但使用命令式的指令,給了名稱、定位點、選取的資料後。還是無法建立出圖塊。
請教一下block在autolisp中要如何使用。
下列的用法那裡出錯了?(下面那個不是指令,是副程式)
- 代碼:
;;;建立圖塊
(defun CreatBlock (ScrewSize ScrewL p0)
(prompt "\n 選取物件:")
(setq ss (ssget))
(setq ssize (rtos screwsize 2 0) slong (rtos screwL 2 0))
(setq BName (strcat "M" ssize "X" slong))
(princ "\n 圖塊名稱:")
(princ BName)
(command "-block" bname p0 ss "")
)
litung 在 2009-11-15, 20:26 作了第 1 次修改
____________________________________________________________________________________
簡單的心,是真正有福
單純的心,是真正的快樂
幸福是種溫馨的感覺
T480 i5-8250U,32GB,SSD:PM961 1TB+T11 25
litung- 中級會員
- 文章總數 : 226
年齡 : 49
來自 : 高雄市阿蓮區
職業 : PLC設計、HMI規劃、VB6、接案
愛好 : 電腦、卡通、桌球
個性 : 溫和、內向
使用年資 : 現在只出嘴
使用版本 : CAD 2008
積分 : 7
經驗值 : 6376
威望值 : 247
發帖精華 : 1
注冊日期 : 2009-10-30
回復: [己解決]如何使用lisp來建立圖塊?
己解決。
好像是小弟的p0定位點跑掉了。中間p0有拿去運算。
重新在指定一次p0就ok了。
好像是小弟的p0定位點跑掉了。中間p0有拿去運算。
重新在指定一次p0就ok了。
____________________________________________________________________________________
簡單的心,是真正有福
單純的心,是真正的快樂
幸福是種溫馨的感覺
T480 i5-8250U,32GB,SSD:PM961 1TB+T11 25
litung- 中級會員
- 文章總數 : 226
年齡 : 49
來自 : 高雄市阿蓮區
職業 : PLC設計、HMI規劃、VB6、接案
愛好 : 電腦、卡通、桌球
個性 : 溫和、內向
使用年資 : 現在只出嘴
使用版本 : CAD 2008
積分 : 7
經驗值 : 6376
威望值 : 247
發帖精華 : 1
注冊日期 : 2009-10-30
回復: [己解決]如何使用lisp來建立圖塊?
給你一個題目挑戰看看,你可以試著把螺絲的程式和自動建立圖塊的功能結合在一起不須選取就能建立成圖塊,這樣更完美.
張譽璋- 榮譽顧問
- 文章總數 : 304
年齡 : 54
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 7520
威望值 : 641
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
回復: [己解決]如何使用lisp來建立圖塊?
目前螺絲程式還有一點點問題。
等上班後再去請教機構的。
因為不知道螺絲頭高度、寬度跟螺絲直徑的關系公式。
雖然目前程式可以自動畫出來,但螺絲頭正確性不知道 ^_^
目前的想法:
用程式選取的話,可能要獨立開一個圖層來放螺絲,不然選取時可能會選到別的物件。這樣應該會比較容易。
算出p1 p2這二點應該就可以了。(ssget "_W" p1 p2)
圖塊的建立會延伸一個問題,就是圖塊名稱重覆。這個可能也要判斷。
等上班後再去請教機構的。
因為不知道螺絲頭高度、寬度跟螺絲直徑的關系公式。
雖然目前程式可以自動畫出來,但螺絲頭正確性不知道 ^_^
目前的想法:
用程式選取的話,可能要獨立開一個圖層來放螺絲,不然選取時可能會選到別的物件。這樣應該會比較容易。
算出p1 p2這二點應該就可以了。(ssget "_W" p1 p2)
圖塊的建立會延伸一個問題,就是圖塊名稱重覆。這個可能也要判斷。
____________________________________________________________________________________
簡單的心,是真正有福
單純的心,是真正的快樂
幸福是種溫馨的感覺
T480 i5-8250U,32GB,SSD:PM961 1TB+T11 25
litung- 中級會員
- 文章總數 : 226
年齡 : 49
來自 : 高雄市阿蓮區
職業 : PLC設計、HMI規劃、VB6、接案
愛好 : 電腦、卡通、桌球
個性 : 溫和、內向
使用年資 : 現在只出嘴
使用版本 : CAD 2008
積分 : 7
經驗值 : 6376
威望值 : 247
發帖精華 : 1
注冊日期 : 2009-10-30
回復: [己解決]如何使用lisp來建立圖塊?
謝大哥,自動建立圖塊的功能,小弟己經有測試了。
分享在另一篇中。只是程式沒有判斷圖塊名稱是否重覆。
使用(ssget "W" p1 p2),小弟多打了一個底線 ^_^
分享在另一篇中。只是程式沒有判斷圖塊名稱是否重覆。
使用(ssget "W" p1 p2),小弟多打了一個底線 ^_^
____________________________________________________________________________________
簡單的心,是真正有福
單純的心,是真正的快樂
幸福是種溫馨的感覺
T480 i5-8250U,32GB,SSD:PM961 1TB+T11 25
litung- 中級會員
- 文章總數 : 226
年齡 : 49
來自 : 高雄市阿蓮區
職業 : PLC設計、HMI規劃、VB6、接案
愛好 : 電腦、卡通、桌球
個性 : 溫和、內向
使用年資 : 現在只出嘴
使用版本 : CAD 2008
積分 : 7
經驗值 : 6376
威望值 : 247
發帖精華 : 1
注冊日期 : 2009-10-30
回復: [己解決]如何使用lisp來建立圖塊?
感謝指點...好久沒寫了!張譽璋 寫到:給你一個題目挑戰看看,你可以試著把螺絲的程式和自動建立圖塊的功能結合在一起不須選取就能建立成圖塊,這樣更完美.
已將現成的二支LISP合併成功~
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [己解決]如何使用lisp來建立圖塊?
蘋果爸,你進步的蠻快的,你的程式如果再結合對話框,改用選項的方式以及圖層可以自動建立那就更完美了,你可以再次挑戰看看。
張譽璋- 榮譽顧問
- 文章總數 : 304
年齡 : 54
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 7520
威望值 : 641
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
回復: [己解決]如何使用lisp來建立圖塊?
沒有啦!!張譽璋 寫到:蘋果爸,你進步的蠻快的,你的程式如果再結合對話框,改用選項的方式以及圖層可以自動建立那就更完美了,你可以再次挑戰看看。
這二支程式以前就寫好了,這次只是合併而已啦~
張老師說使用對話框,是指DCL嗎...這部分沒有學過,但手邊有書我再來試試看~
感謝指點!!
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [己解決]如何使用lisp來建立圖塊?
螺絲的寫法.這邊提供一點程式撰寫的意見和方向
螺絲規格.看設計便覽.便有完整的螺絲規格和尺寸..
1建立螺絲規格資料庫
2.撰寫DCL 對話框.由使用者選擇要繪出的圖型種類(使用幻燈片圖型選取).和公稱尺寸.
3. 選取圖型和公稱尺寸.後確定後.直接在繪圖區.選取放置位置..由程式完成圖塊的動作.
4. 圖塊的命名.可以用SCW+公稱尺寸.來做區別.所以不會重覆.唯一的問題是要判別.就是在圖面上放置相同規格的螺絲..圖塊不須要重作.直接放置圖塊.
以上.是目前自己所寫的螺絲程式的寫法.提供參考..可以適用大部分標準規格品的製作..
http://yfrog.com/0b29064211j
http://yfrog.com/5z97401698j
http://yfrog.com/jn42341417j
螺絲規格.看設計便覽.便有完整的螺絲規格和尺寸..
1建立螺絲規格資料庫
2.撰寫DCL 對話框.由使用者選擇要繪出的圖型種類(使用幻燈片圖型選取).和公稱尺寸.
3. 選取圖型和公稱尺寸.後確定後.直接在繪圖區.選取放置位置..由程式完成圖塊的動作.
4. 圖塊的命名.可以用SCW+公稱尺寸.來做區別.所以不會重覆.唯一的問題是要判別.就是在圖面上放置相同規格的螺絲..圖塊不須要重作.直接放置圖塊.
以上.是目前自己所寫的螺絲程式的寫法.提供參考..可以適用大部分標準規格品的製作..
http://yfrog.com/0b29064211j
http://yfrog.com/5z97401698j
http://yfrog.com/jn42341417j
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [己解決]如何使用lisp來建立圖塊?
;只是程式沒有判斷圖塊名稱是否重覆。
(setvar "expert" 1)
設定這個變數就不會問你要不要重新定義圖塊
它是
控制是否發出某些提示。
0
正常發出所有提示。
1
抑制「準備重生,執行?」和「是否確定要關閉目前圖層?」
2
抑制前述提示以及「圖塊已定義。 是否要重新定義它?」 (BLOCK) 與「同名的圖檔已經存在。 是否要覆蓋它?」 (SAVE 或 WBLOCK)。
3
如果嘗試載入已載入的線型,或在已定義該線型的檔案中建立新線型,則會抑制前述提示,以及由 LINETYPE 指令發出的提示。
4
如果您提供的名稱已經存在,則會抑制前述提示,以及透過 UCS「儲存」選項與 VPORTS「儲存」選項發出的提示。
5
當您提供既有標註型式的名稱時,抑制由 -DIMSTYLE「儲存」選項發出的提示「該名稱已在使用中,是否要重新定義它?」。
(setvar "expert" 1)
設定這個變數就不會問你要不要重新定義圖塊
它是
控制是否發出某些提示。
0
正常發出所有提示。
1
抑制「準備重生,執行?」和「是否確定要關閉目前圖層?」
2
抑制前述提示以及「圖塊已定義。 是否要重新定義它?」 (BLOCK) 與「同名的圖檔已經存在。 是否要覆蓋它?」 (SAVE 或 WBLOCK)。
3
如果嘗試載入已載入的線型,或在已定義該線型的檔案中建立新線型,則會抑制前述提示,以及由 LINETYPE 指令發出的提示。
4
如果您提供的名稱已經存在,則會抑制前述提示,以及透過 UCS「儲存」選項與 VPORTS「儲存」選項發出的提示。
5
當您提供既有標註型式的名稱時,抑制由 -DIMSTYLE「儲存」選項發出的提示「該名稱已在使用中,是否要重新定義它?」。
macgyver_hsu- 初級會員
- 文章總數 : 17
年齡 : 59
來自 : 岡山
職業 : 自動化設計
愛好 : 創造發明設計
個性 : 隨和
使用年資 : R10到現在
使用版本 : 2006M
積分 : 1
經驗值 : 5435
威望值 : 9
注冊日期 : 2010-03-12
回復: [己解決]如何使用lisp來建立圖塊?
macgyver_hsu 寫到:;只是程式沒有判斷圖塊名稱是否重覆。
(setvar "expert" 1)
設定這個變數就不會問你要不要重新定義圖塊
一般lisp 在寫的時候.以操作習慣來說..圖塊有沒重覆.須不須要重新定義.會在程式裡就判斷處理好.
不會程式執行到一半的時候.跳出一個訊息...由操作者來決定要不要覆蓋..不然以1張圖面裡面這麼多圖塊...訊息畫面會按到手軟.
以上.純個人看法.
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [己解決]如何使用lisp來建立圖塊?
shenhung 寫到:
一般lisp 在寫的時候.以操作習慣來說..圖塊有沒重覆.須不須要重新定義.會在程式裡就判斷處理好.
不會程式執行到一半的時候.跳出一個訊息...由操作者來決定要不要覆蓋..不然以1張圖面裡面這麼多圖塊...訊息畫面會按到手軟.
以上.純個人看法.
不錯歐!很有個人的想法,這個變數也是一種方法而已,你可以了解它的用法,目的都一樣就是
不會程式執行到一半的時候.跳出一個訊息...由操作者來決定要不要覆蓋...
macgyver_hsu- 初級會員
- 文章總數 : 17
年齡 : 59
來自 : 岡山
職業 : 自動化設計
愛好 : 創造發明設計
個性 : 隨和
使用年資 : R10到現在
使用版本 : 2006M
積分 : 1
經驗值 : 5435
威望值 : 9
注冊日期 : 2010-03-12
回復: [己解決]如何使用lisp來建立圖塊?
litung 寫到:目前螺絲程式還有一點點問題。
等上班後再去請教機構的。
因為不知道螺絲頭高度、寬度跟螺絲直徑的關系公式。
雖然目前程式可以自動畫出來,但螺絲頭正確性不知道 ^_^
目前的想法:
用程式選取的話,可能要獨立開一個圖層來放螺絲,不然選取時可能會選到別的物件。這樣應該會比較容易。
算出p1 p2這二點應該就可以了。(ssget "_W" p1 p2)
圖塊的建立會延伸一個問題,就是圖塊名稱重覆。這個可能也要判斷。
想請問一下 我現在有劃出一個圖有很多線條 如何讓-BLOCK去選擇我在這個LISP畫出來的線條去做圖塊
d93xjp61212- 一般會員
- 文章總數 : 23
年齡 : 38
來自 : 宜蘭
職業 : 機電
愛好 : 解決問題
個性 : 對工作固執,有時候懶惰所以一直再找方法
使用年資 : 10
使用版本 : 2022
經驗值 : 1060
威望值 : 0
注冊日期 : 2022-04-13
回復: [己解決]如何使用lisp來建立圖塊?
d93xjp61212 寫到:litung 寫到:目前螺絲程式還有一點點問題。
等上班後再去請教機構的。
因為不知道螺絲頭高度、寬度跟螺絲直徑的關系公式。
雖然目前程式可以自動畫出來,但螺絲頭正確性不知道 ^_^
目前的想法:
用程式選取的話,可能要獨立開一個圖層來放螺絲,不然選取時可能會選到別的物件。這樣應該會比較容易。
算出p1 p2這二點應該就可以了。(ssget "_W" p1 p2)
圖塊的建立會延伸一個問題,就是圖塊名稱重覆。這個可能也要判斷。
想請問一下 我現在有劃出一個圖有很多線條 如何讓-BLOCK去選擇我在這個LISP畫出來的線條去做圖塊
這個太久了
我也都忘記了
好久沒用AUTOCAD了
現在都改用專業軟體來設計電路圖了
也沒在研究AUTOCAD了
等其他大大幫你解決了
____________________________________________________________________________________
簡單的心,是真正有福
單純的心,是真正的快樂
幸福是種溫馨的感覺
T480 i5-8250U,32GB,SSD:PM961 1TB+T11 25
litung- 中級會員
- 文章總數 : 226
年齡 : 49
來自 : 高雄市阿蓮區
職業 : PLC設計、HMI規劃、VB6、接案
愛好 : 電腦、卡通、桌球
個性 : 溫和、內向
使用年資 : 現在只出嘴
使用版本 : CAD 2008
積分 : 7
經驗值 : 6376
威望值 : 247
發帖精華 : 1
注冊日期 : 2009-10-30
Tiger&蘋果爸 likes this post
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章