AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[討論]想大家幫忙一個LISP程式

2頁(共2頁) 上一頁  1, 2

上一篇主題 下一篇主題 向下

[討論]想大家幫忙一個LISP程式

發表 由 Alanlam 于 2012-07-23, 08:21

主題回顧 :

我想寫一個LISP是可以打一個指令,可更改圖塊名稱,
之後如果再貼上同一個圖塊,名稱後數字累加
例如: BLOCK(1)
BLOCK(2)
.
.
.
求各位大大幫手!!! 感動
avatar
Alanlam
一般會員
一般會員

文章總數 : 24
年齡 : 29
來自 : 中國
職業 : 學生
愛好 : 足球
個性 : 害羞
使用年資 : 4
使用版本 : 2012
經驗值 : 2096
威望值 : 0
注冊日期 : 2012-07-22
男 雙子座 龍

回頂端 向下


回復: [討論]想大家幫忙一個LISP程式

發表 由 pizg 于 2012-07-26, 04:06

shenhung 寫到:insert命令行 輸入的檔名的欄位..直接輸入 9a12(1)=9a12 或9a12(2)=9a12 以此類推.也行.不必修改檔名.!!
這是老式用法,
2010以後版本好像不可行.
avatar
pizg
高級會員
高級會員

文章總數 : 253
年齡 : 52
來自 : 桃園縣
職業 : 建築設計;程式設計
愛好 : 音樂;攝影;繪畫;棋奕;電腦
個性 : 隨和
使用年資 : 20↑
使用版本 : 2010
積分 : 10
經驗值 : 4144
威望值 : 320
發帖精華 : 1
注冊日期 : 2010-04-16
串連貼紙成功 男 摩羯座 龍

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 as920029as 于 2012-07-26, 05:12

Alanlam 寫到:
as920029as 寫到:@@第3步驟就 點選你圖快要放的位子即可 點了之後圖塊
應該會顯示於你點的地方
你圖塊名稱是ADD?
我明天在幫你改進一下程式好了
可否把圖塊名稱ADD哪一部分變成是點選CAD圖上的其中一個圖塊
就是把一開始預設的哪一部份變成點選CAD圖上的任何一個圖塊


這部份可用以下指令讀取圖塊名稱

(setq BL (entsel "點選圖塊"))
(setq BLO (entget (car BL)))
(setq BLOtxt (cdr (assoc 2 BLO)))
試著自己寫看看@@
avatar
as920029as
一般會員
一般會員

文章總數 : 53
年齡 : 26
來自 : 台南市
職業 : 繪圖員
愛好 : 電腦遊戲
個性 : 開朗
使用年資 : 3年
使用版本 : 2010
經驗值 : 2368
威望值 : 31
注冊日期 : 2012-05-05
男 白羊座 羊

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 shenhung 于 2012-07-26, 06:35

pizg 寫到:
shenhung 寫到:insert命令行 輸入的檔名的欄位..直接輸入 9a12(1)=9a12 或9a12(2)=9a12 以此類推.也行.不必修改檔名.!!
這是老式用法,
2010以後版本好像不可行.

這是r10時代的一種方法.是很久遠了.不過.
這樣的檔名輸入法.2010 還是可以用的.
avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 5063
威望值 : 913
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 Alanlam 于 2012-07-26, 09:29

as920029as 寫到:
Alanlam 寫到:
as920029as 寫到:@@第3步驟就 點選你圖快要放的位子即可 點了之後圖塊
應該會顯示於你點的地方
你圖塊名稱是ADD?
我明天在幫你改進一下程式好了
可否把圖塊名稱ADD哪一部分變成是點選CAD圖上的其中一個圖塊
就是把一開始預設的哪一部份變成點選CAD圖上的任何一個圖塊


這部份可用以下指令讀取圖塊名稱

(setq BL (entsel "點選圖塊"))
(setq BLO (entget (car BL)))
(setq BLOtxt (cdr (assoc 2 BLO)))
試著自己寫看看@@


