Đến nội dung


Hình ảnh
- - - - -

Bảng toạ độ các đỉnh thửa đất


  • Please log in to reply
100 replies to this topic

#41 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 10 September 2008 - 08:53 AM

Gửi anh SSG

- Trong trường hợp em không muốn thể hiện thông tin cột Z, chỉ thể 3 cột: STT, X, Y
- Midle center cho đối tượng Text
- Bảng tọa độ xuất ra dạng block
- Size text =1 hoặc theo ý người dùng
thì em phải làm như thế nào trong đoạn code anh đã gửi.


cảm ơn anh rất nhiều.
  • 0

#42 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 10 September 2008 - 11:29 AM

Gửi anh SSG

- Trong trường hợp em không muốn thể hiện thông tin cột Z, chỉ thể 3 cột: STT, X, Y
- Midle center cho đối tượng Text
- Bảng tọa độ xuất ra dạng block
- Size text =1 hoặc theo ý người dùng
thì em phải làm như thế nào trong đoạn code anh đã gửi.


cảm ơn anh rất nhiều.

Không vấn đề gì. Có mấy điểm cần hỏi lại bạn cho chắc:

1- Mình đã sửa code mấy lần theo yêu cầu của nhiều người khác nhau. Ý bạn có phải đoạn code đầu tiên mình đã post ngày 7-12-2007 không?

2- Tạo block cho cả bảng toạ độ bao gồm các đường kẻ và các text đúng không? Đặt tên block là gì?

3- Ssg sửa luôn hay là gợi ý để bạn tự sửa?
  • 0

#43 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 10 September 2008 - 11:54 AM

Không vấn đề gì. Có mấy điểm cần hỏi lại bạn cho chắc:

1- Mình đã sửa code mấy lần theo yêu cầu của nhiều người khác nhau. Ý bạn có phải đoạn code đầu tiên mình đã post ngày 7-12-2007 không?

2- Tạo block cho cả bảng toạ độ bao gồm các đường kẻ và các text đúng không? Đặt tên block là gì?

3- Ssg sửa luôn hay là gợi ý để bạn tự sửa?


Lisp anh upload ngày đó em không download về được, mà em coppy phần "elleHCSC" load lại ngày Dec 27 2007, 11:35 và kèm theo phần có sửa một số cái. nội dung lisp như sau:

