Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
hamster2102

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

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

[ĐÃ XONG]

Yêu cầu đặt ra : dùng lệnh đo kích thước trên bản vẽ như lệnh dal bình thường đồng thời sau khi xong cái ghi kích thước trên bản vẽ nó tạo cho mình thêm 1 dòng text tại ngay con chuột lấy y hệt số liệu vừa đo để mình đặt vào vị trí mình cần đặt.

hoặc bác nào thấy như thế vẫn thủ công và có cách hay hơn thì giúp em nhé, em không phải dân địa chính mà lại hay phải làm cái này

Em có thử dùng lisp sao chép text với lệnh ttt nhưng phải phá khối dim ra thì mới sao chép được số mà kết quả ngoài mong đợi là chép được cả số nhưng thêm mấy ký tự bên cạnh nữa^^

Xin chân thành cảm ơn sự nhiệt tình của mọi người :(

http://www.cadviet.c.../3/52440_dc.dwg

 

 

09352d8d8eb6e16c729e0fe60359e2b9_47210619.dc.700x0.jpgupdate: hiện tại vấn đề của em đã được giải quyết

đây là kết quả nhờ sự giúp đỡ của bác Tue và mathan, trên diễn đàn đã có lisp gần giống thế nhưng 2 lisp này lại khác mỗi cái có ưu điểm riêng .

lisp1: lệnh tkd của bác mathan- đo kích thước các điểm khai báo tên các mốc đầu và cuối đoạn cần đo cuối cùng xong thì nhấn S để kết thúc và xuất ra bảng- xem video minh họa tại #16 (chỉnh kích thước bảng xem #22) , thêm nữa là với kiểu text style hiện hành có gán chiều cao cho text thì lúc lisp xuất ra bảng sẽ ra lỗi, nên chọn style text không đặt chiều cao.

http://www.cadviet.c...3/52440_tkd.lsp

lisp 2: của bác Tue_NV : lệnh DKT đo và ghi kích thước cạnh đồng thời sao chép con số kích thước sang dạng text thẳng đứng đặt ở vị trí bất kỳ

http://www.cadviet.c...2440_tuedkt.lsp

 

lisp 3 (sưu tầm) : lệnh tl3 không rõ chủ chỉ biết là cadviet^^- đo kích thước 1 cạnh ra con số dạng text thẳng đứng ở 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 đỡ!

  • 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. Chúc bạn vui lới LISP mà mình chế này

Code lisp trên diễn đàn rất nhiều bạn cứ mày mò học lỏm và sửa chữa cũng vui lắm đó.hi


;; 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 '())

;;; 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 "Do thuc te")
 (command "_DIMALIGNED" DD DC (getpoint"\nDiem dat dim"))
 (setq ktra (getstring"\nBan muon tiep tuc [D] - dung lai [s]:"))
 (if (= 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 10
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 "Diem do"
	"text" "m" p22 h 0 "Chieu dai"
	"text" "m" p33 h 0 "Ghi chu"
	"text" "m" pTB (* 1.3 h) 0 "Bang thong ke chieu dai dim")  
(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ông việc của bạn sẽ thuận lợi hơn với lisp này.

  • Vote tăng 2

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. Chúc bạn vui lới LISP mà mình chế này

Code lisp trên diễn đàn rất nhiều bạn cứ mày mò học lỏm và sửa chữa cũng vui lắm đó.hi


;; 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 '())

;;; 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 "Do thuc te")
 (command "_DIMALIGNED" DD DC (getpoint"\nDiem dat dim"))
 (setq ktra (getstring"\nBan muon tiep tuc [D] - dung lai [s]:"))
 (if (= 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 10
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 "Diem do"
"text" "m" p22 h 0 "Chieu dai"
"text" "m" p33 h 0 "Ghi chu"
"text" "m" pTB (* 1.3 h) 0 "Bang thong ke chieu dai dim")  
(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ông việc của bạn sẽ thuận lợi hơn với lisp này.

ôi thank bác nhiều lắm, em đang dự định học lisp đây ,diễn đàn nhiều anh tài quá lại nhiệt tình nữa, chúc bác lên lv vù vù nhé, hic cảm ơn không chắc chưa đủ ^^

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

em đã dùng thử lisp tkd nhưng có một số vấn đề sau mong bác mathan lúc nào rảnh ktr dùm em nhé; dưới đây là các bước lisp tkd bác có viết cho em

Lisp dùng lệnh tkd-> enter-> nhập vào chiều cao text->enter->nhập vào số các chữ số thập phân-> enter-> pick vào điểm đầu đoạn thẳng->nhập vào tên điểm đầu đó-> enter->pick vào điểm cuối-> nhập vào tên điểm cuối->enter-> yêu cầu kích vị trí đặt dim .

có 1 số vấn đề sau:

kết quả không khác gì lệnh dal và giống như đi 1 vòng trái đất ^^ em nghĩ có thể là nhầm ở đâu đó hoặc em diễn đạt chưa chuẩn

em xin diễn đạt lại lần nữa ạ

Giả sử có 1 lệnh đo chiều dài cạnh bất kỳ, không cần hỏi tên điểm đầu tên điểm cuối, cũng không cần phải khai thông tin đâu là điểm đầu để tích vào như ở trên. Sau khi đo 2 đầu như với lệnh đo bình thường ta kích đặt vị trí con số ghi kích thước sát cạnh đường ranh giới thửa đất. Ở đây yêu cầu thêm là em muốn có một bản sao con số đó dạng text bình thường và ở ngay vị trí con chuột (giống như khi ta dùng lênh copy nó vẫn lưu bản copy nữa tại con chỏ đó ^^ ) sau đó sẽ di chuột đến vị trí bảng đã có sẵn và đặt vào vị trí mong muốn. Con số này yêu cầu thẳng đứng chứ không như con số trên đường ranh giới nó nằm song song với đường ranh giới ạ.

em thêm mấy ảnh mình họa

ảnh 1 sau khi thực hiện lệnh đo và ghi kích thước xong

http://upnhanh.sieuthinhanh.com/tmpimages/images/sieuthiNHANH2012071519628zje4ztlkmg11254_1.jpeg

ảnh 2 di chuyển chuột để đặt tiếp bản sao vào bảng tại vị trí mong muốn

http://upnhanh.sieuthinhanh.com/tmpimages/images/sieuthiNHANH2012071519628nwi4mdi3mt15951_1.jpeg

ảnh 3 sau khi đặt đối tượng vào

http://upnhanh.sieuthinhanh.com/tmpimages/images/sieuthiNHANH2012071519628ytaymtjlzg52309_1.jpeg

kết quả

http://upnhanh.sieuthinhanh.com/tmpimages/images/sieuthiNHANH2012071519628ytnhmmfmzw15748_1.jpeg

Em xin cảm ơn bác mathan nhiều, cho dù có không thực hiện được đi nữa thì em vẫn cám ơn :D

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ông báo khẩn cấp là em tình cờ thấy cái này tuy không được 100% nhu cầu nhung cũng giải quyết được 90% công việc em đặt ra rồi, còn 1 số cái cải tiến em sẽ nhớ thớt bên đó cái thớt này mai em sẽ xóa để ai comment trong thớt này đọc được lời cảm ơn của em rồi mới xóa, link em vừa tìm thấy đây ạ http://www.cadviet.com/forum/index.php?showtopic=61450 hj vui quá như vớ được vàng ^^

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

em đã dùng thử lisp tkd nhưng có một số vấn đề sau mong bác mathan lúc nào rảnh ktr dùm em nhé; dưới đây là các bước lisp tkd bác có viết cho em

Lisp dùng lệnh tkd-> enter-> nhập vào chiều cao text->enter->nhập vào số các chữ số thập phân-> enter-> pick vào điểm đầu đoạn thẳng->nhập vào tên điểm đầu đó-> enter->pick vào điểm cuối-> nhập vào tên điểm cuối->enter-> yêu cầu kích vị trí đặt dim .

có 1 số vấn đề sau:

kết quả không khác gì lệnh dal và giống như đi 1 vòng trái đất ^^ em nghĩ có thể là nhầm ở đâu đó hoặc em diễn đạt chưa chuẩn

em xin diễn đạt lại lần nữa ạ

Giả sử có 1 lệnh đo chiều dài cạnh bất kỳ, không cần hỏi tên điểm đầu tên điểm cuối, cũng không cần phải khai thông tin đâu là điểm đầu để tích vào như ở trên. Sau khi đo 2 đầu như với lệnh đo bình thường ta kích đặt vị trí con số ghi kích thước sát cạnh đường ranh giới thửa đất. Ở đây yêu cầu thêm là em muốn có một bản sao con số đó dạng text bình thường và ở ngay vị trí con chuột (giống như khi ta dùng lênh copy nó vẫn lưu bản copy nữa tại con chỏ đó ^^ ) sau đó sẽ di chuột đến vị trí bảng đã có sẵn và đặt vào vị trí mong muốn. Con số này yêu cầu thẳng đứng chứ không như con số trên đường ranh giới nó nằm song song với đường ranh giới ạ.

em thêm mấy ảnh mình họa

ảnh 1 sau khi thực hiện lệnh đo và ghi kích thước xong

http://upnhanh.sieut...kmg11254_1.jpeg

ảnh 2 di chuyển chuột để đặt tiếp bản sao vào bảng tại vị trí mong muốn

http://upnhanh.sieut...3mt15951_1.jpeg

ảnh 3 sau khi đặt đối tượng vào

http://upnhanh.sieut...lzg52309_1.jpeg

kết quả

http://upnhanh.sieut...mzw15748_1.jpeg

Em xin cảm ơn bác mathan nhiều, cho dù có không thực hiện được đi nữa thì em vẫn cám ơn :D

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)

     )
  )
)
)

  • Vote tăng 2

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

