?? 距離最大點(diǎn)對(duì).lsp
字號(hào):
(defun C:Maxd ()
;;定義錯(cuò)誤函數(shù)和預(yù)處理--------------------
(setvar "errno" 0)
(setq olderr *error*)
(defun *error* (msg)
(setq en (getvar "errno"))
(setq errmsg (strcat "errno=" (itoa en) "\nError:" msg))
(alert errmsg)
(setq *error* olderr)
)
(graphscr)
(setq oldmode (getvar "osmode"))
(setq oce (getvar "cmdecho"))
(setvar "cmdecho" 0)
;;****************************************
;;程序主段********************************
(setq m (fix (getint "\n請(qǐng)輸入點(diǎn)數(shù)目:")))
(if (< m 3)
(progn
(alert "你輸入的點(diǎn)的數(shù)目太小,請(qǐng)重新輸入!")
(setvar "osmode" oldmode)
(setvar "cmdecho" oce)
(princ)
)
(progn
(setq m (1- m))
;;定義0-N的有序整數(shù)集函數(shù)-------------
(defun listn (a / n x)
(setq n 1)
(setq x (list 0))
(while (<= n a)
(setq x (append (list n) x))
(setq n (1+ n))
)
(reverse x)
)
(setq x (listn m))
;;取得點(diǎn)集----------------------------
(setq x (mapcar '(lambda (x) (getpoint "\n輸入點(diǎn): ")) x))
;;畫(huà)點(diǎn)--------------------------------
(setq pdm (getvar "pdmode"))
(setq pds (getvar "pdsize"))
;;(setvar "pdmode" 32)
;;(setvar "pdsize" 0)
;;(mapcar '(lambda (x) (command ".circle" x 1)) x)
(mapcar '(lambda (x) (command ".point" x)) x)
;;定義任意兩點(diǎn)之間的距離及其序列號(hào)函數(shù)
(defun mnp (m n x)
(list (list (distance (nth m x) (nth n x)) (list m n)))
)
;;定義點(diǎn)集中所有的點(diǎn)的距離的集合的函數(shù)
(defun xxx (i m x / y j)
(setq j 1)
(setq y nil)
(while (<= j (- m i))
(setq y (append (mnp i (+ i j) x) y))
(setq j (1+ j))
)
y
)
(setq i 0)
(setq y nil)
(while (<= i (1- m))
(setq y (append (xxx i m x) y))
(setq i (1+ i))
)
;;求其距離最大值并返回頂點(diǎn)序列--------
(setq pmax (vl-sort-i y (function (lambda (e1 e2) (> (car e1) (car e2))))))
(setq pmax (car pmax))
(setq pp (cadr (nth pmax y)))
(setq pt1 (nth (car pp) x))
(setq pt2 (nth (cadr pp) x))
;;用紅色線(xiàn)條畫(huà)出該線(xiàn)段----------------
(command ".line" pt1 pt2 "")
(setq e1 (entlast))
(setq elist (entget e1))
(if (= nil (assoc 62 elist))
(setq elist (cons (cons 62 1) elist))
(setq elist (subst (cons 62 1) (assoc 62 elist) elist))
)
(entmod elist)
(setvar "osmode" oldmode)
;;(setvar "pdmode" pdm)
;;(setvar "pdsize" pds)
(setvar "cmdecho" oce)
(princ)
(list pt1 pt2)
)
)
)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -