一個是可以求某一圖層上封閉實(shí)體的形心,程序根據(jù)你輸入的圖層自動選擇該層上所有實(shí)體,
;;;再根據(jù)你點(diǎn)取的點(diǎn)求取點(diǎn)所在周邊封閉實(shí)體的形心并顯示在“point”圖層上,如下:
(defun ez (/ f xxx xxy xxx1 xxy1 xxx2 xxy2 cep oldom oldcm oldbm oldfd oldlp oldla pt en ptlist ss la enpt)
(prompt "形心求解器修改版 0.2 2004年6月26日")
(command "undo" "group")
(setq oldla (getar "CLAYER"))
(setq oldcm (getar "CMDECHO"))
(setq oldfd (getar "FILEDIA"))
(setq oldlp (getar "LUPREC"))
(setq oldom (getar "OSMODE"))
(setq oldbm (getar "BLIPMODE"))
(setq oldpm (getar "PDMODE"))
(setar "CMDECHO" 0)
(setar "FILEDIA" 0)
(setar "LUPREC" 8)
(setar "OSMODE" 0)
(setar "BLIPMODE" 1)
(if (not laname) (setq laname "c-h"))
(setq la (getstring (strcat "n請輸欲求形心的實(shí)體所在圖層名<" laname "或當(dāng)前層>:")))
(if (= la "") (setq la laname) (setq laname la))
(if (tblsearch "LAYER" la)
(setq ss (ssget "X" (list (cons 8 la))))
(setq ss (ssget "X"))
)
(while
(setq pt (getpoint "n請點(diǎn)取欲求形心的封閉實(shí)體內(nèi)部點(diǎn):"))
(setq ptlist (append ptlist (list pt)))
)
(if ss
(progn
(if ptlist
(progn
(foreach pt ptlist
(command "-boundary" "a" "o" "r" "b" "n" ss "" "" pt "")
(setq en (entget (entlast)))
(if (equal (assoc 0 en) '(0 . "REGION"))
(progn
(command "massprop" "l" "" "y" "c:/ZZX.mpr")
(command "_erase" "l" "")
(setq f (open "c:/ZZX.mpr" "r"))
(read-line f)
(read-line f)
(read-line f)
(read-line f)
(read-line f)
(read-line f)
(read-line f)
(setq xxx (read-line f))
(setq xxy (read-line f))
(close f)
(setq xxx1 (substr xxx 25 20))
(setq xxy1 (substr xxy 25 20))
(setq xxx2 (atof xxx1))
(setq xxy2 (atof xxy1))
(setq cep (list xxx2 xxy2 0))
(setq enpt (entmake (list (cons 0 "point")(cons 8 "point") (cons 10 cep))))
);;;end progn
(prompt "n沒有選到符合求形心條件的東東,退出!")
);;;end if
);;;end foreach
(if enpt
(progn
(command "-layer" "on" "point" "")
(if (/= (getar "pdmode") 3) (setar "pdmode" 3))
(command "_redraw")
(princ)
(prompt "nn 多義線的形心已用點(diǎn)顯示在point圖層,如果有必要請定義過點(diǎn)的形式以顯示得更好")
);;;end progn
);;;end if
);;;end progn
(prompt "n 沒有選到任何點(diǎn),退出!")
);;;end if ptlist
);;;end progn
(prompt "n沒有選到符合求形心條件的東東,退出!")
);;;end if ss
(setar "FILEDIA" oldfd)
(setar "LUPREC" oldlp)
(setar "CMDECHO" oldcm)
(setar "OSMODE" oldom)
(setar "CLAYER" oldla)
(setar "BLIPMODE" oldbm)
(setar "PDMODE" oldpm)
(command "undo" "end")
(princ)
);;;end defun
;;;再根據(jù)你點(diǎn)取的點(diǎn)求取點(diǎn)所在周邊封閉實(shí)體的形心并顯示在“point”圖層上,如下:
(defun ez (/ f xxx xxy xxx1 xxy1 xxx2 xxy2 cep oldom oldcm oldbm oldfd oldlp oldla pt en ptlist ss la enpt)
(prompt "形心求解器修改版 0.2 2004年6月26日")
(command "undo" "group")
(setq oldla (getar "CLAYER"))
(setq oldcm (getar "CMDECHO"))
(setq oldfd (getar "FILEDIA"))
(setq oldlp (getar "LUPREC"))
(setq oldom (getar "OSMODE"))
(setq oldbm (getar "BLIPMODE"))
(setq oldpm (getar "PDMODE"))
(setar "CMDECHO" 0)
(setar "FILEDIA" 0)
(setar "LUPREC" 8)
(setar "OSMODE" 0)
(setar "BLIPMODE" 1)
(if (not laname) (setq laname "c-h"))
(setq la (getstring (strcat "n請輸欲求形心的實(shí)體所在圖層名<" laname "或當(dāng)前層>:")))
(if (= la "") (setq la laname) (setq laname la))
(if (tblsearch "LAYER" la)
(setq ss (ssget "X" (list (cons 8 la))))
(setq ss (ssget "X"))
)
(while
(setq pt (getpoint "n請點(diǎn)取欲求形心的封閉實(shí)體內(nèi)部點(diǎn):"))
(setq ptlist (append ptlist (list pt)))
)
(if ss
(progn
(if ptlist
(progn
(foreach pt ptlist
(command "-boundary" "a" "o" "r" "b" "n" ss "" "" pt "")
(setq en (entget (entlast)))
(if (equal (assoc 0 en) '(0 . "REGION"))
(progn
(command "massprop" "l" "" "y" "c:/ZZX.mpr")
(command "_erase" "l" "")
(setq f (open "c:/ZZX.mpr" "r"))
(read-line f)
(read-line f)
(read-line f)
(read-line f)
(read-line f)
(read-line f)
(read-line f)
(setq xxx (read-line f))
(setq xxy (read-line f))
(close f)
(setq xxx1 (substr xxx 25 20))
(setq xxy1 (substr xxy 25 20))
(setq xxx2 (atof xxx1))
(setq xxy2 (atof xxy1))
(setq cep (list xxx2 xxy2 0))
(setq enpt (entmake (list (cons 0 "point")(cons 8 "point") (cons 10 cep))))
);;;end progn
(prompt "n沒有選到符合求形心條件的東東,退出!")
);;;end if
);;;end foreach
(if enpt
(progn
(command "-layer" "on" "point" "")
(if (/= (getar "pdmode") 3) (setar "pdmode" 3))
(command "_redraw")
(princ)
(prompt "nn 多義線的形心已用點(diǎn)顯示在point圖層,如果有必要請定義過點(diǎn)的形式以顯示得更好")
);;;end progn
);;;end if
);;;end progn
(prompt "n 沒有選到任何點(diǎn),退出!")
);;;end if ptlist
);;;end progn
(prompt "n沒有選到符合求形心條件的東東,退出!")
);;;end if ss
(setar "FILEDIA" oldfd)
(setar "LUPREC" oldlp)
(setar "CMDECHO" oldcm)
(setar "OSMODE" oldom)
(setar "CLAYER" oldla)
(setar "BLIPMODE" oldbm)
(setar "PDMODE" oldpm)
(command "undo" "end")
(princ)
);;;end defun
使用了一下,感覺不錯
在材料力學(xué)中應(yīng)該有較大用處
相關(guān)文章
- 2021-08-22AutoCAD 2013應(yīng)用與開發(fā)系列中文版AutoCAD 2013機(jī)械圖
- 2021-08-20AutoCAD 2012建筑圖形設(shè)計(jì)中文版 [施勇 編著] 2012年P(guān)
- 2021-08-18圖形圖像設(shè)計(jì)專家Maya金典案例教程PDF下載
- 2021-08-12AutoCAD 2012建筑圖形設(shè)計(jì)中文版 [施勇 編著] 2012年P(guān)
- 2021-08-08中文版AutoCAD 2013建筑圖形設(shè)計(jì) [施勇,胡中杰 編著] 2
- 2021-08-07中文版AutoCAD 2014機(jī)械圖形設(shè)計(jì) [崔洪斌 編著] 2014
- 2021-08-07中文版AutoCAD 2014建筑圖形設(shè)計(jì) [胡中杰,施勇 編著] 2
- 2021-07-27AutoCAD 建筑圖形設(shè)計(jì)與天正建筑TArch工程實(shí)踐2012中
- 2021-05-05中文版AutoCAD 2010建筑圖形設(shè)計(jì)PDF下載
- 2021-05-05中文版AutoCAD 2011建筑圖形設(shè)計(jì)PDF下載