hic sao vừa phàn hồi bên thớt kia mà bác đã viết xong cái lisp gộp nhanh thế :(( , em cám ơn nhé cái này đúng 100% ý của em rồi có 1 lỗi rất nhỏ nữa là thao tác cuối thì nó làm tròn 3 chữ số, còn em muốn 2 thôi ^^ mong bác giúp em rồi em sẽ up lại cái file sang thớt bên kia để cập nhậ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

hic sao vừa phàn hồi bên thớt kia mà bác đã viết xong cái lisp gộp nhanh thế :(( , em cám ơn nhé cái này đúng 100% ý của em rồi có 1 lỗi rất nhỏ nữa là thao tác cuối thì nó làm tròn 3 chữ số, còn em muốn 2 thôi ^^ mong bác giúp em rồi em sẽ up lại cái file sang thớt bên kia để cập nhật ạ ^^

Đã update Code Lisp cho bạn ở bài viết trên

Bạn Dim ra bao nhiêu chữ số thập phân thì Lisp sẽ lấy bấy nhiêu chữ số thập phâ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

thank bác @Tue_NV , bác đi qua thì xóa dùm em cái thớt này nhé em sẽ chuyển lisp bác mới nâng cấp sang thớt bên kia cho nó đỡ tốn tài nguyê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

em đã dùng thử lisp tkd nhưng có một số vấn đề sau mong bác mathan lúc nào rảnh ktr dùm em nhé; dưới đây là các bước lisp tkd bác có viết cho em

Lisp dùng lệnh tkd-> enter-> nhập vào chiều cao text->enter->nhập vào số các chữ số thập phân-> enter-> pick vào điểm đầu đoạn thẳng->nhập vào tên điểm đầu đó-> enter->pick vào điểm cuối-> nhập vào tên điểm cuối->enter-> yêu cầu kích vị trí đặt dim .

có 1 số vấn đề sau:

kết quả không khác gì lệnh dal và giống như đi 1 vòng trái đất ^^ em nghĩ có thể là nhầm ở đâu đó hoặc em diễn đạt chưa chuẩn

 

Mình đã test trước khi up lên.

Đảm bảo hàng ngon bạn ah. Chỉ là bạn chưa đọc kỹ khi sử dụng thui

Khi bạn đã dim đủ rùi, máy hỏi bạn có tiếp tục không bạn chọn S và enter

chọn xuất bảng tọa độ

Hàng k ngon bạn dislike mình cũng chị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

bacs @mathan ơi bác giúp em mà em lại không kiểm tra kỹ đã bảo không sd được thì hóa ra ko tôn trọng bác rồi ^^ nghe bác nói vậy em kiểm lại lần nữa mặc dù đã thử nhiều lần cũng vậy bác ah, sau khi đo xong thì nhấn s để kết thúc nó không xuất ra bảng hay có gì khác cả mà nó lại quay lại như bước 1 cứ lặp lại như vậy thôi. Vấn đề của em đã được giải quyết rồi nhưng em nghĩ là bác sẽ không bỏ qua và phải mổ nó thôi , đã giải 1 bài toán mà không ra thì em cũng khó mà bỏ qua huống chi bác :D. Hiện giờ em cũng đang mon men tự học lisp hy vọng tương lai có thể tự viết code hoặc ít ra cũng chế code được .Sáng mai em sẽ up lại chi tiết hình ảnh lỗi của nó để bác nghiên cứu 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

bacs @mathan ơi bác giúp em mà em lại không kiểm tra kỹ đã bảo không sd được thì hóa ra ko tôn trọng bác rồi ^^ nghe bác nói vậy em kiểm lại lần nữa mặc dù đã thử nhiều lần cũng vậy bác ah, sau khi đo xong thì nhấn s để kết thúc nó không xuất ra bảng hay có gì khác cả mà nó lại quay lại như bước 1 cứ lặp lại như vậy thôi. Vấn đề của em đã được giải quyết rồi nhưng em nghĩ là bác sẽ không bỏ qua và phải mổ nó thôi , đã giải 1 bài toán mà không ra thì em cũng khó mà bỏ qua huống chi bác :D. Hiện giờ em cũng đang mon men tự học lisp hy vọng tương lai có thể tự viết code hoặc ít ra cũng chế code được .Sáng mai em sẽ up lại chi tiết hình ảnh lỗi của nó để bác nghiên cứu nhé

Lại nữa rùi, đúng là mình làm chưa phải quá chuẩn, nhưng 1 chữ "S" in hoa là cả một lấn đề đó.

Cái đó là do mình k chú ý, bạn thử lại 1 lần nữa xem. Không ra bảng mình k vọc vạch j nữa :D

  • 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

Lại nữa rùi, đúng là mình làm chưa phải quá chuẩn, nhưng 1 chữ "S" in hoa là cả một lấn đề đó.

Cái đó là do mình k chú ý, bạn thử lại 1 lần nữa xem. Không ra bảng mình k vọc vạch j nữa :D

Hề hề hề,

Chớ có nóng, chớ có nóng......

Không ra bảng thì nó ra cái giống oẳn tà roằn chi chi đó. Và thề là ta lại oẳn tà roằn cho nó ra cái giống ta chớ có chi đâu mà phải bỏ không vọc nữa bác hè?????

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

hj có thể bác lại vất vả rồi em vừa thử lisp bác up cho em ở #3 lấy lại file ở nút download không được, em cóp cả cái code bên dưới vì nghĩ bác sửa 1 trong 2 nhưng kết quả vẫn vậy,, để trưa đi làm về em ngồi nghiên cứu lại rồi up ảnh ^^ sáng nay em nhiều việc quá nên h mới vào được

em vừa quay lại thao tác có up thành file video nhỏ bác coi dùm nhé, cả s và d đều lặp lại lệnh chứ không có gì khác ạ ^^ @mathan

link tải: (7,4mb) http://www.mediafire.com/?f2y6sp1v6yuufhi

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

Mình đã ghi rất rõ mà, 1 chữ S in hoa bạn ah

bạn Upload video nên mình cũng làm lại 1 cái để chứng minh nó là hàng ngon :D

Lần tới mình sẽ sửa lại chữ S in hoa làm bạn phức tạp mọi vấn đề sau.hi.

Làm cái gì cũng phải có bảo hành mà.he2.

http://www.cadviet.com/upfiles/3/102268_7192012_14106_pm_mathan.rar

  • 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

Mình đã ghi rất rõ mà, 1 chữ S in hoa bạn ah

bạn Upload video nên mình cũng làm lại 1 cái để chứng minh nó là hàng ngon :D

Lần tới mình sẽ sửa lại chữ S in hoa làm bạn phức tạp mọi vấn đề sau.hi.

Làm cái gì cũng phải có bảo hành mà.he2.

http://www.cadviet.c...6_pm_mathan.rar

hic tội em đáng ăn đá quá đúng là có mỗi chữ S^^ mà bác đặt lệnh cũng kỳ lại phân biệt cả chữ hoa chữ thường em lại nghĩ ở tầm vĩ mô là bác sửa và ám chỉ chữ S nằm ở code ..............

nó mà hiện bảng lên thì không hề vô dụng đâu bác ah ^^ trên bản vẽ thiết kế để tỷ lệ 1/100 đơn vị bản vẽ mm - em dùng lệnh thì có xuất ra bảng thống kê nhưng xuất ra bảng nó bé tẹo phải phóng lên hơn 10 lần mới thấy không được chuẩn không cần chỉnh như trên bản vẽ bác thực hành em không up bản vẽ dạng này lên vì không làm trên nó^^

Công việc em làm dựa trên bản vẽ đơn vị là m cho hồ sơ thửa đất trên giấy A4, nên khi áp dụng lệnh này có xuất ra bảng nhưng số liệu lại đều về 0 đồng thời kích thước chiều ngang bảng hơi quá khổ

ảnh minh họa

52440_anh_min_hoa.jpg

Bác chỉnh lại cho em kích thước bảng theo bản vẽ mẫu (không bắt buộc phải theo con số cụ thể miễn là nó không quá to và thừa nhiều khoảng trống hai bên) :P . Còn nữa là hiển thị được tiếng việt có dấu thì tốt nếu không thì sau khi tạo xong em phải đánh lại chữ cũng không sao ạ :D

Bản vẽ thửa đất mẫu em có up kèm theo câu hỏi đầu tiên .

Lúc nào rảnh bác chỉnh cho em nhé. Lisp này với lisp bác Tue_NV viết, với 1 lisp tương tự đã có từ trước không cái nào giống cái nào và mỗi cái đều áp dụng cho trường hợp khác nhau đều có ưu điểm riêng. Sau khi bác sửa xong em sẽ up cả hai cái lên đầu cái thớt này để mọi người có ai cần đỡ phải đọc dài dòng bên dưới ạ ^^

Cuối cùng là sau khi coi video của bác em muốn xin tên phần mềm quay màn hình làm việc mà bác sử dụng vì em có dùng cái Cam studio nhưng cho ra dung lượng lớn quá, trong video lại có thêm cả nút xanh chạy theo con trỏ gây khó chịu nữa ^^

Chân thành cảm ơn sự nhiệt tình của bác @mathan

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ông cảm cho mình vì mình code quá nhanh nên thành ra quên cả những cái cơ bản nhất

Tạm thời mình reply đặt gạch giải quyết 3 vấn đề của bạn đã nhé.

Lúc khác rảnh mình sẽ xử tiếp những yêu cầu còn lại

1. Kích thước bảng: Nó sẽ phù hợp với chiều cao text bạn nhập vào :D (Cái này dễ chỉnh, bạn muốn chỉnh sao mình sẽ chỉ sau)

2. Vấn đề text ra toàn 0 tròn là do bạn đang để một text style có chiều cao chữ, bạn chuyển sang 1 cái text style không có chiều cao chữ là ngon thui

3. Quay màn hình mình dùng snagit bạn hỏi bác GG nhé :D

Các vấn đề còn lại cho mình nợ khi khác vậy

Bạn xài code này

;; 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 "Do thuc te")
 (command "_DIMALIGNED" DD DC (getpoint"\nDiem dat dim"))
 (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)
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 "Diem do"
 "text" "m" p22 h 0 "Chieu dai"
 "text" "m" p33 h 0 "Ghi chu"
 "text" "m" pTB (* 1.3 h) 0 "Bang thong ke chieu dai dim")
(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

  • 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 đúng rồi em có chỉnh lại sang style chữ không đặt chiều sao thì chỉnh được theo tỷ lệ chữ nhập trong lisp tkd ^^

Phần câu cuối cùng nhập S in hoa để xuất bảng em nghĩ là giờ không cần thiết làm lại đâu bác ah như vậy cũng hay. Lần sau bác hướng dẫn em cách chỉnh kích thước bảng nhé, với giúp em thêm lúc đặt vị trí dim thì hiện con số lên để mình ướm vị trí đặt còn hiện tại nó không hiện ở con trỏ nên em phải căn chỉnh bằng mắt cho con trỏ gần sát đường ranh giới rồi tích chuột nhiều lúc hay bị đè vào hay cách xa quá . Lisp này hiện đã làm được việc rồi nhưng để nó hoàn hảo thì vẫn cần bác @mathan .

Sau đây em xin hết thắc mắc và hết câu hỏi không phát sinh thêm cái gì nữa đâ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

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

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

[ĐÃ 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ê

  • 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

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é

  • 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

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é

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 @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.com/upfiles/3/52440_mathan2tkd.lsp

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

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
Đăng nhập để thực hiện theo  

×