Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Viết Lisp theo yêu cầu

Các bài được khuyến nghị

Cám ơn bác ssg nhưng bị lỗi 1 chút bác à

nó chỉ move về gốc (0,0,0) thôi chứ chưa rotage được

bác xem lại hộ em nha?!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Cám ơn bác ssg nhưng bị lỗi 1 chút bác à

nó chỉ move về gốc (0,0,0) thôi chứ chưa rotage được

bác xem lại hộ em nha?!

Bạn tắt OSNAP đi là ok. Nếu không, bạn thêm 1 đoạn mã vào và trở thành:

(defun luuos ()
 (setq
   CV_OSMODE   (getvar "OSMODE")
   CV_AUTOSNAP (getvar "AUTOSNAP")
 )
)
(defun traos ()
 (if CV_OSMODE
   (setvar "OSMODE" CV_OSMODE)
 )
 (if CV_AUTOSNAP
   (setvar "AUTOSNAP" CV_AUTOSNAP)
 )
)
(defun C:MR3( / ss p0)
(setq
ss (ssget)
p0 (getpoint "\nBase point:")
)
(luuos)
(setvar "osmode" 0)
(command "move" ss "" p0 (list 0 0 0))
(if (not geom3d) (arxload "geom3d"))
(command "rotate3d" ss "" (list 0 0 0) (list 1 0 0) 90)
(traos)
(princ)
)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Thanks các bác, em đang cần 1 lisp nữa có nội dung như sau:

trên màn hình có dòng text là: "diện tích cửa : 2*4=6"

đây là kết quả sai, khi chạy lisp sẽ hỏi chọn text cần tính toán:

chọn text trên sẽ cho ra kết quả là:

"diện tích cửa : 2*4=8"

(gần giống MCALTEXT nhưng hơi khác 1 chút)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
:unsure: NH đã viết cái LISP về Dim xong chưa ?

Khi nào xong cho ae sử dụng với nhé :unsure:

 

Lệnh là SD (sắp dim)

 

Chương trình sẽ yêu cầu người sử dụng chọn đường Dim chuẩn. Sau đó, yêu cầu người sử dụng chọn các đường Dim cần sắp xếp. Chương trình sẽ tự động dàn các Dim theo hàng đều.

sapdim.gif

(defun c:sd ()
 (defun ss2ent	(ss / sodt index lstent)
   (setq
     sodt  (cond
      (ss (sslength ss))
      (t 0)
    )
     index 0
   )
   (repeat sodt
     (setq ent	   (ssname ss index)
    index  (1+ index)
    lstent (cons ent lstent)
     )
   )
   (reverse lstent)
 )
 (defun hoanh_newerror	(msg)
   (if	(and (/= msg "Function cancelled")
     (/= msg "quit / exit abort")
)
     (princ (strcat "\n" msg))
   )
   (done)
 )
 ;;----------
 (defun init ()
   (setq
     HOANH_CMD	     (getvar "CMDECHO")
     HOANH_OLDERROR *error*
     *error*	     hoanh_newerror

   )
   (setvar "CMDECHO" 0)
   (command ".undo" "BE")
 )
 ;;----------
 (defun done ()
   (command ".redraw")
   (command ".undo" "E")
   (if	HOANH_CMD
     (setvar "CMDECHO" HOANH_CMD)
   )
   (if	HOANH_OLDERROR
     (setq *error* HOANH_OLDERROR)
   )
   (princ)
 )
 ;;----------

 (defun cdim (entdt	pchan	 pduong	  /	   tt	    old10
       old13	old14	 new10	  new13	   new14    p10n
       p13n	p14n	 p10o	  p13o	   p14o	    gocduong
       gocchan	pchanb	 pduongb  loaidim
      )
   (defun chanvuonggoc	(ph p1 p2 / ptemp pkq goc)
     (setq
goc   (+ (angle p1 p2) (/ pi 2.0))
ptemp (polar ph goc 1000.0)
pkq   (inters ph ptemp p1 p2 nil)
     )
     pkq
   )
   (setq
     tt       (entget entdt)
     old10    (assoc '10 tt)
     old13    (assoc '13 tt)
     old14    (assoc '14 tt)
     p10o     (cdr old10)
     p13o     (cdr old13)
     p14o     (cdr old14)
     loaidim  (logand (cdr (assoc '70 tt)) 7)
     gocduong (cond
	 ((= loaidim 1) (angle p13o p14o))
	 ((= loaidim 0) (cdr (assoc '50 tt)))
	 (t nil)
       )
     pchan    (cond
	 (pchan (list (car pchan) (cadr pchan) 0.0))
	 (t pchan)
       )
     pduong   (cond
	 (pduong (list (car pduong) (cadr pduong) 0.0))
	 (t pduong)
       )

   )
   (if	gocduong
     (progn
(if pchan
  (setq
    pchanb (polar pchan gocduong 1000.0)
    p13n   (chanvuonggoc
	     (list (car p13o) (cadr p13o) 0.0)
	     pchan
	     pchanb
	   )
    p14n   (chanvuonggoc
	     (list (car p14o) (cadr p14o) 0.0)
	     pchan
	     pchanb
	   )
    new13  (cons 13 p13n)
    new14  (cons 14 p14n)
    tt	   (subst new13 old13 tt)
    tt	   (subst new14 old14 tt)
  )
)
(if pduong
  (setq
    pduongb (polar pduong gocduong 1000.0)
    p10n    (chanvuonggoc
	      (list (car p10o) (cadr p10o) 0.0)
	      pduong
	      pduongb
	    )
    new10   (cons 10 p10n)
    tt	    (subst new10 old10 tt)
  )
)
(entmod tt)
     )
   )
   gocduong
 )

 (defun textdimheight (ent / tmp)
   (command ".copy" ent "" (list 0.0 0.0 0.0) "@")
   (command ".explode" (entlast) "")
   (setq tmp (cdr (assoc 40 (entget (entlast)))))
   (command ".erase" "p" "")
   tmp
 )
 (defun phia (p1 p2 p3 / x1 y1 z1 x2 y2 z2 x3 y3 z3)
   (setq
     x1  (car p1)
     y1  (cadr p1)
     z1  (caddr p1)
     x2  (car p2)
     y2  (cadr p2)
     z2  (caddr p2)
     x3  (car p3)
     y3  (cadr p3)
     z3  (caddr p3)
     tmp (+ (* (- x1 x2) x3)
     (* (- y1 y2) y3)
     (* (- z1 z2) z3)
  )
   )
   (cond
     ((= tmp 0.0) 0.0)
     (t (/ tmp (abs tmp)))
   )
 )
 (defun khoangcachdim (p1 ent goc / tt p2 A B D)
   (setq tt (entget ent)
  p2 (cdr (assoc 10 tt))
  B  (cdr (assoc 50 tt))
  A  (angle p1 p2)
  D  (distance p1 p2)
   )
   (* (* D (sin (- A [b]B )[/b])) (phia p1 (polar p1 goc 1.0) p2))
 )

 (defun phanloai (ent)
   (setq
     kc   (khoangcachdim pgoc ent goc)
     loai (fix (/ kc heightdimgoc 0.93))
   )
   (cons loai ent)
 )

 (init)
 (princ "\nSap xep dim © CADViet.com")
 (while (not (setq entgoc (car (entsel "\nChon duong dim goc: "))))
 )
 (setq
   ttgoc	 (entget entgoc)
   p13goc	 (cdr (assoc 13 ttgoc))
   pgoc	 (cdr (assoc 10 ttgoc))
   goc		 (cdr (assoc 50 ttgoc))
   heightdimgoc (textdimheight entgoc)
   ssd		 (ssget	(list
		  (cons 0 "DIMENSION")
		  (cons -4 "			  (cons 70 32)
		  (cons 70 64)
		  (cons 70 96)
		  (cons 70 128)
		  (cons 70 160)
		  (cons 70 196)
		  (cons 70 224)
		  (cons -4 "OR>")
		  (cons -4 "			  (cons 50 goc)
		  (cons 50 (+ goc pi))
		  (cons 50 (- goc pi))
		  (cons -4 "OR>")
		)
	 )
   lstd	 (ss2ent ssd)
   lstd	 (mapcar 'phanloai lstd)
   lstlevel	 nil
 )
 (foreach pp lstd
   (if	(not (member (car pp) lstlevel))
     (setq lstlevel (append lstlevel (list (car pp))))
   )
 )
 (setq	lstlevel    (vl-sort lstlevel '(lambda (x1 x2) (	lstam	    nil
lstduong    nil
lstamtmp    nil
lstduongtmp nil
 )
 (foreach pp lstlevel
   (if	(      (setq lstam (append lstam (list pp)))
   )
   (if	(> pp 0.0)
     (setq lstduong (append lstduong (list pp)))
   )
 )
 (setq index 0)
 (foreach pp (reverse lstam)
   (setq
     index    (1+ index)
     lstamtmp (append lstamtmp (list (cons pp index)))
   )
 )
 (setq
   lstam lstamtmp
   index 0
 )
 (foreach pp lstduong
   (setq
     index	  (1+ index)
     lstduongtmp (append lstduongtmp (list (cons pp index)))
   )
 )
 (setq lstduong lstduongtmp)
 (setq lstlevel (append lstduong lstam (list (cons 0.0 0))))

 (setq kcdimstandard (* 3.0 heightdimgoc))
 (foreach pp lstd
   (setq plht (car pp))
   (progn
     (setq
kcdimht	   (khoangcachdim pgoc (cdr pp) goc)
duongthu   (cdr (assoc plht lstlevel))
heso	   (cond
	     ((/= 0 kcdimht)
	      (abs (* (/ kcdimstandard kcdimht) duongthu))
	     )
	     (t 0.0)
	   )
diemchenht (cdr (assoc 10 (entget (cdr pp))))
pmoi	   (polar pgoc
		  (angle pgoc diemchenht)
		  (* heso (distance pgoc diemchenht))
	   )
     )

     (cdim (cdr pp) p13goc pmoi)
   )
 )
 (done)
)
(princ "\nSap xep dim, SD - free lisp from www.cadviet.com")
(princ)

Chỉnh sửa theo Nguyen Hoanh
  • Vote tăng 6

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thanks các bác, em đang cần 1 lisp nữa có nội dung như sau:

trên màn hình có dòng text là: "diện tích cửa : 2*4=6"

đây là kết quả sai, khi chạy lisp sẽ hỏi chọn text cần tính toán:

chọn text trên sẽ cho ra kết quả là:

"diện tích cửa : 2*4=8"

(gần giống MCALTEXT nhưng hơi khác 1 chút)

 

Đã sửa và đáp ứng được yêu cầu của bạn, vẫn là lệnh MCALTEXT.

(defun c:mcaltext (/ ent tt old gt vt gtmoi)
 (if (not c:cal)
   (load "geomcal.arx")
 )
 (defun calone	(ent)
   (setq
     tt    (entget ent)
     old   (assoc 1 tt)
     gt    (cdr old)
     vt    (vl-string-position (ascii "=") gt)
     ht    vt
     htsau (+ vt 2)
   )
   (while (and (> ht 0)
	(member (substr gt ht 1) (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "." "+" "-" "*" "/"))
   )
     (setq ht (1- ht))
   )
   (while (and 
	(member (substr gt htsau 1) (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "." "+" "-" "*" "/"))
   )
     (setq htsau (1+ htsau))
   )
   (setq
     gttruoc (substr gt 1 ht)
     gtsau (substr gt htsau)
     gtmoi (substr gt (1+ ht) (- vt ht))
     kq    (rtos (c:cal gtmoi))
     kq    (vl-string-right-trim "0" kq)
     kq    (vl-string-right-trim "." kq)
     gtmoi (strcat gttruoc gtmoi "=" kq gtsau)
     tt    (subst (cons 1 gtmoi) old tt)
   )
   (entmod tt)
   (entupd ent)
 )
 (setq ss (ssget '((0 . "TEXT"))))
 (sudung calone ss)
 (princ)
)
(defun sudung (ham ss / sodt index entdt soapp)
 (setq	sodt  (cond
	(ss (sslength ss))
	(t 0)
      )
soapp 0
index 0
 )
 (repeat sodt
   (setq entdt	(ssname ss index)
  index	(1+ index)
   )
   (if	(ham entdt)
     (setq soapp (1+ soapp))
   )
 )
 soapp
)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Lệnh là SD (sắp dim)

 

Chương trình sẽ yêu cầu người sử dụng chọn đường Dim chuẩn. Sau đó, yêu cầu người sử dụng chọn các đường Dim cần sắp xếp. Chương trình sẽ tự động dàn các Dim theo hàng đều.

sapdim.gif

(defun c:sd ()
 (defun ss2ent	(ss / sodt index lstent)
   (setq
     sodt  (cond
      (ss (sslength ss))
      (t 0)
    )
     index 0
   )
   (repeat sodt
     (setq ent	   (ssname ss index)
    index  (1+ index)
    lstent (cons ent lstent)
     )
   )
   (reverse lstent)
 )
 (defun hoanh_newerror	(msg)
   (if	(and (/= msg "Function cancelled")
     (/= msg "quit / exit abort")
)
     (princ (strcat "\n" msg))
   )
   (done)
 )
 ;;----------
 (defun init ()
   (setq
     HOANH_CMD	     (getvar "CMDECHO")
     HOANH_OLDERROR *error*
     *error*	     hoanh_newerror

   )
   (setvar "CMDECHO" 0)
   (command ".undo" "BE")
 )
 ;;----------
 (defun done ()
   (command ".redraw")
   (command ".undo" "E")
   (if	HOANH_CMD
     (setvar "CMDECHO" HOANH_CMD)
   )
   (if	HOANH_OLDERROR
     (setq *error* HOANH_OLDERROR)
   )
   (princ)
 )
 ;;----------

 (defun cdim (entdt	pchan	 pduong	  /	   tt	    old10
       old13	old14	 new10	  new13	   new14    p10n
       p13n	p14n	 p10o	  p13o	   p14o	    gocduong
       gocchan	pchanb	 pduongb  loaidim
      )
   (defun chanvuonggoc	(ph p1 p2 / ptemp pkq goc)
     (setq
goc   (+ (angle p1 p2) (/ pi 2.0))
ptemp (polar ph goc 1000.0)
pkq   (inters ph ptemp p1 p2 nil)
     )
     pkq
   )
   (setq
     tt       (entget entdt)
     old10    (assoc '10 tt)
     old13    (assoc '13 tt)
     old14    (assoc '14 tt)
     p10o     (cdr old10)
     p13o     (cdr old13)
     p14o     (cdr old14)
     loaidim  (logand (cdr (assoc '70 tt)) 7)
     gocduong (cond
	 ((= loaidim 1) (angle p13o p14o))
	 ((= loaidim 0) (cdr (assoc '50 tt)))
	 (t nil)
       )
     pchan    (cond
	 (pchan (list (car pchan) (cadr pchan) 0.0))
	 (t pchan)
       )
     pduong   (cond
	 (pduong (list (car pduong) (cadr pduong) 0.0))
	 (t pduong)
       )

   )
   (if	gocduong
     (progn
(if pchan
  (setq
    pchanb (polar pchan gocduong 1000.0)
    p13n   (chanvuonggoc
	     (list (car p13o) (cadr p13o) 0.0)
	     pchan
	     pchanb
	   )
    p14n   (chanvuonggoc
	     (list (car p14o) (cadr p14o) 0.0)
	     pchan
	     pchanb
	   )
    new13  (cons 13 p13n)
    new14  (cons 14 p14n)
    tt	   (subst new13 old13 tt)
    tt	   (subst new14 old14 tt)
  )
)
(if pduong
  (setq
    pduongb (polar pduong gocduong 1000.0)
    p10n    (chanvuonggoc
	      (list (car p10o) (cadr p10o) 0.0)
	      pduong
	      pduongb
	    )
    new10   (cons 10 p10n)
    tt	    (subst new10 old10 tt)
  )
)
(entmod tt)
     )
   )
   gocduong
 )

 (defun textdimheight (ent / tmp)
   (command ".copy" ent "" (list 0.0 0.0 0.0) "@")
   (command ".explode" (entlast) "")
   (setq tmp (cdr (assoc 40 (entget (entlast)))))
   (command ".erase" "p" "")
   tmp
 )
 (defun phia (p1 p2 p3 / x1 y1 z1 x2 y2 z2 x3 y3 z3)
   (setq
     x1  (car p1)
     y1  (cadr p1)
     z1  (caddr p1)
     x2  (car p2)
     y2  (cadr p2)
     z2  (caddr p2)
     x3  (car p3)
     y3  (cadr p3)
     z3  (caddr p3)
     tmp (+ (* (- x1 x2) x3)
     (* (- y1 y2) y3)
     (* (- z1 z2) z3)
  )
   )
   (cond
     ((= tmp 0.0) 0.0)
     (t (/ tmp (abs tmp)))
   )
 )
 (defun khoangcachdim (p1 ent goc / tt p2 A B D)
   (setq tt (entget ent)
  p2 (cdr (assoc 10 tt))
  B  (cdr (assoc 50 tt))
  A  (angle p1 p2)
  D  (distance p1 p2)
   )
   (* (* D (sin (- A :unsure:)) (phia p1 (polar p1 goc 1.0) p2))
 )

 (defun phanloai (ent)
   (setq
     kc   (khoangcachdim pgoc ent goc)
     loai (fix (/ kc heightdimgoc 0.93))
   )
   (cons loai ent)
 )

 (init)
 (princ "\nSap xep dim © CADViet.com")
 (while (not (setq entgoc (car (entsel "\nChon duong dim goc: "))))
 )
 (setq
   ttgoc	 (entget entgoc)
   p13goc	 (cdr (assoc 13 ttgoc))
   pgoc	 (cdr (assoc 10 ttgoc))
   goc		 (cdr (assoc 50 ttgoc))
   heightdimgoc (textdimheight entgoc)
   ssd		 (ssget	(list
		  (cons 0 "DIMENSION")
		  (cons -4 "<OR")
		  (cons 70 32)
		  (cons 70 64)
		  (cons 70 96)
		  (cons 70 128)
		  (cons 70 160)
		  (cons 70 196)
		  (cons 70 224)
		  (cons -4 "OR>")
		  (cons -4 "<OR")
		  (cons 50 goc)
		  (cons 50 (+ goc pi))
		  (cons 50 (- goc pi))
		  (cons -4 "OR>")
		)
	 )
   lstd	 (ss2ent ssd)
   lstd	 (mapcar 'phanloai lstd)
   lstlevel	 nil
 )
 (foreach pp lstd
   (if	(not (member (car pp) lstlevel))
     (setq lstlevel (append lstlevel (list (car pp))))
   )
 )
 (setq	lstlevel    (vl-sort lstlevel '(lambda (x1 x2) (< x1 x2)))
lstam	    nil
lstduong    nil
lstamtmp    nil
lstduongtmp nil
 )
 (foreach pp lstlevel
   (if	(< pp 0.0)
     (setq lstam (append lstam (list pp)))
   )
   (if	(> pp 0.0)
     (setq lstduong (append lstduong (list pp)))
   )
 )
 (setq index 0)
 (foreach pp (reverse lstam)
   (setq
     index    (1+ index)
     lstamtmp (append lstamtmp (list (cons pp index)))
   )
 )
 (setq
   lstam lstamtmp
   index 0
 )
 (foreach pp lstduong
   (setq
     index	  (1+ index)
     lstduongtmp (append lstduongtmp (list (cons pp index)))
   )
 )
 (setq lstduong lstduongtmp)
 (setq lstlevel (append lstduong lstam (list (cons 0.0 0))))

 (setq kcdimstandard (* 3.0 heightdimgoc))
 (foreach pp lstd
   (setq plht (car pp))
   (progn
     (setq
kcdimht	   (khoangcachdim pgoc (cdr pp) goc)
duongthu   (cdr (assoc plht lstlevel))
heso	   (cond
	     ((/= 0 kcdimht)
	      (abs (* (/ kcdimstandard kcdimht) duongthu))
	     )
	     (t 0.0)
	   )
diemchenht (cdr (assoc 10 (entget (cdr pp))))
pmoi	   (polar pgoc
		  (angle pgoc diemchenht)
		  (* heso (distance pgoc diemchenht))
	   )
     )

     (cdim (cdr pp) p13goc pmoi)
   )
 )
 (done)
)
(princ "\nSap xep dim, SD - free lisp from www.cadviet.com")
(princ)

 

Anh Hoành xem lại giúp, tôi chạy chương trình gặp lỗi :

Command: (load"xepdim")

; error: malformed list on input

cảm ơn anh.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

APPLOAD ttt.lsp successfully loaded.

Command: ; error: malformed list on input

Command:

Command: sd Unknown command "SD". Press F1 for help.

 

sao mình load lisp và chạy thì nó báo lỗi. Bạn xem lại dùm nhé!

 

Thanks nhiều!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Vừa edit lại được rồi, mọi người thử lại đi nhé.

 

Khổ quá, chữ B) nó bị đổi thành :unsure:

Nên dòng lệnh:

(* (* D (sin (- A B))) (phia p1 (polar p1 goc 1.0) p2))

Bị đổi thành:

(* (* D (sin (- A :unsure:)) (phia p1 (polar p1 goc 1.0) p2))

thế là sai mất.

 

Đã đổi lại thành B ), và đã test lại thấy ok rồi.

Chân thành xin lỗi mọi người.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vừa edit lại được rồi, mọi người thử lại đi nhé.

 

Khổ quá, chữ :unsure: nó bị đổi thành :unsure:

Nên dòng lệnh:

(* (* D (sin (- A :unsure:)) (phia p1 (polar p1 goc 1.0) p2))

Bị đổi thành:

(* (* D (sin (- A :))) (phia p1 (polar p1 goc 1.0) p2))

thế là sai mất.

 

Đã đổi lại thành B ), và đã test lại thấy ok rồi.

Chân thành xin lỗi mọi người.

 

cảm ơn anh Hoành

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nguyễn Hoành ơi , xem lại hộ tui cái . Tại sao ko dùng được lệnh SD vậy . File tôi gửi theo đường dẫn ở dưới

http://www.cadviet.com/upfiles/NH.rar

or http://www.megaupload.com/?d=LXGMX3M3

 

Tôi rất thích lệnh này của NH , NH có thể bổ xung thêm để có thể dùng được vơi đường kích thước xiên ko (Lệnh dal)

Trả lời nhanh nhé . Thèm lém rùi :unsure:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nguyễn Hoành ơi , xem lại hộ tui cái . Tại sao ko dùng được lệnh SD vậy . File tôi gửi theo đường dẫn ở dưới

http://www.cadviet.com/upfiles/NH.rar

or http://www.megaupload.com/?d=LXGMX3M3

 

Tôi rất thích lệnh này của NH , NH có thể bổ xung thêm để có thể dùng được vơi đường kích thước xiên ko (Lệnh dal)

Trả lời nhanh nhé . Thèm lém rùi :unsure:

file của bạn vẫn dùng tốt, chạy ổn chẳng có gì sai cả!

  • Vote tăng 3

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
file của bạn vẫn dùng tốt, chạy ổn chẳng có gì sai cả!

 

 

:unsure:

Thế sao ?????? Tôi dùng thì bị nhu file ảnh tôi up lên mà :unsure:

Còn vụ đường kích thước xiên thì sao hả NH ? Lệnh SD bị miễn nhiễm với nó mà ...........

Cảm ơn NH nhé :unsure:

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bác Hoanh ơi, em đã dùng cái mcaltext của bác

chạy ngon lắm bác à, nhưng với những phép tính có

dấu ngoặc "()" thì nó không chạy bác à?!

bác giúp em chút nữa được không? em cám ơn!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
:unsure:

Thế sao ?????? Tôi dùng thì bị nhu file ảnh tôi up lên mà :unsure:

Còn vụ đường kích thước xiên thì sao hả NH ? Lệnh SD bị miễn nhiễm với nó mà ...........

Cảm ơn NH nhé :unsure:

Việc xác định các thuật toán toán học trên đường dim DIMALIGNED phức tạp hơn các đường dim DIMLINEAR. Hiện nay, để gãi cho anh em đỡ ngứa ngáy, phiên bản đầu tiên tạm thế đã. Về sau sẽ nâng cấp lên bao gồm cả DIMALIGNED.

 

Vả lại nhiều khả năng chẳng cần nâng cấp, AutoDesk đợt tới cho ra phiên bản mới bao gồm luôn cả lệnh này cũng nên :) (Kinh nghiệm từ bản thân, các chương trình lisp hồi đầu tiên tôi viết thì bây giờ ACAD đã có sẵn gần hết rồi).

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

@NguyenHoanh Cho mình hỏi khoảng cách giữa các Dim được tính dựa vào thông số nào vậy? Nếu mình muốn quy định khoảng cách là giá trị khác có được không!

 

Cảm ơn bạn đã làm lisp này :unsure:

:unsure:) không ai cảm ơn mình sao :unsure:)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
@NguyenHoanh Cho mình hỏi khoảng cách giữa các Dim được tính dựa vào thông số nào vậy? Nếu mình muốn quy định khoảng cách là giá trị khác có được không!

 

Cảm ơn bạn đã làm lisp này :unsure:

:unsure:) không ai cảm ơn mình sao :unsure:)

Khoảng cách giữa các dim cao gấp 3 lần kích cỡ chữ của Dim gốc.

Bạn muốn sửa thông số khác đi, bạn có thể tìm đến dòng lệnh (setq kcdimstandard (* 3.0 heightdimgoc)) và sửa số 3.0 thành số khác mà bạn muốn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Thanks!

 

@All lisp của NguyenHoanh có thể sắp xếp cả các dim chéo với điều kiện các bạn đổi trục toạ độ theo đường chéo của đim!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thanks!

 

@All lisp của NguyenHoanh có thể sắp xếp cả các dim chéo với điều kiện các bạn đổi trục toạ độ theo đường chéo của đim!

Không phải đâu bạn!

Dim Rotate vẫn là DIMALIGNED không phải là DIMALIGNED.

 

Vì dim DIMALIGNED bao gồm Rotated, Horizontal và Vertical. DIMALIGNED cấu trúc khác hẳn. Để phân biệt bạn hãy kéo chân dim, nếu đường dim không thay đổi thì nó là DIMALIGNED; còn nếu đường dim thay đổi theo chân dim thì nó là DIMALIGNED. Cách tạo ra chúng cũng bằng 2 lệnh khác biệt là lệnh DIMALIGNED và lệnh DIMLINEAR.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Các bác ơi, em đang rất cần 1 lisp có nội dung như sau:

trên màn hình có các text dạng x,y,z khi chạy lisp chọn các text

trên thì sẽ vẽ ra các điểm point có toạ độ là x,y,z

nếu không có toạ độ z (tức là text dạng x,y ) thì cũng vẫn vẽ được các

điểm point (tức toạ độ trục z=0)

thanks các bác trước!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Các bác ơi, em đang rất cần 1 lisp có nội dung như sau:

trên màn hình có các text dạng x,y,z khi chạy lisp chọn các text

trên thì sẽ vẽ ra các điểm point có toạ độ là x,y,z

nếu không có toạ độ z (tức là text dạng x,y ) thì cũng vẫn vẽ được các

điểm point (tức toạ độ trục z=0)

thanks các bác trước!

 

Tên lệnh là T2P (Text to Point)

(defun c:t2p ()
 (defun t2pone	(ent)
   (command ".POINT" (cdr (assoc 1 (entget ent))))
 )
 (setq ss (ssget '((0 . "TEXT"))))
 (luuos)
 (setvar "osmode" 0)
 (sudung t2pone ss)
 (traos)
)
(defun sudung (ham ss / sodt index entdt soapp)
 (setq	sodt  (cond
	(ss (sslength ss))
	(t 0)
      )
soapp 0
index 0
 )
 (repeat sodt
   (setq entdt	(ssname ss index)
  index	(1+ index)
   )
   (if	(ham entdt)
     (setq soapp (1+ soapp))
   )
 )
 soapp
)
(defun luuos ()
 (setq
   HOANH_OSMODE   (getvar "OSMODE")
   HOANH_AUTOSNAP (getvar "AUTOSNAP")
 )
)
(defun traos ()
 (if HOANH_OSMODE
   (setvar "OSMODE" HOANH_OSMODE)
 )
 (if HOANH_AUTOSNAP
   (setvar "AUTOSNAP" HOANH_AUTOSNAP)
 )
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

HI EVERY BODY !

^_^ :) .

:unsure: :unsure:

:) :)

Say quá ...............!

Chào riêng NH 1 cái nhé :unsure: NH ah , tôi muốn có 1 cái LISP chuyển toàn bộ layerA sang layerB (kiểu như layer merge của Express) , NH giúp tôi nhé

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
HI EVERY BODY !

^_^ :) .

:unsure: :unsure:

:) :)

Say quá ...............!

Chào riêng NH 1 cái nhé :unsure: NH ah , tôi muốn có 1 cái LISP chuyển toàn bộ layerA sang layerB (kiểu như layer merge của Express) , NH giúp tôi nhé

Bạn dùng lệnh laytrans của AutoCAD!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

(defun c:mcaltext (/ ent tt old gt vt gtmoi)
 (if (not c:cal)
   (load "geomcal.arx")
 )
 (defun calone	(ent)
   (setq
     tt    (entget ent)
     old   (assoc 1 tt)
     gt    (cdr old)
     vt    (vl-string-position (ascii "=") gt)
     ht    vt
     htsau (+ vt 2)
   )
   (while (and (> ht 0)
	(member (substr gt ht 1) (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "." "+" "-" "*" "/"))
   )
     (setq ht (1- ht))
   )
   (while (and 
	(member (substr gt htsau 1) (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "." "+" "-" "*" "/"))
   )
     (setq htsau (1+ htsau))
   )
   (setq
     gttruoc (substr gt 1 ht)
     gtsau (substr gt htsau)
     gtmoi (substr gt (1+ ht) (- vt ht))
     kq    (rtos (c:cal gtmoi))
     kq    (vl-string-right-trim "0" kq)
     kq    (vl-string-right-trim "." kq)
     gtmoi (strcat gttruoc gtmoi "=" kq gtsau)
     tt    (subst (cons 1 gtmoi) old tt)
   )
   (entmod tt)
   (entupd ent)
 )
 (setq ss (ssget '((0 . "TEXT"))))
 (sudung calone ss)
 (princ)
)
(defun sudung (ham ss / sodt index entdt soapp)
 (setq	sodt  (cond
	(ss (sslength ss))
	(t 0)
      )
soapp 0
index 0
 )
 (repeat sodt
   (setq entdt	(ssname ss index)
  index	(1+ index)
   )
   (if	(ham entdt)
     (setq soapp (1+ soapp))
   )
 )
 soapp
)

 

Bác hoanh ơi cái lisp này chạy ngon mỗi tội khi phép tính có những

dấu ngoặc "()" thì không chạy bác à?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×