(defun c:add6()
(setvar "cmdecho" 0)
(setq intxt (getstring "圖塊代碼<1>"))
(if (= intxt "")
(setq intxt "1")
)
(setq BL (entsel "點選圖塊"))
(setq BLO (entget (car BL)))
(setq BLOtxt (cdr (assoc 2 BLO)))
(setq x1 (getpoint intxt))
(while x1
(setq newtx (strcat BLOtxt "(" intxt ")"))
(setq qq (command "rename" "b" BLOtxt newtx ))
(setq en_data (command "insert" newtx "s" "1" "r" "0" x1 ))
(setq att (atoi intxt))
(setq intxt (+ att 1))
(setq intxt (itoa intxt))
(setq BLOtxt newtx)
(setq x1 (getpoint intxt))
)
)
(prin1)

改成這樣子嗎?
avatar
Alanlam
一般會員
一般會員

文章總數 : 24
年齡 : 29
來自 : 中國
職業 : 學生
愛好 : 足球
個性 : 害羞
使用年資 : 4
使用版本 : 2012
經驗值 : 2096
威望值 : 0
注冊日期 : 2012-07-22
男 雙子座 龍

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 as920029as 于 2012-07-27, 03:03

Alanlam 寫到:
as920029as 寫到:
Alanlam 寫到:
as920029as 寫到:@@第3步驟就 點選你圖快要放的位子即可 點了之後圖塊
應該會顯示於你點的地方
你圖塊名稱是ADD?
我明天在幫你改進一下程式好了
可否把圖塊名稱ADD哪一部分變成是點選CAD圖上的其中一個圖塊
就是把一開始預設的哪一部份變成點選CAD圖上的任何一個圖塊


這部份可用以下指令讀取圖塊名稱

(setq BL (entsel "點選圖塊"))
(setq BLO (entget (car BL)))
(setq BLOtxt (cdr (assoc 2 BLO)))
試著自己寫看看@@


(defun c:add6()
(setvar "cmdecho" 0)
(setq intxt (getstring "圖塊代碼<1>"))
(if (= intxt "")
(setq intxt "1")
)
(setq BL (entsel "點選圖塊"))
(setq BLO (entget (car BL)))
(setq BLOtxt (cdr (assoc 2 BLO)))
(setq x1 (getpoint intxt))
(while x1
(setq newtx (strcat BLOtxt "(" intxt ")"))
(setq qq (command "rename" "b" BLOtxt newtx ))
(setq en_data (command "insert" newtx "s" "1" "r" "0" x1 ))
(setq att (atoi intxt))
(setq intxt (+ att 1))
(setq intxt (itoa intxt))
(setq BLOtxt newtx)
(setq x1 (getpoint intxt))
)
)
(prin1)

改成這樣子嗎?

你這樣程式會有一點點改變
會變成
圖塊名稱ADD(1)..ADD(1)(2)...ADD(1)(2)(3)
會一直把(數字) 加在後面
以下是我改的 給您參考看看^^"
不知是否有幫上忙
(defun c:TEOK()
(setvar "cmdecho" 0)
(setq intxt (getstring "圖塊代碼<1>"))
(if (= intxt "")
(setq intxt "1")
)
(setq BL (entsel "點選圖塊"))
(setq BLO (entget (car BL)))
(setq BLOtxt (cdr (assoc 2 BLO)))
(setq x1 (getpoint intxt))
(setq XX BLOtxt)
(while x1
(setq newtx (strcat BLOtxt "(" intxt ")"))
(setq qq (command "rename" "b" XX newtx))
(setq en_data (command "insert" newtx "s" "1" "r" "0" x1 ))
(setq att (atoi intxt))
(setq intxt (+ att 1))
(setq intxt (itoa intxt))
(setq XX newtx)
(setq x1 (getpoint intxt))
)
)
(prin1)
avatar
as920029as
一般會員
一般會員

文章總數 : 53
年齡 : 26
來自 : 台南市
職業 : 繪圖員
愛好 : 電腦遊戲
個性 : 開朗
使用年資 : 3年
使用版本 : 2010
經驗值 : 2368
威望值 : 31
注冊日期 : 2012-05-05
男 白羊座 羊

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 lingo_st 于 2012-07-27, 14:05

剛試了一下,block一個圖塊叫 1 結果複製出來的第1個圖塊名稱叫1(1),第2個叫 1(1)(2),...以此類推,
可怕的是回頭點前面的圖塊名稱都被改成跟最後一個一樣
比如說我複製到第3個名稱會變成 1(1)(2)(3),然後前面3個名稱也都變成1(1)(2)(3)

