Đế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
2854 replies to this topic

#1701 Song Nhi

Song Nhi

    biết vẽ rectang

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

Đã gửi 28 May 2013 - 10:25 PM

Cám ơn anh, em vướng chỗ không biết những đặc trưng của HCN (chiều dài cạnh) quy định bằng mã DXF nào thôi ạ!


  • 0

#1702 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 28 May 2013 - 10:33 PM

Cám ơn anh, em vướng chỗ không biết những đặc trưng của HCN (chiều dài cạnh) quy định bằng DXF nào thôi ạ!

Hề hề hề,

Vấn đề ở chỗ bạn vẽ HCN bằng lệnh gì???

Nếu là dùng lwpolyline thì bạn có thể dùng hàm (acet-geom-verrtex-list ename) để d8u7o75c một danh sách (list) các tọa độ đỉnh của HCN. Sau đó lấy min các tọa độ x và y sẽ được điểm bottom left hoặc lấy max các tọa độ x, y để có điểm Upper right.

Hề hề hề,...


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

#1703 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 28 May 2013 - 10:38 PM

Hàm này lấy list của góc trái dưới và góc phải trên:

(vla-getboundingbox obj 'll 'ur)


  • 2

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1704 Song Nhi

Song Nhi

    biết vẽ rectang

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

Đã gửi 28 May 2013 - 10:58 PM

Cám ơn các Bác! Các Bác thật nhiệt tình, thật nhiều điều thú vị!


  • 0

#1705 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 01 June 2013 - 09:11 AM

(defun taobl ()
(entmake (list (cons 0 "BLOCK")(cons 2 "duy")(cons 70 64)(cons 10 (list 0 0 0))))
(entmake (list (cons 0 "LINE")(cons 8 "0")(cons 10 (list 0.0000000000 0.0000000000 0.0000000000))(cons 11 (list 600.0249719002 -898.9353839716 0.0000000000))))
(entmake (list (cons 0 "LINE")(cons 8 "0")(cons 10 (list 0.0000000000 0.0000000000 0.0000000000))(cons 11 (list 582.0242249153 371.5599567631 0.0000000000))))
(entmake (list (cons 0 "ATTRIB")(cons 10 (list 0.0000000000 0.0000000000 0.0000000000))(cons 40 250)(cons 50 90)(cons 72 0)(cons 1 "duythu")(cons 2 "thu"))) 
(entmake (list (cons 0 "ENDBLK")))
)

Đang tập tò tạo block bằng entmake mà cái dòng tạo ATT nó hông đúng bác nào đập cho nó phát giúp với.


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#1706 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 01 June 2013 - 09:26 AM

Hàm tạo block att bằng entmake phức tạp lắm mà sao thấy bác Duy chơi gọn gàng vậy?

Bác tham khảo cái này của bạn Thai post đã lâu rồi nè!