(Defun DTR(x) (/ (* x pi) 180) ) ;;;change degree to radian, return REAL
;;;-------------------------------------------------------------------------------
(defun lineP (p0 a r / p1) ;;;Line polar: point, degree angle, radius
(setq p1 (polar p0 (dtr a) r)
)
(command "line" p0 p1 "")
)
;;;-------------------------------------------------------------------------------
(defun linePX (p0 x) (lineP p0 0 x)) ;;;Horizontal line: length x, from p0
;;;-------------------------------------------------------------------------------
(defun linePY (p0 y) (lineP p0 90 y)) ;;;Vertical line: length y, from p0
;;;-------------------------------------------------------------------------------
(defun getVert (e / i L) ;;;Return list of all vertex from pline e
(setq i 0 L nil)(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
(setq L (append L (list (vlax-curve-getPointAtParam e i))))
(setq i (1+ i)))L)
;;;-------------------------------------------------------------------------------
(defun getth( / d h) ;;;Return current text height
(setq
d (tblsearch "style" (getvar "textstyle"))
h (cdr (assoc 40 d))
)
(if (= h 0) (setq h (cdr (assoc 42 d))))h)
;;;-------------------------------------------------------------------------------
(defun wtxtMC (txt p / sty d h) ;;;Write txt on graphic screen, Middle Center
(setq
sty (getvar "textstyle")
d (tblsearch "style" sty)
h1 (cdr (assoc 40 d))
h2 (cdr (assoc 42 d)))
(if (> h1 0) (command "text" "j" "mc" p 0 txt)
(command "text" "j" "mc" p h2 0 txt)
)
)
;;;-------------------------------------------------------------------------------
;;;PRIVATE FUNCTIONS
;;;-------------------------------------------------------------------------------
(defun txt1(txtL / p1 p2 p3 p4 pL i) ;;;Write texts in 1 row
(setq
p1 (list (+ (car p0) (* 2 h)) (- (cadr p0) (* 1.5 h)))
p2 (polar p1 0 (* 6 h))
p3 (polar p2 0 (* 8 h))
p4 (polar p3 0 (* 8 h))
pL (list p1 p2 p3 p4)
i 0)
(repeat 4(wtxtMC (nth i txtL) (nth i pL))
(setq i (1+ i))
)
)
;;;-------------------------------------------------------------------------------
(defun mesh1() ;;;Make 1 mesh unit
(linepy p0 (* -3 h))
(command "copy" "L" "" p0 (list (+ (car p0) (* 4 h)) (cadr p0)))(
command "array" "L" "" "r" 1 4 (* 8 h))
(linepx (polar p0 (* 1.5 pi) (* 3 h)) (* 28 h)))
;;;-------------------------------------------------------------------------------
;;;MAIN PROGRAM
;;;-------------------------------------------------------------------------------
(defun C:VC( / p et p0 pvL h oldos i pv num txtL)
;;;Vertex Co-ordinate
;;;INPUT DATA
(setq p (getpoint "\nPick a point inside polygon or region:"))
(command "boundary" p "")
(setq et (entlast))
(redraw et 3)


2. Tạo block cho cả bảng toạ độ bao gồm các đường kẻ và các text. Tên Block tùy anh đặt. Nhưng text phải nằm giu7a4 ô. Bởi với chức năng này cho phép anh scale tỉ lệ dễ dàng đối với các đối tượng có diện tích nhỏ
3. Nhờ anh sửa giúp dùm em được ko?


Cảm ơn anh.
  • 0

#44 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 11 September 2008 - 09:01 AM

Gửi anh SSG

- Trong trường hợp em không muốn thể hiện thông tin cột Z, chỉ thể 3 cột: STT, X, Y
- Midle center cho đối tượng Text
- Bảng tọa độ xuất ra dạng block
- Size text =1 hoặc theo ý người dùng
thì em phải làm như thế nào trong đoạn code anh đã gửi.
cảm ơn anh rất nhiều.

Lisp đã sửa đúng như ý bạn:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;Chuong trinh danh so va lap bang toa do ho so thua dat dia chinh
;;;Bang toa do tao thanh block, duoc dat ten theo so thu tu 1, 2, 3...
;;;Chap nhan cac doi tuong la Region, Polyline, Line va Arc khep kin
;;;Written by Ssg - September 2008 - www.cadviet.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;PUBLIC FUNCTIONS
;;;-------------------------------------------------------------------------------
(Defun DTR(x) (/ (* x pi) 180) ) ;;;change degree to radian, return REAL
;;;-------------------------------------------------------------------------------
(defun lineP (p0 a r / p1) ;;;Line polar: point, degree angle, radius
(setq p1 (polar p0 (dtr a) r))
(command "line" p0 p1 "")
)
;;;-------------------------------------------------------------------------------
(defun linePX (p0 x) (lineP p0 0 x)) ;;;Horizontal line: length x, from p0
;;;-------------------------------------------------------------------------------
(defun linePY (p0 y) (lineP p0 90 y)) ;;;Vertical line: length y, from p0
;;;-------------------------------------------------------------------------------
(defun getVert (e / i L) ;;;Return list of all vertex from pline e
(setq i 0 L nil)
(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
(setq L (append L (list (vlax-curve-getPointAtParam e i))))
(setq i (1+ i))
)
L
)
;;;-------------------------------------------------------------------------------
(defun wtxtMC (txt p h) ;;;Write text Middle Center, specify text, point, height
(entmake (list (cons 0 "TEXT") (cons 7 (getvar "textstyle"))
(cons 1 txt) (cons 10 p) (cons 11 p) (cons 40 h) (cons 72 1) (cons 73 2)))
)
;;;-------------------------------------------------------------------------------


;;;PRIVATE FUNCTIONS
;;;-------------------------------------------------------------------------------
(defun txt1(txtL / p1 p2 p3 p4 pL i) ;;;Write texts in 1 row
(setq
p1 (list (+ (car p0) (* 2 h)) (- (cadr p0) (* 1.5 h)))
p2 (polar p1 0 (* 6 h))
p3 (polar p2 0 (* 8 h))
p4 (polar p3 0 (* 8 h))
pL (list p1 p2 p3 p4)
i 0
)
(repeat 3
(wtxtMC (nth i txtL) (nth i pL) h)
(setq i (1+ i))
)
)
;;;-------------------------------------------------------------------------------
(defun mesh1() ;;;Make 1 mesh unit
(linepy p0 (* -3 h))
(command "copy" "L" "" p0 (list (+ (car p0) (* 4 h)) (cadr p0)))
(command "array" "L" "" "r" 1 3 (* 8 h))
(linepx (polar p0 (* 1.5 pi) (* 3 h)) (* 20 h))
)
;;;-------------------------------------------------------------------------------


;;;MAIN PROGRAM
;;;-------------------------------------------------------------------------------
(defun C:VC( / h p et p0 p00 pvL oldos j pv num txtL ss bn)
;;;Vertex Co-ordinate

;;;GET TEXT HEIGHT
(if (not h0) (setq h0 1))
(setq h (getreal (strcat "\nChon chieu cao text <" (rtos h0) ">:")))
(if (not h) (setq h h0) (setq h0 h))
(setvar "osmode" 0)

;;;PICK & BASE POINT
(setq p (getpoint "\nPick 1 diem giua mien kin:"))
(command "boundary" p "")
(setq et (entlast))
(redraw et 3)
(setq
p00 (getpoint "\nDiem chuan bang toa do (phia tren ben trai):")
p0 p00
pvL (reverse (getvert et))
oldos (getvar "osmode")
)

;;;HEADER
(linepx p0 (* 20 h))
(mesh1)
(txt1 (list "TT" "X" "Y"))
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))

