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

Lisp điền cao độ bị lỗi!!!

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

 

- ngón này nhoc ko rành lắm, nhoc thử sữa lại theo ý bạn, bạn xem có đúng ko ^^, nhoc chỉ sợ lượt bớt nhiều quá làm sai kết quả ^^

(defun DXFcn (code elist) (cdr (assoc code elist)))
;============================================================
(prompt "\n[Cmd:CDX] - GHI CAO DO DIEM TREN TRAC NGANG by Thaistreetz - huuthais@yahoo.com\n")
;============================================================
(defun c:Cdx (/ DZ pt  ptside ang OT sc1 scale tx ty tx1 ty1 y H0) ; 
(command "Undo" "BEGIN")
(if (= tx nil) 
	(setq tx 1))
(if (= ty nil) 
	(setq ty 1))
	(setq 		  tx1 (getreal (strcat "\nTy le theo phuong X <1/"(rtos tx 2 2)">: 1/")) 
		  ty1 (getreal (strcat "\nTy le theo phuong Y <1/"(rtos ty 2 2)">: 1/"))
	)
(if tx1 (setq tx tx1))
(if ty1 (setq ty ty1))
(setq ATLAST (getvar "Attreq"))
(setq CMLAST (getvar "cmdecho"))
(setq OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(setvar "cmdecho" 0)
(command "osmode" 99)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien") "end")) (print)
(setq x0 (car pt0) y0 (cadr pt0))
;(setvar 'osmode 0)
(setq ed (entget (car (entsel "\nChon cao do tim: "))))
(setq H0 (read (DXFcn 1 ed))) 
(While (and (setq pt (getpoint "\nChon diem chuan : ")) (setq doitt (car (entsel "\nChon text de chinh sua: "))))
(Progn
	(setq y (- (cadr pt) y0 (- H0)))
(cond 
	((> y 0) (entmod (subst (cons 1 (strcat "+" (rtos (* y ty) 2 2))) (assoc 1 (entget doitt)) (entget doitt))))
	((< y 0) (entmod (subst (cons 1 (rtos (* y ty) 2 2)) (assoc 1 (entget doitt)) (entget doitt)))) 
	((= y 0) (entmod (subst (cons 1 "%%p0.00") (assoc 1 (entget doitt)) (entget doitt))))
)

);progn
);while 
(setvar "OSMODE" OSLAST)(setvar "ORTHOMODE" OT)(setvar "cmdecho" CMLAST)
(prompt "\n[GHI CAO DO TRAC NGANG] by Thaistreetz - huuthais@yahoo.com\n")
(command "Undo" "End")
(princ)
);end

1/ (setq ed (entget (car (entsel "\nChon cao do tim: "))))

      (setq cdd (atof (cdr(assoc 1 (entget(car(entsel "\n Pick chon Text cao do dau :")))))))

cho hỏi 2 câu lệnh này khác nhau như thế nào. không hiểu sao những lisp mình tải về xem thì đến bước chọn text cao độ ở câu lệnh 1 cho kết quả toàn bằng 0 hay trật lất còn câu 2 thì đúng. 

2/ file cdx.lsp mình tải về xài toàn cho kết quả bằng 0 . các bác chỉ dùm...

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

1/ (setq ed (entget (car (entsel "\nChon cao do tim: "))))

      (setq cdd (atof (cdr(assoc 1 (entget(car(entsel "\n Pick chon Text cao do dau :")))))))

cho hỏi 2 câu lệnh này khác nhau như thế nào. không hiểu sao những lisp mình tải về xem thì đến bước chọn text cao độ ở câu lệnh 1 cho kết quả toàn bằng 0 hay trật lất còn câu 2 thì đúng. 

2/ file cdx.lsp mình tải về xài toàn cho kết quả bằng 0 . các bác chỉ dùm...

Hề hề hề,

1/- (setq ed (entget (car (entsel "\n Chon cao do tim)))) trả về kết quả là một danh sách chứa các mã dxf của đối tượng text được chọn.

     (setq cdd (atof (cdr (assoc 1 (entget (car (entsel "\n Pick chon text cao do"))))))) trả về giá trị số của text cao độ được chọn

2/- Việc sử dụng 2 code này ở đâu và ra sao tùy vào ý định của người viết lisp hay người dùng lisp . Không thể thay thề cái nọ bằng cái kia được.

3/- bạn sử dụng lisp nào và với bản vẽ nào mà thấy không đúng thì phải gửi cả hai cái đó lên mới có thể tìm được lỗi. Hỏi như bạn là đánh đố mọi người vì họ chẳng biết bạn dùng lisp nào và với bản vẽ nào cả.

4/- Lisp không phải là công cụ vạn năng có thể dùng cho mọi bản vẽ bạn có mà nó chỉ có thể dùng với những bản vẽ thỏa mãn điều kiện sử dụng nó do người viết lisp xác định mà thôi. Muốn sử dụng tốt lisp thì người dùng phải có những kiến thức tối thiểu về lisp để có thể đọc và hiểu nội dung của nó và hiểu được nó dùng cho việc gì, trong môi trường bản vẽ nào bạn ạ.

  • 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

Hề hề hề,

1/- (setq ed (entget (car (entsel "\n Chon cao do tim)))) trả về kết quả là một danh sách chứa các mã dxf của đối tượng text được chọn.

     (setq cdd (atof (cdr (assoc 1 (entget (car (entsel "\n Pick chon text cao do"))))))) trả về giá trị số của text cao độ được chọn

2/- Việc sử dụng 2 code này ở đâu và ra sao tùy vào ý định của người viết lisp hay người dùng lisp . Không thể thay thề cái nọ bằng cái kia được.

3/- bạn sử dụng lisp nào và với bản vẽ nào mà thấy không đúng thì phải gửi cả hai cái đó lên mới có thể tìm được lỗi. Hỏi như bạn là đánh đố mọi người vì họ chẳng biết bạn dùng lisp nào và với bản vẽ nào cả.

4/- Lisp không phải là công cụ vạn năng có thể dùng cho mọi bản vẽ bạn có mà nó chỉ có thể dùng với những bản vẽ thỏa mãn điều kiện sử dụng nó do người viết lisp xác định mà thôi. Muốn sử dụng tốt lisp thì người dùng phải có những kiến thức tối thiểu về lisp để có thể đọc và hiểu nội dung của nó và hiểu được nó dùng cho việc gì, trong môi trường bản vẽ nào bạn.

 

Hề Hề..hiểu sơ sơ. để ngâm cứu tiếp. cảm ơn đã giải thích...

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

lisp rất hay nhưng em nhờ các bác sửa lại cho text xuất ra ở dạng 3 chữ số sau dấu phẩy được không, cám ơn mọi người, e gà món này lắm

  • Vote giảm 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

Hề hề hề,

1/- (setq ed (entget (car (entsel "\n Chon cao do tim)))) trả về kết quả là một danh sách chứa các mã dxf của đối tượng text được chọn.

     (setq cdd (atof (cdr (assoc 1 (entget (car (entsel "\n Pick chon text cao do"))))))) trả về giá trị số của text cao độ được chọn

2/- Việc sử dụng 2 code này ở đâu và ra sao tùy vào ý định của người viết lisp hay người dùng lisp . Không thể thay thề cái nọ bằng cái kia được.

3/- bạn sử dụng lisp nào và với bản vẽ nào mà thấy không đúng thì phải gửi cả hai cái đó lên mới có thể tìm được lỗi. Hỏi như bạn là đánh đố mọi người vì họ chẳng biết bạn dùng lisp nào và với bản vẽ nào cả.

4/- Lisp không phải là công cụ vạn năng có thể dùng cho mọi bản vẽ bạn có mà nó chỉ có thể dùng với những bản vẽ thỏa mãn điều kiện sử dụng nó do người viết lisp xác định mà thôi. Muốn sử dụng tốt lisp thì người dùng phải có những kiến thức tối thiểu về lisp để có thể đọc và hiểu nội dung của nó và hiểu được nó dùng cho việc gì, trong môi trường bản vẽ nào bạn ạ.

Mong mọi người giúp dùm, các bác cao thủ rãnh tay chém phát giúp em

Em muốn lấy giá trị khoảng cách cộng dồn và cao độ tuyệt đối của 1 đoạn Pline ( đường tự nhiên) và xuất ra scv

Em chỉ cần xuất ra file scv đơn giản như tệp kèm phía dướ này thôi ạ

Và mỗi lần mình làm lại thì scv sẽ làm mới, (thay thế giá trị đã ghi lần trước) hoặc có thể ghi thêm phía dưới (cái nào đơn giản hơn thì làm ạ)

Đơn giản các thao tác (các thông số cài đặt sẵn đc ko ạ)

 

Phương án :( em thấy cái lisp này gần giống chỉ cần sửa giá trị 1 tí thôi, nhưng em ko biết sửa mong các Bác chỉ giáo)

http://www.cadviet.com/upfiles/5/150815_coorn.lsp

lisp này là lisp xuất tọa độ x y cho 1 đoạn PLine theo gốc tọa độ

Dùng lệnh qq và chọn 1 đường Pline nó sẽ ghi ra file scv mà ko cần hỏi lưu ( đúng ý em ko cần hỏi lưu cho đỡ công đoạn)

Nếu sửa lis[ này mình nên thêm bước:

 

1 - đầu tiên là chọn hệ tọa độ mới (mình sẽ chọn hệ tọa độ mới tại tim đường) ( có thể bỏ qua bước này vì mình có thể sử dụng lệnh ucs riêng)

2 - Chọn Cao độ tim đường ( và cộng thêm giá trị này với tọa độ Oy của các điểm node nằm trên Pline được chọn)

 

sau đó mọi giá trị xuất ra scv sẽ đúng trừ hàng khoảng cách cộng dồn "bên trái" nó sẽ có giá trị âm và sắp xếp ngược so với mong muốn ( ý em là cho khoảng cách sẽ có giá trị dương hết, và khoảng cách ở cột "Bên Trái" sẽ đảo ngược tự dưới lên)

 

Loại bỏ bớt các thao tác của lisp củ là bỏ đi lệnh hỏi lưu file nào mà cho mặc định lưu luôn ra scv đc ko ạ hoặc bỏ cái lưu ra file .TXT đi ạ

 

Mong mọi người giúp sức

Em chỉ nghĩ ra hướng đi còn cách diễn dãi bằng ngôn ngữ lisp thì em chịu nên các bác thông cảm nếu có gì sai sót

Chân thành cảm ơn, chúc mọi người sức khỏe.

http://www.cadviet.c.../5/150815_3.rar

http://www.cadviet.com/upfiles/5/150815_11111_1.dwg

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ạn thử cái này xem:

(defun c:tt  (/ xuat_kq elv ent lsp lst-l lst-r lsw txt x y sep)
 (defun xuat_kq  (str lst / filename fn i)
  (setq i 1)
  (setq filename (strcat (getvar 'dwgprefix) (getvar 'dwgname) ".txt"))
  (or (findfile fileName) (progn (setq fn (open fileName "w")) (close fn)))
  (setq fn (open fileName "a"))
  (princ (strcat "\n" (write-line str fn)))
  (foreach x  lst
   (princ (strcat "\n" (write-line (strcat (itoa i) sep (car x) sep (cadr x)) fn)))
   (setq i (1+ i)))
  (close fn))
 (setq sep "\t")
 (while (and (setq ent (car (entsel "\nChon Pline trac ngang: ")))
             (wcmatch (cdr (assoc 0 (entget ent))) "*POLYLINE")
             (not (redraw ent 3))
             (setq txt (car (entsel "\nChon Text cao do tim duong: ")))
             (wcmatch (cdr (assoc 0 (entget txt))) "*TEXT")
             (not (redraw ent 4))
             (setq elv (distof (cdr (assoc 1 (entget txt))) 2)))
  (setq lsp (acet-geom-vertex-list ent))
  (foreach pt  lsp
   (setq x (car pt)
         y (+ (cadr pt) elv))
   (cond ((< x 0) (setq lst-l (cons (list (rtos (abs x) 2 2) (rtos y 2 2)) lst-l)))
         ((> x 0) (setq lst-r (cons (list (rtos x 2 2) (rtos y 2 2)) lst-r)))))
  (xuat_kq (strcat "\nSTT" sep "K.cach" sep "Cao do\nBen trai:") lst-l)
  (xuat_kq "Ben phai:" (reverse lst-r))
  (setq lst-l nil
        lst-r nil))
(and ent (redraw ent 4))
 (princ "\nLisp created By QuocManh04tt-CadViet.com!")
 (princ))

P/s:

1​. Lsp xuất ra file .txt nằm cùng thư mục với file .dwg hiện hành.

2. Muốn xuất file .csv thì tìm trong lsp thay ".txt" bằng ".csv", ngăn cách giữa STT, K.cach, caodo bằng dấu ";" thì thay dòng:  (setq sep "\t") bằng dòng này:  (setq sep ";").

3. => Copy sẽ tốt hơn download ...

  • 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

Bạn thử cái này xem:

(defun c:tt  (/ xuat_kq elv ent lsp lst-l lst-r lsw txt x y sep)
 (defun xuat_kq  (str lst / filename fn i)
  (setq i 1)
  (setq filename (strcat (getvar 'dwgprefix) (getvar 'dwgname) ".txt"))
  (or (findfile fileName) (progn (setq fn (open fileName "w")) (close fn)))
  (setq fn (open fileName "a"))
  (princ (strcat "\n" (write-line str fn)))
  (foreach x  lst
   (princ (strcat "\n" (write-line (strcat (itoa i) sep (car x) sep (cadr x)) fn)))
   (setq i (1+ i)))
  (close fn))
 (setq sep "\t")
 (while (and (setq ent (car (entsel "\nChon Pline trac ngang: ")))
             (wcmatch (cdr (assoc 0 (entget ent))) "*POLYLINE")
             (not (redraw ent 3))
             (setq txt (car (entsel "\nChon Text cao do tim duong: ")))
             (wcmatch (cdr (assoc 0 (entget txt))) "*TEXT")
             (not (redraw ent 4))
             (setq elv (distof (cdr (assoc 1 (entget txt))) 2)))
  (setq lsp (acet-geom-vertex-list ent))
  (foreach pt  lsp
   (setq x (car pt)
         y (+ (cadr pt) elv))
   (cond ((< x 0) (setq lst-l (cons (list (rtos (abs x) 2 2) (rtos y 2 2)) lst-l)))
         ((> x 0) (setq lst-r (cons (list (rtos x 2 2) (rtos y 2 2)) lst-r)))))
  (xuat_kq (strcat "\nSTT" sep "K.cach" sep "Cao do\nBen trai:") lst-l)
  (xuat_kq "Ben phai:" (reverse lst-r))
  (setq lst-l nil
        lst-r nil))
(and ent (redraw ent 4))
 (princ "\nLisp created By QuocManh04tt-CadViet.com!")
 (princ))

P/s:

1​. Lsp xuất ra file .txt nằm cùng thư mục với file .dwg hiện hành.

2. Muốn xuất file .csv thì tìm trong lsp thay ".txt" bằng ".csv", ngăn cách giữa STT, K.cach, caodo bằng dấu ";" thì thay dòng:  (setq sep "\t") bằng dòng này:  (setq sep ";").

3. => Copy sẽ tốt hơn download ...

Trước tiên xin cảm ơn bạn quocmanh04tt rất nhiều đã giúp mình

Bạn cho mình hỏi sao mình load lisp làm theo hướng dẫn rồi mà mình ko thấy có xuất ra tệp .txt nào cả, và mình cũng thử thay .scv vào mà vẫn ko thấy ra file nào cả. và mình muốn nó xuất ra csv theo dạng:

k.cách    cao độ

X1              Y1

X2              Y2

.....              ....

.....              ....

giống như file xuất ra từ lisp của mình đưa ra ở trên đó bạn, ra file .xls giống lisp mình càng tốt

Một lần nữa cảm ơn bạn rất nhiều và mong bạn bỏ ra ít thời gian chỉnh dùm mình tks

  • Vote giảm 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

Anh ơi, tuyệt vời ông mặt trời luôn, giờ còn 1 xí nữa là nó ko xuất ra file nào hết anh, em muốn nó ra exl để mình copy đó ạ

Không biết phải báo đáp anh như thế nào... Rất cảm ơn anh nhiều 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

Bạn kiểm tra lại đi, lsp ở trên nếu bạn chưa sửa gì trong lsp thì nó ra file .txt mà. Nếu sửa sang .csv như hướng dẫn thì excel mở bình thường, kể cả file .txt.

  • 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

Khi bạn F2 lên có tương tự như của mình ko? Nếu có thì file đã xuất được, tên file giống tên file bản vẽ hiện hành và nằm cùng thư mục.

  • 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

Dạ em đã làm y và kết quả ghi trong cad cũng giống của bác , nhưng sao em lục ở đâu cũng ko có file nào cả ta, hay do máy em sài win 8.1

150815_screenshot_9.png

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

Thật sự xin lỗi bác, và cảm ơn Bác nhiều vì sự giúp đỡ của Bác

Em đã thành công và vì em không kiểm tra kỹ, tên file em nó dài quá ... nó hiện là 1111.DW...  nên em tưởng ko phải, ai dè nó hiện ra hết là 1111.DWG.TXT

hihi em rất xin lỗi vì cứ bắt Bác phải kiểm tra đi, kiểm tra lại, Chúc Bác Thành công trong công việc và gặp nhiều may mắn.

Em yêu bác xxx

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 ơi, nếu mình muốn mọi file txt xuất ra luôn luôn tạo ra ngoài desktop thi mình thêm như thế nào ạ

 

Thế này nhé:

1. Copy hoặc save as 1 file dwg ra desktop, mở file này lên.

2. Gõ (hoặc copy cái này paste dòng command: (getvar 'dwgprefix)), nó sẽ được đường dẫn đến desktop. Ví dụ sẽ được: "C:\\Users\\Admin\\Documents\\Desktop\\" (cái này tùy thuộc vào từng máy).

3. Vào lsp thay thế: (getvar 'dwgprefix) bằng "C:\\Users\\Admin\\Documents\\Desktop\\".

  • 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

Cảm ơn anh rất nhiều, em đã làm được thành công

Chúc anh có nhiều niềm vui trong cuộc sống

Cho đi tất sẽ nhận đc ,Cảm ơn anh vì tất cả nếu anh ở kon tum hay gần đây thì pm anh em mình giao lưu 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

Chào mọi người!. Các bác có thể sửa giúp em lisp CDX mà tọa độ không phải lùi 2 dấu thập phân (VD: 78.56) trở thành lùi 4 dấu thập phân (78.5648) được không?

Cảm ơn các bác trước nhé!

cdx.lsp

  • Vote giảm 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
Vào lúc 28/12/2009 tại 13:30, Thaistreetz đã nói:

Bận nên không có thời gian xem lại giúp bạn lisp trên. nhưng có cái này share cho bạn.

Lisp này dùng để ghi cao độ trên trắc ngang và khá đẹp với các trắc ngang chạy bằng nova. có thể chạy được trên cad14 vô tư :rolleyes:

 


(defun DXFcn (code elist)
 (cdr (assoc code elist))
)
;============================================================
("\n[Cmd:CDX] - GHI CAO DO DIEM TREN TRAC NGANG by Thaistreetz - huuthais@yahoo.com\n")
;============================================================
(defun c:Cdx (); / DZ pt y ptside ang OT sc1 scale tx ty tx1 ty1)
(command "Undo" "BEGIN")
(if (not h) (setq h 1))
(if (= tx nil) (setq tx 1))
(if (= ty nil) (setq ty 1))
(setq h1 (getreal (strcat "\n Cao text < " (rtos h 2 2) " >: "))
        tx1 (getreal (strcat "\nTy le theo phuong X <1/"(rtos tx 2 2)">: 1/")) 
        ty1 (getreal (strcat "\nTy le theo phuong Y <1/"(rtos ty 2 2)">: 1/")))
(if h1 (setq h h1))
(if tx1 (setq tx tx1))
(if ty1 (setq ty ty1))
(setq ATLAST (getvar "Attreq"))
(setq CMLAST (getvar "cmdecho"))
(setq OSLAST (getvar "OSMODE"))
(setq DZ (getvar "DIMZIN"))
(setq OT (getvar "ORTHOMODE"))
(setvar "ORTHOMODE" 0)
(setvar "cmdecho" 0)
(command "osmode" 99)
(setq pt0 (osnap (getpoint "Diem tim TN tu nhien") "end")) (print)
(setq x0 (car pt0) y0 (cadr pt0))
(setq ed (entget (car (entsel "\nChon cao do tim: "))))
(setq H0 (read (DXFcn 1 ed)))    
(command "osmode" 15359) 
(setq pt (getpoint "\nDiem chen: "))
(While (/= pt nil)
(command "osmode" 0)
(Progn
(setq ptside (getpoint "\nPhia chen:" pt)
ang (angle pt ptside))
(setq y (- (cadr pt) y0 (- H0)))
(setq x (- (car pt) x0))
(setvar "DIMZIN" 0)         
(cond ((> x 0) (setq x (strcat "" (rtos (* x tx) 2 2))))
        ((< x 0) (setq x (rtos (abs (* x tx)) 2 2)))
        ((= x 0) (setq x "0.00"))         )
(cond ((> y 0) (setq y (strcat "+" (rtos (* y ty) 2 2))))
        ((< y 0) (setq y (rtos (* y ty) 2 2)))
        ((= y 0) (setq y "%%p0.00")))
;(setq x (ustr 0 "Khoang cach: " x T))
;(setq y (ustr 0 "Cao do: " y T))
(progn
(if (AND (>= ang 0) (< ang (/ pi 2)))
(setq 	pt3 (list (car pt) (+ (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (+ (cadr pt) (* 2.5 h)))
pt5 (list (+ (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (+ (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (+ (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang (/ pi 2)) (< ang pi))
(setq 	pt3 (list (car pt) (+ (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (+ (cadr pt) (* 2.5 h)))
pt5 (list (- (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (- (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (- (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang pi) (< ang (+ pi (/ pi 2))))
(setq 	pt3 (list (car pt) (- (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (- (cadr pt) (* 2.5 h)))
pt5 (list (- (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (- (car pt4) (* 2.6 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (- (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
(if (AND (>= ang (+ pi (/ pi 2))) (< ang (* 2 pi)))
(setq 	pt3 (list (car pt) (- (cadr pt) (* 1.15 h)))
pt4 (list (car pt) (- (cadr pt) (* 2.5 h)))
pt5 (list (+ (car pt4) (* 5 h)) (cadr pt4))
pt6 (list (+ (car pt4) (* 2.5 h)) (+ (cadr pt4) (* 0.8 h)))
pt7 (list (+ (car pt4) (* 2.5 h)) (- (cadr pt4) (* 0.8 h)))))
);progn
(command "pline" pt "w" 0 (* 0.45 h) pt3 "w" 0 0 pt4 pt5 ""
 "text" "m" pt6 h 0 y
 "text" "m" pt7 h 0 x)
(setvar "DIMZIN" DZ)
(command "osmode" 15359)
(setq pt (getpoint "\nDiem chen: "))
);progn
);while 
(setvar "OSMODE" OSLAST)
(setvar "ORTHOMODE" OT)
(setvar "cmdecho" CMLAST)
("\n[GHI CAO DO TRAC NGANG] by Thaistreetz - huuthais@yahoo.com\n")
(command "Undo" "End")
(princ)
);end
 

 

- Chọn kích thước của text muốn ghi cao độ (nên chọn bằng hoặc nhỏ hơn 1 chút so với chiều cao các text cao độ trên trắc ngang của bạn)

- Chọn tỷ lệ vẽ của trắc ngang (Với Nova thì thường là 1:1 nên mình mặc định lisp sẽ lấy giá trị tỷ lệ X là 1/1 và Y là 1/1, nếu tỷ lệ khác thì bạn có thể nhập lại)

- Chọn điểm tim trắc ngang (điểm tim đường)

- Chọn cao độ của tim đường (pick chuột vào text cao độ của tim)

- Chọn các điểm cần tra cao độ.

- Phía chèn text cao độ: bạn có thể chèn cao độ theo 4 hướng. thử sẽ bít :(

Lisp của bác rất hữu ích!

Đã vote

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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×