This page looks plain and unstyled because you're using a non-standard compliant browser. To see it in its best form, please visit upgrade to a browser that supports web standards. It's free and painless.

cpc0935s Blog 會員登入 會員註冊

« 上一篇 | 下一篇 »

    在AutoCAD中,若要查詢距離,使用的指令是dist,但查出的距離資訊是出現在指令列上。若要查詢角度,沒有專用的指令,必須使用標註角度的指令去做一個實際的角度標註,做完再將標註刪除,實在很不方便。

    因此設計一個Lisp程式,可以方便又快速的執行距離與角度的查詢。

    程式載入後,執行指令:DD,查詢距離。操作中,自動切換為 端點+四分點+交點+垂直點+最近點 的綜合鎖點狀態,而且不限次數連續查詢。查詢結果會動態的標示在畫面上,待按Enter後,會詢問是否要不要保留,若要,標示就存在畫面,若不要則刪除標示。

    執行指令:AA,查詢角度。也是不限次數連續查詢。操作方式與DD相同,只差沒有改變鎖點狀態。

    此程式另一特點是,每次執行DD或AA,不管畫面遠或近,所標示的文字大小都是一樣的。

    請見下圖:(畫面拉近時)

    請見下圖:(畫面放遠時)

程式 DD.lsp 內容

; 公用副程式 ------------------------------------------------------------

(defun scmd (x)       ; 設定 CMDECHO 狀態,不存原值
  (setvar "cmdecho" x)
)
(defun saveosmode()      ; 儲存 OSMODE 狀態
  (setq osmode_val (getvar "osmode"))
)
(defun setosmode(x)      ; 設定 OSMODE 狀態,並存原值
  (setq osmode_val (getvar "osmode"))
  (setvar "osmode" x)
)
(defun resosmode()       ; 取回 OSMODE 狀態
  (if osmode_val (setvar "osmode" osmode_val))
)
(defun sosmode (x)       ; 設定 OSMODE 狀態,不存原值
  (setvar "osmode" x)
)
(defun c:setdim(/ vs hgt)
  (setq vs  (getvar "viewsize")       
        hgt (/ vs 40)               ;  欲顯示之高度為目前畫面高度之 1/40
  )
  (setvar "dimscale" (/ hgt (getvar "dimtxt")))    ;  調整dimscale
  (command "dim1" "upd" ss "")
)

;----------------------------------------------------------------------------

; 快速量距離,由端點+四分點+交點+垂直點+最近點,顯示測量之數字於畫面
(defun c:dd(/ p1 p2 olderr myerr ss olddec oldaso oldscl vs hgt ers)
  (scmd 0) 
  ;----------------------------------------------
  (defun myerr(m)
    (if m (princ (strcat "\n ***ERROR: " m)))
    (if (>= (sslength ss) 1)
      (command "erase" ss "")
    )
    (setvar "dimscale"   oldscl)
    (setvar "dimdec"     olddec)
    (setvar "dimassoc"   oldaso)
    (setvar "dimlfac"    oldfac)
    (setvar "dimupt"     oldupt) ; 標註時手動放置文字位置
    (resosmode)   
    (redraw)
    (setq *error* olderr)   
    (princ)
  )
  (setq olderr *error* *error* myerr)
  ;----------------------------------------------
  (saveosmode)
  (setq ss (ssadd))
  (setq oldscl (getvar "dimscale")
 olddec (getvar "dimdec"  )
 oldaso (getvar "dimassoc")
 oldfac (getvar "dimlfac" )
 oldupt (getvar "dimupt"  )
  )
 
  (setvar "dimdec"   4)
  (setvar "dimassoc" 1)
  (setvar "dimlfac"  1)
  (setvar "dimupt"   1)   ; 允許標註時,手動放置文字位置
  ;-------------------------------------------------------------------------------
  (graphscr)
  (sosmode (+ 1 16 32 128 512))
  (while (setq p1 (getpoint "\n第一點:(端點+四分點+交點+垂直點+最近點)"))

(c:setdim)
    (sosmode (+ 1 16 32 128 512))
    (if (setq p2 (getpoint p1 "\n下一點:(端點+四分點+交點+垂直點+最近點)"))
      (progn
 (sosmode 0)
 (command "dist" p1 p2)
 (princ "\n標註文字置於...")
 (princ (strcat "---> " (rtos (getvar "distance") 2 8)))
 (command "dimaligned" p1 p2 "t" "(<>)" pause)
 (command "chprop" "l" "" "c" 40 "")
 (ssadd (entlast) ss)
      )
    )
    (sosmode (+ 32 512 1 4))
  )
  (setq ers (strcase (getstring "\n  是否刪除這次DD之標註? <Y>/N ")) )
  (if (and (or (= ers "Y")
        (= ers "")
           )       
    (>= (sslength ss) 1)
      )   
    (command "erase" ss "")
  )   
  (redraw)
  (resosmode)
  (setvar "dimscale" oldscl)
  (setvar "dimdec"   olddec)
  (setvar "dimassoc" oldaso)
  (setvar "dimlfac"  oldfac)
  (setvar "dimupt"   oldupt)
  (setq *error* olderr)
  (princ)
)
(princ)

 ;----------------------------------------------------------------------------