;;;MAKE RECORDS
(setq j 0)
(repeat (1- (length pvL))
(mesh1)
(setq
pv (nth j pvL)
num (itoa (1+ j))
txtL (list num (rtos (car pv)) (rtos (cadr pv)) )
)
(txt1 txtL)
;(wtxtMC num (polar pv 0 h) h)
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))
(setq j (1+ j))
)

;;;MAKE BLOCK
(setq ss (collect et))
(command "erase" et "")
(setq bn "1")
(while (tblsearch "block" bn) (setq bn (itoa (1+ (atoi bn)))))
(command "block" bn p00 ss "")
(command "insert" bn p00 "" "" "")

;;;WRITE POINT NAME
(setq j 0)
(repeat (1- (length pvL))
(setq
pv (nth j pvL)
num (itoa (1+ j))
)
(wtxtMC num (polar pv 0 h) h)
(setq j (1+ j))
)

;;;FINISH
(setvar "osmode" oldos)
(princ)
)
;;;-------------------------------------------------------------------------------


  • 0

#45 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 11 September 2008 - 11:49 AM

Lisp đã sửa đúng như ý bạn...

Xin lỗi bạn, mình quên không đưa vào các function collect (chúng thường xuyên được autoload trên máy mình nên khi test không phát hiện ra)
Bạn dùng cái này. Nếu có gì bất ổn thì phản hồi:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;Chuong trinh danh so va lap bang toa do ho so thua dat dia chinh
;;;Bang toa do tao thanh block, duoc dat ten theo so thu tu 1, 2, 3...
;;;Chap nhan cac doi tuong la Region, Polyline, Line va Arc khep kin
;;;Written by Ssg - September 2008 - www.cadviet.com
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;PUBLIC FUNCTIONS
;;;-------------------------------------------------------------------------------
(Defun DTR(x) (/ (* x pi) 180) ) ;;;change degree to radian, return REAL
;;;-------------------------------------------------------------------------------
(defun lineP (p0 a r / p1) ;;;Line polar: point, degree angle, radius
(setq p1 (polar p0 (dtr a) r))
(command "line" p0 p1 "")
)
;;;-------------------------------------------------------------------------------
(defun linePX (p0 x) (lineP p0 0 x)) ;;;Horizontal line: length x, from p0
;;;-------------------------------------------------------------------------------
(defun linePY (p0 y) (lineP p0 90 y)) ;;;Vertical line: length y, from p0
;;;-------------------------------------------------------------------------------
(defun getVert (e / i L) ;;;Return list of all vertex from pline e
(setq i 0 L nil)
(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
(setq L (append L (list (vlax-curve-getPointAtParam e i))))
(setq i (1+ i))
)
L
)
;;;-------------------------------------------------------------------------------
(defun wtxtMC (txt p h) ;;;Write text Middle Center, specify text, point, height
(entmake (list (cons 0 "TEXT") (cons 7 (getvar "textstyle"))
(cons 1 txt) (cons 10 p) (cons 11 p) (cons 40 h) (cons 72 1) (cons 73 2)))
)
;;;-------------------------------------------------------------------------------
(defun Collect(e / e2 SS) ;;;Selection set from e to entlast
(setq SS (ssadd))
(ssadd e SS)
(while (setq e2 (entnext e)) (ssadd e2 SS) (setq e e2))
SS
)
;;;-------------------------------------------------------------------------------
(defun Collect1(e / ss)
;;;Selection set after e to entlast. If e nil, select all from fist entity of drawing.
(if (= e nil) (setq ss (collect (entnext)))
(progn (setq ss (collect e)) (ssdel e ss))
)
)
;;;-------------------------------------------------------------------------------

;;;PRIVATE FUNCTIONS
;;;-------------------------------------------------------------------------------
(defun txt1(txtL / p1 p2 p3 p4 pL i) ;;;Write texts in 1 row
(setq
p1 (list (+ (car p0) (* 2 h)) (- (cadr p0) (* 1.5 h)))
p2 (polar p1 0 (* 6 h))
p3 (polar p2 0 (* 8 h))
p4 (polar p3 0 (* 8 h))
pL (list p1 p2 p3 p4)
i 0
)
(repeat 3
(wtxtMC (nth i txtL) (nth i pL) h)
(setq i (1+ i))
)
)
;;;-------------------------------------------------------------------------------
(defun mesh1() ;;;Make 1 mesh unit
(linepy p0 (* -3 h))
(command "copy" "L" "" p0 (list (+ (car p0) (* 4 h)) (cadr p0)))
(command "array" "L" "" "r" 1 3 (* 8 h))
(linepx (polar p0 (* 1.5 pi) (* 3 h)) (* 20 h))
)
;;;-------------------------------------------------------------------------------


