[討論]有關弧形局部標註的 LISP
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]有關弧形局部標註的 LISP
以下是小妹寫出來的LISP
想與高手一起討論研究看看
這LISP 是為了工作中 常常需要將整段弧長度均分N各長度,所發想出來的,
最原始的繪製方式,是複製原始弧長,將其均分後,再切斷使其每小段為獨立弧線,再繪製弧線標註..過程實在太繁瑣
後來發現原來弧線可以局部標註!!
於是想出下列LISP
(defun c:ardim ()
(SETQ #DWGSC (GETVAR "DIMSCALE"))
(setvar "cmdecho" 0)
(setq oldos (getvar "osmode"))
(setq oldla (getvar "clayer"))
(command "-layer" "m" "O-DIM" "c" "2" "" "")
(setq ss1 (entsel "選取物件"))
;;;(setq h (getreal "\n標註距離<標註倍率X2>OR:"))
;;;(if (null h)(setq h (* 2 #DWGSC)) )
(setq P1 (getpoint "\n第一點"))
(setq P2 (getpoint "\n第二點"))
(setq p3 (getpoint "\n第3點"))
(command "dimarc" ss1 "P" P1 P2 P3 )
(setvar "osmode" oldos)
(setvar "clayer" oldla)
(prin1)
)
不過這並不是我最後想要得到的結果
在執行上列LISP時
都必須重新選擇>> 物件
有沒有方法是物件選擇1次物件後 只要選擇P1與P2即可?
另外P3部分我原本是希望用"高度"直接設定所以
設定了這段>>>(setq h (getreal "\n標註距離<標註倍率X2>OR:"))
不過因為是弧形..我研究了很久 沒辦法把"H"值寫出來<--最大困擾
就先 把弧線 OFFSET一段我想要的高度成為P3可以點選的位置。
另外我也寫了一個簡易的巨集
*^c^c_dimarc;\p;\\\
操作方式與LISP一模一樣
但是也有各小缺點,至今不明白
當我要結束巨集指令時,只能用ESC結束,如果用滑鼠右鍵是不能結束指令,會變成P(PAN)這各指令...
這點是否有解決之方法?還是連續性巨集指令只能用ESC結束?
也許有人會問,有巨集了,何必寫LISP呢???
因為....我想要用"打指令"的方式畫圖...!~
以上是我弧線局部標註的分享,希望各位高手了解小妹的陳述~
想與高手一起討論研究看看
這LISP 是為了工作中 常常需要將整段弧長度均分N各長度,所發想出來的,
最原始的繪製方式,是複製原始弧長,將其均分後,再切斷使其每小段為獨立弧線,再繪製弧線標註..過程實在太繁瑣
後來發現原來弧線可以局部標註!!
於是想出下列LISP
(defun c:ardim ()
(SETQ #DWGSC (GETVAR "DIMSCALE"))
(setvar "cmdecho" 0)
(setq oldos (getvar "osmode"))
(setq oldla (getvar "clayer"))
(command "-layer" "m" "O-DIM" "c" "2" "" "")
(setq ss1 (entsel "選取物件"))
;;;(setq h (getreal "\n標註距離<標註倍率X2>OR:"))
;;;(if (null h)(setq h (* 2 #DWGSC)) )
(setq P1 (getpoint "\n第一點"))
(setq P2 (getpoint "\n第二點"))
(setq p3 (getpoint "\n第3點"))
(command "dimarc" ss1 "P" P1 P2 P3 )
(setvar "osmode" oldos)
(setvar "clayer" oldla)
(prin1)
)
不過這並不是我最後想要得到的結果
在執行上列LISP時
都必須重新選擇>> 物件
有沒有方法是物件選擇1次物件後 只要選擇P1與P2即可?
另外P3部分我原本是希望用"高度"直接設定所以
設定了這段>>>(setq h (getreal "\n標註距離<標註倍率X2>OR:"))
不過因為是弧形..我研究了很久 沒辦法把"H"值寫出來<--最大困擾
就先 把弧線 OFFSET一段我想要的高度成為P3可以點選的位置。
另外我也寫了一個簡易的巨集
*^c^c_dimarc;\p;\\\
操作方式與LISP一模一樣
但是也有各小缺點,至今不明白
當我要結束巨集指令時,只能用ESC結束,如果用滑鼠右鍵是不能結束指令,會變成P(PAN)這各指令...
這點是否有解決之方法?還是連續性巨集指令只能用ESC結束?
也許有人會問,有巨集了,何必寫LISP呢???
因為....我想要用"打指令"的方式畫圖...!~
以上是我弧線局部標註的分享,希望各位高手了解小妹的陳述~
id66fion- 初級會員
- 文章總數 : 57
年齡 : 47
來自 : 台北
職業 : 家管
愛好 : 研究CAD
個性 : 對cad 有高度熱情
使用年資 : 5年
使用版本 : 2008
積分 : 2
經驗值 : 5747
威望值 : 18
注冊日期 : 2009-10-17
回復: [討論]有關弧形局部標註的 LISP
我也是比較習慣打指令,但是若巨集可以滿足我就不會寫LISP了...
以下提供我的方法供你參考:
1.LISP方面可以加入 while函數 就不用重新選擇>> 物件。
(while
(setq P1 (getpoint "\n第一點"))
(setq P2 (getpoint "\n第二點"))
(setq p3 (getpoint "\n第3點"))
(command "dimarc" ss1 "P" P1 P2 P3 )
)
2.巨集方面的連續性巨集指令只能用ESC結束!!
PS:另外有一個好奇的地方,以下這個語法是你想出來的嗎!?
(SETQ #DWGSC (GETVAR "DIMSCALE"))
有點面熟...#DWGSC 是我常用的語法及慣用的寫法(大寫)~
以下提供我的方法供你參考:
1.LISP方面可以加入 while函數 就不用重新選擇>> 物件。
(while
(setq P1 (getpoint "\n第一點"))
(setq P2 (getpoint "\n第二點"))
(setq p3 (getpoint "\n第3點"))
(command "dimarc" ss1 "P" P1 P2 P3 )
)
2.巨集方面的連續性巨集指令只能用ESC結束!!
PS:另外有一個好奇的地方,以下這個語法是你想出來的嗎!?
(SETQ #DWGSC (GETVAR "DIMSCALE"))
有點面熟...#DWGSC 是我常用的語法及慣用的寫法(大寫)~
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [討論]有關弧形局部標註的 LISP
收到你的短信後~果然是我在之前公司寫的!
真的是有志一同的人遲早會遇見的,再次歡迎你的加入~
真的是有志一同的人遲早會遇見的,再次歡迎你的加入~
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [討論]有關弧形局部標註的 LISP
Tiger&蘋果爸 寫到:1.LISP方面可以加入 while函數 就不用重新選擇>> 物件。
(while
(setq P1 (getpoint "\n第一點"))
(setq P2 (getpoint "\n第二點"))
(setq p3 (getpoint "\n第3點"))
(command "dimarc" ss1 "P" P1 P2 P3 )
)
這部分我加進去了..是OK可執行的!!
while函數 我之前自己沒用過,這次受教了!~ 謝謝蘋果爸!
Tiger&蘋果爸 寫到:收到你的短信後~果然是我在之前公司寫的!
真的是有志一同的人遲早會遇見的,再次歡迎你的加入~
再次謝謝蘋果爸~
日後還請多多指教~
id66fion- 初級會員
- 文章總數 : 57
年齡 : 47
來自 : 台北
職業 : 家管
愛好 : 研究CAD
個性 : 對cad 有高度熱情
使用年資 : 5年
使用版本 : 2008
積分 : 2
經驗值 : 5747
威望值 : 18
注冊日期 : 2009-10-17
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章