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

[已解決]點圓自動畫中心線LISP 幫忙

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

[已解決]點圓自動畫中心線LISP 幫忙

發表 由 as920029as 于 2015-01-30, 08:24

以下是我自己寫的程式
點圓>自動取出圓心>取出半徑/5的長度>在半徑外額外加上/5的長度的距離>畫出中心線
但有時會跑出 中心線亂掉或者 沒額外長度出來
假如r100 畫出來的中心線長度就剛好200而以  成功的話應該事100/5=20   兩邊都會+20 變成240才對
但有時測試成功有時測試失敗 請大大幫忙解決問題 看我哪邊寫錯 三條線
代碼:
(defun c:mid()
(setvar "cmdecho" 0)
(setq mi (entsel "選取圓"))
(setq mid (entget (car mi)))
(setq exe (cdr (assoc 10 mid)))
(setq exe2 (car exe))           ;X
(setq exe3 (cadr exe))          ;Y
(setq exe4 (cdr (assoc 40 mid)));R
(setq exe5 (/ exe4 5))

(setq XXA (+ exe3 exe4))
(setq XXA2 (+ XXA exe5))
(setq XXA3 (list exe2 XXA2))

(setq XXB (+ exe2 exe4))
(setq XXB2 (+ XXB exe5))
(setq XXB3 (list XXB2 exe3))

(setq XXC (- exe2 exe4))
(setq XXC2 (- XXC exe5))
(setq XXC3 (list XXC2 exe3))

(setq XXD (- exe3 exe4))
(setq XXD2 (- XXD exe5))
(setq XXD3 (list exe2 XXD2))

(setq LINE_data (command "LINE" XXA3 XXD3 ""))
(setq LINE2_data (command "LINE" XXB3 XXC3 ""))
)
(prin1)


as920029as 在 2015-02-03, 08:28 作了第 1 次修改
avatar
as920029as
一般會員
一般會員

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

回頂端 向下

回復: [已解決]點圓自動畫中心線LISP 幫忙

發表 由 adslwang 于 2015-01-30, 22:29

你的程式沒有問題
關閉鎖點就可以正常使用
這是採用點集的通病
avatar
adslwang
高級會員
高級會員

文章總數 : 372
年齡 : 39
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 4604
威望值 : 355
回帖精華 : 1
注冊日期 : 2008-10-02
藍鵲88號
男 處女座 馬

回頂端 向下

回復: [已解決]點圓自動畫中心線LISP 幫忙

發表 由 as920029as 于 2015-02-01, 23:47

感謝大大幫忙
所以通常集點的都會有這種問題瞜?
想說怎有時候會怪怪的
avatar
as920029as
一般會員
一般會員

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

回頂端 向下

回復: [已解決]點圓自動畫中心線LISP 幫忙

發表 由 as920029as 于 2015-02-02, 00:06

請問是否有把物件鎖點 關掉 開啟的指令 像是F3那樣
想用(command "OSNAP") 卻不知從何下手
avatar
as920029as
一般會員
一般會員

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

回頂端 向下

回復: [已解決]點圓自動畫中心線LISP 幫忙

發表 由 Tiger&蘋果爸 于 2015-02-02, 02:34

as920029as 寫到:請問是否有把物件鎖點 關掉 開啟的指令 像是F3那樣
想用(command "OSNAP")  卻不知從何下手
建議可以換個方式不關閉「物件鎖點」。
其實程式中好像並不需要把 OSMODE設為 0 (setvar "OSMODE" 0)
只要把 OSNAPCOORD設定為 1 之後,執行程式時會以程式輸入為主,就不會因為「物件鎖點」導致亂鎖點!

相關主題討論 >> [討論]已拒絕 AutoCAD 變數設定: "OSMODE" nil

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

文章總數 : 17200
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 64643
威望值 : 12750
注冊日期 : 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

回頂端 向下

回復: [已解決]點圓自動畫中心線LISP 幫忙

發表 由 as920029as 于 2015-02-02, 03:48

十分感謝兩位大大幫忙
原本還打算用把鎖點全部取消 然後再重新設定...
但有其他更好的辦法 可以解決
小弟十分感謝
avatar
as920029as
一般會員
一般會員

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

回頂端 向下

回復: [已解決]點圓自動畫中心線LISP 幫忙

發表 由 djh1006 于 2015-02-02, 07:22

借花獻佛
代碼:
(defun c:mid()
(setvar "cmdecho" 0)
(setq OSC (getvar "osnapcoord"))  ;;記錄osnapcoord初始值
(setq mi (entsel "選取圓"))
(setq mid (entget (car mi)))
(setq exe (cdr (assoc 10 mid)))
(setq exe2 (car exe))          ;X
(setq exe3 (cadr exe))          ;Y
(setq exe4 (cdr (assoc 40 mid)));R
(setq exe5 (/ exe4 5))

(setq XXA (+ exe3 exe4))
(setq XXA2 (+ XXA exe5))
(setq XXA3 (list exe2 XXA2))

(setq XXB (+ exe2 exe4))
(setq XXB2 (+ XXB exe5))
(setq XXB3 (list XXB2 exe3))

(setq XXC (- exe2 exe4))
(setq XXC2 (- XXC exe5))
(setq XXC3 (list XXC2 exe3))

(setq XXD (- exe3 exe4))
(setq XXD2 (- XXD exe5))
(setq XXD3 (list exe2 XXD2))

(setvar "osnapcoord" 1)  ;;畫線前先將鎖點改成依程式鎖點
(command "LINE" XXA3 XXD3 "")
(command "LINE" XXB3 XXC3 "")
(setvar "osnapcoord" OSC)  ;;畫線後將osnapcoord值改回預設值
)
(prin1)
最後畫線不必用setq函數
也可以把程式美化如下:
代碼:
(defun c:mid()
(setvar "cmdecho" 0)
(setq OSC (getvar "osnapcoord"))  ;;記錄osnapcoord初始值

(setq mi (entsel "選取圓")
      mid (entget (car mi))
      exe (cdr (assoc 10 mid))
      exe2 (car exe)          ;X
      exe3 (cadr exe)          ;Y
      exe4 (cdr (assoc 40 mid));R
      exe5 (/ exe4 5)
)

(setq XXA (+ exe3 exe4)
      XXA2 (+ XXA exe5)
      XXA3 (list exe2 XXA2)
)

(setq XXB (+ exe2 exe4)
      XXB2 (+ XXB exe5)
      XXB3 (list XXB2 exe3)
)

(setq XXC (- exe2 exe4)
      XXC2 (- XXC exe5)
      XXC3 (list XXC2 exe3)
)

(setq XXD (- exe3 exe4)
      XXD2 (- XXD exe5)
      XXD3 (list exe2 XXD2)
)

(setvar "osnapcoord" 1)  ;;畫線前先將鎖點改成依程式鎖點
(command "LINE" XXA3 XXD3 "")
(command "LINE" XXB3 XXC3 "")
(setvar "osnapcoord" OSC)  ;;畫線後將osnapcoord值改回預設值
)
(prin1)

avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3406
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [已解決]點圓自動畫中心線LISP 幫忙

發表 由 as920029as 于 2015-02-02, 07:33

感謝大大指導...小弟學到很多
小弟學LISP= =不是正規管道學的...是上網四處找資料拼拼湊湊學的
所以很多地方不是很好請建量
目前還沒辦法達到可以美化到大大提供的那樣XD 但還是感謝大大幫忙美化
avatar
as920029as
一般會員
一般會員

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

回頂端 向下

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


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