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

#1821 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 04 September 2014 - 09:30 PM

Tôi nhớ mang máng là hình như có đọc đâu đó vấn đề này rồi, nhưng giờ quên mất.

Hỏi: tôi load 1 file lisp xong. Vậy có thể lấy được đường dẫn đến file lisp vừa load đó không?

Ai biết nhờ chỉ giùm. Thanks!

 

Đây bác : http://www.cadviet.c...-coding/page-41


  • 1

#1822 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 04 September 2014 - 09:42 PM

Đúng là nhớ "mang máng" thật!

Trí nhớ giờ quá kém.

Thanks!


  • 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.


#1823 ThuyLinh313

ThuyLinh313

    biết lệnh mtext

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

Đã gửi 07 September 2014 - 11:15 AM

  1. Dictionary được lưu trong Database của bản vẽ ko phải trong ModelSpace (chỉ là 1 BlockTablecord) nó chứa tất cả scale list được khai báo ko phải đang sử dụng
  2.  AcDbContextDataManager là 1 class được wrap lại cho .NET ko phải cho lisp (dùng ActiveX với các Interface) nên code của bạn bị lỗi
  3. Về cái ví dụ của bạn, giải thích thì dài dòng và nảy sinh ra thêm nhiều vấn đề nữa nên mình gợi ý bạn google  những thứ sau để hiểu sự khác nhau giữa: người bán đưa trái đào (value) cho người mua và phích cắm nối với thiết bị điện để truyền điện (reference,  object reference, pointer point to memory address)  ngoài ra có thể tìm hiểu thêm sự khác nhau như giữa Hard PointerSoft Pointer trong AutoCAD

Thời gian vừa rồi mình bận quá nên hôm nay mới rảnh rỗi tiếp tục chủ đề lần trước thảo luận với Detailing.

 

1. Mình đã mò mẫm hết mọi ngóc ngách của Dictionary nhưng không thể tìm thấy chỗ nào chỉ lưu "tất cả scale list được khai báo ko phải đang sử dụng". Mà nó lưu toàn bộ scale được người dùng khai báo, hoặc autocad khai báo mặc định, không cần biết có được sử dụng vào đối tượng nào đó hay không.

Có lẽ chỗ này đành nhờ Detailing chỉ cụ thể hơn chứ mình chịu rồi. hì

 

2. AcDbContextDataManager chính xác là có thể dùng với lisp như mình đã ví dụ trong bài trước. Code của mình bị lỗi vì đơn giản là "nó không có ở đó" để lấy ra mà thôi. đúng ra mình cần thêm 1 hàm kiểm tra dữ liệu trước khi lấy.


  • 0

#1824 Detailing

Detailing

    biết lệnh imageclip

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

Đã gửi 07 September 2014 - 02:10 PM

Thời gian vừa rồi mình bận quá nên hôm nay mới rảnh rỗi tiếp tục chủ đề lần trước thảo luận với Detailing.

 

1. Mình đã mò mẫm hết mọi ngóc ngách của Dictionary nhưng không thể tìm thấy chỗ nào chỉ lưu "tất cả scale list được khai báo ko phải đang sử dụng". Mà nó lưu toàn bộ scale được người dùng khai báo, hoặc autocad khai báo mặc định, không cần biết có được sử dụng vào đối tượng nào đó hay không.

Có lẽ chỗ này đành nhờ Detailing chỉ cụ thể hơn chứ mình chịu rồi. hì

 

2. AcDbContextDataManager chính xác là có thể dùng với lisp như mình đã ví dụ trong bài trước. Code của mình bị lỗi vì đơn giản là "nó không có ở đó" để lấy ra mà thôi. đúng ra mình cần thêm 1 hàm kiểm tra dữ liệu trước khi lấy.

1. AutoCAD lưu tất cả trong Dictionary (public - bạn có thể try cập được) 

