[討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
5 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共2頁)
[討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
如我今天所提問的~顧客自行將檔案排孔排好後~因為對方不是用autocad的關係
所以我必須將檔案轉成CAD的檔~
但是其他軟體轉換成CAD的檔案時~圓會變成危雲行線 (重點還沒有中心點)
這樣下來排孔花了不少時間 不清楚有無將正圓 直接複製在雲行線上
或是直接替換成正圓的功能~
蘋果爸發表的複製性質我已經用過 但是依然不行@@'
所以我必須將檔案轉成CAD的檔~
但是其他軟體轉換成CAD的檔案時~圓會變成危雲行線 (重點還沒有中心點)
這樣下來排孔花了不少時間 不清楚有無將正圓 直接複製在雲行線上
或是直接替換成正圓的功能~
蘋果爸發表的複製性質我已經用過 但是依然不行@@'
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
這部份沒有內建的指令可以轉!
是否可以上傳DWG來測試!
是否可以上傳DWG來測試!
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
蘋果爸 我將檔案寄給你~
上傳那個我不太會用......
麻煩您惹
上傳那個我不太會用......
麻煩您惹
- 附件
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
很簡單的~已經先幫您上傳!x26811199 寫到:蘋果爸 我將檔案寄給你~
上傳那個我不太會用......
麻煩您惹
![認同](/users/3215/23/55/09/smiles/349794.gif)
上傳方式請參考:「教學」論壇上傳附件功能
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
請問你客戶用甚麼軟體
下載你的圖~可以抓到雲行線的四分點~用掣點抓取
不過有281個雲行"圓"要抓很久
![[討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~ 20111104212949](https://2img.net/r/ihimizer/img714/2483/20111104212949.png)
下載你的圖~可以抓到雲行線的四分點~用掣點抓取
不過有281個雲行"圓"要抓很久
![不玩了](/users/3215/23/55/09/smiles/48309.gif)
![[討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~ 20111104212949](https://2img.net/r/ihimizer/img714/2483/20111104212949.png)
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30370
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
試試看吧!應該可以幫到你.....
測試的時後特別用紅色的色系來作更改區別,如果不想要再自行修改...
其次是該圖連直線條也是雲形線,在選取的時後要小心..........
我最後只能夠篩選到雲形線而已..不知道其它前輩有沒有更好的方法...
測試的時後特別用紅色的色系來作更改區別,如果不想要再自行修改...
其次是該圖連直線條也是雲形線,在選取的時後要小心..........
我最後只能夠篩選到雲形線而已..不知道其它前輩有沒有更好的方法...
- 代碼:
(defun c:ttoo3()
(SETVAR "CMDECHO" 0)
(setq FTT (getint "\n 輸入圓直徑大小: "))
(princ "請選預替換的雲型線 ")
(setq en (ssget '((0 . "spline"))))
(setq ppp (sslength en))
(setq qqq 0)
(repeat ppp
(setq ggg (ssname en qqq))
(command "-color" 1)
(setq hhh (entget ggg))
(setq pt1 (cdr (assoc 10 hhh)))
(command "circle" "2p" PT1 (polar pt1 (* pi 1.5) FTT))
(setq qqq (+ qqq 1)))
(command "erase" en "")
(command "-color" "bylayer")
(princ (strcat "\n共有 " (itoa ppp) " 個雲型線物件替換成圓物件...."))
(prin1)
)
![打瞌睡](/users/3215/23/55/09/smiles/667826.gif)
Tiger&蘋果爸 寫到:謝謝熱心程式分享~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
Tiger&蘋果爸 在 2011-11-05, 15:31 作了第 1 次修改 (原因 : 讚一個!!)
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7136
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
adslwang 寫到:試試看吧!應該可以幫到你.....
測試的時後特別用紅色的色系來作更改區別,如果不想要再自行修改...
其次是該圖連直線條也是雲形線,在選取的時後要小心..........
我最後只能夠篩選到雲形線而已..不知道其它前輩有沒有更好的方法...
- Spoiler(用來隱藏帖子內容):
- 代碼:
(defun c:ttoo3()
(SETVAR "CMDECHO" 0)
(setq FTT (getint "\n 輸入圓直徑大小: "))
(princ "請選預替換的雲型線 ")
(setq en (ssget '((0 . "spline"))))
(setq ppp (sslength en))
(setq qqq 0)
(repeat ppp
(setq ggg (ssname en qqq))
(command "-color" 1)
(setq hhh (entget ggg))
(setq pt1 (cdr (assoc 10 hhh)))
(command "circle" "2p" PT1 (polar pt1 (* pi 1.5) FTT))
(setq qqq (+ qqq 1)))
(command "erase" en "")
(command "-color" "bylayer")
(princ (strcat "\n共有 " (itoa ppp) " 個雲型線物件替換成圓物件...."))
(prin1)
)![]()
這LSP真不錯用~ 給你拍拍手~佛心來的~
![認同](/users/3215/23/55/09/smiles/349794.gif)
要先求得雲行線產生之圓直徑數據~這點~可以用掣點方式求得
非圓形的雲行線~可以用圖層去控制關閉就好~
可是不能全選~要分次~ 全選會有錯誤
- 代碼:
指令: ttoo3
輸入圓直徑大小: 9
請選預替換的雲型線
選取物件: 指定對角點: 找到 281 個
選取物件:
*無效*
; 錯誤: 函數被取消
但是有些還是無法選取 會一直有錯誤
- 代碼:
令: TTOO3
輸入圓直徑大小: 請選預替換的雲型線
選取物件: 找到 1 個
選取物件: ; 錯誤: 損壞的引數類型: numberp: nil
指定圓直徑的第二個端點: *取消*
如圖 紅色為LSP重新繪製,綠色為變更圖層後的雲行線的圓 (TEST 版本 AutoCAD 2010)
![[討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~ 20111105133909](https://2img.net/r/ihimizer/img148/2162/20111105133909.png)
最後有幾個lsp不能畫...
https://2img.net/r/ihimizer/img64/9378/20111105140154.png
![[討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~ 20111105140154](https://2img.net/r/ihimizer/img64/9378/20111105140154.png)
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30370
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
adslwang那個是什麼阿....應該要放在哪裡
JUDY大大~我也是一個一個慢慢移~雖然他沒有中心點
但是還友四邊的點 一個一個抓 抓到眼睛快瞎了...
現在才一個字而已...
我總共弄了''三重妙聖宮'' <~這五個字~
一個圓一個圓移動.....簡直快死了
大概弄了七百多孔吧.....差點眼睛度數就要再增加了
想說有時候我光弄這一個case 其他的都會被拖到
所以趕緊試來詢問一下各位高手@@
LSP那個要怎麼用呀..
JUDY大大~我也是一個一個慢慢移~雖然他沒有中心點
但是還友四邊的點 一個一個抓 抓到眼睛快瞎了...
現在才一個字而已...
我總共弄了''三重妙聖宮'' <~這五個字~
一個圓一個圓移動.....簡直快死了
大概弄了七百多孔吧.....差點眼睛度數就要再增加了
想說有時候我光弄這一個case 其他的都會被拖到
所以趕緊試來詢問一下各位高手@@
LSP那個要怎麼用呀..
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
剛剛看了一下JUDY大大的才發現~原來JUDY大大畫了一個十字在求中心點~
我是弄一弄才發現~其實他四邊都有點~我畫出一個直徑9MM正圓
用複製選項選取左邊的四分點~接著在覆蓋上去的時候對準左邊
正圓就很剛好的複製在雲型線上面了~
只是說很奇怪的是 客戶有些雲行線得四分點很怪= =
有些左邊沒 有些右邊 很麻煩 浪費很多時間...
我是弄一弄才發現~其實他四邊都有點~我畫出一個直徑9MM正圓
用複製選項選取左邊的四分點~接著在覆蓋上去的時候對準左邊
正圓就很剛好的複製在雲型線上面了~
只是說很奇怪的是 客戶有些雲行線得四分點很怪= =
有些左邊沒 有些右邊 很麻煩 浪費很多時間...
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
請把 adslwang 提供的LISP代碼複製後 → 開啟記事本貼上 → 副檔名請存成LSP格式(如:ttoo3.lsp) → 掛入到AutoCAD中 [影片]自訂CUI 載入LISP → 指令名稱為 ttoo3x26811199 寫到:adslwang那個是什麼阿....應該要放在哪裡
LSP那個要怎麼用呀..
LSP可以放在 C:\Program Files\AutoCAD 2008\support 中!
建議你多搜尋相關文章了解一下LISP的用途及作法!
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
adslwang 寫到:試試看吧!應該可以幫到你.....
測試的時後特別用紅色的色系來作更改區別,如果不想要再自行修改...
其次是該圖連直線條也是雲形線,在選取的時後要小心..........
我最後只能夠篩選到雲形線而已..不知道其它前輩有沒有更好的方法...
![竊喜](/users/3215/23/55/09/smiles/91815.gif)
1.加入UNDO設定程式開始
2.儲存原始圖層名稱及物件鎖點
3.新增圖層名稱畫圓
4.畫圓不輸入半徑,改用抓取第二個串列資料
judy我試過可以一次完成,是否可以再試試~judyyai 寫到: 這LSP真不錯用~ 給你拍拍手~佛心來的~![]()
要先求得雲行線產生之圓直徑數據~這點~可以用掣點方式求得
非圓形的雲行線~可以用圖層去控制關閉就好~
可是不能全選~要分次~ 全選會有錯誤
![認同](/users/3215/23/55/09/smiles/349794.gif)
👇專屬B會員請直接前往版區下載:
[專屬分享]AutoCAD顧問_Spline2Circle雲形線轉圓程式Tiger&蘋果爸 在 2023-02-17, 12:34 作了第 2 次修改
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
感謝各位鼎立相助~
至少比我原本用的快了一百倍以上
感謝各位大大
至少比我原本用的快了一百倍以上
感謝各位大大
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
[討論] 請問一下 如何將雲型線的圓 轉換成正圓~part2
抱歉 各位~
我又遇到了一個問題
上次各位師傅們傳授的LSP指令 在當下我重複用的時候
真的是事半功倍~
但是今天我又遇到了一個相當嚴重的問題~它顯示''函數錯誤''了....
他這個圖案中包括橢圓 雲型線~
因為還不會寫LSP的關係~
沒辦法自己修改~@@
不知道為何~同樣都用CorelDraw檔轉換過來 有些圓會變成雲行線~有些會變成橢圓
我用上次的指令去修改~選取雲型線修改 但是會函數失敗~
是因為指令的執行只執行 9mm雲行線的圓 轉換9mm正圓ㄇ~?
附件下載: http://dl.dropbox.com/u/9657907/TEST/1107.zip
我又遇到了一個問題
上次各位師傅們傳授的LSP指令 在當下我重複用的時候
真的是事半功倍~
但是今天我又遇到了一個相當嚴重的問題~它顯示''函數錯誤''了....
他這個圖案中包括橢圓 雲型線~
因為還不會寫LSP的關係~
沒辦法自己修改~@@
不知道為何~同樣都用CorelDraw檔轉換過來 有些圓會變成雲行線~有些會變成橢圓
我用上次的指令去修改~選取雲型線修改 但是會函數失敗~
是因為指令的執行只執行 9mm雲行線的圓 轉換9mm正圓ㄇ~?
附件下載: http://dl.dropbox.com/u/9657907/TEST/1107.zip
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
天啊 救命啊~
我剛剛自己用修改的方式去改LSP 結果我做出來 圓會偏移....
(defun c:1()
(SETVAR "CMDECHO" 0)
(setq FTT (getint "\n 輸入圓直徑大小: "))
(princ "請選預替換的橢圓 ")
(setq en (ssget '((0 . "ellipse"))))
(setq ppp (sslength en))
(setq qqq 0)
(repeat ppp
(setq ggg (ssname en qqq))
(command "-color" 1)
(setq hhh (entget ggg))
(setq pt1 (cdr (assoc 10 hhh)))
(command "circle" "2p" PT1 (polar pt1 (* pi 1.5) FTT))
(setq qqq (+ qqq 1)))
(command "erase" en "")
(command "-color" "bylayer")
(princ (strcat "\n共有 " (itoa ppp) " 個橢圓物件替換成圓物件...."))
(prin1)
)
還會跑出這種情況....
附件下載: http://dl.dropbox.com/u/9657907/TEST/111.zip
我剛剛自己用修改的方式去改LSP 結果我做出來 圓會偏移....
(defun c:1()
(SETVAR "CMDECHO" 0)
(setq FTT (getint "\n 輸入圓直徑大小: "))
(princ "請選預替換的橢圓 ")
(setq en (ssget '((0 . "ellipse"))))
(setq ppp (sslength en))
(setq qqq 0)
(repeat ppp
(setq ggg (ssname en qqq))
(command "-color" 1)
(setq hhh (entget ggg))
(setq pt1 (cdr (assoc 10 hhh)))
(command "circle" "2p" PT1 (polar pt1 (* pi 1.5) FTT))
(setq qqq (+ qqq 1)))
(command "erase" en "")
(command "-color" "bylayer")
(princ (strcat "\n共有 " (itoa ppp) " 個橢圓物件替換成圓物件...."))
(prin1)
)
還會跑出這種情況....
附件下載: http://dl.dropbox.com/u/9657907/TEST/111.zip
Tiger&蘋果爸 在 2011-11-09, 12:54 作了第 4 次修改 (原因 : 勿用注音文)
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
Tiger&蘋果爸 寫到:
judy我試過可以一次完成,是否可以再試試~
嗯!可以了~而且不用輸入直徑耶
![竊喜](/users/3215/23/55/09/smiles/91815.gif)
x26811199 寫到:天啊 救命啊~
我剛剛自己用修改的方式去改LSP 結果我做出來 圓會偏移....還會跑出這種情況....
- Spoiler(用來隱藏帖子內容):
(defun c:1()
(SETVAR "CMDECHO" 0)
(setq FTT (getint "\n 輸入圓直徑大小: "))
(princ "請選預替換的橢圓 ")
(setq en (ssget '((0 . "ellipse"))))
(setq ppp (sslength en))
(setq qqq 0)
(repeat ppp
(setq ggg (ssname en qqq))
(command "-color" 1)
(setq hhh (entget ggg))
(setq pt1 (cdr (assoc 10 hhh)))
(command "circle" "2p" PT1 (polar pt1 (* pi 1.5) FTT))
(setq qqq (+ qqq 1)))
(command "erase" en "")
(command "-color" "bylayer")
(princ (strcat "\n共有 " (itoa ppp) " 個橢圓物件替換成圓物件...."))
(prin1)
)
你改的程式~我不能用~一用就錯誤
judyyai- 管理顧問
- 文章總數 : 7786
年齡 : 47
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2019(開始於2019年底末月)
AutoCAD基礎篇等級 : 10星級
積分 : 393
最佳解答 : 1
經驗值 : 30370
威望值 : 3610
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
我不會改阿
我只是將她的雲行線改成橢圓...
就這樣
因為我用他原本的程式只能修改雲行線
但是今天碰到一個CASE居然轉換成CAD變成橢圓...
要將之前雲行線轉換圓變成橢圓轉換圓要怎麼改...
不會用
我只是將她的雲行線改成橢圓...
就這樣
因為我用他原本的程式只能修改雲行線
但是今天碰到一個CASE居然轉換成CAD變成橢圓...
要將之前雲行線轉換圓變成橢圓轉換圓要怎麼改...
不會用
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
adslwang 寫到:試試看吧!應該可以幫到你.....
- Spoiler(用來隱藏帖子內容):
測試的時後特別用紅色的色系來作更改區別,如果不想要再自行修改...
其次是該圖連直線條也是雲形線,在選取的時後要小心..........
我最後只能夠篩選到雲形線而已..不知道其它前輩有沒有更好的方法...
- 代碼:
(defun c:ttoo3()
(SETVAR "CMDECHO" 0)
(setq FTT (getint "\n 輸入圓直徑大小: "))
(princ "請選預替換的雲型線 ")
(setq en (ssget '((0 . "spline"))))
(setq ppp (sslength en))
(setq qqq 0)
(repeat ppp
(setq ggg (ssname en qqq))
(command "-color" 1)
(setq hhh (entget ggg))
(setq pt1 (cdr (assoc 10 hhh)))
(command "circle" "2p" PT1 (polar pt1 (* pi 1.5) FTT))
(setq qqq (+ qqq 1)))
(command "erase" en "")
(command "-color" "bylayer")
(princ (strcat "\n共有 " (itoa ppp) " 個雲型線物件替換成圓物件...."))
(prin1)
)
Tiger&蘋果爸 寫到:謝謝熱心程式分享~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
真好!!前人種樹後人涼!!
讚美一下辛苦花時間編級程式的大大!!
![感動](/users/3215/23/55/09/smiles/625370.gif)
下面附上我自己借前人修改出來的程式
- 代碼:
(defun c:spline2Circle()
(SETQ OLDOSMODE (GETVAR "OSMODE"))
(SETQ OLDLAYEAR (GETVAR "CLAYER"))
(SETVAR "CMDECHO" 0)
(SETVAR "OSMODE" 0)
(princ "請選預替換的雲型線 ")
(setq en (ssget '((0 . "spline"))))
(setq n (sslength en))
(setq i 0)
(setq radius 0)
(command "LAYER" "M" "CIRCLE" "C" 1 "CIRCLE" "")
(repeat n
(setq enidate (entget (ssname en i)))
(setq enj (member (assoc 10 enidate) enidate))
(setq PT1 (cdr (car enj)))
(setq j 0)
(repeat (length enj)
(setq PTj (cdr (nth j enj)))
(if (>= (distance PT1 PTj) radius)
(progn
(setq PTA PTj)
(setq radius (distance PT1 PTj))
)
)
(setq j (1+ j))
)
(setq PTC (polar PT1 (angle PT1 PTA) (/ (distance PT1 PTA) 2 )))
(command "circle" PTC PTA)
(setq PTA nil)
(setq radius 0)
(setq i (1+ i))
)
(command "erase" en "")
(princ (strcat "\n共有 " (itoa n) " 個雲型線物件替換成圓物件...."))
(SETVAR "OSMODE" OLDOSMODE)
(SETVAR "CLAYER" OLDLAYEAR)
(prin1)
)
leoneriol 在 2011-11-10, 15:47 作了第 1 次修改 (原因 : 附上程式碼)
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9125
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
用了比較腦殘的方式......
把spline2Circle跟ellipse2Circle變成spline&ellipse2Circle
PS:再次感謝種樹的前人
把spline2Circle跟ellipse2Circle變成spline&ellipse2Circle
- 代碼:
(defun c:spline&ellipse2Circle()
(SETQ OLDOSMODE (GETVAR "OSMODE"))
(SETQ OLDLAYEAR (GETVAR "CLAYER"))
(SETVAR "CMDECHO" 0)
(SETVAR "OSMODE" 0)
(princ "請選預替換的雲型線及橢圓")
(setq en (ssget '((0 . "spline,ellipse"))))
(setq n (sslength en))
(setq i 0)
(setq splineN 0)
(setq ellipseN 0)
(setq radius 0)
(command "LAYER" "M" "CIRCLE" "C" 1 "CIRCLE" "")
(repeat n
(setq enidate (entget (ssname en i)))
(if (= (cdr (assoc 0 enidate)) "SPLINE")
(progn
(setq enj (member (assoc 10 enidate) enidate))
(setq PT1 (cdr (car enj)))
(setq j 0)
(repeat (length enj)
(setq PTj (cdr (nth j enj)))
(if (>= (distance PT1 PTj) radius)
(progn
(setq PTA PTj)
(setq radius (distance PT1 PTj))
)
)
(setq j (1+ j))
)
(setq PTC (polar PT1 (angle PT1 PTA) (/ (distance PT1 PTA) 2 )))
(command "circle" PTC PTA)
(setq PTA nil)
(setq radius 0)
(setq i (1+ i))
(setq splineN (1+ splineN))
)
)
(if (= (cdr (assoc 0 enidate)) "ELLIPSE")
(progn
(setq PT1 (cdr (assoc 10 enidate)))
(setq PT2 (cdr (assoc 11 enidate)))
(setq PT3 (polar Pt1 0 (distance '(0 0) pt2)))
(command "circle" PT1 PT3)
(setq i (+ i 1))
(setq ellipseN (1+ ellipseN))
)
)
)
(command "erase" en "")
(princ (strcat "\n共有 " (itoa splineN) " 個雲行線物件替換成圓物件...."))
(princ (strcat "\n共有 " (itoa ellipseN) " 個橢圓物件替換成圓物件...."))
(SETVAR "OSMODE" OLDOSMODE)
(SETVAR "CLAYER" OLDLAYEAR)
(COMMAND "UNDO" "E")
(prin1)
)
![不玩了](/users/3215/23/55/09/smiles/48309.gif)
PS:再次感謝種樹的前人
![幸福](/users/3215/23/55/09/smiles/207485.gif)
Tiger&蘋果爸 寫到:謝謝熱心程式分享~< 積分 +1>
[公告]關於團隊成員的回文及貢獻
Tiger&蘋果爸 在 2011-11-10, 17:43 作了第 2 次修改 (原因 : 錯字錯字....每次都繪有錯字Orz)
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9125
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
感謝LEO大大鼎立相助...
因為剛接觸CAD的關係 還有相當多東西不會
一直麻煩各位真是不好意思~
LSP檔 有沒有地方可以學習~?
想說可以慢慢研究 或許以後各位前輩忙的時候
我還可以上來幫忙解決疑難雜症
LEO大最後的檔案太酷了~不用分了 全部都選就對了
因為剛接觸CAD的關係 還有相當多東西不會
一直麻煩各位真是不好意思~
LSP檔 有沒有地方可以學習~?
想說可以慢慢研究 或許以後各位前輩忙的時候
我還可以上來幫忙解決疑難雜症
LEO大最後的檔案太酷了~不用分了 全部都選就對了
x26811199- 一般會員
- 文章總數 : 24
年齡 : 35
來自 : 鑫北市樹林區
職業 : 剛接觸美工
愛好 : 鋼琴~網球~
個性 : 樂天開朗
使用年資 : 新手初學
使用版本 : 2008
經驗值 : 4790
威望值 : 0
注冊日期 : 2011-10-15
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
我請問一下蘋果爸及leoneriol部份程式碼 有一些我沒有用過看不太懂 請教一下增加基本功.......
蘋果爸的部份程式請教:
(setq pt (member (assoc 10 hhh) hhh))
(setq pt1 (cdr (car pt)))
(setq pt2 (cdr (nth 8 pt)))
蘋果爸這三行寫法中的menber及(nth 8 pt)的作用是…..這兩個我沒用過,不過我是好奇的是靠(nth 8 pt)它居然可以抓到第二點,我常用的也頂多例用getpoint及distance來計數兩點值來替代圓的直徑,兩個紅色部份可以解析一下嘛?
leoneriol的部份程式請教:
下面的程式第一個被標示為紅色的第一行以我的認知應該是取得起點串列 第二個被標示起來的為什麼可以被length當成計數 它不是串列嘛 還是我的觀念有問題 可以解析一下嘛?
(repeat n
(setq enidate (entget (ssname en i)))
(setq enj (member (assoc 10 enidate) enidate))
(setq PT1 (cdr (car enj)))
(setq j 0)
(repeat (length enj)
(setq PTj (cdr (nth j enj)))
(if (>= (distance PT1 PTj) radius)
(progn
(setq PTA PTj)
(setq radius (distance PT1 PTj))
)
)
(setq j (1+ j))
)
蘋果爸的部份程式請教:
(setq pt (member (assoc 10 hhh) hhh))
(setq pt1 (cdr (car pt)))
(setq pt2 (cdr (nth 8 pt)))
蘋果爸這三行寫法中的menber及(nth 8 pt)的作用是…..這兩個我沒用過,不過我是好奇的是靠(nth 8 pt)它居然可以抓到第二點,我常用的也頂多例用getpoint及distance來計數兩點值來替代圓的直徑,兩個紅色部份可以解析一下嘛?
leoneriol的部份程式請教:
下面的程式第一個被標示為紅色的第一行以我的認知應該是取得起點串列 第二個被標示起來的為什麼可以被length當成計數 它不是串列嘛 還是我的觀念有問題 可以解析一下嘛?
(repeat n
(setq enidate (entget (ssname en i)))
(setq enj (member (assoc 10 enidate) enidate))
(setq PT1 (cdr (car enj)))
(setq j 0)
(repeat (length enj)
(setq PTj (cdr (nth j enj)))
(if (>= (distance PT1 PTj) radius)
(progn
(setq PTA PTj)
(setq radius (distance PT1 PTj))
)
)
(setq j (1+ j))
)
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7136
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
因為這個雲形線的特性,需要先把所有的座標點過濾出來,再來擷取畫圓所需的資料。adslwang 寫到: 蘋果爸的部份程式請教:
(setq pt (member (assoc 10 hhh) hhh))
(setq pt1 (cdr (car pt)))
(setq pt2 (cdr (nth 8 pt)))
蘋果爸這三行寫法中的menber及(nth 8 pt)的作用是…..這兩個我沒用過,不過我是好奇的是靠(nth 8 pt)它居然可以抓到第二點,我常用的也頂多例用getpoint及distance來計數兩點值來替代圓的直徑,兩個紅色部份可以解析一下嘛?
1.member表示列出需要的群組資料:把串列資料關於 10 的部份抓出來
指令: (setq pt (member (assoc 10 hhh) hhh))
- 代碼:
((10 0.146 9.4276 0.0) (10 2.6309 9.4276 0.0) (10 4.646 7.4125 0.0) (10 4.6464.9276 0.0)
(10 4.646 4.9276 0.0) (10 4.646 2.4427 0.0) (10 2.6309 0.4276 0.0) (10 0.146 0.4276 0.0)
(10 0.146 0.4276 0.0) (10 -2.3389 0.4276 0.0) (10 -4.354 2.4427 0.0) (10 -4.354 4.9276 0.0)
(10 -4.354 4.9276 0.0) (10 -4.354 7.4125 0.0) (10 -2.3389 9.4276 0.0) (10 0.146 9.4276 0.0))
2.抓出圓需要的第1點座標
指令: (setq pt1 (cdr (car pt)))
- 代碼:
(0.146 9.4276 0.0)
3.nth表示第8個資料:在 10 串列資料中,我們需要的第8個座標資料,就是2p畫圓的第2點
指令: (setq pt2 (cdr (nth 8 pt)))
- 代碼:
(0.146 0.4276 0.0)
說明不清楚的地方,煩請有經驗的朋友幫忙補充囉~
![害羞](/users/3215/23/55/09/smiles/84227.gif)
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
Tiger&蘋果爸 寫到:因為這個雲形線的特性,需要先把所有的座標點過濾出來,再來擷取畫圓所需的資料。adslwang 寫到: 蘋果爸的部份程式請教:
(setq pt (member (assoc 10 hhh) hhh))
(setq pt1 (cdr (car pt)))
(setq pt2 (cdr (nth 8 pt)))
蘋果爸這三行寫法中的menber及(nth 8 pt)的作用是…..這兩個我沒用過,不過我是好奇的是靠(nth 8 pt)它居然可以抓到第二點,我常用的也頂多例用getpoint及distance來計數兩點值來替代圓的直徑,兩個紅色部份可以解析一下嘛?
- Spoiler(用來隱藏帖子內容):
1.member表示列出需要的群組資料:把串列資料關於 10 的部份抓出來
指令: (setq pt (member (assoc 10 hhh) hhh))
- 代碼:
((10 0.146 9.4276 0.0) (10 2.6309 9.4276 0.0) (10 4.646 7.4125 0.0) (10 4.6464.9276 0.0)
(10 4.646 4.9276 0.0) (10 4.646 2.4427 0.0) (10 2.6309 0.4276 0.0) (10 0.146 0.4276 0.0)
(10 0.146 0.4276 0.0) (10 -2.3389 0.4276 0.0) (10 -4.354 2.4427 0.0) (10 -4.354 4.9276 0.0)
(10 -4.354 4.9276 0.0) (10 -4.354 7.4125 0.0) (10 -2.3389 9.4276 0.0) (10 0.146 9.4276 0.0))
2.抓出圓需要的第1點座標
指令: (setq pt1 (cdr (car pt)))
- 代碼:
(0.146 9.4276 0.0)
3.nth表示第8個資料:在 10 串列資料中,我們需要的第8個座標資料,就是2p畫圓的第2點
指令: (setq pt2 (cdr (nth 8 pt)))
- 代碼:
(0.146 0.4276 0.0)
說明不清楚的地方,煩請有經驗的朋友幫忙補充囉~
謝謝蘋果爸 因為這兩個函數沒有用過 了解一下增加基本功力
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7136
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
(member (assoc 10 enidate) enidate)adslwang 寫到:我請問一下蘋果爸及leoneriol部份程式碼 有一些我沒有用過看不太懂 請教一下增加基本功.......leoneriol的部份程式請教:
- Spoiler(用來隱藏帖子內容):
蘋果爸的部份程式請教:
(setq pt (member (assoc 10 hhh) hhh))
(setq pt1 (cdr (car pt)))
(setq pt2 (cdr (nth 8 pt)))
蘋果爸這三行寫法中的menber及(nth 8 pt)的作用是…..這兩個我沒用過,不過我是好奇的是靠(nth 8 pt)它居然可以抓到第二點,我常用的也頂多例用getpoint及distance來計數兩點值來替代圓的直徑,兩個紅色部份可以解析一下嘛?
下面的程式第一個被標示為紅色的第一行以我的認知應該是取得起點串列 第二個被標示起來的為什麼可以被length當成計數 它不是串列嘛 還是我的觀念有問題 可以解析一下嘛?
(repeat n
(setq enidate (entget (ssname en i)))
(setq enj (member (assoc 10 enidate) enidate))
(setq PT1 (cdr (car enj)))
(setq j 0)
(repeat (length enj)
(setq PTj (cdr (nth j enj)))
(if (>= (distance PT1 PTj) radius)
(progn
(setq PTA PTj)
(setq radius (distance PT1 PTj))
)
)
(setq j (1+ j))
)
因為member的作用就是傳回關鍵元素及其以後的"串列"
其呈現方式就如蘋果爸解釋的一樣!
(length enj)
而length的功用恰恰是用於傳回串列元素的數量,所以我用在這裡(雲型線有多少個控制點我就repeat幾次)
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9125
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
再請教一下
(setq PTj (cdr (nth j enj))) 原I宣告為0 enj為(10)起點串列值 為何在這一行可以抓到第二點
因為蘋果爸設為8剛好在對角點 怎麽會這樣呢?第二點是怎麼補捉到的。
(setq PT3 (polar Pt1 0 (distance '(0 0) pt2)))
紅色的這樣寫是代表什麼阿!我只知道是在計算距離,可是紅色寫法代表看不懂可以教一下嘛!
(setq PTj (cdr (nth j enj))) 原I宣告為0 enj為(10)起點串列值 為何在這一行可以抓到第二點
因為蘋果爸設為8剛好在對角點 怎麽會這樣呢?第二點是怎麼補捉到的。
(setq PT3 (polar Pt1 0 (distance '(0 0) pt2)))
紅色的這樣寫是代表什麼阿!我只知道是在計算距離,可是紅色寫法代表看不懂可以教一下嘛!
adslwang- 高級會員
- 文章總數 : 376
年齡 : 46
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 7136
威望值 : 356
回帖精華 : 1
注冊日期 : 2008-10-02
回復: [討論] 請問一下 如何將雲型線與橢圓的圓 轉換成正圓~
adslwang 寫到:再請教一下
(setq PTj (cdr (nth j enj))) 原I宣告為0 enj為(10)起點串列值 為何在這一行可以抓到第二點
因為蘋果爸設為8剛好在對角點 怎麽會這樣呢?第二點是怎麼補捉到的。
- 代碼:
(setq enidate (entget (ssname en i)));取出"選集"索引值為 i 的物件的群碼 並儲存於enidate
(if (= (cdr (assoc 0 enidate)) "SPLINE");如果此物件為SPLINE
;;計算出最接近半近的距離
(progn
(setq enj (member (assoc 10 enidate) enidate));取出此SPLINE的"控制點串列" 並儲存於enj
(setq PT1 (cdr (car enj)));從"控制點串列"中取出第一個控制點 並儲存於enj
(setq j 0);初始值設為0 [用於依順序從"控制點串列"中取出控制點]
(repeat (length enj);串列中有多少控制點就重複幾次
(setq PTj (cdr (nth j enj)));依索引值j從"控制點串列"中取出對應的控制點 並儲存於PTj
(if (>= (distance PT1 PTj) radius);如果此兩點距離大於等於 radius
(progn
(setq PTA PTj);將PTj取出 並儲存於PTA
(setq radius (distance PT1 PTj));將此兩點距離 儲存於radius
);_end progn
)
(setq j (1+ j));索引值+1 [用於依順序從"控制點串列"中取出控制點]
)
(setq PTC (polar PT1 (angle PT1 PTA) (/ (distance PT1 PTA) 2 )));求出圓心
(command "circle" PTC PTA);畫圓 圓心+原上的一點
(setq PTA nil);設定PTA為空集合
(setq radius 0);設定radius為0值
(setq i (1+ i));索引值+1 [用於依順序從"選集"中取出物件的群碼]
(setq splineN (1+ splineN));值+1 [用於計算"SPLINE"物件數量]
);_end progn
)
而是希望能求出最接近的直徑及圓心畫圓
所以我依序取出所有的控制點並選出其兩點距離最長的兩個點
(取出兩點距離最長的兩點後也可以用Circle 2p畫圓,可以不用像我畫蛇添足依樣還硬要求出圓心再畫圓)
會這樣做是因為考慮不一定每個雲SPLINE所構成的圓都會有相同數量的控制點
你可以將代碼貼於LISP編輯器上觀看,會有顏色區別(我做了一些加註)以方便讀取
PS:抱歉我不太會解說,如果沒解是到你需要的部分,再麻煩您提出,或是看看有沒有前輩可以提醒一下XD
'(0 0)其實就是坐標軸x y 軸原點(0,0)點,adslwang 寫到:
(setq PT3 (polar Pt1 0 (distance '(0 0) pt2)))
紅色的這樣寫是代表什麼阿!我只知道是在計算距離,可是紅色寫法代表看不懂可以教一下嘛!
因為polar的用法是(polar 基準點 弳度 距離)
而我PT2所取得的座標是相對座標
所以才會以原點跟PT2點兩點來求得距離
leoneriol 在 2011-11-15, 12:31 作了第 2 次修改 (原因 : 錯字錯字....每次都繪有錯字Orz)
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9125
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共2頁)
這個論壇的權限:
您 無法 在這個版面回復文章