[討論]載入座標檔自動標示點號
+3
ginse0727
lsj
aaronekin
7 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]載入座標檔自動標示點號
我有一個程式可將名為blk的圖塊匯入圖面
程式如下:
(defun c:inblock()
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2));;;讀取*.txt
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p " ")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
)
(defun draw_pt (/ dwgname pt)
(if
(setq dwgname "blk");;;此處可更改圖塊名稱
(progn
(setq x (atof (car ppp)))
(setq y (atof (cadr ppp)))
(setq z (atof (caddr ppp)))
(setq pt (list x y z))
(command "_insert" dwgname pt "" "" "" "")
) ; progn
(alert "\nThere is not object block")
) ; if
(princ)
)
(princ "\n----------<<輸入[inblock]執行程式>>------------")
(prin1)
現在問題來了
每個點都有編號
格式如:
點號 N E Z
P171 2751313.696 252017.516 85.003
P164 2751309.289 252034.434 88.020
P162 2751308.083 252038.977 81.030
P160 2751306.846 252043.469 81.033
P158 2751305.398 252047.974 82.995
我想做一個屬性圖塊
在匯入時同時將點號一起寫上
請問程式要如何修改?
程式如下:
(defun c:inblock()
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2));;;讀取*.txt
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p " ")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
)
(defun draw_pt (/ dwgname pt)
(if
(setq dwgname "blk");;;此處可更改圖塊名稱
(progn
(setq x (atof (car ppp)))
(setq y (atof (cadr ppp)))
(setq z (atof (caddr ppp)))
(setq pt (list x y z))
(command "_insert" dwgname pt "" "" "" "")
) ; progn
(alert "\nThere is not object block")
) ; if
(princ)
)
(princ "\n----------<<輸入[inblock]執行程式>>------------")
(prin1)
現在問題來了
每個點都有編號
格式如:
點號 N E Z
P171 2751313.696 252017.516 85.003
P164 2751309.289 252034.434 88.020
P162 2751308.083 252038.977 81.030
P160 2751306.846 252043.469 81.033
P158 2751305.398 252047.974 82.995
我想做一個屬性圖塊
在匯入時同時將點號一起寫上
請問程式要如何修改?
Tiger&蘋果爸 在 2010-10-13, 09:41 作了第 1 次修改 (原因 : 此主題改為討論類型)
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
1. 請先CHECK程式中PPP的結果,例如最後一組為
("P158" "2751305.398" "252047.974" "82.995" "")
你的XYZ座標要改為(cadr ppp) (caddr ppp) (cadddr ppp)
或用(nth 1 ppp) (nth 2 ppp) (nth 3 ppp) ->atof ->list
2. (car ppp)應為點號
3. (command "_insert" dwgname pt "" "" "" (car ppp))
("P158" "2751305.398" "252047.974" "82.995" "")
你的XYZ座標要改為(cadr ppp) (caddr ppp) (cadddr ppp)
或用(nth 1 ppp) (nth 2 ppp) (nth 3 ppp) ->atof ->list
2. (car ppp)應為點號
3. (command "_insert" dwgname pt "" "" "" (car ppp))
lsj- 初級會員
- 文章總數 : 43
年齡 : 59
來自 : 桃園
職業 : 營建工程
愛好 : 閒
個性 : 懶
使用年資 : 10↑
使用版本 : 2008
積分 : 2
經驗值 : 5505
威望值 : 110
注冊日期 : 2010-06-28
回復: [討論]載入座標檔自動標示點號
lsj 寫到:1. 請先CHECK程式中PPP的結果,例如最後一組為
("P158" "2751305.398" "252047.974" "82.995" "")
你的XYZ座標要改為(cadr ppp) (caddr ppp) (cadddr ppp)
或用(nth 1 ppp) (nth 2 ppp) (nth 3 ppp) ->atof ->list
2. (car ppp)應為點號
3. (command "_insert" dwgname pt "" "" "" (car ppp))
我的lisp非常弱,請問是不是改成這樣子
(defun draw_pt (/ dwgname pt)
(if
(setq dwgname "blk");;;此處可更改圖塊名稱
(progn
(setq p (atof (car ppp)))
(setq x (atof (cadr ppp)))
(setq y (atof (caddr ppp)))
(setq z (atof (cadddr ppp)))
(setq pt (list x y z))
(command "_insert" dwgname pt "" "" "" (car ppp))
) ; progn
(alert "\nThere is not object block")
) ; if
(princ)
)
或是麻煩直接點出要修改的地方
感謝唷~~~
ps:其實我還有想到根據這個延伸出的一些問題,只是不好意思一次問太多..cc...
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
(defun c:inblock()
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2));;;讀取*.txt
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p " ")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
(princ)
)
(defun draw_pt (/ dwgname pt)
(setq x (atof (cadr ppp)))
(setq y (atof (caddr ppp)))
(setq z (atof (cadddr ppp)))
(setq pt (list x y z))
(command "_insert" "xxx" pt "" "" "" (car ppp)) ;;直接明確輸入屬性圖塊名xxx
(princ)
)
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2));;;讀取*.txt
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p " ")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
(princ)
)
(defun draw_pt (/ dwgname pt)
(setq x (atof (cadr ppp)))
(setq y (atof (caddr ppp)))
(setq z (atof (cadddr ppp)))
(setq pt (list x y z))
(command "_insert" "xxx" pt "" "" "" (car ppp)) ;;直接明確輸入屬性圖塊名xxx
(princ)
)
lsj- 初級會員
- 文章總數 : 43
年齡 : 59
來自 : 桃園
職業 : 營建工程
愛好 : 閒
個性 : 懶
使用年資 : 10↑
使用版本 : 2008
積分 : 2
經驗值 : 5505
威望值 : 110
注冊日期 : 2010-06-28
回復: [討論]載入座標檔自動標示點號
測試了一下
可是不能用
不知是那邊有問題?
可是不能用
不知是那邊有問題?
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
屬性塊做了沒,記得在支援路徑下
lsj- 初級會員
- 文章總數 : 43
年齡 : 59
來自 : 桃園
職業 : 營建工程
愛好 : 閒
個性 : 懶
使用年資 : 10↑
使用版本 : 2008
積分 : 2
經驗值 : 5505
威望值 : 110
注冊日期 : 2010-06-28
回復: [討論]載入座標檔自動標示點號
aaronekin,
你要有一個屬性圖塊,標籤裡需有名稱,有x值,y值,z值,等標籤(因配合現有程式)
插入屬性圖塊時,給插入點,給比例值等完後,接著輸入點名稱後,還要接著先前取得的x值,y值,z值.
你的這行,(defun draw_pt (/ dwgname pt),這種變數的用法,我比較少用,所以先幫你拿掉了,改成下式後,執行上應該ok.
不好意思,我現在還不曉得怎麼把我試做的含屬性圖塊的圖檔上傳供你測試,不過你可以自己做一個屬性圖塊來測試看看.
提供測試完的結果圖片,左下角為屬性圖塊的插入點,座標值可能還要再處理一下.
你要有一個屬性圖塊,標籤裡需有名稱,有x值,y值,z值,等標籤(因配合現有程式)
插入屬性圖塊時,給插入點,給比例值等完後,接著輸入點名稱後,還要接著先前取得的x值,y值,z值.
你的這行,(defun draw_pt (/ dwgname pt),這種變數的用法,我比較少用,所以先幫你拿掉了,改成下式後,執行上應該ok.
- 代碼:
(defun draw_pt()
(setq x (atof(cadr ppp)))
(setq y (atof(caddr ppp)))
(setq z (atof(cadddr ppp)))
(setq pt (list x y z))
(command "-insert" "xxx" pt "" "" "" (car ppp) x y z) ;;直接明確輸入屬性圖塊名xxx
(princ)
)
不好意思,我現在還不曉得怎麼把我試做的含屬性圖塊的圖檔上傳供你測試,不過你可以自己做一個屬性圖塊來測試看看.
提供測試完的結果圖片,左下角為屬性圖塊的插入點,座標值可能還要再處理一下.
ginse0727- 高級會員
- 文章總數 : 256
年齡 : 50
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 6828
威望值 : 500
發帖精華 : 1
注冊日期 : 2010-07-13
回復: [討論]載入座標檔自動標示點號
屬性圖塊要在程式中使用,就是要先作好屬性圖塊,後使用「-insert」指令來執行一下,這樣你就知道輸入時的順序,了解順序後再下程式碼「(command "-insert" "xxx" pt "" "" "" (car ppp) x y z)」,即可;
還有我來說明一下「(defun draw_pt (/ dwgname pt)」的意思「(/ dwgname pt)」這個表示dwgname及pt變數在程式結束時即為nil
還有我來說明一下「(defun draw_pt (/ dwgname pt)」的意思「(/ dwgname pt)」這個表示dwgname及pt變數在程式結束時即為nil
ahorng- 初級會員
- 文章總數 : 37
年齡 : 54
來自 : 台中
職業 : 服務
愛好 : 腳踏車
個性 : 內向
使用年資 : 10
使用版本 : 2010
積分 : 1
經驗值 : 5453
威望值 : 27
注冊日期 : 2010-07-19
回復: [討論]載入座標檔自動標示點號
還是不知道問題在哪?
提供dwg檔(含圖塊xxx)及座標檔供測試
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
你的文字檔不應該用逗號分隔還記得你上述問題時,是以空隔分隔你的資料值,程式也是這麼設定的,
最快的解決方法是把你的DS.csv.txt檔案中的,號以空隔取代,這樣程式就能執行了,再不然就是
把if條件式的這行(/= p " ")
,改成(/= p ",")
你再自己考慮要用那一種吧.
格式如:
點號 N E Z
P171 2751313.696 252017.516 85.003
P164 2751309.289 252034.434 88.020
P162 2751308.083 252038.977 81.030
P160 2751306.846 252043.469 81.033
P158 2751305.398 252047.974 82.995
最快的解決方法是把你的DS.csv.txt檔案中的,號以空隔取代,這樣程式就能執行了,再不然就是
把if條件式的這行(/= p " ")
,改成(/= p ",")
你再自己考慮要用那一種吧.
ginse0727- 高級會員
- 文章總數 : 256
年齡 : 50
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 6828
威望值 : 500
發帖精華 : 1
注冊日期 : 2010-07-13
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9199
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [討論]載入座標檔自動標示點號
ginse0727 寫到:你的文字檔不應該用逗號分隔還記得你上述問題時,是以空隔分隔你的資料值,程式也是這麼設定的,
最快的解決方法是把你的DS.csv.txt檔案中的,號以空隔取代,這樣程式就能執行了,再不然就是
把if條件式的這行(/= p " ")
,改成(/= p ",")
你再自己考慮要用那一種吧.
收到
可是插入圖塊時,卻要我一個一個輸入屬性值
怎麼會這樣?
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
你會不會用到了那一個輸入屬性圖塊後,沒給X,Y,Z值的那一個程式啊.
(command "-insert" "xxx" pt "" "" "" (car ppp) x y z) ;;
就是上面這行程式,但少了X Y Z,
我是用你底下這個程式測試的,測試結果OK.
我貼上來,你再試看看,有問題再討論.
(command "-insert" "xxx" pt "" "" "" (car ppp) x y z) ;;
就是上面這行程式,但少了X Y Z,
我是用你底下這個程式測試的,測試結果OK.
我貼上來,你再試看看,有問題再討論.
- 代碼:
(defun c:inblock()
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2));;;讀取*.txt
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p " ")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
)
(defun draw_pt()
(setq x (atof(cadr ppp)))
(setq y (atof(caddr ppp)))
(setq z (atof(cadddr ppp)))
(setq pt (list x y z))
(command "-insert" "xxx" pt "" "" "" (car ppp) x y z) ;;直接明確輸入屬性圖塊名xxx
(princ)
)
(princ "\n----------<<輸入[inblock]執行程式>>------------")
(prin1)
ginse0727- 高級會員
- 文章總數 : 256
年齡 : 50
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 6828
威望值 : 500
發帖精華 : 1
注冊日期 : 2010-07-13
回復: [討論]載入座標檔自動標示點號
ginse0727 寫到:你會不會用到了那一個輸入屬性圖塊後,沒給X,Y,Z值的那一個程式啊.
(command "-insert" "xxx" pt "" "" "" (car ppp) x y z) ;;
就是上面這行程式,但少了X Y Z,
我是用你底下這個程式測試的,測試結果OK.
我貼上來,你再試看看,有問題再討論.
- 代碼:
(defun c:inblock()
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2));;;讀取*.txt
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p " ")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
)
(defun draw_pt()
(setq x (atof(cadr ppp)))
(setq y (atof(caddr ppp)))
(setq z (atof(cadddr ppp)))
(setq pt (list x y z))
(command "-insert" "xxx" pt "" "" "" (car ppp) x y z) ;;直接明確輸入屬性圖塊名xxx
(princ)
)
(princ "\n----------<<輸入[inblock]執行程式>>------------")
(prin1)
還是不行
插入圖塊時,也是要一個一個輸入屬性值
而且插入的座標值也不對
原本的程式搭配一般的圖塊都沒問題
怎會換成屬性圖塊就這麼難搞
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
真不好意思,我也不曉得你的問題在哪裡耶,因為我都是用你提供的檔案,還有上述的程式,測試出來是沒問題的.也沒有出現像你所說的,還要再一個一個的輸入屬性值,沒能幫上你的忙真抱歉,也勞駕其他的前輩高手們,撥個空測試一下看看問題到底出在哪裡??
ginse0727- 高級會員
- 文章總數 : 256
年齡 : 50
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 6828
威望值 : 500
發帖精華 : 1
注冊日期 : 2010-07-13
回復: [討論]載入座標檔自動標示點號
有試過系統變數ATTREQ設為0嗎?
0 設定所有屬性質使用預設值
1 依Attdia之選取,以提示或對話框方式設屬性質
0 設定所有屬性質使用預設值
1 依Attdia之選取,以提示或對話框方式設屬性質
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9199
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [討論]載入座標檔自動標示點號
還是不行
執行後出現[不明的指令「P001」。請按 F1 取得說明。]
程式似乎把座標檔裡第一個點號當成指令
把座標檔裡的點號去掉試試
就變成把第一個座標值當成指令
執行後出現[不明的指令「P001」。請按 F1 取得說明。]
程式似乎把座標檔裡第一個點號當成指令
把座標檔裡的點號去掉試試
就變成把第一個座標值當成指令
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
aaronekin 寫到:我有一個程式可將名為blk的圖塊匯入圖面
程式如下:
(defun c:inblock()
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2));;;讀取*.txt
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p " ")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
)
(defun draw_pt (/ dwgname pt)
(if
(setq dwgname "blk");;;此處可更改圖塊名稱
(progn
(setq x (atof (car ppp)))
(setq y (atof (cadr ppp)))
(setq z (atof (caddr ppp)))
(setq pt (list x y z))
(command "_insert" dwgname pt "" "" "" "")
) ; progn
(alert "\nThere is not object block")
) ; if
(princ)
)
(princ "\n----------<<輸入[inblock]執行程式>>------------")
(prin1)
現在問題來了
每個點都有編號
格式如:
點號 N E Z
P171 2751313.696 252017.516 85.003
P164 2751309.289 252034.434 88.020
P162 2751308.083 252038.977 81.030
P160 2751306.846 252043.469 81.033
P158 2751305.398 252047.974 82.995
我想做一個屬性圖塊
在匯入時同時將點號一起寫上
請問程式要如何修改?
上傳你做的屬性圖塊來試試
阿希- 高級會員
- 文章總數 : 348
年齡 : 43
來自 : 台北
職業 : 水電設計
愛好 : autolisp
個性 : 和平主義者
使用年資 : 5
使用版本 : 2008
積分 : 19
經驗值 : 6824
威望值 : 226
發帖精華 : 1
注冊日期 : 2008-09-22
回復: [討論]載入座標檔自動標示點號
aaronekin 寫到:
還是不知道問題在哪?
提供dwg檔(含圖塊xxx)及座標檔供測試
在這裡
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
aaronekin 寫到:我有一個程式可將名為blk的圖塊匯入圖面
程式如下:
(defun c:inblock()
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2));;;讀取*.txt
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p " ")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
)
(defun draw_pt (/ dwgname pt)
(if
(setq dwgname "blk");;;此處可更改圖塊名稱
(progn
(setq x (atof (car ppp)))
(setq y (atof (cadr ppp)))
(setq z (atof (caddr ppp)))
(setq pt (list x y z))
(command "_insert" dwgname pt "" "" "" "")
) ; progn
(alert "\nThere is not object block")
) ; if
(princ)
)
(princ "\n----------<<輸入[inblock]執行程式>>------------")
(prin1)
現在問題來了
每個點都有編號
格式如:
點號 N E Z
P171 2751313.696 252017.516 85.003
P164 2751309.289 252034.434 88.020
P162 2751308.083 252038.977 81.030
P160 2751306.846 252043.469 81.033
P158 2751305.398 252047.974 82.995
我想做一個屬性圖塊
在匯入時同時將點號一起寫上
請問程式要如何修改?
看程式這似乎是書上的範本 ~
(defun c:inblock()
(setvar "cmdecho" 0)
(setvar "pdmode" 34)
(setq ffn (getfiled "選取檔案" "" "txt" 2))
(setq ff (open ffn "r"))
(setq data (read-line ff))
(while data
(setq p "" pp "" ppp '() i 1)
(setq nn (strlen data))
(repeat nn
(setq p (substr data i 1))
(if (/= p ",")
(setq pp (strcat pp p))
(setq ppp (cons pp ppp) pp "")
)
(setq i (1+ i))
)
(setq ppp (cons pp ppp))
(setq ppp (reverse ppp))
(draw_pt)
(setq data (read-line ff))
)
(close ff)
(princ)
)
(defun draw_pt ()
(setq x (atof (cadr ppp)))
(setq y (atof (caddr ppp)))
(setq z (atof (cadddr ppp)))
(setq pt (list x y Z))
(command "_insert" "xxx" pt "" "" "" (car ppp)(cadr ppp)(caddr ppp)(cadddr ppp))
(princ)
)
阿希- 高級會員
- 文章總數 : 348
年齡 : 43
來自 : 台北
職業 : 水電設計
愛好 : autolisp
個性 : 和平主義者
使用年資 : 5
使用版本 : 2008
積分 : 19
經驗值 : 6824
威望值 : 226
發帖精華 : 1
注冊日期 : 2008-09-22
回復: [討論]載入座標檔自動標示點號
可以繪出圖塊了
不過點號及座標值還是沒有自動寫上
是不是屬性圖塊不對
還是有其他原因
不過點號及座標值還是沒有自動寫上
是不是屬性圖塊不對
還是有其他原因
aaronekin- 中級會員
- 文章總數 : 150
年齡 : 45
來自 : 台中市
職業 : 土木工程
愛好 : 電影
個性 : 開朗
使用年資 : 12 years
使用版本 : 2008~2015
積分 : 6
經驗值 : 6068
威望值 : 41
注冊日期 : 2008-10-16
回復: [討論]載入座標檔自動標示點號
找好久...問好多人..但都不會.
感恩...大大.
感恩...大大.
tcrmrrt3256- 初級會員
- 文章總數 : 15
年齡 : 57
來自 : 嘉義市
職業 : 繪圖員
愛好 : 電腦資訊
個性 : 廣結善緣..但不隨性.
使用年資 : 3
使用版本 : 2008
積分 : 1
經驗值 : 4897
威望值 : 15
注冊日期 : 2011-08-17
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章