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

Join the forum, it's quick and easy

AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~
AutoCAD顧問
Would you like to react to this message? Create an account in a few clicks or log in to continue.
[討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... Io15011 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... 2020-310 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... Oiu15010 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... 2020-211 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... Oo-2-110 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... BPl3tjj

[討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸...

向下

[討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... Empty [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸...

發表 由 edmondsforum 2021-04-01, 11:31

這個LISP(DCDD)是我從國外網站找到的,他原本是為了高程(Y軸)標示,
如下動畫所示

https://gph.is/g/4V8bVvo

DCDD:
代碼:
;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=56086&pid=171947&st=0&#entry171947
;;;;;;  https://www.youtube.com/watch?v=3-i4i1p3cwM

(defun c:dcdd (/ lstSS txtstr p1 p2 listname txt txt1 ss)
(vl-load-com)

(defun acet-ss-to-list (ss / n e l)
  (setq n (sslength ss))
  (while (setq e (ssname ss (setq n (1- n))))
 (setq l (cons e l))
  )
)



;Gan gia tri goc
(if (not k0) (setq k0 1));;gan gia tri goc
(setq k (getreal (strcat "\nDrawing Ratio:1/" (rtos k0 2 0) "")));Nhap ty le ban ve
(if (not k) (setq k k0) (setq k0 k))  
(defun dowith(lstSS / lstSS en str)
(cond  ((setq en  (car (vl-remove-if-not '(lambda(x)(wcmatch (cdadr (entget x))"*TEXT")) lstSS)))(setq str (acet-dxf 1 (entget en)) en (vlax-ename->vla-object en)))
  ((setq en (car (vl-remove-if-not '(lambda(x)(and (wcmatch (cdadr (entget x))"INSERT")(= (acet-dxf 66 (entget x)) 1))) lstSS)))
   (setq str (vla-get-textstring (setq en(car (vlax-invoke (vlax-ename->vla-object en) 'GetAttributes)))))
  )
)
(cons en str)
)
(grtext -1 "Edit By Nguy\U+1EC5n Ng\U+1ECDc S\U+01A1n")
(setq  lstSS (acet-ss-to-list (setq ss (ssget)))
  obj (car (setq en (dowith lstSS)))
  str (cdr en)
  p1 (getpoint "\nBase Point:")
  eL (entlast)
 oDz (getvar "Dimzin")
)
(setvar "DIMZIN" 0)
(while (setq p2 (getpoint p1 "\nNext Point:"))
(command "copy" ss "" p1 p2)
(while (setq EL (entnext EL)) (setq Listname (cons EL Listname)))
(setq  Txt1 (car (dowith listName))
  eL (entlast)
)
(Ktra)
(setvar "cecolor" "bylayer")  
(vla-put-textstring txt1
(strcat (cond ((> (setq num (+ (atof str) (/ (- (cadr p2)(cadr p1)) k))) 0) "0K+")
 ((= num 0) "%%p")
 (T "")
   )
(rtos num  2 2));So chu so dau dau ;
)
)
(setvar "DIMZIN" oDZ)
)
;Tim va tao moi Layer
(defun ktra ()
(if (not (tblsearch "layer" "Caodo"))
 (command "-LAYER" "m" "Caodo" "c" 1 "Caodo" "" )
 (setvar "clayer" "Caodo" )

我主要的目的是希望X軸也可以跑出數據
影片當中我有使用 "CPT" 這個是可以針對兩點的距離跑出數據,但可惜的是他無法加上我要的文字,例如0K+ 和 小數點取兩位(四捨五入)
所以希望能把 CPT的LISP功能,可以置入去 DCDD這個LISP

以下是CPT的LISP
CPT:
代碼:
(defun c:cpt (/ ss a b dis eg)
  (setq ss (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "*TEXT"))))))
a (getpoint "\nBase Point:")
  )
  (setvar 'cmdecho 0)
    (while (setq b (getpoint a  "\nNext Point:"))
    (setq dis (distance a b))
    (princ (strcat "" (rtos dis)))
    (foreach v ss
      (command "copy" v "" "non" a "non" b)
      (setq  eg (entget (entlast)))
      (entmod (subst (cons 1 (rtos (+ dis (atof (cdr (assoc 1 eg)))))) (assoc 1 eg) eg))
    )
  )
  (setvar 'cmdecho 1) (princ)
)

在拜託大神幫幫我
edmondsforum
edmondsforum
一般會員
一般會員

文章總數 : 16
年齡 : 31
來自 : 台中
職業 : 水保顧問
愛好 : 電玩
個性 : 隨和、
使用年資 : 2年
使用版本 : autocad 2008 ,autocad 2017
經驗值 : 1465
威望值 : 0
注冊日期 : 2017-07-11
男 白羊座 馬

回頂端 向下

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章
[討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... Uos15010 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... BPl3tjj [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... Ziao1510 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... Oo-2-110 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... Oooo-110 [討論]我有一個LISP可以根據Y軸增量,給予高程標示,但我想改成X軸... 2020-211