對lisp來說我完全是個門外漢,是到論壇挖寶之後才知道我的autocad竟然也可以運用這些小程式然後突然增加一甲子功力,可是綜觀列位先進很熱心的解答與切搓後突發感想,雖說大家因此可以長見識(至少個人就獲益良多),
不過個人是覺得樓主這個需求真的有點難以想像,因為圖塊都會指定插入點,所以複製後貼上時點在哪圖塊就應該貼在哪,而且圖塊一般的認知就是貼圖方便,所以都是直接貼到想貼的位置,如果當下貼上後發現找不到貼到哪去,其實馬上qselect,指定選取"圖塊""名稱",所有同名圖塊都會亮顯,這時那個不在應有位置的圖塊立馬乖乖現形,我想這樣應該可以比較直接而有效的解決樓主的問題,因為只是當下在一大張圖裡面要找個小圖塊確實是有點辛苦,沒找到的話圖上在不知名的位置又會多出一個莫名其妙的東西,只要用找到它的方法就解決了不是嗎?況且如果依樓主的說法每貼一次名稱都更改圖塊名稱加上排序,那以後在圖塊管理上不是自找麻煩嗎?
avatar
lingo_st
中級會員
中級會員

文章總數 : 211
年齡 : 53
來自 : 新北市
職業 : 營造,建設
愛好 : 學習,服務,電腦軟硬體
個性 : 正直,達觀且無可救藥的雞婆
使用年資 : 使用12年但真的是新手
使用版本 : 2012,2013
積分 : 6
經驗值 : 3433
威望值 : 271
注冊日期 : 2011-12-18
經典問與答讀者 藍鵲238號
男 雙魚座 龍

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 阿希 于 2012-07-28, 10:26

好久沒來這逛逛了~ 人在大陸出差中
看了板主這問題 ~ 只能說,lisp這東西是"客製化"的需求程式,
針對個人或企業的需求去做程式設計,有些想法可能很天馬行空,
有的可以完成,有的看起來是不可能的任務,

這程式目前的問題應該像前一位說的,所有貼上的圖塊最後都會變成最後一個圖塊名稱,
程式內容應該是要"另外創造一個相同圖塊並給予新的圖塊名稱",而並非只是改圖塊名而已

有空再來挑戰看看吧



阿希
高級會員
高級會員

文章總數 : 335
年齡 : 36
來自 : 台北
職業 : 水電設計
愛好 : autolisp
個性 : 和平主義者
使用年資 : 5
使用版本 : 2008
積分 : 19
經驗值 : 4200
威望值 : 196
發帖精華 : 1
注冊日期 : 2008-09-22
男 摩羯座 猴

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 Alanlam 于 2012-07-29, 07:53

pizg 寫到:
Alanlam 寫到:
pizg 寫到:
Alanlam 寫到:
pizg 寫到:;;2012-07-25 by PizG
(defun c:Insblk(/ fn blkName)
(setq fn (getfiled "選取圖塊" "" "dwg" 2))
(setq blkName (vl-filename-base fn))
(if (null blkN) (setq blkN 1) (setq blkN (1+ blkN)))
(setvar "cmdecho" 1)
(command "_.insert" blkName pause 1 1 pause)
(command "_.rename" "b" blkName (strcat blkname "(" (itoa blkN) ")"))
(princ)
)

我遇到一個很奇怪的地方,就是在選取圖塊的時候,檔案名字是英文開頭的可以開,但是數字開頭的就不行....
是什麼問題呢?
有可能是你圖塊自身的問題,
如果你能貼出該圖塊網址讓我測一下,
如此答案會更清楚些.
這是哪個圖塊 https://www.dropbox.com/s/e1p49d1f1207oat/9A12.rar
是你圖塊自身的問題>>>圖塊 9A12 自身參考
與檔名為數字無關,
請重新建立該圖塊即可.

另外程式稍作修改如下:
;;2012-07-26 by PizG
(defun c:Insblk(/ fn blkName)
(setq fn (getfiled "選取圖塊" "" "dwg" 2))
(setq blkName (vl-filename-base fn))
(if (null blkN) (setq blkN 1) (setq blkN (1+ blkN)))
(setvar "cmdecho" 1)
(command "_.insert" fn pause 1 1 pause)
(command "_.rename" "b" blkName (strcat blkname "(" (itoa blkN) ")"))
(princ)
)
我想問如果做完之後,想把哪個累積的數字歸零,要怎麼做?
avatar
Alanlam
一般會員
一般會員

