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

[討論]分享繪製矩形方框lisp

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

[討論]分享繪製矩形方框lisp

發表 由 stephen-peng 于 2016-05-31, 08:30

分享工作上非常實用的小程序
選取物件在外形畫上方框

加上文字註解,方便有其他需求的自行修改吧
改一下順序先輸入距離,可以重複選取畫框

代碼:

(defun c:pe_die (/ t3 t4 pt1 pt2 sn n en pt_list)
  (princ "by stephen_peng")
  (setvar "blipmode" 0)
  (if (= t3 nil)
    (SETQ t4 4)
  ) ;邊框距離預設值 4
  (princ (strcat "\n矩形框邊緣距離<" (rtos t4) ">:"))
  (initget 4)
  (setq t3 (getreal)) ;輸入邊框距離
  (if (= t3 nil) ;判斷是否接受預設值
    (setq t3 t4)
    (setq t4 t3)
  ) ;END if
  (princ "\n選擇製作矩形框線物件 <退出>:")
  (setq ssblock1 (ssget))
  (if (= ssblock1 nil)
    (*error*)
  )
  (while ;迴圈
     (point) ;取點改為呼叫副程式
     (setq pt1 (list (- (car pt1) t3) (- (cadr pt1) t3))) ;加上邊框距離
     (setq pt2 (list (+ (car pt2) t3) (+ (cadr pt2) t3))) ;加上邊框距離
     (setq osmodeold (getvar "osmode"))
     (setvar "osmode" 0)
     (if (<= t3 1) ;判斷邊框距離 <= 1
       (command "rectang" "f" "0" pt1 pt2) ;設定圓角R0
       (command "rectang" "f" "1" pt1 pt2) ;設定圓角R1
     ) ;END if
     (princ "\n選擇製作矩形框線物件 <退出>:")
     (setq ssblock1 (ssget))
     (if (= ssblock1 nil)
       (*error*)
     )
  ) ;END while
  (setvar "osmode" osmodeold)
  (princ)
)

(defun point () ;取點副程式
  (setq pt_list '()
 pt1 'nil
 pt2 'nil
 pt3 'nil
  )
  (command "ucs" "w")
  (setq sn (sslength ssblock1))
  (setq n -1)
  (repeat sn
    (setq en (ssname ssblock1 (setq n (1+ n))))
    (vla-getboundingbox (vlax-ename->vla-object en) 'pt1 'pt2)
    (setq pt_list (cons (vlax-safearray->list pt1) pt_list))
    (setq pt_list (cons (vlax-safearray->list pt2) pt_list))
  )
  (setq pt1 (apply 'mapcar (cons 'min pt_list))) ;計算圖形左下角點
  (setq pt2 (apply 'mapcar (cons 'max pt_list))) ;右上角點
  )
)

感謝各位先進提供改進建議 竊喜

取點改為呼叫副程式
附件
pe_die.zip 您無權下載這里的附件。(1 Kb) 下載 20 次


stephen-peng 在 2016-06-06, 02:19 作了第 3 次修改
avatar
stephen-peng
一般會員
一般會員

文章總數 : 9
年齡 : 46
來自 : 板橋區
職業 : 工程師
愛好 : 電腦維修
個性 : 內向
使用年資 : 20年
使用版本 : 2014
經驗值 : 720
威望值 : 24
注冊日期 : 2016-03-15
男 處女座 豬

回頂端 向下

回復: [討論]分享繪製矩形方框lisp

發表 由 Tiger&蘋果爸 于 2016-05-31, 09:20