;;;MAIN PROGRAM
;;;-------------------------------------------------------------------------------
(defun C:VC( / h p et p0 p00 pvL oldos j pv num txtL ss bn)
;;;Vertex Co-ordinate

;;;GET TEXT HEIGHT
(if (not h0) (setq h0 1))
(setq h (getreal (strcat "\nChon chieu cao text <" (rtos h0) ">:")))
(if (not h) (setq h h0) (setq h0 h))
(setvar "osmode" 0)

;;;PICK & BASE POINT
(setq p (getpoint "\nPick 1 diem giua mien kin:"))
(command "boundary" p "")
(setq et (entlast))
(redraw et 3)
(setq
p00 (getpoint "\nDiem chuan bang toa do (phia tren ben trai):")
p0 p00
pvL (reverse (getvert et))
oldos (getvar "osmode")
)

;;;HEADER
(linepx p0 (* 20 h))
(mesh1)
(txt1 (list "TT" "X" "Y"))
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))

;;;MAKE RECORDS
(setq j 0)
(repeat (1- (length pvL))
(mesh1)
(setq
pv (nth j pvL)
num (itoa (1+ j))
txtL (list num (rtos (car pv)) (rtos (cadr pv)) )
)
(txt1 txtL)
;(wtxtMC num (polar pv 0 h) h)
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))
(setq j (1+ j))
)

;;;MAKE BLOCK
(setq ss (collect1 et))
(command "erase" et "")
(setq bn "1")
(while (tblsearch "block" bn) (setq bn (itoa (1+ (atoi bn)))))
(command "block" bn p00 ss "")
(command "insert" bn p00 "" "" "")

;;;WRITE POINT NAME
(setq j 0)
(repeat (1- (length pvL))
(setq
pv (nth j pvL)
num (itoa (1+ j))
)
(wtxtMC num (polar pv 0 h) h)
(setq j (1+ j))
)

;;;FINISH
(setvar "osmode" oldos)
(princ)
)
;;;-------------------------------------------------------------------------------

  • 0

#46 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 15 September 2008 - 08:10 AM

Chao SSG
Khi lam hồ sơ thật, em gặp vấn đề sau, anh giup em nhe.
1. khi xuất ra bảng tọa độ, nếu dãy số là 10 số thì cột, ô vuông chứa text không đủ,
2. Vị trí x thay là y, y thay là x vì trong hệ thống tọa độ của bản đồ là ngược lại lại so với tọa độ của cad ma
3. Anh thêm dùm em 1 cột S(m) thể hiện chiều dài theo khoảng cách của các đoạn thẳng
4. Điểm 1 được lặp lại 2 lần trong cột 1

Em load kết quả từ cách làm của anh và file em muốn thể hiện, anh coi và giúp em nhé.

http://www.cadviet.c...es/guihoi_1.dwg

Cảm ơn anh.
  • 0

#47 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 15 September 2008 - 08:45 AM

Chao SSG
Khi lam hồ sơ thật, em gặp vấn đề sau, anh giup em nhe.
1. khi xuất ra bảng tọa độ, nếu dãy số là 10 số thì cột, ô vuông chứa text không đủ,
2. Vị trí x thay là y, y thay là x vì trong hệ thống tọa độ của bản đồ là ngược lại lại so với tọa độ của cad ma
3. Anh thêm dùm em 1 cột S(m) thể hiện chiều dài theo khoảng cách của các đoạn thẳng
4. Điểm 1 được lặp lại 2 lần trong cột 1

Em load kết quả từ cách làm của anh và file em muốn thể hiện, anh coi và giúp em nhé.

http://www.cadviet.c...es/guihoi_1.dwg

Cảm ơn anh.

OK, mình đã xem bản vẽ. Tất cả những vấn đề trên đều làm được. Nhưng thong thả nhé, mình cũng đang hơi bận việc...
  • 0

#48 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 15 September 2008 - 09:21 AM

OK, mình đã xem bản vẽ. Tất cả những vấn đề trên đều làm được. Nhưng thong thả nhé, mình cũng đang hơi bận việc...



da. anh nhanh nhanh bớt chút thời gian giup em nhé. Em đang rất cần.


cảm ơn anh.
  • 0

#49 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 16 September 2008 - 06:48 AM

Chao SSG
Khi lam hồ sơ thật, em gặp vấn đề sau, anh giup em nhe.
1. khi xuất ra bảng tọa độ, nếu dãy số là 10 số thì cột, ô vuông chứa text không đủ,
2. Vị trí x thay là y, y thay là x vì trong hệ thống tọa độ của bản đồ là ngược lại lại so với tọa độ của cad ma
3. Anh thêm dùm em 1 cột S(m) thể hiện chiều dài theo khoảng cách của các đoạn thẳng
4. Điểm 1 được lặp lại 2 lần trong cột 1