文章總數 : 24
年齡 : 29
來自 : 中國
職業 : 學生
愛好 : 足球
個性 : 害羞
使用年資 : 4
使用版本 : 2012
經驗值 : 2096
威望值 : 0
注冊日期 : 2012-07-22
男 雙子座 龍

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 阿希 于 2012-07-29, 10:42

你現在是用哪個程式在執行的 ??
pizg ? as920029as ?

阿希
高級會員
高級會員

文章總數 : 335
年齡 : 36
來自 : 台北
職業 : 水電設計
愛好 : autolisp
個性 : 和平主義者
使用年資 : 5
使用版本 : 2008
積分 : 19
經驗值 : 4200
威望值 : 196
發帖精華 : 1
注冊日期 : 2008-09-22
男 摩羯座 猴

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 Alanlam 于 2012-07-29, 11:01

Pizg 大大的已自行解決了歸零問題,as920029as大大的哪個累積加數我都試到有之前圖塊會自動改成最後圖塊的名字,阿希大大如果要像你這樣子說的話,我應要怎麼做了,我剛開始接觸lisp,看見各位大大的幫忙,真心覺得各位很厲害
avatar
Alanlam
一般會員
一般會員

文章總數 : 24
年齡 : 29
來自 : 中國
職業 : 學生
愛好 : 足球
個性 : 害羞
使用年資 : 4
使用版本 : 2012
經驗值 : 2096
威望值 : 0
注冊日期 : 2012-07-22
男 雙子座 龍

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 as920029as 于 2012-07-30, 03:07

XD我也算是LISP新手 只會基礎的而已
Pizg 大大 寫的那種目前還不是很清楚
所以沒辦法用大大那種方式寫看看XD
我的程式目前有2個問題XD"但是目前 我沒辦法改善的更好
希望各位大大給個建議 虛心求教
avatar
as920029as
一般會員
一般會員

文章總數 : 53
年齡 : 26
來自 : 台南市
職業 : 繪圖員
愛好 : 電腦遊戲
個性 : 開朗
使用年資 : 3年
使用版本 : 2010
經驗值 : 2368
威望值 : 31
注冊日期 : 2012-05-05
男 白羊座 羊

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 pizg 于 2012-07-30, 03:29

阿希有稍微點出問題所在了,
請樓主是否重新思考該怎麼做才是更好的.
avatar
pizg
高級會員
高級會員

文章總數 : 253
年齡 : 52
來自 : 桃園縣
職業 : 建築設計;程式設計
愛好 : 音樂;攝影;繪畫;棋奕;電腦
個性 : 隨和
使用年資 : 20↑
使用版本 : 2010
積分 : 10
經驗值 : 4144
威望值 : 320
發帖精華 : 1
注冊日期 : 2010-04-16
串連貼紙成功 男 摩羯座 龍

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 Alanlam 于 2012-07-30, 08:10

如果要像阿希大大所言,應如何開始?
avatar
Alanlam
一般會員
一般會員

文章總數 : 24
年齡 : 29
來自 : 中國
職業 : 學生
愛好 : 足球
個性 : 害羞
使用年資 : 4
使用版本 : 2012
經驗值 : 2096
威望值 : 0
注冊日期 : 2012-07-22
男 雙子座 龍

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 Alanlam 于 2012-08-19, 15:20

各位大大.....可幫幫忙嗎?
avatar
Alanlam
一般會員
一般會員

文章總數 : 24
年齡 : 29
來自 : 中國
職業 : 學生
愛好 : 足球
個性 : 害羞
使用年資 : 4
使用版本 : 2012
經驗值 : 2096
威望值 : 0
注冊日期 : 2012-07-22
男 雙子座 龍

回頂端 向下

回復: [討論]想大家幫忙一個LISP程式

發表 由 Tiger&蘋果爸 于 2012-08-21, 02:28

Alanlam 寫到:各位大大.....可幫幫忙嗎?
這篇文章供你參考!
[分享]LISP複製圖塊及更名
http://www.autocad-tw.com/t13836-topic

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17328
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65336
威望值 : 12868
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

2頁(共2頁) 上一頁  1, 2

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章