害羞 謝謝分享!
建議lsp語法要加入刪除「環境變數(自訂)」,這樣程式就不會記住上一次舊的值,而造成錯誤喔~
代碼:
(defun c:pe_die    (/ t3 t4 pt1 pt2 sn n en pt_list)

成功畫面:

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

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

發表 由 poi17 于 2016-05-31, 15:12

看似簡單卻很實用的LISP,這另外讓我想到一個問題想藉此討論一下,
當在某些圖面上,若要特別標示出局部位置並放大顯示出來時,
我的作法是
1.在要標示的位置以畫圓標示
2.用修剪去掉圓以外的圖面
3.將圓加上引線移動到要標示的位置
4.比例放大來顯示
感覺是很傳統的做法,不知各位有無更方便的方式呢?
avatar
poi17
初級會員
初級會員

文章總數 : 50
年齡 : 37
來自 : 高雄市
職業 : 機械機電
愛好 : 攝影,旅遊
個性 : 活潑
使用年資 : 10
使用版本 : autocad2006-2016
積分 : 4
最佳解答 : 1
經驗值 : 3236
威望值 : 9
注冊日期 : 2009-07-30
男 摩羯座 羊

回頂端 向下

回復: [討論]分享繪製矩形方框lisp

發表 由 li60830 于 2016-06-01, 08:58

poi17 寫到:看似簡單卻很實用的LISP,這另外讓我想到一個問題想藉此討論一下,
當在某些圖面上,若要特別標示出局部位置並放大顯示出來時,
我的作法是
1.在要標示的位置以畫圓標示
2.用修剪去掉圓以外的圖面
3.將圓加上引線移動到要標示的位置
4.比例放大來顯示
感覺是很傳統的做法,不知各位有無更方便的方式呢?

可用外部參考來做這麼可以不用修剪去掉圓以外的圖面~
樓主這個是在物件畫矩形方框但框都要接觸到物件的好方法~
avatar
li60830
初級會員
初級會員

文章總數 : 312
年齡 : 46
來自 : 亞洲
職業 : 待業
愛好 : 電動~游泳~看書~看影集
個性 : 固執
使用年資 : 18年
使用版本 : 2008 - 2014
積分 : 2
經驗值 : 3338
威望值 : 310
注冊日期 : 2013-04-17
藍鵲697號
男 處女座 豬

回頂端 向下

回復: [討論]分享繪製矩形方框lisp

發表 由 virage7676 于 2016-06-01, 14:15

請教先進不知可否新增:
1:不倒圓角
2:可連續畫框
3:可設定矩形框圖層
avatar
virage7676
一般會員
一般會員

文章總數 : 21
年齡 : 40
來自 : 台中市北屯區
職業 : 自由業
愛好 : 慢跑
個性 : 寡言
使用年資 : 10
使用版本 : CAD2006
經驗值 : 2049
威望值 : -9
注冊日期 : 2012-08-04
男 射手座 龍

回頂端 向下

回復: [討論]分享繪製矩形方框lisp

發表 由 許大熊 于 2016-06-02, 01:48

給您一個贊
avatar
許大熊
一般會員
一般會員

文章總數 : 32
年齡 : 54
來自 : 新北市新店區
職業 : 設計工程主任
愛好 : 唱歌
個性 : 隨和
使用年資 : 20年
使用版本 : autocad 2010
經驗值 : 1697
威望值 : 6
注冊日期 : 2013-09-25
男 白羊座 兔

回頂端 向下

回復: [討論]分享繪製矩形方框lisp

發表 由 Tiger&蘋果爸 于 2016-06-02, 03:13

li60830 寫到:
poi17 寫到:看似簡單卻很實用的LISP,這另外讓我想到一個問題想藉此討論一下,
當在某些圖面上,若要特別標示出局部位置並放大顯示出來時,
我的作法是
1.在要標示的位置以畫圓標示
2.用修剪去掉圓以外的圖面
3.將圓加上引線移動到要標示的位置
4.比例放大來顯示
感覺是很傳統的做法,不知各位有無更方便的方式呢?
可用外部參考來做這麼可以不用修剪去掉圓以外的圖面~
樓主這個是在物件畫矩形方框但框都要接觸到物件的好方法~
局部位置並放大顯示
我也是複製後放大修剪
如果需要同步更改,我則會使用外部參考方式!
竊喜

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

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

發表 由 poiuyy 于 2016-06-02, 04:10

感謝大大分享
先收下來
事倍功半的好工具
avatar
poiuyy
初級會員
初級會員

文章總數 : 171
年齡 : 43
來自 : 台中
職業 : 小監
愛好 : 電影
個性 : 中庸
使用年資 : 5
使用版本 : 2010
積分 : 1
經驗值 : 2004
威望值 : 78
注冊日期 : 2014-06-24
藍鵲656號
男 天秤座 虎

回頂端 向下

回復: [討論]分享繪製矩形方框lisp

發表 由 stephen-peng 于 2016-06-03, 03:16

poi17 寫到:看似簡單卻很實用的LISP,這另外讓我想到一個問題想藉此討論一下,
當在某些圖面上,若要特別標示出局部位置並放大顯示出來時,
我的作法是
1.在要標示的位置以畫圓標示
2.用修剪去掉圓以外的圖面
3.將圓加上引線移動到要標示的位置
4.比例放大來顯示
感覺是很傳統的做法,不知各位有無更方便的方式呢?
http://www.autocad-tw.com/t16897-topic?highlight=%E6%94%BE%E5%A4%A7

局部放大可以參考看看djh1006大大分享的
avatar
stephen-peng
一般會員
一般會員

文章總數 : 9
年齡 : 46
來自 : 板橋區
職業 : 工程師
愛好 : 電腦維修
個性 : 內向
使用年資 : 20年
使用版本 : 2014
經驗值 : 720
威望值 : 24
注冊日期 : 2016-03-15
男 處女座 豬

回頂端 向下

回復: [討論]分享繪製矩形方框lisp

發表 由 virage7676 于 2016-06-03, 14:44

請教先進更新版次(可以重複選取畫框)不知為何無法執行!!感謝
avatar
virage7676
一般會員
一般會員

文章總數 : 21
年齡 : 40
來自 : 台中市北屯區
職業 : 自由業
愛好 : 慢跑
個性 : 寡言
使用年資 : 10
使用版本 : CAD2006
經驗值 : 2049
威望值 : -9
注冊日期 : 2012-08-04
男 射手座 龍

回頂端 向下

回復: [討論]分享繪製矩形方框lisp

發表 由 virage7676 于 2016-06-06, 16:02

1.可以重複選取畫框
2.退出程式後會清除原鎖點設定值!!感謝再感謝
avatar
virage7676
一般會員
一般會員

文章總數 : 21
年齡 : 40
來自 : 台中市北屯區
職業 : 自由業
愛好 : 慢跑
個性 : 寡言
使用年資 : 10
使用版本 : CAD2006
經驗值 : 2049
威望值 : -9
注冊日期 : 2012-08-04
男 射手座 龍

回頂端 向下

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


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