Em load kết quả từ cách làm của anh và file em muốn thể hiện, anh coi và giúp em nhé.

http://www.cadviet.c...es/guihoi_1.dwg

Cảm ơn anh.

Lisp có đủ 4 yêu cầu trên:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;Chuong trinh danh so va lap bang toa do ho so thua dat dia chinh
;;;Bang toa do tao thanh block, duoc dat ten theo so thu tu 1, 2, 3...
;;;Chap nhan cac doi tuong la Region, Polyline, Line va Arc khep kin
;;;Free utility - www.cadviet.com - September 2008
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;PUBLIC FUNCTIONS
;;;-------------------------------------------------------------------------------
(Defun DTR(x) (/ (* x pi) 180) ) ;;;change degree to radian, return REAL
;;;-------------------------------------------------------------------------------
(defun lineP (p0 a r / p1) ;;;Line polar: point, degree angle, radius
(setq p1 (polar p0 (dtr a) r))
(command "line" p0 p1 "")
)
;;;-------------------------------------------------------------------------------
(defun linePX (p0 x) (lineP p0 0 x)) ;;;Horizontal line: length x, from p0
;;;-------------------------------------------------------------------------------
(defun linePY (p0 y) (lineP p0 90 y)) ;;;Vertical line: length y, from p0
;;;-------------------------------------------------------------------------------
(defun getVert (e / i L) ;;;Return list of all vertex from pline e
(setq i 0 L nil)
(vl-load-com)
(repeat (fix (+ (vlax-curve-getEndParam e) 1))
(setq L (append L (list (vlax-curve-getPointAtParam e i))))
(setq i (1+ i))
)
L
)
;;;-------------------------------------------------------------------------------
(defun wtxtMC (txt p h) ;;;Write text Middle Center, specify text, point, height
(entmake (list (cons 0 "TEXT") (cons 7 (getvar "textstyle"))
(cons 1 txt) (cons 10 p) (cons 11 p) (cons 40 h) (cons 72 1) (cons 73 2)))
)
;;;-------------------------------------------------------------------------------
(defun Collect(e / e2 SS) ;;;Selection set from e to entlast
(setq SS (ssadd))
(ssadd e SS)
(while (setq e2 (entnext e)) (ssadd e2 SS) (setq e e2))
SS
)
;;;-------------------------------------------------------------------------------
(defun Collect1(e / ss)
;;;Selection set after e to entlast. If e nil, select all from fist entity of drawing.
(if (= e nil) (setq ss (collect (entnext)))
(progn (setq ss (collect e)) (ssdel e ss))
)
)
;;;-------------------------------------------------------------------------------

;;;PRIVATE FUNCTIONS
;;;-------------------------------------------------------------------------------
(defun txt1(txtL / p1 p2 p3 p4 pL i) ;;;Write texts in 1 row
(setq
p1 (list (+ (car p0) (* 2 h)) (- (cadr p0) (* 1.5 h)))
p2 (polar p1 0 (* 8 h))
p3 (polar p2 0 (* 12 h))
p4 (polar p3 0 (* 10 h))
pL (list p1 p2 p3 p4)
i 0
)
(repeat 4
(wtxtMC (nth i txtL) (nth i pL) h)
(setq i (1+ i))
)
)
;;;-------------------------------------------------------------------------------
(defun txt2(txtL / p1 p2 p3 p4 pL i) ;;;Write texts in 1 row
(setq
p1 (list (+ (car p0) (* 2 h)) (- (cadr p0) (* 1.5 h)))
p2 (polar p1 0 (* 8 h))
p3 (polar p2 0 (* 12 h))
p4 (polar p3 0 (* 10 h))
p4 (polar p4 (* 0.5 pi) (* 1.5 h))
pL (list p1 p2 p3 p4)
i 0
)
(repeat 4
(wtxtMC (nth i txtL) (nth i pL) h)
(setq i (1+ i))
)
)
;;;-------------------------------------------------------------------------------


