Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu]1 Lisp vẽ đường polyline nối baseponit của các block và


  • Please log in to reply
24 replies to this topic

#1 dauquangminh

dauquangminh

    biết vẽ arc

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

Đã gửi 30 July 2011 - 09:12 AM

Hix :wacko: . Hôm qua lần đầu tiên em gửi bài, không đúng nội quy nên bị xóa. Hôm nay xin phép gửi lại chủ đề này, xin nhờ các anh chị giúp đỡ viết giùm em 2 lisp sau, cụ thể, chi tiết xin xem file đính kèm ạ: http://www.mediafire...7svc4575ko2gh7y
Cảm ơn các anh chị.
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 30 July 2011 - 09:30 AM

Hix :wacko: . Hôm qua lần đầu tiên em gửi bài, không đúng nội quy nên bị xóa. Hôm nay xin phép gửi lại chủ đề này, xin nhờ các anh chị giúp đỡ viết giùm em 2 lisp sau, cụ thể, chi tiết xin xem file đính kèm ạ: http://www.mediafire...7svc4575ko2gh7y
Cảm ơn các anh chị.

Tôi đã đọc bản vẽ của bạn. Có đúng và có sai. Nhưng bạn phải giải thích rõ quy luật nối, ví dụ theo X tăng dần, theo Y tăng dần...
  • 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.


#3 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 July 2011 - 08:17 PM

Hix :wacko: . Hôm qua lần đầu tiên em gửi bài, không đúng nội quy nên bị xóa. Hôm nay xin phép gửi lại chủ đề này, xin nhờ các anh chị giúp đỡ viết giùm em 2 lisp sau, cụ thể, chi tiết xin xem file đính kèm ạ: http://www.mediafire...7svc4575ko2gh7y
Cảm ơn các anh chị.

Yêu cầu của bạn thiếu mô tả dữ liệu đầu vào, sơ qua yêu cầu và hình ảnh minh họa (không phải ai cũng có điều kiện dơnload về để đọc mà => yêu cầu của bạn sẽ bị lãng quên) Hi vọng lần sau bạn rút kinh nghiệm
Còn đây là lisp bạn yêu cầu. Mình bổ sung dữ kiện : đối tượng bắt đầu đường đi
Lệnh :
- Yêu cầu 1 : b2pl :
+ Chọn các Block cần vẽ đường Pline qua, chọn Block đầu => Lisp tìm đường đi theo quy luật điểm thứ n sẽ gần điểm n-1 nhất và kẻ Pline qua đó
- Yêu cầu 2 : b2t
+ Chọn các Block cần ghi text, Block bắt đầu, Khoảng cách từ Text tới Block, Giá trị bắt đầu, Gia số => Lisp sẽ đánh số với gia số và quy luật như trên với mỗi Block
Chúc bạn vui
Update : input Text Height

(defun c:b2pl (/ ss estart dump)
(grtext -1 "Free lisp from CadViet @Ketxu")
(setvar "nomutt" 1)(prompt "Ch\U+1ECDn c\U+00E1c Block mu\U+1ED1n k\U+1EBB Pline :")
(setq ss (ssget (list (cons 0 "INSERT")))
dump (setvar "nomutt" 0)
estart (car (entsel "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+1EA7u :"))
)
(ST:Entmake-Pline
(ST:List-Sort-ByDistance
(ST:Ss->ListBasePoint ss)
(vl-position (ST:Ent-Dxf 10 estart) (ST:Ss->ListBasePoint ss))
)
(getvar "clayer")
4
Nil
)
)