; 快速量角度,任選兩條直線,顯示測量之數字於畫面
(defun c:aa(/ p1 p2 olderr myerr ss olddec oldaso oldscl vs hgt ers)
  (scmd 0) 
  ;----------------------------------------------
  (defun myerr(m)
    (if m (princ (strcat "\n ***ERROR: " m)))
    (if (>= (sslength ss) 1)
      (command "erase" ss "")
    )
    (setvar "dimscale"   oldscl)
    (setvar "dimdec"     olddec)
    (setvar "dimassoc"   oldaso)
    (setvar "dimlfac"    oldfac)
    (setvar "dimupt"     oldupt) ; 標註時手動放置文字位置
    (resosmode)   
    (redraw)
    (setq *error* olderr)   

    (princ)
  )
  (setq olderr *error* *error* myerr)
  ;----------------------------------------------
  (saveosmode)
  (setq ss (ssadd))
  (setq oldscl (getvar "dimscale")
 olddec (getvar "dimdec"  )
 oldaso (getvar "dimassoc")
 oldfac (getvar "dimlfac" )
 oldupt (getvar "dimupt"  )
  )
  (setvar "dimdec"   4)
  (setvar "dimassoc" 1)
  (setvar "dimlfac"  1)
  (setvar "dimupt"   1)   ; 允許標註時,手動放置文字位置
  ;-------------------------------------------------------------------------------
  (graphscr)
  (while (setq p1 (cadr (entsel "\n第一條線:")))

(c:setdim)
    (if (setq p2 (cadr (entsel "\n第二條線:")))
      (progn
 (command "dim1" "ang" p1 p2 "t" "(<>)" pause pause)
 (princ "\n標註文字置於...")
 (command "chprop" "l" "" "c" 40 "")
 (ssadd (entlast) ss)
     )
    )
  )      
  (setq ers (strcase (getstring "\n  是否刪除這次AA之標註? <Y>/N ")) )
  (if (and (or (= ers "Y")
        (= ers "")
           )       
    (>= (sslength ss) 1)
      )   
    (command "erase" ss "")
  )   
  (redraw)
  (resosmode)
  (setvar "dimscale" oldscl)
  (setvar "dimdec"   olddec)
  (setvar "dimassoc" oldaso)
  (setvar "dimlfac"  oldfac)
  (setvar "dimupt"   oldupt)
  (setq *error* olderr)
  (princ)
)
(princ)

;----------------------------------------------------------------------------

程式至此結束

 