;;;MAIN PROGRAM
;;;-------------------------------------------------------------------------------
(defun C:VC( / h p et p0 p00 p01 p02 pt pvL n j pv num txtL ss bn)
;;;Vertex Co-ordinate

;;;GET TEXT HEIGHT
(if (not h0) (setq h0 1))
(setq h (getreal (strcat "\nChon chieu cao text <" (rtos h0) ">:")))
(if (not h) (setq h h0) (setq h0 h))

;;;PICK & BASE POINT
(setq p (getpoint "\nPick 1 diem giua mien kin:"))
(command "boundary" p "")
(setq et (entlast))
(redraw et 3)
(setq
p00 (getpoint "\nDiem chuan bang toa do (phia tren ben trai):")
p0 p00
p01 (polar p00 (* 1.5 pi) (* h 3))
pvL (reverse (getvert et))
n (length pvL)
p02 (polar p01 (* 1.5 pi) (* n h 3))
oldos (getvar "osmode")
)
(setvar "osmode" 0)

;;;HEADER
(linepx p0 (* 38 h))
(command "copy" "L" "" "m" p00 p01 p02 "")
(linepy p0 (* (+ n 1) -3 h))
(command "copy" "L" "" "m" p0
(list(+ (car p0) (* 4 h)) (cadr p0))
(list(+ (car p0) (* 16 h)) (cadr p0))
(list(+ (car p0) (* 28 h)) (cadr p0))
(list(+ (car p0) (* 38 h)) (cadr p0))
""
)

(txt1 (list "TT" "X (m)" "Y (m)" "S (m)"))
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))

;;;MAKE RECORDS
(setq j 0 pt nil)
(repeat n
(setq
pv (nth j pvL)
num (itoa (1+ j))
)
(if pt (setq S (rtos (distance pt pv))) (setq S ""))
(setq txtL (list num (rtos (cadr pv)) (rtos (car pv)) S))
(txt2 txtL)
(setq p0 (polar p0 (* 1.5 pi) (* 3 h)))
(setq pt pv)
(setq j (1+ j))
(if (= j (- n 1)) (setq j 0))
)

;;;MAKE BLOCK
(setq ss (collect1 et))
(command "erase" et "")
(setq bn "1")
(while (tblsearch "block" bn) (setq bn (itoa (1+ (atoi bn)))))
(command "block" bn p00 ss "")
(command "insert" bn p00 "" "" "")

;;;WRITE POINT NAME
(setq j 0)
(repeat (1- n)
(setq
pv (nth j pvL)
num (itoa (1+ j))
)
(wtxtMC num (polar pv 0 h) h)
(setq j (1+ j))
)
;;;FINISH
(setvar "osmode" oldos)
(princ)
)
;;;-------------------------------------------------------------------------------



Góp ý:
Nếu có nhờ ai viết lisp, bạn nên nêu rõ và đủ các yêu cầu ngay từ đầu. Làm lần đầu không ngại nhưng sửa đi sửa lại... ngán lắm!
  • 0

#50 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 16 September 2008 - 11:44 AM

cảm ơn anh. em đã test và thấy được rồi. E phải đưa yêu cầu nhiều làn là do em chưa thấy rõ tất cả yêu cầu của bài toán. Lần sau nếu có yêu cầu gì, em sẽ tìm hiểu kỹ rồi mới post lên.


cảm ơn nhiều nhiều anh SSG
  • 0

#51 phongks82

phongks82

    biết zoom

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

Đã gửi 01 October 2008 - 10:11 AM

Bác viataba ơi . Em chưa biết chạy đoạn lisp này . em rất cần đoạn lisp này . Mong bác chỉ dùm em 1 cách chi tiết vì em mới biết đến diễn đàn và mới biết đến công dụng củaLisp. Thanks bác rất nhiều

Chào bác thanhgam2003 em cũng là dân trong nghề với bác . em cũng load lisp của bác ssg về nhưng em chưa rõ về cách chạy chương trình . mong bác hướng dẫn cụ thể cho em . em đang có công trình rất cần ứng dụng của lisp này . Thanks bác rất nhiều . Sở dĩ em cần sự giúp đỡ của bác là để cho bác ssg có thời gian nghỉ ngơi để nghiên cứu những thứ khác có ích cho cộng đồng . Mong nhận được hồi âm sơm từ anh. Thanks
  • 0

#52 phongks82

phongks82

    biết zoom

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

Đã gửi 01 October 2008 - 12:44 PM

Bác ơi sao em làm không được hả bác ? bác chỉ giùm em chi tiết từ đầu dến cuối nhé bác . Thamks bác nhiều vì em đang cần xuất toạ độ các tim bu lông . mà bản vẽ của em có hàng ngàn toạ độ bu lông . cảm ơn bác rất nhiều
  • 0

#53 thanhgam2003

thanhgam2003

    biết vẽ ellipse

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

Đã gửi 02 October 2008 - 01:52 PM

