Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu]: lisp sao chép số liệu kích thước


  • Please log in to reply
25 replies to this topic

#21 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 28 July 2012 - 05:49 AM

[ĐÃ XONG]
........

lisp 2 : lệnh tl3 của bác Tue- đo kích thước 1 cạnh ra con số dạng text ở ngay con trỏ và đặt nó ở vị trí bất kỳ
http://www.cadviet.c...3/52440_tl3.lsp
---------------------------------------------------
dưới đây là video của em có thi triển lại lisp của bác mathan có kết hợp với lệnh tự đo kích thước khác
Xin cảm ơn mọi người đã giúp đỡ!

1./ Cái file lsp trên đâu phải là của mình. Cái của mình viết hay hơn nhiều :D

2./ Xem video của bạn, mình chỉ có ý kiến là Lô đất của bạn chỉ có 12 điểm (số lượng nhỏ), nhưng với số điểm lớn thì nên xem lại. Tìm cách giải quyết cho nhanh.
Có thể kết hợp vừa ghi kích thước, đánh số điểm và sau đó là lập bảng thống kê
  • 1

#22 mathan

mathan

    biết vẽ rectang

  • Members
  • PipPip
  • 83 Bài viết
Điểm đánh giá: 57 (tàm tạm)

Đã gửi 28 July 2012 - 08:21 AM

chắc bác @mathan bận quá nên quên mất hoặc có thể nghĩ em không cần cái lisp này nên thôi ^^ em đã tổng kết lại ở trang 1 . lisp của bác phần đặt dim em không dùng nữa thay vào đó kết hợp với tự dim sẽ nhanh và giải quyết được chuyện đặt vị trí dim không đều và khó kiểm soát. Giờ khi sử dụng em sẽ thường xuyên enter để bỏ qua bước đặt vị trí dim đôi lúc cũng nhầm nhọt do nháy nhiều quá nhưng chắc dùng nhiều sẽ quen tay.
Xin cảm ơn tất cả :D