Nếu bạn "đã đã mò mẫm hết mọi ngóc ngách của Dictionary" nhưng vẫn ko tìm được thì mình nghĩ nó đã được AutoCAD lưu ở môt variables nào đấy (private, protected hay internal và chỉ có Acad.exe mới truy cập được) trong quá trình regeneration drawing, hay các task đại loại như thế. Do đó nếu bạn muốn làm việ này thì chỉ có cách đi lần theo các entity để tìm scalelist nào đang được sử dụng thôi. :D

 

2. Nếu bạn dùng được nghĩa là Autodesk đã export class đó sang ActiveX hay họ đã có lib để sử dụng class đó :)

1. AutoCAD lưu tất cả trong Dictionary (public - bạn có thể try cập được) 
Nếu bạn "đã đã mò mẫm hết mọi ngóc ngách của Dictionary" nhưng vẫn ko tìm được thì mình nghĩ nó đã được AutoCAD lưu ở môt variables nào đấy (private, protected hay internal chỉ có Acad.exe mới truy cập được) trong quá trình regeneration drawing, hay các task đại loại như thế. Do đó nếu bạn muốn làm việ này thì chỉ có cách đi lần theo các entity để tìm scalelist nào đang được sử dụng thôi. :D
 
1. AutoCAD lưu tất cả trong Dictionary (public - bạn có thể try cập được) 
1. AutoCAD lưu tất cả trong Dictionary (public - bạn có thể try cập được) 
Nếu bạn "đã đã mò mẫm hết mọi ngóc ngách của Dictionary" nhưng vẫn ko tìm được thì mình nghĩ nó đã được AutoCAD lưu ở môt variables nào đấy (private, protected hay internal chỉ có Acad.exe mới truy cập được) trong quá trình regeneration drawing, hay các task đại loại như thế. Do đó nếu bạn muốn làm việ này thì chỉ có cách đi lần theo các entity để tìm scalelist nào đang được sử dụng thôi. :D

 

2. Nếu bạn dùng được nghĩa là Autodesk đã export class đó sang ActiveX hay họ đã có lib để sử dụng class đó :)
1. AutoCAD lưu tất cả trong Dictionary (public - bạn có thể try cập được) 
Nếu bạn "đã đã mò mẫm hết mọi ngóc ngách của Dictionary" nhưng vẫn ko tìm được thì mình nghĩ nó đã được AutoCAD lưu ở môt variables nào đấy (private, protected hay internal chỉ có Acad.exe mới truy cập được) trong quá trình regeneration drawing, hay các task đại loại như thế. Do đó nếu bạn muốn làm việ này thì chỉ có cách đi lần theo các entity để tìm scalelist nào đang được sử dụng thôi. :D
 
Nếu bạn "đã đã mò mẫm hết mọi ngóc ngách của Dictionary" nhưng vẫn ko tìm được thì mình nghĩ nó đã được AutoCAD lưu ở môt variables nào đấy (private, protected hay internal chỉ có Acad.exe mới truy cập được) trong quá trình regeneration drawing, hay các task đại loại như thế. Do đó nếu bạn muốn làm việ này thì chỉ có cách đi lần theo các entity để tìm scalelist nào đang được sử dụng thôi. :D
2. Nếu bạn dùng được nghĩa là Autodesk đã export class đó sang ActiveX hay họ đã có lib để sử dụng class đó :)
1. AutoCAD lưu tất cả trong Dictionary (public - bạn có thể try cập được) 
Nếu bạn "đã đã mò mẫm hết mọi ngóc ngách của Dictionary" nhưng vẫn ko tìm được thì mình nghĩ nó đã được AutoCAD lưu ở môt variables nào đấy (private, protected hay internal chỉ có Acad.exe mới truy cập được) trong quá trình regeneration drawing, hay các task đại loại như thế. Do đó nếu bạn muốn làm việ này thì chỉ có cách đi lần theo các entity để tìm scalelist nào đang được sử dụng thôi. :D
2. Nếu bạn dùng được nghĩa là Autodesk đã export class đó sang ActiveX hay họ đã có lib để sử dụng class đó :)
1. AutoCAD lưu tất cả trong Dictionary (public - bạn có thể try cập được) 
Nếu bạn "đã đã mò mẫm hết mọi ngóc ngách của Dictionary" nhưng vẫn ko tìm được thì mình nghĩ nó đã được AutoCAD lưu ở môt variables nào đấy (private, protected hay internal chỉ có Acad.exe mới truy cập được) trong quá trình regeneration drawing, hay các task đại loại như thế. Do đó nếu bạn muốn làm việ này thì chỉ có cách đi lần theo các entity để tìm scalelist nào đang được sử dụng thôi. :D
2. Nếu bạn dùng được nghĩa là Autodesk đã export class đó sang ActiveX hay họ đã có lib để sử dụng class đó :)

  • 1