Chào bác thanhgam2003 em cũng là dân trong nghề với bác . em cũng load lisp của bác ssg về nhưng em chưa rõ về cách chạy chương trình . mong bác hướng dẫn cụ thể cho em . em đang có công trình rất cần ứng dụng của lisp này . Thanks bác rất nhiều . Sở dĩ em cần sự giúp đỡ của bác là để cho bác ssg có thời gian nghỉ ngơi để nghiên cứu những thứ khác có ích cho cộng đồng . Mong nhận được hồi âm sơm từ anh. Thanks
[/quote



Chào bạn!
Mìnhcũng chỉ là dân ban C nên mấy cái Lisp của Autocad minh cung mần mò mãi mới biết ứng dụng, thật ngại phải không bạn? các pác trên diễn đàn toàn tay kỳ kịu không à. Viết được Lisp, còn mình ứng dụng cũng thấy kho` khăn. Nhưng mà thôi, dù sao mình cũng tim ra cách ứng dụng nó rùi, mình chỉ cho pac nhé.
1. Mở Autocad/tool/AutoLisp/Visual Lisp Editor/new va dan đoạn code bạn copyy trên diễn đàn về, sau đó lưu thành file với tên gọi mới
2. Mở Autocad/tool/AutoLisp/load …..chọn tên file bạn mới đặt ở B1
3. Ứng dụng như anh SSg đã trình bày trên diễn đàn


Chúc bạn thành công
  • 0

#54 phongks82

phongks82

    biết zoom

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

Đã gửi 25 October 2008 - 08:41 PM

Chào bác thanhgam2003 em cũng là dân trong nghề với bác . em cũng load lisp của bác ssg về nhưng em chưa rõ về cách chạy chương trình . mong bác hướng dẫn cụ thể cho em . em đang có công trình rất cần ứng dụng của lisp này . Thanks bác rất nhiều . Sở dĩ em cần sự giúp đỡ của bác là để cho bác ssg có thời gian nghỉ ngơi để nghiên cứu những thứ khác có ích cho cộng đồng . Mong nhận được hồi âm sơm từ anh. Thanks

Chào bạn!
Mìnhcũng chỉ là dân ban C nên mấy cái Lisp của Autocad minh cung mần mò mãi mới biết ứng dụng, thật ngại phải không bạn? các pác trên diễn đàn toàn tay kỳ kịu không à. Viết được Lisp, còn mình ứng dụng cũng thấy kho` khăn. Nhưng mà thôi, dù sao mình cũng tim ra cách ứng dụng nó rùi, mình chỉ cho pac nhé.
1. Mở Autocad/tool/AutoLisp/Visual Lisp Editor/new va dan đoạn code bạn copyy trên diễn đàn về, sau đó lưu thành file với tên gọi mới
2. Mở Autocad/tool/AutoLisp/load …..chọn tên file bạn mới đặt ở B1
3. Ứng dụng như anh SSg đã trình bày trên diễn đàn
Chúc bạn thành công


Chào anh
Cảm ơn anh nhiều khi anh đã hướng dẫn em tạo được file lisp . Em đã tạo được file này rùi nhưng em không chạy được chương trình.
Em cũng chưa biết phải dùng lệnh nào cả. Em dùng lệnh VC nhưng không đươc anh ah. Mong anh hướng dẫn em cụ thể chi tiết 1 lần nữa . Em chân thành cảm ơn anh . Mong nhận được hồi âm sớm của anh
  • 0

#55 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 31 October 2008 - 09:45 PM

Chỉ với bản vẽ AutoCAD này http://www.cadviet.c...e_be_mat_3D.zip và cũng chỉ được sử dụng pm AutoCAD 2006-2008, xin các Bác chỉ giúp nên làm sao để dựng được bề mặt địa hình 3D nhanh chóng. Hiện tại PP chỉ làm 1 cách rất thủ công: dựng các line cao độ rồi nối các đỉnh lại với nhau. Xin cám ơn.
Hình đã gửi
Hình đã gửi
  • 0

#56 meohoang

meohoang

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 811 Bài viết
Điểm đánh giá: 342 (khá)

Đã gửi 01 November 2008 - 08:04 AM

Chỉ với bản vẽ AutoCAD này http://www.cadviet.c...e_be_mat_3D.zip và cũng chỉ được sử dụng pm AutoCAD 2006-2008, xin các Bác chỉ giúp nên làm sao để dựng được bề mặt địa hình 3D nhanh chóng. Hiện tại PP chỉ làm 1 cách rất thủ công: dựng các line cao độ rồi nối các đỉnh lại với nhau. Xin cám ơn.

Bạn vào trang cauduong.net có rất nhiều bài viết và link tải các phần mềm liên quan đến yêu cầu của bạn
  • 0

#57 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 01 November 2008 - 09:05 AM

Bác viataba ơi . Em chưa biết chạy đoạn lisp này . em rất cần đoạn lisp này . Mong bác chỉ dùm em 1 cách chi tiết vì em mới biết đến diễn đàn và mới biết đến công dụng củaLisp. Thanks bác rất nhiều

Chào bác thanhgam2003 em cũng là dân trong nghề với bác . em cũng load lisp của bác ssg về nhưng em chưa rõ về cách chạy chương trình . mong bác hướng dẫn cụ thể cho em . em đang có công trình rất cần ứng dụng của lisp này . Thanks bác rất nhiều...


Mìnhcũng chỉ là dân ban C nên mấy cái Lisp của Autocad minh cung mần mò mãi mới biết ứng dụng, thật ngại phải không bạn? các pác trên diễn đàn toàn tay kỳ kịu không à. Viết được Lisp, còn mình ứng dụng cũng thấy kho` khăn. Nhưng mà thôi, dù sao mình cũng tim ra cách ứng dụng nó rùi, mình chỉ cho pac nhé.
1. Mở Autocad/tool/AutoLisp/Visual Lisp Editor/new va dan đoạn code bạn copyy trên diễn đàn về, sau đó lưu thành file với tên gọi mới
2. Mở Autocad/tool/AutoLisp/load …..chọn tên file bạn mới đặt ở B1
3. Ứng dụng như anh SSg đã trình bày trên diễn đàn


Không phải nhiêu khê như vậy, các bạn xem ở đây, cực kỳ đơn giản:

http://www.cadviet.c...showtopic=1787"

Tóm lại một cách ngắn gọn:
1. Copy code trên diễn đàn, mở trình Notepad (trình soạn thảo văn bản đơn giản, luôn luôn có sẵn trên máy khi cài đặt Windows) paste vào, save as dạng *.lsp (tên file * đặt tuỳ ý thích)
2. Trong Acad, gõ lệnh appload, chỉ định file *.lsp nói trên và bấm Load - Close. Nếu việc load thành công, Acad sẽ báo "*.lsp successfully loaded". Nếu muốn AutoCAD tự động load lisp khi khởi động, dùng Startup Suite như đã hướng dẫn trong link trên.
3. Tên lệnh của lisp, nếu tác giả không nói rõ là các ký tự nằm kề liền sau (defun C:
Cụ thể, với đoạn chương trình lập bảng toạ độ của ssg là VC. Sau đó, chương trình yêu cầu cái gì thì đáp ứng cái ấy.

Good luck!
  • 0

#58 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 01 November 2008 - 04:21 PM

Bạn vào trang cauduong.net có rất nhiều bài viết và link tải các phần mềm liên quan đến yêu cầu của bạn

Cám ơn bác Meohoang.
Bài toán trên có thể dùng LISP để thực hiện theo cách làm như thế này có được không Bác:
1. Dùng lệnh của LISP- VDZ: vẽ điểm Z
2. Select 1 điểm và con số bên cạnh
3. LISP sẽ copy điểm và con số bên cạnh lên cao độ Z= con số đó. Con số nên đặt cao hơn điểm Z một khoảng cách nào đó
(Nếu LISP cho phép select tất cả thì tốt nhất)
4. Sau khi đã có các điểm Z. Dùng 1 lệnh khác của LISP, select tất cả các điểm cao độ đó để nối lại với nhau> được các ô tam giác và làm sao để các ô tam giác này có thể render được.
Kính nhờ các Bác viết giúp đoạn LISP để thực hiện những điều nêu trên. Thanks you.
  • 0

#59 meohoang

meohoang

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 811 Bài viết
Điểm đánh giá: 342 (khá)

Đã gửi 01 November 2008 - 04:36 PM

Cám ơn bác Meohoang.
Bài toán trên có thể dùng LISP để thực hiện theo cách làm như thế này có được không Bác:
1. Dùng lệnh của LISP- VDZ: vẽ điểm Z
2. Select 1 điểm và con số bên cạnh
3. LISP sẽ copy điểm và con số bên cạnh lên cao độ Z= con số đó. Con số nên đặt cao hơn điểm Z một khoảng cách nào đó
(Nếu LISP cho phép select tất cả thì tốt nhất)
4. Sau khi đã có các điểm Z. Dùng 1 lệnh khác của LISP, select tất cả các điểm cao độ đó để nối lại với nhau> được các ô tam giác và làm sao để các ô tam giác này có thể render được.
Kính nhờ các Bác viết giúp đoạn LISP để thực hiện những điều nêu trên. Thanks you.

Viết lisp này khá phức tạp . Hình như 1 bạn nào đó ở Đại học GTVT hay bách khoa HN có hỏi và bác Hoành có giải đáp ; hic nhưng tìm lại topic này chưa được.
Mèo tui dùng các phần mềm như 3D civil hoặc Nova là khỏe re
  • 0

#60 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 01 November 2008 - 05:07 PM

Viết lisp này khá phức tạp . Hình như 1 bạn nào đó ở Đại học GTVT hay bách khoa HN có hỏi và bác Hoành có giải đáp ; hic nhưng tìm lại topic này chưa được.
Mèo tui dùng các phần mềm như 3D civil hoặc Nova là khỏe re

Vậy nhờ Bác dùng pm trên để vẽ giúp cho PP bề mặt 3D của bv post ở bài trên http://www.cadviet.c...e_be_mat_3D.zip vì PP không biết các pm này.
Cám ơn Bác rất nhiều.
(Bác save ở dạng nào mà AutoCAD đọc được nhé)
  • 0