(defun c:b2t (/ ss estart tH dump)
(grtext -1 "Free lisp from CadViet @Ketxu")
(setvar "nomutt" 1)(prompt "Ch\U+1ECDn c\U+00E1c Block mu\U+1ED1n k\U+1EBB Pline :")
(or #a (setq #a 2))
(or #start (setq #start 1))
(or #inc (setq #inc 1))
(or #tH (setq #inc (* 5 (getvar "dimtxt")(getvar "dimscale"))
)))

(setq ss (ssget (list (cons 0 "INSERT")))
dump (setvar "nomutt" 0)
estart (car (entsel "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+1EA7u :"))
a1 (getreal (strcat "\nKho\U+1EA3ng c\U+00E1ch t\U+1EEB Text t\U+1EDBi BasePoint c\U+1EE7a Block < " (rtos #a 2 1) " >: ") )
start1 (getreal (strcat "\nS\U+1ED1 b\U+0103t \U+0111\U+1EA7u : < " (rtos #start 2 1) " >: "))
inc1 (getreal (strcat "\nGia s\U+1ED1 < " (rtos #inc 2 1) " >: "))
tH1 (getreal (strcat "\nCao Text < " (rtos #tH 2 1) " >: "))
(if a1 (setq #a a1))
(if start1 (setq #start start1))
(if inc1 (setq #inc inc1))
(if tH1 (setq #tH tH1))

(mapcar
(function
(lambda (x )
(wtxt_l (rtos #start 2 0) (mapcar '+ x (list 0 #a 0)) #tH)(setq #start (+ #start #inc))))
(ST:List-Sort-ByDistance
(ST:Ss->ListBasePoint ss)
(vl-position (ST:Ent-Dxf 10 estart) (ST:Ss->ListBasePoint ss))
)

)
)

;;;;;;;;;;;;; Local Functions

(defun wtxt_l(txt p h)(entmakex (list (cons 0 "TEXT") (cons 7 (getvar "textstyle")) (cons 40 h)(cons 1 txt) (cons 10 p))))
(defun ST:Ent-Dxf (dxfCode Ent)(if (= (type Ent) 'ENAME)(cdr (assoc dxfCode (entget Ent))) nil))
(defun ST:Ss->ListBasePoint (ss / n l)
;31-7-2011 @Ketxu
(setq n (sslength ss))
(while (setq e (ssname ss (setq n (1- n))))
(setq l (cons (ST:Ent-Dxf 10 e) l))
)
)
(defun ST:Entmake-Pline (list_pt Layer Color isClosed / Polylist)
;31-7-2011 @Ketxu
(setq Polylist
(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
(cons 8 Layer)
(cons 43 0)
(cons 62 Color)
(cons 90 (length list_pt))
(cons 70 (cond ((= isClosed T) 1)(T 0)))
)
Polylist (append Polylist (mapcar '(lambda (coord) (cons 10 coord)) list_pt)))
(entmakex PolyList)
)
(defun ST:List-Sort-ByDistance (lst start / lstRT 1st item lstDis)
;31-7-2011 @Ketxu
(setq 1st (nth start lst) lstRT (list 1st) lst (append lstRT (vl-remove 1st lst)))
(while (> (length lst) 1)
(setq lst (vl-remove (setq item (nth (1+ (vl-position (setq mindis (apply 'min (setq lstDis (cdr (mapcar '(lambda(x) (distance 1st x)) lst))))) lstDis)) lst)) lst))
(setq lstRT (cons item lstRt))
(setq 1st (car lstRT))
)
(reverse lstRT)
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#4 dauquangminh

dauquangminh

    biết vẽ arc

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

Đã gửi 31 July 2011 - 09:49 PM

Yêu cầu của bạn thiếu mô tả dữ liệu đầu vào, sơ qua yêu cầu và hình ảnh minh họa (không phải ai cũng có điều kiện dơnload về để đọc mà => yêu cầu của bạn sẽ bị lãng quên) Hi vọng lần sau bạn rút kinh nghiệm
Còn đây là lisp bạn yêu cầu. Mình bổ sung dữ kiện : đối tượng bắt đầu đường đi
Lệnh :
- Yêu cầu 1 : b2pl :
+ Chọn các Block cần vẽ đường Pline qua, chọn Block đầu => Lisp tìm đường đi theo quy luật điểm thứ n sẽ gần điểm n-1 nhất và kẻ Pline qua đó
- Yêu cầu 2 : b2t
+ Chọn các Block cần ghi text, Block bắt đầu, Khoảng cách từ Text tới Block, Giá trị bắt đầu, Gia số => Lisp sẽ đánh số với gia số và quy luật như trên với mỗi Block
Chúc bạn vui


(defun c:b2pl (/ ss estart dump)
(grtext -1 "Free lisp from CadViet @Ketxu")
(setvar "nomutt" 1)(prompt "Ch\U+1ECDn c\U+00E1c Block mu\U+1ED1n k\U+1EBB Pline :")
(setq ss (ssget (list (cons 0 "INSERT")))
dump (setvar "nomutt" 0)
estart (car (entsel "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+1EA7u :"))
)
(ST:Entmake-Pline
(ST:List-Sort-ByDistance
(ST:Ss->ListBasePoint ss)
(vl-position (ST:Ent-Dxf 10 estart) (ST:Ss->ListBasePoint ss))
)
(getvar "clayer")
4
Nil
)
)




(defun c:b2t (/ ss estart tH dump)
(grtext -1 "Free lisp from CadViet @Ketxu")
(setvar "nomutt" 1)(prompt "Ch\U+1ECDn c\U+00E1c Block mu\U+1ED1n k\U+1EBB Pline :")
(or #a (setq #a 2))
(or #start (setq #start 1))
(or #inc (setq #inc 1))

(setq ss (ssget (list (cons 0 "INSERT")))
dump (setvar "nomutt" 0)
estart (car (entsel "\nCh\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+1EA7u :"))
a1 (getreal (strcat "\nKho\U+1EA3ng c\U+00E1ch t\U+1EEB Text t\U+1EDBi BasePoint c\U+1EE7a Block < " (rtos #a 2 1) " >: ") )
start1 (getreal (strcat "\nS\U+1ED1 b\U+0103t \U+0111\U+1EA7u : < " (rtos #start 2 1) " >: "))
inc1 (getreal (strcat "\nGia s\U+1ED1 < " (rtos #inc 2 1) " >: ") )
tH (* 5 (getvar "dimtxt")(getvar "dimscale"))
)
(if a1 (setq #a a1))
(if start1 (setq #start start1))
(if inc1 (setq #inc inc1))

(mapcar
(function
(lambda (x )
(wtxt_l (rtos #start 2 0) (mapcar '+ x (list 0 #a 0)) tH)(setq #start (+ #start #inc))))
(ST:List-Sort-ByDistance
(ST:Ss->ListBasePoint ss)
(vl-position (ST:Ent-Dxf 10 estart) (ST:Ss->ListBasePoint ss))
)

)
)

;;;;;;;;;;;;; Local Functions

(defun wtxt_l(txt p h)(entmakex (list (cons 0 "TEXT") (cons 7 (getvar "textstyle")) (cons 40 h)(cons 1 txt) (cons 10 p))))
(defun ST:Ent-Dxf (dxfCode Ent)(if (= (type Ent) 'ENAME)(cdr (assoc dxfCode (entget Ent))) nil))
(defun ST:Ss->ListBasePoint (ss / n l)
;31-7-2011 @Ketxu
(setq n (sslength ss))
(while (setq e (ssname ss (setq n (1- n))))
(setq l (cons (ST:Ent-Dxf 10 e) l))
)
)
(defun ST:Entmake-Pline (list_pt Layer Color isClosed / Polylist)
;31-7-2011 @Ketxu
(setq Polylist
(list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
(cons 8 Layer)
(cons 43 0)
(cons 62 Color)
(cons 90 (length list_pt))
(cons 70 (cond ((= isClosed T) 1)(T 0)))
)
Polylist (append Polylist (mapcar '(lambda (coord) (cons 10 coord)) list_pt)))
(entmakex PolyList)
)
(defun ST:List-Sort-ByDistance (lst start / lstRT 1st item lstDis)
;31-7-2011 @Ketxu
(setq 1st (nth start lst) lstRT (list 1st) lst (append lstRT (vl-remove 1st lst)))
(while (> (length lst) 1)
(setq lst (vl-remove (setq item (nth (1+ (vl-position (setq mindis (apply 'min (setq lstDis (cdr (mapcar '(lambda(x) (distance 1st x)) lst))))) lstDis)) lst)) lst))
(setq lstRT (cons item lstRt))
(setq 1st (car lstRT))
)
(reverse lstRT)
)

Cảm ơn anh ketxu rất nhiều. Lisp 1 chạy rất tốt ạ, còn lisp 2 là lisp điền text ấy, anh có thể thêm một mục để người dùng nhập chiều cao chữ được không ạ, vì chiều cao chữ khi xuất ra lúc thì 0.9, lúc thì 10...
  • 0

#5 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 31 July 2011 - 10:04 PM

Cảm ơn anh ketxu rất nhiều. Lisp 1 chạy rất tốt ạ, còn lisp 2 là lisp điền text ấy, anh có thể thêm một mục để người dùng nhập chiều cao chữ được không ạ, vì chiều cao chữ khi xuất ra lúc thì 0.9, lúc thì 10...

Chính là do bạn không cho dữ liệu đầu vào của cao text, nên mình lấy theo tỉ lệ dim. Lần tới nếu bạn có yêu cầu thì cố gắng nhập càng đủ dữ liệu càng tốt, vừa đỡ phải chờ mà người viết cũng k phiền lòng . Code chỉnh lại mình up lại bài trên, bạn download lại nhé. Chúc bạn vui
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#6 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 01 August 2011 - 12:08 AM

.

Hề hề hề,
bạn dùng thử cái ni coi đã ưng ý chưa hè???


(defun c:mabl (/ oldos bln ssbl plst an h pre suf sta k i d)
(vl-load-com)
(command "undo" "be")
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq bln (getstring t "\n Hay nhap ten block can danh dau: "))
(setq ssbl (acet-ss-to-list (ssget (list (cons 0 "insert") (cons 2 bln)))))
(setq plst (list))
(foreach en ssbl
(foreach a (entget en)
(if (= (car a) 10)
(setq plst (append plst (list (cdr a))))
)
)
)
(setq plst (vl-sort plst '(lambda (x y) (< (car x) (car y)))))
(setq an (getstring "Ban muon ve duong noi <Y or N>: "))
(if (= (strcase an) "Y")
(progn
(command "pline")
(foreach x plst
(command x)
)
(command "")
)
(progn
(setq h (getreal "\n Nhap chieu cao text: ")
pre (getstring t "\n Nhap tiep dau: ")
suf (getstring t "\n Nhap tiep duoi: ")
sta (getreal "\n Nhap so bat dau: ")
k (getreal "\n Nhap gia so: ")
d (getdist "\n Nhap khoang cach dat text: ")
i 0
)
(foreach x plst
(entmake (list (cons 0 "text")
(cons 1 (strcat pre (rtos (+ sta (* i k)) 2 0) suf))
(cons 40 h)
(cons 10 (list (car x) (+ (cadr x) d) (caddr x)))
)
)
(setq i (1+ i))
)
)
)
(setvar "osmode" oldos)
(command "undo" "e")
(princ)
)



Hề hề hề,
Cái lisp ni mình đã ghép hai yêu cầu của bạn vào một lệnh là mabl. Nếu bạn muốn vẽ pline thì khi lisp hỏi "Ban muon ve duong noi <Y or N>: " bạn nhập y vào dòng command, còn nếu bạn không nhập gì hoặc nhập bát kỳ ký tự chi khác y hay Y lisp sẽ ghi text theo yêu cầu của bạn.
Chú ý trong lisp mình có bổ sung thêm việc nhập tên block vì e rằng trên bản vẽ có thể có nhiều block khác nhau nên bạn sẽ nối nhầm.
Lisp được viết theo yêu cầu của bạn là vẽ pline hay viết text theo tọa độ x tăng dần của các block được chọn bạn nhé.
Nếu có chi chưa ưng ý thì hãy post lên để mình sửa.
Hề hề hề,
Chúc bạn vui.
  • 2
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 lp_hai

lp_hai

    biết lệnh measure

  • Members
  • PipPipPipPipPipPip
  • 456 Bài viết
Điểm đánh giá: 202 (khá)

Đã gửi 01 August 2011 - 09:43 AM

:excl: @-->>dauquangminh mình nghĩ bạn bạn nên nhấn dấu cộng màu xanh ở dưới bài bác ketxu một cái, khi sửa lại bài theo ý bạn thì nên nhấn thêm cái nữa. nếu bạn down lisp của bác Phamthanhbinh về "xài thử" thì cũng nên nhấn vào dấu + luôn.
hehheee.
:rolleyes:
  • 1
Hình đã gửi

#8 dauquangminh

dauquangminh

    biết vẽ arc

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

Đã gửi 01 August 2011 - 10:27 AM

Mình đã ưng ý rồi :rolleyes:. Cảm ơn các bác ip_hai, phamthanhbinh, ketxu, doan van ha
  • 0

#9 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 August 2011 - 06:29 PM

Bạn dauquangminh nhớ là lisp của mình và của bác Bình giải quyết 2 bài toán khác nhau :

Hình đã gửi

- Mình : đi từ block đầu (do bạn chọn, có thể ở giữa đống block, hoặc ở đâu đó) đến block cuối theo khoảng cách (distance)
- Bác Bình : sắp xếp lại block theo thứ tự tọa độ trục X tăng dần, vì vậy không cần bước chọn đối tượng bắt đầu đường đi, vì nó luôn bắt đầu từ thằng đầu tiên bên trái.

Bạn không phân biệt rõ sự khác nhau giữa khoảng cách và delta x, làm mình mất khá nhiều thời gian để giải quyết bài toán tổng quát thay vì 1 dòng lambda như bác Bình làm ( :wub: ) :angry:
Bạn cố gắng rút kinh nghiệm nhé :unsure:

Ngoài ra, mình cũng nói thêm về topic bạn mới lập thêm để yêu cầu lisp.

- Có phần chọn ba đầu: nếu em chọn bên trái thì nó sẽ tăng dần từ trái sang phải, nếu em chọn bên phải thì nó sẽ tăng dần từ phải sang trái (lấy theo trục X)

Cái BA ở bên nào là do bạn nói với lisp hay nó tính toán ?? Nếu bạn chọn nhầm cái không phải là bên trái đầu tiên hay bên phải đầu tiên thì lisp xử trí thế nào ?? Nó cứ đi theo 1 hướng thì những cái lệch sang bên còn lại tính sao :)
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#10 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 01 August 2011 - 08:24 PM

Bạn dauquangminh nhớ là lisp của mình và của bác Bình giải quyết 2 bài toán khác nhau :

Hình đã gửi

- Mình : đi từ block đầu (do bạn chọn, có thể ở giữa đống block, hoặc ở đâu đó) đến block cuối theo khoảng cách (distance)
- Bác Bình : sắp xếp lại block theo thứ tự tọa độ trục X tăng dần, vì vậy không cần bước chọn đối tượng bắt đầu đường đi, vì nó luôn bắt đầu từ thằng đầu tiên bên trái.

Bạn không phân biệt rõ sự khác nhau giữa khoảng cách và delta x, làm mình mất khá nhiều thời gian để giải quyết bài toán tổng quát thay vì 1 dòng lambda như bác Bình làm ( :wub: ) :angry:
Bạn cố gắng rút kinh nghiệm nhé :unsure:

Ngoài ra, mình cũng nói thêm về topic bạn mới lập thêm để yêu cầu lisp.

Cái BA ở bên nào là do bạn nói với lisp hay nó tính toán ?? Nếu bạn chọn nhầm cái không phải là bên trái đầu tiên hay bên phải đầu tiên thì lisp xử trí thế nào ?? Nó cứ đi theo 1 hướng thì những cái lệch sang bên còn lại tính sao :)

Hề hề hề,
Bác Ketxu chỉ được cái nói ..... đúng.
Thực ra cái lisp của bác mới đúng cái yêu cầu ban đầu theo như bạn ý nói là chọn thằng gần nhất, xong khi nhìn trên bản vẽ của bạn ấy thì mình vận dụng kiểu "Nhìn Hình Đoán ..... Ý" của thằng cu Xuân Bắc mà trên TV đang ầm ĩ để làm cái lisp của mình cho nó..... dễ ý mà. Hên ở chỗ bạn ấy chưa biết mình sai nên chưa kịp phê phán đó thôi. Chứ cứ xài nó độ vài trăm bận sẽ thấy cái chưa được của cái lisp ấy mà.
Hề hề hề,
Dù sao thì cũng góp được với các bác một tí cái gọi là lisp.
Hề hề hề.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#11 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 August 2011 - 09:14 PM

Hề, dù sao thì nhờ bạn ấy mà e mới mò mẫm ra cái defun sort point theo khoảng cách. Có thời gian em sẽ up nó lên thêm lựa chọn sort "distance" theo x, theo y, hay theo khoảng cách thực để dùng dần ^^ Giờ mới thấy sau khi đã xây dựng 1 bộ defun kha khá thì việc coding cũng nhanh mà nhàn nữa, bác nhểy :wub:
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#12 dauquangminh

dauquangminh

    biết vẽ arc

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

Đã gửi 01 August 2011 - 09:26 PM

Bạn dauquangminh nhớ là lisp của mình và của bác Bình giải quyết 2 bài toán khác nhau :

Hình đã gửi

- Mình : đi từ block đầu (do bạn chọn, có thể ở giữa đống block, hoặc ở đâu đó) đến block cuối theo khoảng cách (distance)
- Bác Bình : sắp xếp lại block theo thứ tự tọa độ trục X tăng dần, vì vậy không cần bước chọn đối tượng bắt đầu đường đi, vì nó luôn bắt đầu từ thằng đầu tiên bên trái.

Bạn không phân biệt rõ sự khác nhau giữa khoảng cách và delta x, làm mình mất khá nhiều thời gian để giải quyết bài toán tổng quát thay vì 1 dòng lambda như bác Bình làm ( :wub: ) :angry:
Bạn cố gắng rút kinh nghiệm nhé :unsure:

Ngoài ra, mình cũng nói thêm về topic bạn mới lập thêm để yêu cầu lisp.

Cái BA ở bên nào là do bạn nói với lisp hay nó tính toán ?? Nếu bạn chọn nhầm cái không phải là bên trái đầu tiên hay bên phải đầu tiên thì lisp xử trí thế nào ?? Nó cứ đi theo 1 hướng thì những cái lệch sang bên còn lại tính sao :)


Hix. Em cũng thấy thất vọng về bản thân mình. Mình hiểu là một chuyện, còn giải thích như thế nào để người khác dễ hiểu và dễ làm lại là một việc khác. Buồn quá. Xin lỗi các bác.

Cái BA đầu thì do mình chọn, còn bên trái hay phải là do lisp tính toán trong những block đó block nào có tọa độ X nhỏ nhất tức là block đầu tiên bên trái. Nếu chọn nhầm thì lisp sẽ báo bạn đã chọn nhầm và yêu cầu chọn lại cho đúng.

Em muốn hỏi bác ketxu 1 câu ngoài lề: làm sao đưa hình lên diễn đàn như bác được nhỉ?
  • 0

#13 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 August 2011 - 09:35 PM

Cái cách chọn BA ấy có lẽ làm như bác Bình là hay nhất, bảo thuận thì nó làm từ trái sang phải, k thì ngược lại, khỏi hỏi nhiều, pick nhiều :) Về vấn đề này bạn sang bên topic đó nhé, bác Bình đã làm giúp bạn rồi đó

Ngoài lề : bạn chụp ảnh, up lên 1 host free nào đó, như photobucket.com chẳng hạn, rồi lấy direct link của nó. Ở mục viết bài, có icon Insert Image, ngay cạnh icon bạn dùng để post file đó. kích vào và paste direct link bạn vừa lấy vào là ok
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#14 dauquangminh

dauquangminh

    biết vẽ arc

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

Đã gửi 01 August 2011 - 09:57 PM

Cái cách chọn BA ấy có lẽ làm như bác Bình là hay nhất, bảo thuận thì nó làm từ trái sang phải, k thì ngược lại, khỏi hỏi nhiều, pick nhiều :) Về vấn đề này bạn sang bên topic đó nhé, bác Bình đã làm giúp bạn rồi đó

Ngoài lề : bạn chụp ảnh, up lên 1 host free nào đó, như photobucket.com chẳng hạn, rồi lấy direct link của nó. Ở mục viết bài, có icon Insert Image, ngay cạnh icon bạn dùng để post file đó. kích vào và paste direct link bạn vừa lấy vào là ok

cảm ơn bác, em đã làm được rồi.Hình đã gửi
một ngày chỉ được bình chọn 4 hay 5 lần thôi ấy nhỉ nên em không bình chọn cho bác được nữa rồi
  • 0

#15 dauquangminh

dauquangminh

    biết vẽ arc

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

Đã gửi 01 August 2011 - 10:08 PM

sẵn tiện có bác ketxu ở đây em muốn hỏi cái này luôn:
em có một bộ lisp rất hay mà em đã sưu tầm từ nhiều nơi và nay em muốn chia sẽ với mọi người thì làm thế nào nhỉ?
nếu lập topic mới thì vi phạm nội quy, vì lisp em rất nhiều cả một bộ luôn nếu tiêu đề ghi chung chung quá :( thì người khác sẽ không thể nhìn vào tiêu đề để biết mà tra cứu được
  • 0

#16 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 01 August 2011 - 10:32 PM

Nếu nó bao gồm nhiều thứ thì bạn cứ ghi là [Đã xong]Chia sẻ bộ lisp hay thôi ^^ Nếu không thì bạn chọn lọc vài cái hay ho post lên cũng được vậy :lol:
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#17 hongha_gtvt

hongha_gtvt

    Chưa sử dụng CAD

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

Đã gửi 15 April 2013 - 11:22 AM

http://www.cadviet.c...noi_layer_1.dwgChào cả nhà!

theo chu đề này mình có một bài này muốn nhờ cả nhà giúp.

Mình muốn nhờ cả nhà viết hộ một cái lisp như yêu cầu trong file đã đính kèm. 

thanks! mọi người trước nhá!


  • 0

#18 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 15 April 2013 - 01:37 PM

Chào cả nhà!

theo chu đề này mình có một bài này muốn nhờ cả nhà giúp.

Mình muốn nhờ cả nhà viết hộ một cái lisp như yêu cầu trong file đã đính kèm. 

thanks! mọi người trước nhá!

Hề hề hề,

Mình muốn mọi người viết hộ bạn ấy cái lisp như yêu cầu trong file không có đính kèm......


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

#19 hongha_gtvt

hongha_gtvt

    Chưa sử dụng CAD

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

Đã gửi 17 April 2013 - 09:30 AM

Hề hề hề,

Mình muốn mọi người viết hộ bạn ấy cái lisp như yêu cầu trong file không có đính kèm......

http://www.cadviet.c...p_noi_layer.dwg


  • 0

#20 hongha_gtvt

hongha_gtvt

    Chưa sử dụng CAD

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

Đã gửi 03 May 2013 - 08:09 AM

Không có Bác Pro nào giúp được em à?????????


  • 0