Ideas don't matter, execution does!

1908412_308002392716743_8165279281236341


#1825 hung_xu20032000

hung_xu20032000

    biết vẽ ellipse

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

Đã gửi 11 September 2014 - 08:32 PM

Mình có bản vẽ kèm theo với tỷ lệ 1/1000. Các bác hộ mình với. Mình muốn thống kê diện tích các hatch theo layer (trong đó có cả layer 0 nhưng không có hatch) trong vùng giới hạn được bao bởi 2 đường polyline (LC Diahinh và 0) với độ cao đáy là 265 (độ cao này thay đổi) và tính theo tầng 10m. Ví dụ tầng 260, tầng 270...E xin cảm ơn.http://www.cadviet.c...ui_cad_viet.dwg

 

  • -3

#1826 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 September 2014 - 02:34 PM

Em lại vào nhờ các bác tư vấn giúp em với ạ

Em có 1 Line dài và 1 tập hợp các Line ngắn nằm trên Line dài đó.

Mục đích của em là xoá các Line ngắn đó đi mà chỉ để lại Line dài thôi.

Em đã viết Code thế này rồi nhưng có chỗ nào đó ko ổn, nó ko xoá hết mà chỉ xoá 1 số đối tượng thôi.

Mục đích của em để lọc giảm nhẹ bản vẽ em làm.

Mong các bác chỉ giáo giúp.

Đây là code ạ