;;;=============== Make insert block
(defun MakeInsert (Blkname inspoint scale ang list_att layer color xdata / lst obj i)
(setq lst '() i -1 en (cdr (last (tblsearch "block" Blkname))) obj (entget en))
(if (= (cdr(assoc 0 obj)) "ATTDEF")
(setq lst (list (list
(cdr(assoc 10 obj))(cdr(assoc 11 obj))(cdr(assoc 50 obj))(cdr(assoc 8 obj))(cdr(assoc 70 obj))(cdr(assoc 62 obj))
(cdr(assoc 40 obj))(assoc 7 obj)(assoc 71 obj)(assoc 72 obj)(assoc 2 obj)))))
(while (setq en (entnext en))
(if (= (cdr(assoc 0 (setq obj(entget en)))) "ATTDEF")
(setq lst (cons (list
(cdr(assoc 10 obj))(cdr(assoc 11 obj))(cdr(assoc 50 obj))(cdr(assoc 8 obj))(cdr(assoc 70 obj))(cdr(assoc 62 obj))
(cdr(assoc 40 obj))(assoc 7 obj)(assoc 71 obj)(assoc 72 obj)(assoc 2 obj))lst))))
(entmakex(list
'(0 . "INSERT")'(100 . "AcDbEntity")
(cons 8 (if Layer Layer (getvar "Clayer")))
(cons 62 (if Color Color 256))
'(100 . "AcDbBlockReference")
(if list_att '(66 . 1) '(66 . 0))
(cons 2 Blkname)
(cons 10 (trans inspoint 1 0))
(cons 41 scale)(cons 42 scale)(cons 43 scale)
(cons 50 Ang)
(cons -3 (if xdata (list xdata) nil))))
(if lst
(foreach LL (reverse lst) (entmake(list
'(0 . "ATTRIB")'(100 . "AcDbEntity")(cons 8 (cadddr LL))(cons 60 (nth 4 LL))
    (if (nth 5 LL) (cons 62 (nth 5 LL)) '(62 . 256))'(100 . "AcDbText")
(cons 10(mapcar'+(trans inspoint 1 0)(mapcar'(lambda(x)(* scale x))(polar'(0 0 0)(+(angle'(0 0 0)(car LL))ang)(distance'(0 0 0)(car LL))))))
(cons 40 (* scale (nth 6 LL)))
(cons 1 (nth (setq i (1+ i))list_att))
(cons 50 (+ ang (caddr LL)))
'(41 . 1.0)(nth 7 LL)(nth 8 LL)(nth 9 LL)
(if (= 0(cdr (nth 8 LL))(cdr(nth 9 LL)))(cons 11(list 0 0 0))
(cons 11(mapcar'+(trans inspoint 1 0)(mapcar'(lambda(x)(* scale x))(polar'(0 0 0)(+(angle'(0 0 0)(cadr LL))ang)(distance'(0 0 0)(cadr LL)))))))
'(100 . "AcDbAttribute")'(280 . 0)(last LL)'(70 . 0)'(280 . 1)))))
(cdr (assoc 330 (entget (entmakex (list '(0 . "SEQEND") (cons 8 (if Layer Layer (getvar "Clayer"))))))))) 
 


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1707 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 01 June 2013 - 09:30 AM

Đọc rồi muốn quay lòng đòng. Cũng dòm ngó trên cadviet 3 ngày nay về vụ này mà thấy khó nhằn quá muốn có dòng tạo att ngắn ngắn giống như tạo text cho nó lành. Xong thì mới nhồi đoạn đọc đối tượng có sẳn viết thành đoạn tạo block.

(defun taobl ()
(entmake (list (cons 0 "BLOCK")(cons 2 "duy")(cons 70 64)(cons 10 (list 0 0 0))))
(entmake (list (cons 0 "TEXT")(cons 50 0.0000000000)(cons 72 0)(cons 1 "MAËT BAÈNG TAÀNG 1")(cons 7 "DIM")(cons 40 500.0000000000)(cons 8 "THAY-130")(cons 10 (list -3509.0529247911 265.5988857939 0.0000000000))(cons 11 (list -3509.0529247911 265.5988857939 0.0000000000))))
(entmake (list (cons 0 "LINE")(cons 8 "CAT-20")(cons 10 (list -3295.9610027856 0.0000000000 0.0000000000))(cons 11 (list 3295.9610027856 0.0000000000 0.0000000000))))
(entmake (list (cons 0 "ENDBLK")))
)

Kiểu vầy nè


  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#1708 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 01 June 2013 - 10:07 AM

Tôi vẫn chưa hiểu hết ý bác. Có phải bác muốn tạo đối tượng attribute bằng entmake, rồi sau đó mọi việc tính tiếp?

Nếu đúng ý thì bác dùng cái này xem. Còn sai thì mong bác giải thích thêm.

(defun AttDef (tag prmpt def pt hgt flag)
  (entmakex (list (cons 0 "ATTDEF")
                  (cons 10   pt)
                  (cons 40  hgt)
                  (cons 1   def)
                  (cons 3 prmpt)
                  (cons 2   tag)
                  (cons 70 flag))))
 


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1709 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 01 June 2013 - 12:06 PM

Bác Duy google với từ khóa "make entmake" đi. Đó là "cây đũa thần" của dân lập trình lisp đấy, nó dùng để tạo code lisp entmake cho mọi loại đối tượng từ đối tượng mẫu trên bản vẽ. Bác cũng nên giữ cho mình 1 bản phòng thân bác a.
  • 1

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


#1710 gadibo

gadibo

    biết vẽ line

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

Đã gửi 13 June 2013 - 07:33 AM

em đang viết 1 đoạn code ngắn , trong đó dùng vòng lặp while nhưng ko hiểu sao vòng lặp lại ko kết thúc dc , nó cứ lặp mãi dẫn đến việc treo máy .em post lên nhờ các bác phân tích lỗi hộ e .

thank các bác .

(defun c:TLT ( / a b mai )
(setvar "osmode" 33 )
(setq a (getpoint "\n pick diem dau ranh"))
(setvar "osmode" 0 )
(setq b (polar a 0 1.2))
(command "TL" a "0.4" "100" "0.4" "0" "0.4" "-100")
(initget 1 "1 75")
(while (setq mai (getkword "\n nhap do doc mai <1 hoac 75>: "))
(if (= mai "1")
(command "6" "-100" "2" "10")
(command "8" (-(/ 100 0.75)) "2" "10")
)
(initget 1 "1 75")
)
(command "" a b "")
(setvar "osmode" 33 )
(princ)
)

  • 0

#1711 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 13 June 2013 - 08:26 AM

1). Initget mà có 1 >> không chấp nhận enter >> không thể thoát bằng cách enter >> bỏ số 1 đi.

2). Lệnh TL là lệnh gì vậy?


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1712 gadibo

gadibo

    biết vẽ line

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

Đã gửi 13 June 2013 - 08:44 AM

TL là lệnh làm mái Taluy trong cầu đường bác à , để em thử xong sẽ báo cao ngay cho bác


  • 0

#1713 gadibo

gadibo

    biết vẽ line

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

Đã gửi 13 June 2013 - 09:16 AM

1). Initget mà có 1 >> không chấp nhận enter >> không thể thoát bằng cách enter >> bỏ số 1 đi.

2). Lệnh TL là lệnh gì vậy?

em đã làm dc ,thay bit bằng 2 thì nó đã kết thúc .

PS : cho em hỏi chút về hàm while :

(while TESTEXPR EXPR ....)

TESTEXPR là điều kiện để lặp còn EXPR biểu thức định giá trị .

em đang mơ hồ ở chỗ

(defun c:TLT ( / a b mai )
(setvar "osmode" 33 )
(setq a (getpoint "\n pick diem dau ranh"))
(setvar "osmode" 0 )
(setq b (polar a 0 1.2))
(command "TL" a "0.4" "100" "0.4" "0" "0.4" "-100")
(initget 1 "1 75")
(while (setq mai (getkword "\n nhap do doc mai <1 hoac 75>: ")) ; điều kiện
(if (= mai "1"); biểu thức sau điều kiện
(command "6" "-100" "2" "10")
(command "8" (-(/ 100 0.75)) "2" "10")
)
(initget 1 "1 75") ; tại sao lại phải thêm cái này vào thì vòng lặp mới ổn ( có thể em chưa hiểu lắm )
)
(command "" a b "")
(setvar "osmode" 33 )
(princ)
)

  • 0

#1714 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 13 June 2013 - 11:31 AM

em đã làm dc ,thay bit bằng 2 thì nó đã kết thúc .

PS : cho em hỏi chút về hàm while :

(while TESTEXPR EXPR ....)

TESTEXPR là điều kiện để lặp còn EXPR biểu thức định giá trị .

em đang mơ hồ ở chỗ

(defun c:TLT ( / a b mai )
(setvar "osmode" 33 )
(setq a (getpoint "\n pick diem dau ranh"))
(setvar "osmode" 0 )
(setq b (polar a 0 1.2))
(command "TL" a "0.4" "100" "0.4" "0" "0.4" "-100")
(initget 1 "1 75")
(while (setq mai (getkword "\n nhap do doc mai <1 hoac 75>: ")) ; điều kiện
(if (= mai "1"); biểu thức sau điều kiện
(command "6" "-100" "2" "10")
(command "8" (-(/ 100 0.75)) "2" "10")
)
(initget 1 "1 75") ; tại sao lại phải thêm cái này vào thì vòng lặp mới ổn ( có thể em chưa hiểu lắm )
)
(command "" a b "")
(setvar "osmode" 33 )
(princ)
)

Hề hề hề,

Bạn ga-ne-po thử đọc cái này xem nó có sáng ra tí ti nào không nhé. Nó nằm trong Help của CAD.

 

Establishes keywords for use by the next user-input function call

(initget [bits] [string])

The functions that honor keywords are getint, getreal, getdist, getangle, getorient, getpoint, getcorner, getkword, entsel, nentsel, and nentselp. The getstring function is the only user-input function that does not honor keywords.

The keywords are checked by the next user-input function call when the user does not enter the expected type of input (for example, a point to getpoint). If the user input matches a keyword from the list, the function returns that keyword as a string result. The application can test for the keywords and perform the action associated with each one. If the user input is not an expected type and does not match a keyword, AutoCAD asks the user to try again. The initget bit values and keywords apply only to the next user-input function call.

If initget sets a control bit and the application calls a user-input function for which the bit has no meaning, the bit is ignored.

If the user input fails one or more of the specified conditions (as in a zero value when zero values are not allowed), AutoCAD displays a message and asks the user to try again.

Arguments

bits

A bit-coded integer that allows or disallows certain types of user input. The bits can be added together in any combination to form a value between 0 and 255. If no bits argument is supplied, zero (no conditions) is assumed. The bit values are as follows:

1 (bit 0)  Prevents the user from responding to the request by entering only ENTER.

2 (bit 1)  Prevents the user from responding to the request by entering zero.

4 (bit 2)  Prevents the user from responding to the request by entering a negative value.

8 (bit 3)  Allows the user to enter a point outside the current drawing limits. This condition applies to the next user-input function even if the AutoCAD system variable LIMCHECK is currently set.

16 (bit 4)  (Not currently used.)

32 (bit 5)  Uses dashed lines when drawing a rubber-band line or box. For those functions with which the user can specify a point by selecting a location in the drawing area, this bit value causes the rubber-band line or box to be dashed instead of solid. (Some display drivers use a distinctive color instead of dashed lines.) If the system variable POPUPS is 0, AutoCAD ignores this bit.

64 (bit 6)  Prohibits input of a Z coordinate to the getdist function; lets an application ensure that this function returns a 2D distance.

128 (bit 7)  Allows arbitrary input as if it is a keyword, first honoring any other control bits and listed keywords. This bit takes precedence over bit 0; if bits 7 and 0 are set and the user presses ENTER, a null string is returned.

Note  Future versions of AutoLISP may use additional initget control bits, so avoid setting bits that are not listed here.

string

A string representing a series of keywords. See Keyword Specifications for information on defining keywords.

Return Values

nil


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

#1715 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 13 June 2013 - 02:33 PM

em đã làm dc ,thay bit bằng 2 thì nó đã kết thúc .

PS : cho em hỏi chút về hàm while :

(while TESTEXPR EXPR ....)

TESTEXPR là điều kiện để lặp còn EXPR biểu thức định giá trị .

em đang mơ hồ ở chỗ

(defun c:TLT ( / a b mai )
(setvar "osmode" 33 )
(setq a (getpoint "\n pick diem dau ranh"))
(setvar "osmode" 0 )
(setq b (polar a 0 1.2))
(command "TL" a "0.4" "100" "0.4" "0" "0.4" "-100")
(initget 1 "1 75")
(while (setq mai (getkword "\n nhap do doc mai <1 hoac 75>: ")) ; điều kiện
(if (= mai "1"); biểu thức sau điều kiện
(command "6" "-100" "2" "10")
(command "8" (-(/ 100 0.75)) "2" "10")
)
(initget 1 "1 75") ; tại sao lại phải thêm cái này vào thì vòng lặp mới ổn ( có thể em chưa hiểu lắm )
)
(command "" a b "")
(setvar "osmode" 33 )
(princ)
)

1). Thay 1 bởi 2 là thừa.

2). testexpr: đúng.

3). [expr...]: sai. Nó là tất cả biểu thức nằm trong while, đằng sau biểu thức testexpr.

4). Hàm getkword luôn luôn đi với initget. Nếu thiếu tức là code đã lỗi chứ không phải nhờ có nó mà while có thể kết thúc được.


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1716 gadibo

gadibo

    biết vẽ line

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

Đã gửi 13 June 2013 - 02:53 PM

(defun c:TLT ( / a b mai )
(setvar "osmode" 33 )
(setq a (getpoint "\n pick diem dau ranh"))
(setvar "osmode" 0 )
(setq b (polar a 0 1.2))
(command "TL" a "0.4" "100" "0.4" "0" "0.4" "-100")
(initget 1 "1 75"); em ko hiểu tại sao chỗ này đã có hàm initget mà cuối hàm while lại phải thêm nó vào
(while (setq mai (getkword "\n nhap do doc mai <1 hoac 75>: "))
(if (= mai "1")
(command "6" "-100" "2" "10")
(command "8" (-(/ 100 0.75)) "2" "10")
)
(initget 1 "1 75"); tại sao lại phải thêm hàm này vào vị trí này
)
(command "" a b "")
(setvar "osmode" 33 )
(princ)
)

================================

em không hiểu tại sao lại phải thêm (initget 1 "1 75") vào cuối hàm while để nó có thể lặp đúng.


  • 0

#1717 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 13 June 2013 - 03:09 PM


em không hiểu tại sao lại phải thêm (initget 1 "1 75") vào cuối hàm while để nó có thể lặp đúng.

Hàm getkword phải đi cặp với initget. Nếu gọi một mình getkword mà không có initget thì không bao giờ nhập số liệu được >> phải có initget vào cuối while để sau mỗi vòng lặp là lại có 1 cặp Ini và Get đi cùng.

Ở vòng 1: Ini nằm trước Get >> đủ cặp.

Ở vòng 2: Ini cuối của vòng 1 trở thành đầu của vòng 2 >> có đủ cặp Ini và Get.

V.v...

Có thể viết như thế này là dễ hiểu hơn cả:

(while (and  (not (initget "1 175"))  (setq mai (getkword...)))


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1718 gadibo

gadibo

    biết vẽ line

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

Đã gửi 13 June 2013 - 03:38 PM

Hàm getkword phải đi cặp với initget. Nếu gọi một mình getkword mà không có initget thì không bao giờ nhập số liệu được >> phải có initget vào cuối while để sau mỗi vòng lặp là lại có 1 cặp Ini và Get đi cùng.

Ở vòng 1: Ini nằm trước Get >> đủ cặp.

Ở vòng 2: Ini cuối của vòng 1 trở thành đầu của vòng 2 >> có đủ cặp Ini và Get.

V.v...

Có thể viết như thế này là dễ hiểu hơn cả:

(while (and  (not (initget "1 175"))  (setq mai (getkword...)))

vâng e cảm ơn bác , em đã hình dung ra cách làm việc của vòng while , lý do vòng ko lặp dc là vì ko có hàm ini trong vòng lặp . híc . cảm ơn các anh nhiều .

đang học mót từng hàm 1 , đọc 2 cuốn của nguyễn hữu lộc mà hoa cả mắt  , vận dụng thực tế nhanh hơn nhiều .


  • 0

#1719 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

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

Đã gửi 02 July 2013 - 10:43 AM

Các bạn thân mến.

Mình thấy trên CV có rất nhiều lisp tạo đường boundary, nếu muốn cad trả về tập hợp các đối tượng "dẫn đường" tạo nên cái đường bao đó thì làm thế nào.

Mong các bạn giúp đỡ. Cám ơn các bạn.


  • 0

#1720 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5451 Bài viết
Điểm đánh giá: 2625 (tuyệt vời)

Đã gửi 02 July 2013 - 11:04 AM

Bài toán ngược này có lẽ không có đáp án chăng?

Có các objects dẫn đường thì tạo được 1 boundary. Nhưng có 1 boundary thì có thể có vô số objects dẫn đường cơ mà?

Hay do chưa hiểu ý bạn? Lâu ngày gặp lại: chức sức khỏe!


  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.