發表回應
  1. David Hou 程式有再改進 [回覆]

    程式有再改進:操作時更智慧便利,已更新。

    David Hou 回應於 24 十二月, 2010 14:45

  2. David Hou 補上scmd定義,原先漏掉,已更新 [回覆]

    (defun scmd (x) ; 設定 CMDECHO 狀態,不存原值
    ...
    )

    David Hou 回應於 26 十二月, 2010 15:05

  3. Re: 在AutoCAD快速查詢距離與角度 [回覆]

    How much would you pay to play G1 and how much you pay to play G2, given that you know nothing about the probabilities of S1 and S2? You might reason this way.

    Well in G1, if I played A and S1 and S2 were equal, then I would get on average at little less than $50, while in G2 I would get about 50 cents. So probably G1 is worth at least 90 times more than G2. Whereas, I might pay very little to play G2, I might spend much more to play G2.

    As attractive as this line of reasoning is, it is false if we assume that whatever is choosing S1 or S2 is watching you make your choice, ie a market.

    The zero sum value of G2, is -25 cents. But the value of G1 is -1 cent! G1 is not even a profitable game to play, despite that lovely looming left hand corner in which you get a return of $100. free movies online

    free movies online 回應於 29 十二月, 2010 14:33

  4. Re: 在AutoCAD快速查詢距離與角度 [回覆]

    many years ago .I was a student ,like English very much ,because some resons I gave up it .but now I want to learn it again .believe me!!GO GO !!!

    thomas sabo schmuck 回應於 30 十二月, 2010 17:17

  5. Re: 在AutoCAD快速查詢距離與角度 [回覆]

    我叫阿越,

    正經營一個最多 名人推薦 最有效 的網路創業系統

    我加入兩個月,我的單週週薪已經破兩萬六

    誠摯向各位推薦

    免費體驗-> http://goo.gl/e80Yn

    ebgqadg 回應於 02 元月, 2011 23:54

  6. Re: 在AutoCAD快速查詢距離與角度 [回覆]

    台灣旅遊景點 中部旅遊景點介紹 彰化旅遊景點 台北市旅遊景點 高雄旅遊景點 台北市旅遊景點 新竹旅遊景點 旅遊景點中台灣 中部旅遊景點 東京旅遊景點 中部旅遊景點 旅遊景點推薦 台灣旅遊景點推薦 苗栗旅遊景點介紹 台中市旅遊景點 蘇州旅遊景點 南部旅遊景點 彰化旅遊景點 桃園旅遊景點 台灣旅遊景點推薦 宜蘭旅遊景點 台北市旅遊景點 桃園旅遊景點 杭州旅遊景點 旅遊景點北台灣 台中市旅遊景點 旅遊景點推薦 台灣旅遊景點 旅遊景點 嘉義旅遊景點 熱門旅遊景點 台北縣旅遊景點 台南旅遊景點 東京旅遊景點 彰化旅遊景點 台中旅遊景點 雲林旅遊景點 台灣旅遊景點 親子旅遊景點 高雄旅遊景點 旅遊景點介紹 中部旅遊景點介紹 熱門旅遊景點 台南旅遊景點 宜蘭旅遊景點 台中縣旅遊景點 旅遊景點推薦 南投旅遊景點 中台灣旅遊景點 台灣旅遊景點介紹 蘇州旅遊景點 花東旅遊景點 旅遊景點 新竹旅遊景點 杭州旅遊景點 台南縣旅遊景點 台北市旅遊景點 旅遊景點介紹 北京旅遊景點 苗栗旅遊景點介紹 中台灣旅遊景點 新竹縣旅遊景點   印度旅遊景點 高雄縣市旅遊景點 桃園大溪旅遊景點 高雄縣市旅遊景點 上海旅遊景點介紹 上海旅遊景點介紹 愛爾蘭旅遊景點 宜蘭礁溪旅遊景點 洛杉磯旅遊景點 吉隆坡旅遊景點 溫哥華旅遊景點 印度旅遊景點 浙江旅遊景點 福建旅遊景點 維也納旅遊景點 宜蘭礁溪旅遊景點 巴里島旅遊景點 京都旅遊景點 印度旅遊景點 屏東縣旅遊景點 瑞士旅遊景點 東部旅遊景點 吉隆坡旅遊景點 巴里島旅遊景點 瑞士旅遊景點 大連旅遊景點 上海旅遊景點介紹 宜蘭旅遊景點介紹 屏東縣旅遊景點 哈爾濱旅遊景點 山東旅遊景點 桃園大溪旅遊景點 京都旅遊景點 希臘旅遊景點 新竹縣市旅遊景點 阿里山旅遊景點 巴黎旅遊景點 武漢旅遊景點 巴黎旅遊景點 山東旅遊景點 高雄縣市旅遊景點 名古屋旅遊景點 澳洲旅遊景點 廣東省旅遊景點 舊金山旅遊景點 瑞士旅遊景點 雲林縣旅遊景點 屏東縣旅遊景點 巴里島旅遊景點 東部旅遊景點 大連旅遊景點 洛杉磯旅遊景點 洛杉磯旅遊景點 桃園大溪旅遊景點 雲林縣旅遊景點 屏東縣旅遊景點 福建旅遊景點 希臘旅遊景點 阿里山旅遊景點 廣州市旅遊景點 瑞士旅遊景點   台灣北部旅遊景點 中國旅遊景點 花蓮旅遊景點路線圖 廈門旅遊景點 南京旅遊景點 台中旅遊景點介紹 大溪旅遊景點 南台灣旅遊景點 高雄市旅遊景點 大陸旅遊景點 大陸旅遊景點 papago旅遊景點書 礁溪旅遊景點 新竹市旅遊景點 高雄縣旅遊景點 上海旅遊景點推薦 宜蘭旅遊景點推薦 花蓮旅遊景點路線圖 青島旅遊景點 台南市旅遊景點 春節旅遊景點 台灣北部旅遊景點 中國旅遊景點 西安旅遊景點 上海旅遊景點推薦 新竹市旅遊景點 北部旅遊景點介紹 台灣南部旅遊景點 礁溪旅遊景點 台灣中部旅遊景點 台南旅遊景點介紹 春節旅遊景點 青島旅遊景點 桃園縣旅遊景點 墾丁旅遊景點 南台灣旅遊景點 台中旅遊景點介紹 廈門旅遊景點 深圳旅遊景點 美國旅遊景點 美國旅遊景點 泰國旅遊景點 苗栗旅遊景點路線圖 泰國旅遊景點 中國旅遊景點 南京旅遊景點 大溪旅遊景點 火車旅遊景點 台灣北部旅遊景點 韓國旅遊景點 台中旅遊景點介紹 papago旅遊景點書 古坑旅遊景點 紐約旅遊景點 成都旅遊景點 珠海旅遊景點 印尼旅遊景點 台灣熱門旅遊景點 國外旅遊景點 馬來西亞旅遊景點 重慶旅遊景點 台北縣市旅遊景點 高雄捷運旅遊景點 南部旅遊景點一日遊 台北捷運旅遊景點 天津旅遊景點 加拿大旅遊景點 中北部旅遊景點 埔里旅遊景點 世界旅遊景點 中壢旅遊景點 世界旅遊景點 加州旅遊景點 高雄旅遊景點介紹 苗栗縣旅遊景點 花蓮旅遊景點地圖 台南縣市旅遊景點 淡水旅遊景點 台南旅遊景點地圖 高雄捷運旅遊景點 中北部旅遊景點 印尼旅遊景點 澎湖旅遊景點 大台北旅遊景點 台北捷運旅遊景點 彰化縣旅遊景點 法國旅遊景點 淡水旅遊景點 馬來西亞旅遊景點 南投縣旅遊景點 台灣旅遊景點地圖 台灣十大旅遊景點 天津旅遊景點 天津旅遊景點 義大利旅遊景點 台灣熱門旅遊景點 世界旅遊景點 三峽旅遊景點 國外旅遊景點 紐約旅遊景點 兒童旅遊景點 大台北旅遊景點 日月潭旅遊景點 法國旅遊景點   南投縣旅遊景點  世界十大旅遊景點 墨西哥旅遊景點 長沙旅遊景點 全球旅遊景點 俄羅斯旅遊景點 九份旅遊景點 阿姆斯特丹旅遊景點 雲南旅遊景點 全球旅遊景點 南非旅遊景點 馬六甲旅遊景點 綠島旅遊景點 羅馬旅遊景點 東南亞旅遊景點 溫哥華旅遊景點 奧地利旅遊景點 澳門旅遊景點介紹 全球旅遊景點 丹麥旅遊景點 曼谷旅遊景點 番禺旅遊景點 墨西哥旅遊景點 綠島旅遊景點 大陸旅遊景點介紹 費城旅遊景點 波蘭旅遊景點 全球旅遊景點 紐約旅遊景點建議 大陸旅遊景點介紹 荷蘭旅遊景點 休士頓旅遊景點 江西旅遊景點 全球旅遊景點 北海岸旅遊景點 北加州旅遊景點 美東旅遊景點 國內熱門旅遊景點 雪梨旅遊景點 菲律賓旅遊景點 世界十大旅遊景點 菲律賓旅遊景點 多倫多旅遊景點 昆明旅遊景點 巴西旅遊景點 荷蘭旅遊景點 奧地利旅遊景點 台灣中南部旅遊景點 世界十大旅遊景點 檳城旅遊景點 比利時旅遊景點 費城旅遊景點 菲律賓旅遊景點 羅馬旅遊景點 波蘭旅遊景點 廣西旅遊景點

    kjyyhty 回應於 08 三月, 2011 16:37