[發問]如何取得矩形4個點座標 LISP部分
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[發問]如何取得矩形4個點座標 LISP部分
假如我原先已經在 起點 1000,2000 地方畫了一個X300Y200的矩形
(setq en (entsel "選取"))
(setq en_data (entget (car en)))
我用以上去點取方形 讀取串列出來
但是
((-1 . <圖元名稱: 7ff409805e40>) (0 . "LWPOLYLINE") (5 . "81139DC") (102 . "{ACAD_REACTORS") (330 . <圖元名稱: 7ff409809340>) (102 . "}") (330 . <圖元名稱: 7ff4098609f0>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "加大實做尺寸") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 1000.0 2000.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1300.0 2000.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1300.0 2200.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1000.0 2200.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0))
我想取得方形4個點的座標 但是全部都是10
(setq en_txt (cdr (assoc 10 en_data)))
讀取出來也只能讀取 起點 請問如何取得四個點的座標
想寫一個點取矩形 然後會讀取到他矩形4個點座標 然後之後再寫自己要改寫的程式
煩請大大幫忙解答
(setq en (entsel "選取"))
(setq en_data (entget (car en)))
我用以上去點取方形 讀取串列出來
但是
((-1 . <圖元名稱: 7ff409805e40>) (0 . "LWPOLYLINE") (5 . "81139DC") (102 . "{ACAD_REACTORS") (330 . <圖元名稱: 7ff409809340>) (102 . "}") (330 . <圖元名稱: 7ff4098609f0>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "加大實做尺寸") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 1000.0 2000.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1300.0 2000.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1300.0 2200.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 1000.0 2200.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 1.0))
我想取得方形4個點的座標 但是全部都是10
(setq en_txt (cdr (assoc 10 en_data)))
讀取出來也只能讀取 起點 請問如何取得四個點的座標
想寫一個點取矩形 然後會讀取到他矩形4個點座標 然後之後再寫自己要改寫的程式
煩請大大幫忙解答
as920029as- 一般會員
- 文章總數 : 110
年齡 : 33
來自 : 台南市
職業 : 繪圖員
愛好 : 電腦遊戲
個性 : 開朗
使用年資 : 3年
使用版本 : 2010
經驗值 : 5182
威望值 : 47
注冊日期 : 2012-05-06
回復: [發問]如何取得矩形4個點座標 LISP部分
有點小複雜,希望能幫到你
- 代碼:
(setq S1 (entsel "\n選取圓(弧)、長方形<單選>:"))
(setq
S1_data (entget (car S1))
N1 (assoc 0 S1_data);;取得圖元名稱欄位
N1_data (cdr N1);;辯識圖元名稱性質
)
(if (= N1_data "LWPOLYLINE") ;;若為矩形;;if1
(progn ;;progn1
(setq
NN (length S1_data)
PP_LST '()
J 0
NUM1 0
)
(repeat NN
(setq
PP (nth J S1_data)
PTYP (car PP)
)
(if (= PTYP 10);;if2
(progn ;;progn2
(setq
PP_LST (cons (cdr PP) PP_LST)
NUM1 (+ NUM1 1)
)
) ;;end progn2
) ;;end if2
(setq J (1+ J))
) ;end repeat
(if (= NUM1 4) ;;if3
(progn ;;progn3
(setq
PP_LST (reverse PP_LST)
PT1 (nth 0 PP_LST)
PT2 (nth 1 PP_LST)
PT3 (nth 2 PP_LST)
PT4 (nth 3 PP_LST)
)
) ;;end progn3
) ;;end if3
(if (/= NUM1 4) (princ "此圖形不是長方形!"))
) ;;end progn1
) ;;end if
____________________________________________________________________________________
djh1006- 中級會員
- 文章總數 : 177
年齡 : 53
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 連續沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 23年以上
使用版本 : 2014
積分 : 7
經驗值 : 6093
威望值 : 359
注冊日期 : 2011-06-16
回復: [發問]如何取得矩形4個點座標 LISP部分
感謝大大 最近工作有點忙 有空我在研究一下
as920029as- 一般會員
- 文章總數 : 110
年齡 : 33
來自 : 台南市
職業 : 繪圖員
愛好 : 電腦遊戲
個性 : 開朗
使用年資 : 3年
使用版本 : 2010
經驗值 : 5182
威望值 : 47
注冊日期 : 2012-05-06
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章