(defun c:00 ( / ss Lts_EnameLine Lts_KC_Ename Lts_KC_Ename_Sort Lts_Ename Lts_Line_OK  )
(setvar "CMDECHO" 0)
(setq ss (ssget (list (cons 0 "LINE"))))
(setq Lts_EnameLine (vl-remove nil (mapcar '(lambda(x) (if (= (acet-dxf 0 (entget x)) "LINE") x nil)) (acet-ss-to-list ss))))
(setq Lts_KC_Ename (mapcar '(lambda (x) (cons (distance (acet-dxf 10 (entget x)) (acet-dxf 11 (entget x))) x)) Lts_EnameLine))
(setq Lts_KC_Ename_Sort (vl-sort Lts_KC_Ename '(lambda(e1 e2) (> (car e1) (car e2)))))
(setq Lts_Ename (mapcar '(lambda (x) (cdr x)) Lts_KC_Ename_Sort))
(setq Lts_Line_OK (TD:Remove-Obj-duplicates Lts_Ename))
(princ)
)



(defun GetPnt (Ma x  /)
(acet-dxf Ma (entget x))
)



(defun GetLineDup (lst / lst1)
(foreach x lst
	(if (not (member x lst1))
		(setq lst1 (append lst1 (list x)))
	)
	(Progn
		(foreach y lst1
			(if (and (equal (angle (GetPnt 10 y) (GetPnt 10 x)) (angle (GetPnt 10 y) (GetPnt 11 y)) 0.0000001)
				 (equal (angle (GetPnt 10 y) (GetPnt 11 x)) (angle (GetPnt 10 y) (GetPnt 11 y)) 0.0000001)
			    )
			    (setq lst1 (vl-remove y lst1))
			)
		)
		(setq lst1 (append lst1 (list x)) )
	)
)
lst1
)


(defun LM:ListDifference ( l1 l2 )
  (vl-remove-if '(lambda ( x ) (member x l2)) l1)
)


(defun LM:RemoveOnce ( l1 l2 )
  (if l1
    (if (equal (car l1) l2)
      (LM:RemoveOnce (cdr l1) l2)
      (cons (car l1) (LM:RemoveOnce (cdr l1) l2))
    )
  )
)

(defun TD:Remove-Obj-duplicates (ss_list /  Lts1 Lts2 )
(vl-load-com)
(setq Lts1  (GetLineDup ss_list ))
(setq Lts2 (LM:ListDifference ss_list Lts1))
(setq Lts3 (LM:RemoveOnce Lts1 ss_list))
(foreach e Lts2
	(entdel e)
)
Lts3
)




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


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1827 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 13 September 2014 - 02:39 PM

Tại sao HHVD không dùng lệnh overkill ?


  • 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.


#1828 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 September 2014 - 02:51 PM

Tại sao HHVD không dùng lệnh overkill ?

Lệnh Overkill không giải quyết triệt để. Bác hãy test luôn trên file em gửi là biết ngay ạ.

Em đang viết để xóa.


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1829 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 September 2014 - 03:22 PM

Em đã viết thành công rồi bác Hạ ạ. Hiii.

Cảm ơn bác nhé. ^^


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1830 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 13 September 2014 - 04:29 PM

Code dưới viết khác của thanhduan. Trong code có hạn chế số lần lặp (để đẩy nhanh tốc độ)

(defun c:001 ( / ss Lts_EnameLine Lts_KC_Ename Lts_KC_Ename_Sort Lts_Ename Lts_Line_OK  )
(setvar "CMDECHO" 0)
(setq ss (ssget (list (cons 0 "LINE"))))
(setq Lts_EnameLine (vl-remove nil (mapcar '(lambda(x) (if (= (acet-dxf 0 (entget x)) "LINE") x nil)) (acet-ss-to-list ss))))
(setq Lts_KC_Ename (mapcar '(lambda (x) (cons (distance (acet-dxf 10 (entget x)) (acet-dxf 11 (entget x))) x)) Lts_EnameLine))
(setq Lts_KC_Ename_Sort (mapcar 'cdr (vl-sort Lts_KC_Ename '(lambda(e1 e2) (> (car e1) (car e2))))))
 
(setq i 0 j 1)
(while (< i (length Lts_KC_Ename_Sort))
  (while (< j (length Lts_KC_Ename_Sort))
    (if (entget (nth i Lts_KC_Ename_Sort))
      (if (entget (nth j Lts_KC_Ename_Sort))
            (if (Tue-geom-3pthanghang (GetPnt 10 (nth i Lts_KC_Ename_Sort)) (GetPnt 11 (nth i Lts_KC_Ename_Sort))
                           (GetPnt 10 (nth j Lts_KC_Ename_Sort)) (GetPnt 11 (nth j Lts_KC_Ename_Sort)))
                        (progn (entdel (nth j Lts_KC_Ename_Sort)) (vl-remove (nth j Lts_KC_Ename_Sort) Lts_KC_Ename_Sort))
            )
       )
      (setq j (length Lts_KC_Ename_Sort))
    )
            (setq j (1+ j))
   )
            (setq i (1+ i) j 1)
)
(princ)
)
(defun GetPnt (Ma x  /)
(acet-dxf Ma (entget x))
)
(defun Tue-geom-3pthanghang(p1 p2 p3 p4 / goc<pi)
  ;;;Ex: (Tue-geom-3pthanghang (getpoint "P1 :") (getpoint "P2 :") (getpoint "P3 :"))
  (defun goc<pi (pt1 pt2 / resgoc)
    (setq resgoc (angle pt1 pt2))
    (while (> resgoc pi) (setq resgoc (- resgoc pi)))
    resgoc
  )
  (if (and (equal (goc<pi p1 p2) (goc<pi p2 p3) 1E-10) (equal (goc<pi p1 p2) (goc<pi p2 p4) 1E-10))
            T nil
  )

  • 1

#1831 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 September 2014 - 05:01 PM

Code dưới viết khác của thanhduan. Trong code có hạn chế số lần lặp (để đẩy nhanh tốc độ)

Dạ, cái anh Tue_NV chưa được ạ. Nó xóa nhiều thứ quá và vẫn bỏ xót đối tượng.

Cái Code em viết cũng tương đối nhưng cũng xóa không triệt để.

Có gì mong các anh xem và sửa giúp.

Code em viết đây ạ

(vl-load-com)
(defun c:XLT ( / ss Lts_EnameLine Lts_KC_Ename Lts_KC_Ename_Sort Lts_Ename Lts_Line_OK  );;;XOA LINE TRUNG
(setvar "CMDECHO" 0)
(progn
(setq ss (ssget (list (cons 0 "LINE"))))
(setq Lts_EnameLine (vl-remove nil (mapcar '(lambda(x) (if (= (acet-dxf 0 (entget x)) "LINE") x nil)) (acet-ss-to-list ss))))
(setq Lts_KC_Ename (mapcar '(lambda (x) (cons (distance (acet-dxf 10 (entget x)) (acet-dxf 11 (entget x))) x)) Lts_EnameLine))
(setq Lts_KC_Ename_Sort (vl-sort Lts_KC_Ename '(lambda(e1 e2) (< (car e1) (car e2)))))
(setq Lts_Ename (mapcar '(lambda (x) (cdr x)) Lts_KC_Ename_Sort))
)
(setq Lts_Obj (TD:GetLineDup Lts_Ename ))
(setq Lts2 (LM:ListDifference Lts_Ename Lts_Obj ))
(foreach e Lts2
	(entdel e)
)
(alert (strcat "\nDa xoa:  " (rtos (length lts2) 2 0) " doi tuong"))
(princ )
)


(defun GetPnt (Ma x  / P1)
(setq P1 (acet-dxf Ma (entget x)))
(setq P2 (list (car P1) (cadr P1)))
P2
)

;;;;;LOC RA NHUNG DOI TUONG LINE NAM TREN NHAU
(defun TD:GetLineDup (lst / lst1)
(foreach x lst
(if (not (member x lst1))
	(setq lst1 (append lst1 (list x)))
)
(Progn
	(foreach y lst1
		(if (and (equal (+ (distance (GetPnt 10 y) (GetPnt 10 x)) (distance (GetPnt 10 y) (GetPnt 11 x))) (distance (GetPnt 10 x)  (GetPnt 11 x)) 0.05)
			 (equal (+ (distance (GetPnt 11 y) (GetPnt 10 x)) (distance (GetPnt 11 y) (GetPnt 11 x))) (distance (GetPnt 10 x)  (GetPnt 11 x)) 0.05)
			 (equal (angle (GetPnt 10 x) (GetPnt 10 y))  (angle (GetPnt 10 x) (GetPnt 11 x)) 0.0001)
			 (equal (angle (GetPnt 10 x) (GetPnt 11 y))  (angle (GetPnt 10 x) (GetPnt 11 x)) 0.0001)
		    )
		    (setq lst1 (vl-remove y lst1))
		)
	)
	(setq lst1 (append lst1 (list x)) )
)
)
lst1
)


(defun LM:ListDifference ( l1 l2 )
  (vl-remove-if '(lambda ( x ) (member x l2)) l1)
)

File test:  http://www.cadviet.c.../36665_test.dwg


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1832 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 13 September 2014 - 05:08 PM

1). Thế mà bảo em làm được rồi?

2). Có 1 hàm thừa, là hàm để lấy Lts_EnameLine


  • 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.


#1833 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 September 2014 - 05:15 PM

1). Thế mà bảo em làm được rồi?

2). Có 1 hàm thừa, là hàm để lấy Lts_EnameLine

Hì hì. Tại file em test lúc đầu đơn giản quá nên ko phát hiện ra, lúc sau với test với số lượng lớn và đa dạng thì xảy ra như vậy.

Hàm lấy Lts_Ename để loại cái chiều dài đi cho viết dễ. :D


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1834 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 13 September 2014 - 06:45 PM

Bạn giữ cái lsp ở #1826 và chỉ sửa 1 hàm này.

(defun GetLineDup (lst / lst1)
  (setq lst1 (list (car lst)))
  (while lst
    (setq lst (cdr lst)
 x (last lst1))
    (foreach y lst
      (if (or (equal (angle (GetPnt 10 x) (GetPnt 10 y))
 (angle (GetPnt 11 y) (GetPnt 11 x)) 0.0000001)
      (equal (angle (GetPnt 10 x) (GetPnt 11 y))
 (angle (GetPnt 10 y) (GetPnt 11 x)) 0.0000001)
)
(setq lst (vl-remove y lst))
      )
    )
    (setq lst1 (append lst1 (list (car lst))))
  )
)

  • 0

#1835 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 September 2014 - 07:27 PM

Bạn giữ cái lsp ở #1826 và chỉ sửa 1 hàm này.

Đã OK. Tuyệt vời anh ạ. Em cũng nghĩ ra cách này rùi nhưng chưa bắt tay vào làm. Hii. 

Cảm ơn anh Tot77, bác Hạ và anh Tue_NV


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1836 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 13 September 2014 - 10:06 PM

Thuật toán của anh Tot77 rất nhanh và tối ưu. 

Tặng anh nhiều LIKE. Hì Hì

Em mót đc rồi nhé. :D


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1837 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 14 September 2014 - 12:30 AM

Chưa triệt để! Thử vẽ 1 loạt Line nối tiếp nhau và thẳng hàng rồi 00 xem sao nhé.


  • 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.


#1838 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 14 September 2014 - 06:54 AM

Chưa triệt để! Thử vẽ 1 loạt Line nối tiếp nhau và thẳng hàng rồi 00 xem sao nhé.

Hì hì. Em đã thấy dòng điều kiện của anh Tot77 rùi ạ. :D

 

(and
     (equal (+ (distance (GetPnt 10 x) (GetPnt 10 y)) (distance (GetPnt 10 y) (GetPnt 11 x))) (distance (GetPnt 10 x) (GetPnt 11 x)) 0)
     (equal (+ (distance (GetPnt 10 x) (GetPnt 11 y)) (distance (GetPnt 11 y) (GetPnt 11 x))) (distance (GetPnt 10 x) (GetPnt 11 x)) 0)
   ) 

 

Giả sử P3P4 nằm trên đoạn P1P2 thì thỏa mãn 2 điều kiện về khoảng cách.

Sp1p3+Sp3p2 = Sp1p2

Sp1p4+Sp4p2 = Sp1p2


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#1839 Tot77

Tot77

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 990 Bài viết
Điểm đánh giá: 498 (tốt)

Đã gửi 14 September 2014 - 09:12 AM

Chưa triệt để! Thử vẽ 1 loạt Line nối tiếp nhau và thẳng hàng rồi 00 xem sao nhé.

Các line nối tiếp nhau không thuộc đối tượng cần xóa.


  • 0

#1840 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 14 September 2014 - 09:15 AM

Các line nối tiếp nhau không thuộc đối tượng cần xóa.

Nhưng nó vẫn xóa anh ạ. :D


  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn