Đến nội dung


Hình ảnh
* * * - - 17 Bình chọn

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2851 replies to this topic

#441 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 27 September 2009 - 07:43 AM

Bạn thử sửa
(wtxtMC "BAÛNG TOÏA ÑOÄ GOÙC RANH"
thành
(wtxtMC "BAÛNG TOÏA ÑOÄ GOÙC RANH\nHệ toạ độ VN-2000"
Xem

Ra kết qủa, nhưng cùng 1 hàng.
Mình muốn cho ra 2 hàng.Phải làm sao ?
  • 0

#442 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 27 September 2009 - 08:17 AM

Nhờ các anh hướng dẫn về nội dung của những dỏng lệnh này, khi muốn thay đổi về mẫu khung ta phải làm thế nào.

---------------------------------------------------
(setq pt0 (getpoint "\n Hay chon diem dat bang toa do")
k (getreal "\n Hay nhap chieu cao dong: ")
pt1 (list (- (car pt0) 80) (cadr pt0))
pt2 (list (car pt1) (+ (cadr pt1) (* (+ i 3) k)))
pt3 (list (car pt0) (cadr pt2))
pt4 (polar pt0 pi 65)
pt5 (polar pt0 pi 40)
pt6 (polar pt0 pi 15)
pt7 (polar pt4 (/ pi 2) (* (+ i 3) k))
pt8 (polar pt5 (/ pi 2) (* (+ i 2) k))
pt9 (polar pt6 (/ pi 2) (* (+ i 3) k))
p10 (polar pt7 (- (/ pi 2)) k)
p11 (polar pt9 (- (/ pi 2)) k)
p12 (polar pt2 (- (/ pi 2)) (* k 2))
p13 (polar p12 0 80))
(command "line" pt0 pt1 pt2 pt3 "c")
(command "line" pt4 pt7 "")
(command "line" pt5 pt8 "")
(command "line" pt6 pt9 "")
(command "line" p10 p11 "")
(command "line" p12 p13 "")
(command "text" (list (+ (car pt2) 2) (+ (cadr pt2) 2)) 3 0 "BANG LIET KE TOA DO GOC RANH")
(command "text" (list (+ (car pt2) 2.5) (- (cadr pt2) 4)) 2 0 "So hieu")
(command "text" (list (+ (car pt2) 4) (- (cadr pt2) 8)) 2 0 "diem")
(command "text" (list (+ (car pt7) 20) (- (cadr pt7) 4)) 2 0 "Toa do")
(command "text" (list (+ (car pt7) 10) (- (cadr pt7) 8)) 2 0 "X(m)")
(command "text" (list (+ (car pt7) 35) (- (cadr pt7) 8)) 2 0 "Y(m)")
(command "text" (list (+ (car pt9) 4) (- (cadr pt9) 6)) 2 0 "Canh")
----------------------------------
Rất cám ơn
  • 0

#443 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 27 September 2009 - 09:53 AM

Nhờ các anh hướng dẫn về nội dung của những dỏng lệnh này, khi muốn thay đổi về mẫu khung ta phải làm thế nào.

---------------------------------------------------
(setq pt0 (getpoint "\n Hay chon diem dat bang toa do")
k (getreal "\n Hay nhap chieu cao dong: ")
pt1 (list (- (car pt0) 80) (cadr pt0))
pt2 (list (car pt1) (+ (cadr pt1) (* (+ i 3) k)))
pt3 (list (car pt0) (cadr pt2))
pt4 (polar pt0 pi 65)
pt5 (polar pt0 pi 40)
pt6 (polar pt0 pi 15)
pt7 (polar pt4 (/ pi 2) (* (+ i 3) k))
pt8 (polar pt5 (/ pi 2) (* (+ i 2) k))
pt9 (polar pt6 (/ pi 2) (* (+ i 3) k))
p10 (polar pt7 (- (/ pi 2)) k)
p11 (polar pt9 (- (/ pi 2)) k)
p12 (polar pt2 (- (/ pi 2)) (* k 2))
p13 (polar p12 0 80))
(command "line" pt0 pt1 pt2 pt3 "c")
(command "line" pt4 pt7 "")
(command "line" pt5 pt8 "")
(command "line" pt6 pt9 "")
(command "line" p10 p11 "")
(command "line" p12 p13 "")
(command "text" (list (+ (car pt2) 2) (+ (cadr pt2) 2)) 3 0 "BANG LIET KE TOA DO GOC RANH")
(command "text" (list (+ (car pt2) 2.5) (- (cadr pt2) 4)) 2 0 "So hieu")
(command "text" (list (+ (car pt2) 4) (- (cadr pt2) 8)) 2 0 "diem")
(command "text" (list (+ (car pt7) 20) (- (cadr pt7) 4)) 2 0 "Toa do")
(command "text" (list (+ (car pt7) 10) (- (cadr pt7) 8)) 2 0 "X(m)")
(command "text" (list (+ (car pt7) 35) (- (cadr pt7) 8)) 2 0 "Y(m)")
(command "text" (list (+ (car pt9) 4) (- (cadr pt9) 6)) 2 0 "Canh")
----------------------------------
Rất cám ơn

Chào bạn khaosat 2009,
Nội dung của các dòng lệnh trên như sau:
1/- Xác định tọa độ các điểm cần thiết để vẽ ra cái khung . Việc xác định tọa độ các điểm này dựa trên tọa độ của điểm đặt khung pt0 mà bạn sẽ chọn và kìch thước chiều cao dòng mà bạn sẽ nhập khi lisp yêu cầu. Trong quá trình xác định điểm này có thể sử dụng 2 phương pháp lấy tọa độ là theo tọa độ dê các hay theo tọa độ độc cực.
2/- Các lệnh vẽ đoạn thẳng nối các điểm trên khung.
3/- Các lệnh nhập text vào các vị trí trên khung.
Khi bạn muốn thay đổi mẫu khung, bạn phải làm như sau:
1/- Xác định các kích thước của khung mẫu như chiều rộng, chiều cao các ô trong khung.
2/- Xác định tọa độ các điểm cần phải vẽ khung theo một điểm chuẩn nào đó mà bạn thích dùng.
3/- Thay thế các dòng code ở trên bằng các dòng code phù hợp.
4/- Xác định nội dung các text cần có trong khung, kích thước text rồi thay thế các dòng code nhập text bằng các dòng code tương ứng.

Bạn hãy đọc kỹ các dòng code đó và thử vận dụng sẽ thấy được cụ thể mà.
Chúc bạn thành công.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#444 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 27 September 2009 - 11:38 AM

Chào bạn khaosat 2009,
Nội dung của các dòng lệnh trên như sau:
1/- Xác định tọa độ các điểm cần thiết để vẽ ra cái khung . Việc xác định tọa độ các điểm này dựa trên tọa độ của điểm đặt khung pt0 mà bạn sẽ chọn và kìch thước chiều cao dòng mà bạn sẽ nhập khi lisp yêu cầu. Trong quá trình xác định điểm này có thể sử dụng 2 phương pháp lấy tọa độ là theo tọa độ dê các hay theo tọa độ độc cực.
2/- Các lệnh vẽ đoạn thẳng nối các điểm trên khung.
3/- Các lệnh nhập text vào các vị trí trên khung.
Khi bạn muốn thay đổi mẫu khung, bạn phải làm như sau:
1/- Xác định các kích thước của khung mẫu như chiều rộng, chiều cao các ô trong khung.
2/- Xác định tọa độ các điểm cần phải vẽ khung theo một điểm chuẩn nào đó mà bạn thích dùng.
3/- Thay thế các dòng code ở trên bằng các dòng code phù hợp.
4/- Xác định nội dung các text cần có trong khung, kích thước text rồi thay thế các dòng code nhập text bằng các dòng code tương ứng.

Bạn hãy đọc kỹ các dòng code đó và thử vận dụng sẽ thấy được cụ thể mà.
Chúc bạn thành công.

Cám ơn Bạn, nhưng mình không biết thay thế từ code nào.
Bạn có thể chì giúp mình cụ thể trên đoạc Code trên đi.
cám ơn.
  • 0

#445 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 27 September 2009 - 01:57 PM

Cám ơn Bạn, nhưng mình không biết thay thế từ code nào.
Bạn có thể chì giúp mình cụ thể trên đoạc Code trên đi.
cám ơn.

Anh Thanh Bình giải thích cho bạn như thế là quá cụ thể rồi. fần còn lại bạn fải tự thân vận động. Đây là những câu lệnh lisp đơn giản nhất mà bất cứ ai mới học đều có thể dễ dàng hiểu được. bạn nên đọc các tài liệu tự học autolisp để có thể tự viết cho đúng ý mình.
Bạn chạy đoạn code này để hiểu đoạn lisp trên của bạn.

(defun c:hcn ()
(setq P0 (getpoint "\npick diem can ve HCN"))
(setq P1 (Polar P0 0 20))
(setq P2 (Polar P0 (/ pi 2) 10))
(setq P3 (list (car P1) (cadr P2)))

(Command "text" "R" P0 1 0 "P0"
"text" P1 2 0 "P1"
"text" "M" P2 3 45 "P2"
"text" "M" P3 4 90 "P3"
"pline" P0 P1 P3 P2 "C")
);end

Trong đoạn code trên thì:
- điểm gốc P0 là người dùng tự chọn
- P1, P2 là 2 điểm góc của HCN xác định bằng tọa độ cực
- P3 là điểm góc HCN xác định bằng hệ tọa độ góc vuông.
Mình nghĩ thế này là đơn giản nhất có thể để bạn hiểu rồi, mọi người chắc không thể giúp gì thêm cho bạn được nữa.
chúc bạn thành công.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#446 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 27 September 2009 - 02:55 PM

Anh Thanh Bình giải thích cho bạn như thế là quá cụ thể rồi. fần còn lại bạn fải tự thân vận động. Đây là những câu lệnh lisp đơn giản nhất mà bất cứ ai mới học đều có thể dễ dàng hiểu được. bạn nên đọc các tài liệu tự học autolisp để có thể tự viết cho đúng ý mình.
Bạn chạy đoạn code này để hiểu đoạn lisp trên của bạn.

(defun c:hcn ()
(setq P0 (getpoint "\npick diem can ve HCN"))
(setq P1 (Polar P0 0 20))
(setq P2 (Polar P0 (/ pi 2) 10))
(setq P3 (list (car P1) (cadr P2)))

(Command "text" "R" P0 1 0 "P0"
"text" P1 2 0 "P1"
"text" "M" P2 3 45 "P2"
"text" "M" P3 4 90 "P3"
"pline" P0 P1 P3 P2 "C")
);end

Trong đoạn code trên thì:
- điểm gốc P0 là người dùng tự chọn
- P1, P2 là 2 điểm góc của HCN xác định bằng tọa độ cực
- P3 là điểm góc HCN xác định bằng hệ tọa độ góc vuông.
Mình nghĩ thế này là đơn giản nhất có thể để bạn hiểu rồi, mọi người chắc không thể giúp gì thêm cho bạn được nữa.
chúc bạn thành công.

Mình viết lại nhưng không chạy được, mong Bạn giúp:
;;;----
(defun c:hcn1 ()
(setq pt0 (getpoint "\n Hay chon diem dat bang toa do")
k (getreal "\n Hay nhap chieu cao dong: ")
pt1 (list (- (car pt0) 80) (cadr pt0))
pt2 (list (car pt1) (+ (cadr pt1) (* (+ i 3) k)))
pt3 (list (car pt0) (cadr pt2))
pt4 (polar pt0 pi 65)
pt5 (polar pt0 pi 40)
pt6 (polar pt0 pi 15)
pt7 (polar pt4 (/ pi 2) (* (+ i 3) k))
pt8 (polar pt5 (/ pi 2) (* (+ i 2) k))
pt9 (polar pt6 (/ pi 2) (* (+ i 3) k))
p10 (polar pt7 (- (/ pi 2)) k)
p11 (polar pt9 (- (/ pi 2)) k)
p12 (polar pt2 (- (/ pi 2)) (* k 2))
p13 (polar p12 0 80))
(command "line" pt0 pt1 pt2 pt3 "c")
(command "line" pt4 pt7 "")
(command "line" pt5 pt8 "")
(command "line" pt6 pt9 "")
(command "line" p10 p11 "")
(command "line" p12 p13 "")
(command "text" (list (+ (car pt2) 2) (+ (cadr pt2) 2)) 3 0 "BANG LIET KE TOA DO GOC RANH")
(command "text" (list (+ (car pt2) 2.5) (- (cadr pt2) 4)) 2 0 "So hieu")
(command "text" (list (+ (car pt2) 4) (- (cadr pt2) 8)) 2 0 "diem")
(command "text" (list (+ (car pt7) 20) (- (cadr pt7) 4)) 2 0 "Toa do")
(command "text" (list (+ (car pt7) 10) (- (cadr pt7) 8)) 2 0 "X(m)")
(command "text" (list (+ (car pt7) 35) (- (cadr pt7) 8)) 2 0 "Y(m)")
(command "text" (list (+ (car pt9) 4) (- (cadr pt9) 6)) 2 0 "Canh")
(setq P1 (Polar P0 0 20))
(setq P2 (Polar P0 (/ pi 2) 10))
(setq P3 (list (car P1) (cadr P2)))

);end
;;;
  • 0

#447 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 27 September 2009 - 04:46 PM

Mình viết lại nhưng không chạy được, mong Bạn giúp:
;;;----
(defun c:hcn1 ()
(setq pt0 (getpoint "\n Hay chon diem dat bang toa do")
k (getreal "\n Hay nhap chieu cao dong: ")
pt1 (list (- (car pt0) 80) (cadr pt0))
pt2 (list (car pt1) (+ (cadr pt1) (* (+ i 3) k)))
pt3 (list (car pt0) (cadr pt2))
pt4 (polar pt0 pi 65)
pt5 (polar pt0 pi 40)
pt6 (polar pt0 pi 15)
pt7 (polar pt4 (/ pi 2) (* (+ i 3) k))
pt8 (polar pt5 (/ pi 2) (* (+ i 2) k))
pt9 (polar pt6 (/ pi 2) (* (+ i 3) k))
p10 (polar pt7 (- (/ pi 2)) k)
p11 (polar pt9 (- (/ pi 2)) k)
p12 (polar pt2 (- (/ pi 2)) (* k 2))
p13 (polar p12 0 80))
(command "line" pt0 pt1 pt2 pt3 "c")
(command "line" pt4 pt7 "")
(command "line" pt5 pt8 "")
(command "line" pt6 pt9 "")
(command "line" p10 p11 "")
(command "line" p12 p13 "")
(command "text" (list (+ (car pt2) 2) (+ (cadr pt2) 2)) 3 0 "BANG LIET KE TOA DO GOC RANH")
(command "text" (list (+ (car pt2) 2.5) (- (cadr pt2) 4)) 2 0 "So hieu")
(command "text" (list (+ (car pt2) 4) (- (cadr pt2) 8)) 2 0 "diem")
(command "text" (list (+ (car pt7) 20) (- (cadr pt7) 4)) 2 0 "Toa do")
(command "text" (list (+ (car pt7) 10) (- (cadr pt7) 8)) 2 0 "X(m)")
(command "text" (list (+ (car pt7) 35) (- (cadr pt7) 8)) 2 0 "Y(m)")
(command "text" (list (+ (car pt9) 4) (- (cadr pt9) 6)) 2 0 "Canh")
(setq P1 (Polar P0 0 20))
(setq P2 (Polar P0 (/ pi 2) 10))
(setq P3 (list (car P1) (cadr P2)))

);end
;;;

Chào bạn khaosat 2009,
Bạn viết vậy thì lisp không chạy là đúng thôi vì nó có biết cái thằng p0 của bạn là cái gì đâu? Do đó cả cái lũ p1, p2 p3 của bạn nó cũng điếc luôn. Để lisp có thể chạy được bạn phải có hàm xác định thằng p0 này đã bạn ạ.
Ví dụ (setq p0 pt0) chẳng hạn. Như vậy có nghĩa là bạn sẽ lấy điểm p0 trùng với điểm pt0 của đoạn lisp phía trên và khi đó lisp sẽ xác định cho bạn các điểm p1, p2, p3 còn lại.
Với đoạn lisp mà bạn viết thêm vào như vậy thì cái khung bảng tọa độ góc ranh sẽ chả thay đổi gì so với cái khúc lisp cũ của bạn cả mà chỉ thêm được 4 điểm nữa là p0, p1, p2, p3 trong đó p0 trùng với cái điểm pt0 mà bạn đã chọn khi vẽ khung bảng tọa độ góc ranh.
Bạn cố gắng đọc kỹ hơn về các hàm cơ bản của lisp bạn nhé.
Chúc bạn thành công trong công việc với lisp.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#448 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 27 September 2009 - 08:54 PM

Mình có sưu tầm được Lisp vẽ toạ độ các đỉnh đường,
sau đó thống kê ra bảng tọa độ, có : stt -- X -- Y-- Ghi chú
Mình muô1n kẻ thêm 1 cột nửa ví dụ như Ghi chú 1 với khoảng cách cột là 20
Nhờ bạn giúp cho hướng dẫn để vẽ thêm cột vào lisp , mình mò chỉnh nhưng không đúng;
Mong được các anh chỉ giúp.

;;;------------------
;; free lisp from cadviet.com

(prompt"\n[cmd : TDN] - THONG KE TOA DO\n")
----------------------------------------------
(defun C:tdn4 () (prompt"\nTHONG KE TOA DO\n")
(setvar "cmdecho" 0 )
(command "Undo" "Begin")
(setq om (getvar "osmode"))
(setq tapx '() tapy '() stt '()
ten (getstring "\nTên Nút:"))
(if (not h) (setq h 1))
(if (not i) (setq i 1))
(setq i1 (getreal (strcat"\nSTT Nút Ðâu Tiên < " (rtos i 2 0) " >: "))
caot1 (getreal (strcat "\nCao text < " (rtos h 2 0) " >:")))
(if i1 (setq i i1))
(if caot1 (setq h caot1))
(setvar "osmode" 125)
(setq lacol (getvar "CEColor") k (- i 1))
;================================================
(While
(setq D1 (getpoint (strcat"\nPick diem thu "(rtos (+ k 1) 2 0)"")))
(Progn
(setvar "osmode" 0)
(setq DX (getpoint (strcat"\nDiem dat text thu "(rtos (+ k 1) 2 0)"") D1)
x (rtos (car D1) 2 4)
y (rtos (cadr D1) 2 4)
TX (strcat "X:"(rtos (Car D1) 2 4))
TY (strcat "Y:"(rtos (Cadr D1) 2 4))
tapx (append tapx (list x))
tapy (append tapy (list y))
k (+ 1 k)
N (strcat ten (rtos k 2 0))
stt (append stt (list N))
);setq
(if (>= (car DX) (car D1))
(progn
(setq D2 (list (+ (car DX) (* 0.5 h)) (cadr DX)))
(command "text" "BL" D2 h 0 tX)
(setq TB (textbox (entget(entlast)))
LC (car TB)
RC (cadr TB)
di (distance LC RC)
PT3 (polar D2 0 (+ di (* 0.6 h)))
pt4 (list (car D2) (- (cadr D2) (* 1.35 h)))
pt5 (list (+ (car D2) di) (- (cadr D2) (* 1.35 h)))
C (polar PT3 0 (* 1.5 h))
);setq
(command "text" "F" PT4 PT5 h ty
"pline" D1 DX PT3 ""
"circle" (polar PT3 0 (* 1.5 h)) (* 1.5 h)
"circle" (polar PT3 0 (* 1.5 h)) (* 1.35 h)
"text" "m" (polar PT3 0 (* 1.5 h)) h 0 N
"CECOLOR" 8
"circle" (polar PT3 0 (* 1.5 h)) (* 1.35 h)
);command
(setvar "CECOLOR" lacol)
);progn
);if
(if (< (car DX) (car D1))
(progn
(setq D2 (list (- (car DX) (* 0.5 h)) (cadr DX)))
(command "text" "BR" D2 h 0 tx)
(setq TB (textbox (entget(entlast)))
LC (car TB)
RC (cadr TB)
di (distance LC RC)
PT3 (polar D2 0 (- (+ di (* 0.6 h))))
pt4 (list (- (car D2) di) (- (cadr D2) (* 1.35 h)))
pt5 (list (car D2) (- (cadr D2) (* 1.35 h)))
PT6 (list (- (car PT3) (* 3 h)) (cadr PT3))
C (polar PT3 0 (* 1.5 h))
);setq
(command "text" "F" PT4 PT5 h TY
"pline" D1 DX PT3 ""
"circle" (polar PT6 0 (* 1.5 h)) (* 1.5 h)
"text" "m" (polar PT6 0 (* 1.5 h)) h 0 N
"CECOLOR" 8
"circle" (polar PT6 0 (* 1.5 h)) (* 1.35 h)
);command
(setvar "CECOLOR" lacol)
);progn
);if
);progn
(setvar "osmode" 125)
);while
(setq i (+ k 1))
;=============================================
(setq bit (cond (bit) ("Yes")))
(initget "Yes No")
(setq Tmp (strcat "\nXuât Bang Toa Ðô? [Yes/No] <" bit ">: ")
bit (cond ((getkword Tmp)) (bit)))
(if (eq bit "Yes")
(progn
(setq di (- di (* 1.7 h))
kc (* 2 di)
PT (getpoint"\nVi tri dat bang")
PTC (list (+ (* 2 kc) di (car PT)) (cadr PT))
PTCc (list (+ (* 1.5 kc) (car PTC)) (cadr PT))
PTCa (list (+ (* 1.5 kc) (car PTC)) (cadr PT))
p1 (list (car PT) (+ (cadr PT)(* 2 h)))
p2 (list (car PTC) (+ (cadr PTC)(* 2 h)))
p2c (list (+ (* 1.5 kc) (car P2)) (cadr p2))
p2ca (list (+ (* 1.5 kc) (car P2c)) (cadr p2c))
p3 (list (car p1) (+ (cadr p1)(* 2 h)))
p4 (list (car p2) (+ (cadr p2)(* 2 h)))
p4c (list (+ (* 1.5 kc) (car P4)) (cadr p4))
p4ca (list (+ (* 1.5 kc) (car P4c)) (cadr p4c))
PTD (list (+ (/ di 2) (car PT)) (+ h (cadr PT)))
PTX (list (+ di (/ di 2) (car PTD)) (cadr PTD))
PTY (list (+ kc (car PTX)) (cadr PTX))
p11 (list (+ (/ di 2) (car p1)) (+ h (cadr p1)))
p22 (list (+ di (/ di 2) (car p11)) (cadr p11))
p33 (list (+ kc (car p22)) (cadr p22))
p44 (list (+ (* kc 0.75) (car p4)) (cadr p22))
p55 (list (+ (* kc 0.75) (car p4)) (cadr p22))
L1 (list (+ di (car p3))(cadr p3))
L2 (list (+ kc (car L1))(cadr L1))
L3 (list (+ (* 1.5 kc) (car p4)) (cadr p4))
L4 (list (+ (* 1.5 kc) (car p4)) (cadr p4))
PTB (list (+ (* 0.5 (+ (* 2 kc) (* 1.5 kc) di)) (car PT)) (+ (cadr P3) (* 1.8 h)))
n (length tapx)
k 0
);setq
(setvar "osmode" 0)
(command "CECOLOR" 3 "line" p1 p2c "" "line" p3 p4c "" "CECOLOR" 2
"text" "m" p11 h 0 "STT"
"text" "m" p22 h 0 "Täa ®é X"
"text" "m" p33 h 0 "Täa ®é Y"
"text" "m" p44 h 0 "Ghi chó"
"text" "m" p55 h 0 "Ghi chó a"
"text" "m" pTB (* 1.3 h) 0 "%%UB¶ng thèng kª täa ®é nót")
(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 PTCc "")
(setq PT (list (car PT) (- (cadr PT)(* 2 h)))
PTC (list (+ (* 2 kc) di (car PT)) (cadr PT))
PTCc (list (+ (* 1.5 kc) (car ptc)) (cadr ptc))
PTCa (list (+ (* 1.5 kc) (car ptc)) (cadr ptc))
PTD (list (+ (/ di 2) (car PT)) (+ h (cadr PT)))
PTX (list (+ di (/ di 2) (car PTD)) (cadr PTD))
PTY (list (+ kc (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 (car PT)) (cadr PT))
L11 (list (+ di (car PT))(cadr PT))
L22 (list (+ kc (car L11))(cadr L11))
L33 (list (+ (* 1.5 kc) (car PTC)) (cadr PTC))
L44 (list (+ (* 1.5 kc) (car PTC)) (cadr PTC))


);setq
);if
(command "CECOLOR" 3
"line" p3 PT ""
"line" p4 PTC ""
"line" L1 L11 ""
"line" L2 L22 ""
"line" L3 L33 "")
"line" L3 L44 "")

);progn
);if
(setvar "CECOLOR" lacol)
(setvar "osmode" om)
(prompt"\n[TDN - THONG KE TOA DO] by Thaistreetz - huuthais@yahoo.com\n")
(command "Undo" "End")
(setvar "cmdecho" 1)
(princ)
);DONG toado

;;;------------------------------------------

Rất cám ơn
  • 0

#449 t031285

t031285

    biết vẽ rectang

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

Đã gửi 27 September 2009 - 09:04 PM

Các bạn co mình hỏi khi bạn viết 1 đoạn lisp,muốn cho giá trị FILEDIA của đoạn lisp này =1 thì làm như thế nào.Thanks
  • 0

#450 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 28 September 2009 - 12:18 AM

Mình có sưu tầm được Lisp vẽ toạ độ các đỉnh đường,
sau đó thống kê ra bảng tọa độ, có : stt -- X -- Y-- Ghi chú
Mình muô1n kẻ thêm 1 cột nửa ví dụ như Ghi chú 1 với khoảng cách cột là 20
Nhờ bạn giúp cho hướng dẫn để vẽ thêm cột vào lisp , mình mò chỉnh nhưng không đúng;

Lisp này là một trong những lisp đầu tiên mình viết và nó đã được chỉnh sửa cho hợp nhu cầu của bác Tuynh. Vì là lisp chỉnh sửa nhiều lần nên hiện giờ nó rất "rác" trong các câu lệnh, và nói thật là giờ bạn yêu cầu mình chỉnh sửa tiếp "đống rác" này thì mình chịu thua. lần mò lại các biến để vẽ bảng thống kê thực sự rất mệt mỏi và mất thời gian.
Mình đang thắc mắc là bạn sử dụng lisp này với tần suất thế nào? không lẽ nhiều đến nỗi bạn cần fải thêm cho nó một cột để tiết kiệm thời gian vẽ trong khi để thêm 1 cột đó bạn chỉ cần vài lệnh vẽ đơn giản để có được thứ bạn muốn. Mình nghĩ vài fút thời gian tiết kiệm của bạn sẽ fải đánh đổi bằng vài tiếng đồng hồ của mình. vì thế bạn fải tự khắc fục thôi, hoặc bạn tự nghiên cứu để sửa nó.
Chúc bạn thành công.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#451 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 28 September 2009 - 08:00 AM

Xin lỗi, vì mình chưa hiểu các nội qui.
  • 0

#452 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 28 September 2009 - 01:29 PM

Bạn Post trong box này môt thời gian rồi mà hình như có những quy tắc về việc post bài của box này bạn không chịu hiểu thì fải.
Nhữngc Lisp trên bạn lấy nó ở đâu thì hãy post yêu cầu đúng ở đó. mấy bài của bạn gần đây post lung tung hết cả, bạ chỗ nào cũng post được. bạn thử xem lại mà xem.
Yêu cầu trên của bạn mình đọc hoài rồi cũng vẫn chưa hiểu. mình đâu fải là bạn mà biết bản vẽ của bạn nó thế nào, diễn giải thế kia làm sao mình hiểu được. cách tốt nhất là bạn hãy up lên một bản vẽ. (và nếu có thể thì giải thích điều bạn muốn trong đó luôn như mọi người vẫn làm)
Bạn hãy post yêu cầu và bản vẽ của bạn cho đúng topic của lisp này. nếu giúp được mình sẵn lòng. Hi vọng bạn làm được.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#453 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 28 September 2009 - 02:48 PM

Xin lỗi, vì mình chưa hiểu hết các nội dung.
Thứ lỗi cho mình nha.
  • 0

#454 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 29 September 2009 - 07:49 PM

Xin lỗi, vì mình chưa hiểu hết các nội dung.
Thứ lỗi cho mình nha.

Chào bạn khaosat 2009,
Qua các bài viết của bạn mình thấy rằng bạn khá chịu khó sưu tầm các lisp và trong công việc của bạn có vẻ như lisp có tác dụng khá tốt. Nếu quả thực như vậy thì bạn rất nên tìm hiểu sâu hơn về lisp để bạn có thể đọc và hiểu được các lisp mà bạn đã sưu tầm được.
Bởi vì như bạn đã thấy, các lisp được mọi người viết ra đều chỉ nhằm cho một mục tiêu nhất định nào đó, có thể gần giống với yêu cầu của bạn chứ không thể hoàn toàn đúng như bạn muốn được đâu. Do đó nếu bạn hiểu được các lisp này có nghĩa là bạn sẽ có khả năng để chỉnh sửa nó cho thất đúng với ý muốn của bạn. Hơn nữa những người viết các lisp có thể có những suy luận khác nhau để cho ra một kết quả tương tự như nhau. Và nhờ đó khi bạn hiểu được các lisp này cũng có nghĩa là bạn sẽ biết thêm được cách suy luận của người viết lisp, và thế là bạn sẽ mót được thêm rất nhiều từ các lisp này chứ không chỉ đơn thuần là việc sử dụng nó bạn ạ.
Bản thân mình, để có thể sử dụng được các lisp này mình phải bỏ công ngồi đọc nó và gặm dần cho tới khi hiểu được, nhiều khi giắt răng phải gỡ mất mấy ngày mới xong một khúc lisp đó bạn ạ. Tuy nhiên nhờ đó mà mình no dần lên và cò thể tùy ý sử dụng chúng cho các mục tiêu của mình bạn ạ. Kinh nghiệm của mình cho thấy nếu chỉ load lisp về dùng mà không hiểu cặn kẽ nó thì nhiều phen mắc nghẹn lắm bạn ạ. Chả những nó chả chống đói được cho mình mà còn làm mình vãi cả mật xanh mật vàng ra, chạy thầy chạy thuốc khốn khổ mới gỡ được cái nghẹn đấy.
Diễn đàn thực ra chỉ có thể giúp để bạn có thể hiểu và vận dụng được lisp vào từng công việc cụ thể của bạn chứ chả thể làm thay cho bạn được đâu. Cho dù có rất nhiều bác giỏi về lisp nhưng không phải lúc nào các bác ấy cũng rảnh rang để có thể ngồi viết giùm bạn đúng như cái bạn cần được đâu. Tỷ dụ như đúng vào cái lúc bạn cần nhất, xếp thì giục toáy lên còn các bác ấy lại đương đi nghỉ mát thì bạn sẽ làm sao nhỉ??? Ấy là chưa kể tới việc do bạn diễn đạt hơi loăng ngoằng các bác ấy hiểu chưa đúng ý bạn và tống cho bạn một quả lisp chỉ đạt 60% yêu cầu của bạn, bạn lại vội vàng áp dụng nó liền thì chắc hẳn sẽ được xếp ca cho mát mặt đó. Vậy nên bạn rất cần phải có kiến thức cơ bản về lisp để có thể chủ động lựa chọn và tự tạo cho mình những công cụ thích hợp bằng lisp mà đối phó với công việc của mình bạn ạ.
Rất mong bạn cố gắng để có thể thành công với lisp trong công việc của bạn.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#455 HoangSon614

HoangSon614

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 254 Bài viết
Điểm đánh giá: 66 (tàm tạm)

Đã gửi 29 September 2009 - 08:22 PM

Các bạn cho mình hỏi. Trong lisp muốn sử dụng dấu cách thì phải thể hiện như thế nào. Cảm ơn tất cả.
Cụ thể trong lisp dưới đây (lisp đánh số hiệu bản vẽ - VD: KT:01/1; CN:01/1)
Mình muốn giữa ký tự chữ và số có dấu cách (KT: 01/1; CN: 01/1)
Đây là lisp:

;; copyright by Tue_NV
(defun c:shbv(/ dau tong po po1 ent i pre cao)
(prompt "\n Danh so hieu ban ve dang n/m ")
(setvar "cmdecho" 0)

(command "style" "CADVIET" "Vhelven.TTF" "2" "1" "0" "n" "n")


(setq cao (getreal "\n Nhap chieu cao chu :"))
(setq pre (getstring 5"\n Nhap ky hieu ban ve : "))
(setq dau (getint "\n Danh so bat dau (n):"))
(setq tong (getint "\n Danh so tong (m):") i 1)

(setq po (getpoint
(strcat "\n Cho diem chen cua so: " (if (< dau 10) (strcat pre "0" (itoa dau)) (itoa dau)) "/" (itoa tong))))
(wtxt (strcat (if (< dau 10) (strcat pre "0" (itoa dau)) (itoa dau)) "/" (itoa tong)) po)

(Repeat (- tong dau)
(setq po1 (getpoint po
(strcat "\n Cho diem chen cua so: " (if (< (+ dau i) 10) (strcat pre "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))))

(command "copy" "L" "" po po1)
(setq ent (entget(entlast)))
(setq ent
(subst
(cons 1 (strcat (if (< (+ dau i) 10) (strcat pre "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))) (assoc 1 ent) ent))
(entmod ent)
(setq i (1+ i))
(setq po po1)
)
(princ)
)
;
(defun wtxt (txt p / sty d h)
(setq sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d)))
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 11 p)
(cons 72 1) (cons 73 2)
(if (> h 0) (cons 40 h) (assoc 40 d)) (assoc 41 d))
)
)

  • 0
-~-~-~-~-~-~-~-~-~-~-~-~-~-~
Hôm qua là sự học hỏi nhận được sau 1 ngày
Ngày mai là sự bí ẩn mà chúng ta sẽ khám phá


------------------------------------------
http://www.tailieukythuat.com

#456 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 29 September 2009 - 08:55 PM

Các bạn cho mình hỏi. Trong lisp muốn sử dụng dấu cách thì phải thể hiện như thế nào. Cảm ơn tất cả.
Cụ thể trong lisp dưới đây (lisp đánh số hiệu bản vẽ - VD: KT:01/1; CN:01/1)
Mình muốn giữa ký tự chữ và số có dấu cách (KT: 01/1; CN: 01/1)
Đây là lisp:


;; copyright by Tue_NV
(defun c:shbv(/ dau tong po po1 ent i pre cao)
(prompt "\n Danh so hieu ban ve dang n/m ")
(setvar "cmdecho" 0)

(command "style" "CADVIET" "Vhelven.TTF" "2" "1" "0" "n" "n")
(setq cao (getreal "\n Nhap chieu cao chu :"))
(setq pre (getstring 5"\n Nhap ky hieu ban ve : "))
(setq dau (getint "\n Danh so bat dau (n):"))
(setq tong (getint "\n Danh so tong (m):") i 1)

(setq po (getpoint
(strcat "\n Cho diem chen cua so: " (if (< dau 10) (strcat pre "0" (itoa dau)) (itoa dau)) "/" (itoa tong))))
(wtxt (strcat (if (< dau 10) (strcat pre "0" (itoa dau)) (itoa dau)) "/" (itoa tong)) po)

(Repeat (- tong dau)
(setq po1 (getpoint po
(strcat "\n Cho diem chen cua so: " (if (< (+ dau i) 10) (strcat pre "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))))

(command "copy" "L" "" po po1)
(setq ent (entget(entlast)))
(setq ent
(subst
(cons 1 (strcat (if (< (+ dau i) 10) (strcat pre "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))) (assoc 1 ent) ent))
(entmod ent)
(setq i (1+ i))
(setq po po1)
)
(princ)
)
;
(defun wtxt (txt p / sty d h)
(setq sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d)))
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 11 p)
(cons 72 1) (cons 73 2)
(if (> h 0) (cons 40 h) (assoc 40 d)) (assoc 41 d))
)
)

Chào bạn HoangSon 614,
Việc thêm các khoảng trắng vào trong chuỗi chỉ đơn giản là bạn thêm một chuỗi chứa khoảng trắng " " vào chỗ bạn muốn thêm mà thôi.
Trong lisp bạn gửi giá trị của chuỗi là do hàm (strcat pre "0" (itoa dau)) (itoa dau)) "/" (itoa tong)) tạo ra. Do vậy để thêm khoảng trắng vào giữa ký tự chữ và số như bạn mô tả tức là thêm chuỗi chứa khoảng trắng vào giữa biến pre và chuỗi "0". Có hai cách làm
a/- Thay chuỗi "0" bằng chuỗi " 0" (có chứa một khoảng trắng trước số 0)
b/- Thêm chuỗi " " (chuỗi chứa khoảng trắng) vào trứơc chuỗi "0"

Thực ra mình chưa hiểu bạn làm vậy để làm chi vì trong biến pre của bác Tue_NV đã có chứa một khoảng trắng sau dấu hai chấm rồi mà, chả nhẽ bạn lại muốn cho nó cách xa ra tí nữa à???

Chúc bạn thành công.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#457 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 30 September 2009 - 07:56 AM

Các bạn cho mình hỏi. Trong lisp muốn sử dụng dấu cách thì phải thể hiện như thế nào. Cảm ơn tất cả.
Cụ thể trong lisp dưới đây (lisp đánh số hiệu bản vẽ - VD: KT:01/1; CN:01/1)
Mình muốn giữa ký tự chữ và số có dấu cách (KT: 01/1; CN: 01/1)
Đây là lisp:


;; copyright by Tue_NV
(defun c:shbv(/ dau tong po po1 ent i pre cao)
(prompt "\n Danh so hieu ban ve dang n/m ")
(setvar "cmdecho" 0)

(command "style" "CADVIET" "Vhelven.TTF" "2" "1" "0" "n" "n")
(setq cao (getreal "\n Nhap chieu cao chu :"))
(setq pre (getstring 5"\n Nhap ky hieu ban ve : "))
(setq dau (getint "\n Danh so bat dau (n):"))
(setq tong (getint "\n Danh so tong (m):") i 1)

(setq po (getpoint
(strcat "\n Cho diem chen cua so: " (if (< dau 10) (strcat pre "0" (itoa dau)) (itoa dau)) "/" (itoa tong))))
(wtxt (strcat (if (< dau 10) (strcat pre "0" (itoa dau)) (itoa dau)) "/" (itoa tong)) po)

(Repeat (- tong dau)
(setq po1 (getpoint po
(strcat "\n Cho diem chen cua so: " (if (< (+ dau i) 10) (strcat pre "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))))

(command "copy" "L" "" po po1)
(setq ent (entget(entlast)))
(setq ent
(subst
(cons 1 (strcat (if (< (+ dau i) 10) (strcat pre "0" (itoa (+ dau i))) (itoa (+ dau i))) "/" (itoa tong))) (assoc 1 ent) ent))
(entmod ent)
(setq i (1+ i))
(setq po po1)
)
(princ)
)
;
(defun wtxt (txt p / sty d h)
(setq sty (getvar "textstyle")
d (tblsearch "style" sty)
h (cdr (assoc 40 d)))
(entmake (list (cons 0 "TEXT") (cons 7 sty) (cons 1 txt) (cons 10 p) (cons 11 p)
(cons 72 1) (cons 73 2)
(if (> h 0) (cons 40 h) (assoc 40 d)) (assoc 41 d))
)
)

Chào HoangSon

Nếu (setq pre (getstring "\n Nhap ky hieu ban ve : ")) -> thì biến pre là biến chuỗi và không nhận dấu cách nào
Còn (setq pre (getstring 5"\n Nhap ky hieu ban ve : ")) -> thì biến pre là biến chuỗi và có nhận cả dấu cách rồi bạn à
:cheers:
  • 0

#458 khaosat2009

khaosat2009

    biết lệnh offset

  • Members
  • PipPipPip
  • 171 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 30 September 2009 - 09:07 AM

Chào bạn khaosat 2009,
Qua các bài viết của bạn mình thấy rằng bạn khá chịu khó sưu tầm các lisp và trong công việc của bạn có vẻ như lisp có tác dụng khá tốt. Nếu quả thực như vậy thì bạn rất nên tìm hiểu sâu hơn về lisp để bạn có thể đọc và hiểu được các lisp mà bạn đã sưu tầm được.
Bởi vì như bạn đã thấy, các lisp được mọi người viết ra đều chỉ nhằm cho một mục tiêu nhất định nào đó, có thể gần giống với yêu cầu của bạn chứ không thể hoàn toàn đúng như bạn muốn được đâu. Do đó nếu bạn hiểu được các lisp này có nghĩa là bạn sẽ có khả năng để chỉnh sửa nó cho thất đúng với ý muốn của bạn. Hơn nữa những người viết các lisp có thể có những suy luận khác nhau để cho ra một kết quả tương tự như nhau. Và nhờ đó khi bạn hiểu được các lisp này cũng có nghĩa là bạn sẽ biết thêm được cách suy luận của người viết lisp, và thế là bạn sẽ mót được thêm rất nhiều từ các lisp này chứ không chỉ đơn thuần là việc sử dụng nó bạn ạ.
Bản thân mình, để có thể sử dụng được các lisp này mình phải bỏ công ngồi đọc nó và gặm dần cho tới khi hiểu được, nhiều khi giắt răng phải gỡ mất mấy ngày mới xong một khúc lisp đó bạn ạ. Tuy nhiên nhờ đó mà mình no dần lên và cò thể tùy ý sử dụng chúng cho các mục tiêu của mình bạn ạ. Kinh nghiệm của mình cho thấy nếu chỉ load lisp về dùng mà không hiểu cặn kẽ nó thì nhiều phen mắc nghẹn lắm bạn ạ. Chả những nó chả chống đói được cho mình mà còn làm mình vãi cả mật xanh mật vàng ra, chạy thầy chạy thuốc khốn khổ mới gỡ được cái nghẹn đấy.
Diễn đàn thực ra chỉ có thể giúp để bạn có thể hiểu và vận dụng được lisp vào từng công việc cụ thể của bạn chứ chả thể làm thay cho bạn được đâu. Cho dù có rất nhiều bác giỏi về lisp nhưng không phải lúc nào các bác ấy cũng rảnh rang để có thể ngồi viết giùm bạn đúng như cái bạn cần được đâu. Tỷ dụ như đúng vào cái lúc bạn cần nhất, xếp thì giục toáy lên còn các bác ấy lại đương đi nghỉ mát thì bạn sẽ làm sao nhỉ??? Ấy là chưa kể tới việc do bạn diễn đạt hơi loăng ngoằng các bác ấy hiểu chưa đúng ý bạn và tống cho bạn một quả lisp chỉ đạt 60% yêu cầu của bạn, bạn lại vội vàng áp dụng nó liền thì chắc hẳn sẽ được xếp ca cho mát mặt đó. Vậy nên bạn rất cần phải có kiến thức cơ bản về lisp để có thể chủ động lựa chọn và tự tạo cho mình những công cụ thích hợp bằng lisp mà đối phó với công việc của mình bạn ạ.
Rất mong bạn cố gắng để có thể thành công với lisp trong công việc của bạn.

Cám ơn Bạn có lời quan tâm và giúp đỡ.
Thật tình mình chưa hiểu gì về Lisp cả, trước đây mình cũng không chú ý sâu về Cad. Chỉ chuyên sâu vào các PMền chuyên ngành nhưng không phải là trên môi trường Cad.
Từ khi nhận thấy Lisp hổ trợ cụ thể những ứng dụng, có thể nói là rất gần gủi. Thấy đây là việc phải cần thiết và phải tập trung và được một diễn đàn tốt, những người thầy, người bạn tốt hết lòng giúp. Nhưng không ai có thể giúp mình hoài được đâu... mình biết.
Mình rất cần có 1 tài liệu tự học lisp, những vấn đề đơn giản được diển giải dể hiểu và có ví dụ minh họa.
Nếu Bạn có, up cho mình xin với.
Một lần nữa xin chân thành cám ơn bạn về những gì bạn giúp.
  • 0

#459 HoangSon614

HoangSon614

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 254 Bài viết
Điểm đánh giá: 66 (tàm tạm)

Đã gửi 30 September 2009 - 11:20 AM

Chào bạn HoangSon 614,
Việc thêm các khoảng trắng vào trong chuỗi chỉ đơn giản là bạn thêm một chuỗi chứa khoảng trắng " " vào chỗ bạn muốn thêm mà thôi.
Trong lisp bạn gửi giá trị của chuỗi là do hàm (strcat pre "0" (itoa dau)) (itoa dau)) "/" (itoa tong)) tạo ra. Do vậy để thêm khoảng trắng vào giữa ký tự chữ và số như bạn mô tả tức là thêm chuỗi chứa khoảng trắng vào giữa biến pre và chuỗi "0". Có hai cách làm
a/- Thay chuỗi "0" bằng chuỗi " 0" (có chứa một khoảng trắng trước số 0)
b/- Thêm chuỗi " " (chuỗi chứa khoảng trắng) vào trứơc chuỗi "0"

Thực ra mình chưa hiểu bạn làm vậy để làm chi vì trong biến pre của bác Tue_NV đã có chứa một khoảng trắng sau dấu hai chấm rồi mà, chả nhẽ bạn lại muốn cho nó cách xa ra tí nữa à???

Chúc bạn thành công.


@Tue_NV

Chào HoangSon
Nếu (setq pre (getstring "\n Nhap ky hieu ban ve : ")) -> thì biến pre là biến chuỗi và không nhận dấu cách nào
Còn (setq pre (getstring 5"\n Nhap ky hieu ban ve : ")) -> thì biến pre là biến chuỗi và có nhận cả dấu cách rồi bạn à

Cảm ơn phamthanhbinh và Tue_NV đã quan tâm.
Theo như giải thích của 2 bạn là lisp trên đã có khoảng trắng. Nhưng mình không hiểu sao khi sử dụng lisp trên lại không có khoảng trắng (không biết có phải do lỗi lisp hay do lỗi máy của mình).
Khi sửa lại theo ý của phamthanhbinh thì OK không có vấn đề gì.
Một lần nữa cảm ơn hai bạn đã quan tâm.
  • 0
-~-~-~-~-~-~-~-~-~-~-~-~-~-~
Hôm qua là sự học hỏi nhận được sau 1 ngày
Ngày mai là sự bí ẩn mà chúng ta sẽ khám phá


------------------------------------------
http://www.tailieukythuat.com

#460 HoangSon614

HoangSon614

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 254 Bài viết
Điểm đánh giá: 66 (tàm tạm)

Đã gửi 30 September 2009 - 11:23 AM

Chào HoangSon

Nếu (setq pre (getstring "\n Nhap ky hieu ban ve : ")) -> thì biến pre là biến chuỗi và không nhận dấu cách nào
Còn (setq pre (getstring 5"\n Nhap ky hieu ban ve : ")) -> thì biến pre là biến chuỗi và có nhận cả dấu cách rồi bạn à
:cheers:

Cảm ơn Tue_NV nhiều lắm!
(Cho mình hỏi riêng tư tý nha! đợt bão số 9 vừa qua không biết gia đình bạn có bị ảnh hưởng gì nhiều không? Cho mình chia sẽ những khó khăn nếu gia đình bạn gặp phải. Chúc bạn và gia đình luôn mạnh khoẻ).
  • 1
-~-~-~-~-~-~-~-~-~-~-~-~-~-~
Hôm qua là sự học hỏi nhận được sau 1 ngày
Ngày mai là sự bí ẩn mà chúng ta sẽ khám phá


------------------------------------------
http://www.tailieukythuat.com