Giải quyết nốt cho bạn 3 vấn đề là:
1. Tiếng Việt
2. Điểm đặt DIM
3. Kích thước khung, bạn tìm tới dòng CODE - (setq di (* 8 h) sửa số 8 thành số khác là khung sẽ to bé theo ý bạn ngay thui
Sorry bạn vì mình cũng khá vội

;; free lisp from cadviet.com
;;; Edit by mathan
----------------------------------------------
(defun C:tkd ()
(setvar "cmdecho" 0 )
(command "Undo" "Begin")
(setq om (getvar "osmode"))
(if (not h) (setq h 1))
(setq caot1 (getreal (strcat "\nCao text < " (rtos h 2 2) " >:")))
(if caot1 (setq h caot1))
(setq TP (getint (strcat "\nSo chu so thap phan :")))
(setq tapx '() tapy '() stt '())
(command "CECOLOR" 0)
;;; Phan dim
(setq ktra "OK")
(While (= ktra "OK")
(setvar "osmode" 125)
(setq DD (getpoint"\nPick diem dau"))
(setq TDD (getstring"\nNhap ten diem dau:"))
(setq DC (getpoint"\nPick diem cuoi"))
(setq TDC (getstring"\nNhap ten diem cuoi:"))
(setvar "osmode" 0)

(setq kc (distance DD DC))

(setq textdim (rtos kc 2 tp))
(setq textdiem (strcat TDD "-" TDC))
(setq ghichu "\U+0110o TT")
(command "_DIMALIGNED" DD DC pause)
(setq ktra (getstring"\nBan muon dung lai nhap [S] - de tiep tuc [Enter hoac Space]:"))
(if (or (= ktra "S") (= ktra "s")) (setq ktra "NOT OK") (setq ktra "OK"))

(setq
tapx (append tapx (list textdim))
tapy (append tapy (list ghichu))
stt (append stt (list textdiem))
);setq
);;end while

;;;;;;;;;;;;; Phan lap bang thong ke
(setq bit (cond (bit) ("Yes")))
(initget "Yes No")
(setq Tmp (strcat "\nXuat bang toa do? [Yes/No] <" bit ">: ")
bit (cond ((getkword Tmp)) (bit)))
(if (eq bit "Yes")
(progn
(setq di (* 8 h) ;; Ty le bang bieu thong ke
kc (* 2 di)
PT (getpoint"\nVi tri dat bang")
PTC (list (+ (* 2 kc) (- di h h h h) (car PT)) (cadr PT))
p1 (list (car PT) (+ (cadr PT)(* 2 h)))
p2 (list (car PTC) (+ (cadr PTC)(* 2 h)))
p3 (list (car p1) (+ (cadr p1)(* 2 h)))
p4 (list (car p2) (+ (cadr p2)(* 2 h)))
PTD (list (+ (/ di 2) (car PT)) (+ h (cadr PT)))
PTX (list (+ di (/ di 2) (- 0 h) (car PTD)) (cadr PTD))
PTY (list (+ kc (- h h h h) (car PTX)) (cadr PTX))
p11 (list (+ (/ di 2) (car p1)) (+ (* 1.1 h) (cadr p1)))
p22 (list (+ di (/ di 2) (- 0 h) (car p11)) (- (cadr p11) (* 0.1 h)))
p33 (list (+ kc (- h h h h) (car p22)) (cadr p22))
L1 (list (+ di (car p3))(cadr p3))
L2 (list (+ kc (- 0 h h)(car L1))(cadr L1))
PTB (list (+ (- (* 2 h)) (* 0.5 (+ (* 2 kc) di)) (car PT)) (+ (cadr P3) (* 1.8 h)))
n (length tapx)
k 0
);setq
(setvar "osmode" 0)
(command "CECOLOR" 3 "line" p1 p2 "" "line" p3 p4 "" "CECOLOR" 2
"text" "m" p11 h 0 "\U+0110i\U+1EC3m \U+0111o"
"text" "m" p22 h 0 "Chi\U+1EC1u d\U+00E0i"
"text" "m" p33 h 0 "Ghi ch\U+00FA"
"text" "m" pTB (* 1.3 h) 0 "B\U+1EA3ng th\U+1ED1ng k\U+00EA chi\U+1EC1u d\U+00E0i")
(while (< k n)
(setq xx (nth k tapx) yy (nth k tapy) tstt(nth k stt))
(command "CECOLOR" 2
"text" "m" PTD h 0 tstt
"text" "m" PTX h 0 xx
"text" "m" PTY h 0 yy
"CECOLOR" 3
"line" PT PTC "")
(setq PT (list (car PT) (- (cadr PT)(* 2 h)))
PTC (list (+ (* 2 kc) (- di h h h h) (car PT)) (cadr PT))
PTD (list (+ (/ di 2) (car PT)) (+ h (cadr PT)))
PTX (list (+ di (/ di 2) (- 0 h) (car PTD)) (cadr PTD))
PTY (list (+ kc (- h h h h) (car PTX)) (cadr PTX))
k (+ 1 k));setq
);while
(if (= k n)
(setq PT (list (car PT) (+ (cadr PT)(* 2 h)))
PTC (list (+ (* 2 kc) (- di h h h h) (car PT)) (cadr PT))
L11 (list (+ di (car PT))(cadr PT))
L22 (list (+ kc (- 0 h h) (car L11))(cadr L11))
);setq
);if
(command "CECOLOR" 3
"line" p3 PT ""
"line" p4 PTC ""
"line" L1 L11 ""
"line" L2 L22 "")
);progn
);if
(setvar "CECOLOR" lacol)
(setvar "osmode" om)
(prompt"\n[TKN - THONG KE DIM] by Thaistreetz - Edit by Mathan")
(command "Undo" "End")
(setvar "cmdecho" 1)
(princ)
);DONG toa do

Chúc cả nhà cuối tuần vui vẻ nha
P/s: Font chữ chọn không có chiều cao và chọn font chữ cho mã UNICODE nhé
  • 1
-----------
Hình đã gửi Hãy chia sẻ để thấy có được nhiều hơn điều mình muốn!
Best regard,

#23 hamster2102

hamster2102

    biết lệnh copy

  • Advance Member
  • PipPipPip
  • 111 Bài viết
Điểm đánh giá: 21 (tàm tạm)

Đã gửi 28 July 2012 - 10:10 AM

1./ Cái file lsp trên đâu phải là của mình. Cái của mình viết hay hơn nhiều :D

2./ Xem video của bạn, mình chỉ có ý kiến là Lô đất của bạn chỉ có 12 điểm (số lượng nhỏ), nhưng với số điểm lớn thì nên xem lại. Tìm cách giải quyết cho nhanh.
Có thể kết hợp vừa ghi kích thước, đánh số điểm và sau đó là lập bảng thống kê

hic sr bạn mình có sửa lại #1 rồi. Công việc của mình chỉ xử lý trong phạm vi 1 thửa đất cao nhất 30 điểm thôi, thông thường là 4-6 điểm , đôi khi gặp các thửa đất dạng chung cư đường phố sử dụng chung riêng phải đánh mốc phức tạp không theo quy luật nên mình dùng lệnh đánh số thứ tự riêng chứ không muốn để gộp. Cám ơn bạn đã góp ý nhé
  • 0
Nếu biết rằng em đã lấy chồng
Anh mừng biết mấy em biết không
Bao năm quen biết, bao năm mệt
Tính ra cũng khổ mấy năm ròng

#24 hamster2102

hamster2102

    biết lệnh copy

  • Advance Member
  • PipPipPip
  • 111 Bài viết
Điểm đánh giá: 21 (tàm tạm)

Đã gửi 28 July 2012 - 12:28 PM

Hình đã gửi


thank bác @mathan , cuối cùng em có cái bảng ưng ý rồi mấy chữ trong bảng em có chỉnh lại ^^ :wub: .
  • 0
Nếu biết rằng em đã lấy chồng
Anh mừng biết mấy em biết không
Bao năm quen biết, bao năm mệt
Tính ra cũng khổ mấy năm ròng

#25 hamster2102

hamster2102

    biết lệnh copy

  • Advance Member
  • PipPipPip
  • 111 Bài viết
Điểm đánh giá: 21 (tàm tạm)

Đã gửi 14 June 2013 - 06:50 AM

bác @mathan ơi bác có thể xử lý dùm em lỗi khi em sử dụng lệnh tkd của bác sau khi kết thúc thì các điểm truy bắt bị tắt hết không, mỗi lần như vậy em đều phải shilf+phải chuột để chọn lại :(http://www.cadviet.c..._mathan2tkd.lsp

hi có bác nào đi ngang mà chỉnh được thì cũng xin giúp em 1 tay ạ, thanks ^^


  • 0
Nếu biết rằng em đã lấy chồng
Anh mừng biết mấy em biết không
Bao năm quen biết, bao năm mệt
Tính ra cũng khổ mấy năm ròng

#26 reddevil88

reddevil88

    Chưa sử dụng CAD

  • Members
  • Pip
  • 4 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 06 March 2014 - 03:53 PM

Bạn thử code này nhé :

(vl-load-com)
(defun Tue:ss-drag-move (ss p / el lp)
;;;copyright by Tue_NV
(setq el (entlast))
(if (and ss p (vl-cmdf "copy" ss "" p pause) (null (equal (getvar "lastpoint") p)))
   (setq lp (getvar "lastpoint")) (setq lp nil)
)
	(while (setq el (entnext el)) (entdel el))
lp)
(defun c:dkt(/ p1 p2 ob)
(while  (setq p1 (getpoint "\n diem do dau tien :"))	 
  (if (vl-cmdf "DIMALIGNED" p1 (setq p2 (getpoint p1 "\n diem do tiep theo :")) pause )
    (progn
      (setq ob (vlax-ename->vla-object (entlast)))
      (vla-addtext (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))
  		 (rtos (vlax-get ob 'Measurement) 2 (vlax-get ob 'PrimaryUnitsPrecision))
  		 (vlax-3d-point (vlax-get ob 'TextPosition)) (vlax-get ob 'TextHeight) )
      (setq ptt (Tue:ss-drag-move (ssadd (entlast) (ssadd)) (vlax-get ob 'TextPosition)) )
      (command "move" (entlast) "" (vlax-get ob 'TextPosition) ptt)
  	 
      )
   )
)
)

Nếu có thể cộng thêm cao độ vừa xuất ra một số nữa thì quá tuyệt luôn.

Ví dụ: đo cao độ ra A đến lúc ghi cao độ ra text thì là A+X (X tùy chọn) 

Làm giao thông thường đo cao độ mà có thêm mức so sánh nữa mà :D


  • 0