Đế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

#2821 quansla

quansla

    biết lệnh xclip

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

Đã gửi 18 August 2016 - 05:33 PM

Nếu chỉ vậy thì chuyển LSP sang VLX

 


  • 0

#2822 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 18 August 2016 - 06:30 PM

 

Ý kiến gì vậy quan sợ la?


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


#2823 quansla

quansla

    biết lệnh xclip

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

Đã gửi 19 August 2016 - 12:05 AM

Ý kiến gì vậy quan sợ la?



Hì hì, chắc khi đó mạng lag, HÓng thôi bác ạ
  • 0

#2824 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 19 August 2016 - 12:15 PM

Chào mọi người, có thể cho em hỏi chút ý tưởng về thuật toán bảo vệ file LISP không, chẳng hạn muốn khoá file LISP để cho file đó chỉ có thể dùng cho 1 máy, trong thời gian 30ngày kề từ ngày đăng ký Lisp lần đầu, hết 30 ngày căn cứ vào mốc thời gian lúc đó tự sinh PASS đăng ký phù hợp (nếu người dùng nhập đúng sẽ cho sử dụng tiếp), khi đó người viết lissp sẽ có Lisp khác tự tạo Key phù hơpj với thời điểm đó và gửi cho Người dùng
Về cơ bản là như vậy, em muốn hỏi mọi người có ý tưởng nào có thể giúp em không. Hiện em đã làm được 1 số việc sau:

Hàm con:
1. Hàm lấy tên máy (tên USER máy tính), định dùng làm nhận diện máy, nhưng chưa ổn lắm không biết có cách khác không

(defun layTenUser(/ str)
  (setq str (substr (vla-get-supportpath(vla-get-files(vla-get-preferences(vlax-get-acad-object)))) 1 40)
	str (substr str (+ 7 (vl-string-search "Users\\" str)) 25)
	str (substr str 1 (vl-string-search "\\appdata" str)))
  str)
2. Hàm lấy ngày tháng hiện tại
(defun NowDate (/ DD MO RR YY) ; lay ngay hom nay
  (setq rr (rtos (getvar 'cdate) 2 8))
  (setq YY (substr rr 1 4)
	MO (substr rr 5 2)
	DD (substr rr 7 2))
  (list DD MO YY))
3. Hàm lấy ngày kết thúc dựa theo hai thống số: ngày bắt đầu (dạng list) và số ngày cho phép (dạng interger)

;; Ví dụ dùng (ngKT_tuNg (nowdate) 30)
(defun ngKT_tuNg (DStart delta)
  (setq coTh 0 coYY 0)
  (setq ngKT (+ delta (read(car DStart))))
  (if (> ngKT 30) (setq coTh 1 ngKT (rem ngKT 30)))
  (setq thKT (+ coTh (read (cadr DStart))))
  (if (> thKT 12) (setq coYY 1 thKT (rem thKT 12)))
  (setq YYKT (+ coYY (read(last DStart))))
  (mapcar '(lambda(x) (rtos x 2 0)) (list ngKT thKT YYKT))
  (list
    (apply '+ (mapcar '(lambda(x y ) (* x y)) '( 1 12 365) (list ngKT thKT YYKT)))
    (strcat (car (setq r1
			(mapcar '(lambda(x) (if (< x 10)
					      (strcat "0" (rtos x 2 0))
					      (rtos x 2 0)))
				(list ngKT thKT YYKT))))
	    "." (cadr r1) "." (last r1)))
  )
mong các bác giúp thêm

1. Hàm nhận diện máy.
2. Thuật toán đăng ký lần đầu (1 lần duy nhất)
3. Thuật toán tự sinh Key đăng ký phù hợp với : tên máy, thời điểm đăng ký, thêm một số thônt tín khác thì càng tốt (ví dụ Gmail đăng ký, key có giá trị đăng ký trong 3 ngày,... chẳng hạn

 

 

Mình có chút ý kiến chia sẻ với bạn về vấn đề này.

 

1. Hiện nay việc cấp quyền sử dụng phần mềm hay ứng dụng dần chuyển sang xu hướng quản lý theo tài khoản đăng ký. Cái này đảm bảo quyền lợi cho người dùng khi nâng cấp máy, thay máy hoặc sở hữu nhiều máy cho công việc (máy nhà, máy cơ quan...). Từ Cad 2014 trở lên Autodesk đã hỗ trợ cung cấp ID người dùng thông qua tài khoản A360. Bạn tham khảo các biến hệ thống ONLINEUSERID, ONLINENAME. ID người dùng được cung cấp bởi ONLINEUSERID được đảm bảo là duy nhất cho mỗi User. Tất nhiên nếu bạn bán hàng cho đối tượng người dùng sử dụng cad từ 2013 trở xuống thì cách này không được hỗ trợ.

 

2 Về cách xác định thời gian dùng thử mình nghĩ chỉ cần dùng biến hệ thống Date là đủ. Khi khởi chạy ứng dụng lần đầu, lấy giá trị của biến Date, mã hóa lại, lưu registry. Các lần chạy ứng dụng sau, lại lấy giá trị biến Date trừ đi giá trị đã lưu registry là ra số ngày sử dụng. Việc mã hóa như thế nào và lưu registry ra sao để khó mò ra thì mình không bàn nhé. Nó phụ thuộc vào khả năng của bạn.

Gợi ý thêm cho bạn về việc mã hóa để tránh decode. Toàn bộ thuật toán mã hóa nên nhúng trong 1 hàm không tên. các công cụ decode file fas hoặc vlx hiện nay như mình biết thì đang bó tay trong việc truy cập nội dung hàm không tên.

 

3. Thuật toán tự sinh keys đăng ký mình nghĩ cũng không nên bàn, mỗi người có 1 cách làm và chẳng ai giống ai. Nó phụ thuộc vào kiến thức về lĩnh vực mã hóa của mỗi người.

 

Mình có một số ứng dụng bán trên Autodesk AppStore cũng sử dụng phương pháp trên. Hiệu quả.


  • 1

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


#2825 naturooo

naturooo

    biết zoom

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

Đã gửi 23 August 2016 - 03:22 PM

Chào các anh:

Do nhu cầu công việc em muốn nhờ các anh điều chỉnh giúp em lisp xuất tọa độ COORN cho đường Pline kín như sau:

 

1. Thêm lựa chọn điểm đầu của danh sách xuất ra;

 

2. Lựa chọn chiều xuất tọa độ các đỉnh đường Pline kín (theo chiều kim đồng hồ hoặc ngược kim đồng hồ hoặc lisp để cố định chiều xuất là theo chiều kim đồng hồ luôn cũng được) bắt đầu từ điểm lựa chọn trên.

 

Trân trọng cảm ơn!

 

http://www.cadviet.c...36008_coorn.lsp


  • -1

#2826 quansla

quansla

    biết lệnh xclip

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

Đã gửi 07 September 2016 - 06:58 PM

[Hỏi]

Các bác cho hỏi, trong Dialog của AutoLisp, thì có thể thay đổi cỡ chữ (Size) và Font chữ của các Label, danh sách, danh sách thả xuống, edit_box,... được không? nếu được thì cách làm như thế nào,

Hiện trong việc xử lý đối tượng: List_box, hoặc Popup_list chữ và Font hiện tại hơi nhỏ, mắt lại kém,. Mở rộng hơn, liệu có thể đổi màu chữ trong các đối tượng trên không?

xin cảm ơn


  • 0

#2827 huunhantvxdts

huunhantvxdts

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 366 Bài viết
Điểm đánh giá: 53 (tàm tạm)

Đã gửi 22 September 2016 - 11:41 AM

Mọi người cho mình hỏi

Cho 1 polyline làm sao để lấy được tọa độ y lớn nhất và nhỉ nhất của đỉnh polyline


  • 0

#2828 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 22 September 2016 - 12:56 PM

1- Lấy list các đỉnh thì chắc là bạn biết rồi.

2- Sort list theo Y trên 4R cũng nhiều.

3- Kết quả "Anh ở đầu sông, Em cuối sông".


  • 1

#2829 lenhatanh

lenhatanh

    biết vẽ polygon

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

Đã gửi 24 September 2016 - 10:08 PM

Hi Thaistreetz !

Bạn có thể cho một ví dụ về nhúng "thuật toán mã hóa..." trong 1 hàm không tên được không.

 


  • 0

#2830 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 29 September 2016 - 04:54 PM

Chào các bác!

Em có viết một lisp để tạo nhiều Viewport hiển thị nội dung bên Model. Với số lượng Viewport ít thì OK không sao nhưng khi  số lượng Viewport lớn (50 chẳng hạn) thì các Viewport đầu bị mất và chỉ còn mấy Viewport cuối. Em không biết nguyên nhân tại sao nữa. Mong các bác giải thích và cho phương thức với ạ!

Cảm ơn các bác rất nhiều!

(defun C:99 (/	       CHCAO	 CHNGANG   I	     N
	     PNTDONGNAM		 PNTTAYBAC PNT_CHEN  PNT_I
	     PNT_I+1
	    )
  (vl-load-com)
  (setq Olmode (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setvar 'TILEMODE 0)
  (setq	Pnt_Chen
	 (getpoint
	   "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n khung: "
	 )
  )
  (setq n (getint "\nNhap so Viewport: "))
  (setq ChCao 400.0)
  (setq ChNgang 350.0)
  (setq i 0)
  (vl-cmdf "Zoom" "E")
  (while (< i n)
    (setq Pnt_i (polar Pnt_Chen 0 (* i 800.0)))
    (setq Pnt_i+1 (polar Pnt_Chen 0 (* (+ i 1) 400.0)))
    (setq PntTayBac (polar Pnt_i (/ pi 2) 400.0))
    (setq PntDongNam (polar Pnt_i 0 350.0))
    (vl-cmdf "Zoom" "W" PntTayBac PntDongNam)
    (vl-cmdf "Mview" PntTayBac PntDongNam)
    (vl-cmdf "MSpace")
    (vl-cmdf "Zoom" "E")
    (vl-cmdf "PSpace")
    (vl-cmdf "PAN" Pnt_i Pnt_i+1)
    (setq i (1+ i))
  )
  (vl-cmdf "Zoom" "E")
  (setvar "OSMODE" Olmode)
  (Princ)
)

  • 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







#2831 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 29 September 2016 - 05:01 PM

Hình như tối đa view được 64 VP, biến hệ thống => MAXACTVP


  • 0

#2832 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 29 September 2016 - 05:14 PM

Hình như tối đa view được 64 VP, biến hệ thống => MAXACTVP

Không phải bác ạ!

Bác xem lại xem.


  • 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







#2833 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 29 September 2016 - 06:18 PM

Khả năng lỗi là do hiện tượng "nuốt lệnh". Đây là căn bệnh nghe lạ như virut Zika, nhưng bản chất là: trong quá trình lặp, nhiều khi một lệnh nào đó bị "nuốt" - tức là chưa kịp thực hiện lệnh thì đã bị lệnh kế tiếp nhảy vào.

Hàm (command "zoom"...) khi dùng trong vòng lặp hay gặp bệnh này.

Thử thay tất cả (cômand "zoom"...) bằng các (vla-Zoom...) xem sao.

Dự là xử được!

P/S: máy bác chạy ngọt, thử 500 đếm đủ 501.


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


#2834 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 29 September 2016 - 06:28 PM

Khả năng lỗi là do hiện tượng "nuốt lệnh". Đây là căn bệnh nghe lạ như virut Zika, nhưng bản chất là: trong quá trình lặp, nhiều khi một lệnh nào đó bị "nuốt" - tức là chưa kịp thực hiện lệnh thì đã bị lệnh kế tiếp nhảy vào.

Hàm (command "zoom"...) khi dùng trong vòng lặp hay gặp bệnh này.

Thử thay tất cả (cômand "zoom"...) bằng các (vla-Zoom...) xem sao.

Dự là xử được!

P/S: máy bác chạy ngọt, thử 500 đếm đủ 501.

Cháu đã thử nhưng vẫn bị mất bác ạ! Bác cho cháu xin chút code tham khảo được không ạ?

Cháu cảm ơn bác!

 

Cháu sửa.

(defun C:99 (/	       CHCAO	 CHNGANG   I	     N
	     PNTDONGNAM		 PNTTAYBAC PNT_CHEN  PNT_I
	     PNT_I+1
	    )
  (vl-load-com)
  (setq Olmode (getvar "OSMODE"))
  (setvar "OSMODE" 0)
  (setvar 'TILEMODE 0)
  (setq	Pnt_Chen
	 (getpoint
	   "\nCh\U+1ECDn \U+0111i\U+1EC3m ch\U+00E8n khung: "
	 )
  )
  (setq n 50);;; (getint "\nNhap so Viewport: "))
  (setq ChCao 400.0)
  (setq ChNgang 350.0)
  (setq i 0)
  (vla-ZoomExtents (vlax-get-acad-object))
  (while (< i n)
    (setq Pnt_i (polar Pnt_Chen 0 (* i 800.0)))
    (setq Pnt_i+1 (polar Pnt_Chen 0 (* (+ i 1) 400.0)))
    (setq PntTayBac (polar Pnt_i (/ pi 2) 400.0))
    (setq PntDongNam (polar Pnt_i 0 350.0))
    (vla-ZoomWindow (vlax-get-acad-object) (vlax-3d-point PntTayBac) (vlax-3d-point PntDongNam))
    (vl-cmdf "Mview" PntTayBac PntDongNam)
    (vl-cmdf "MSpace")
    (vla-ZoomExtents (vlax-get-acad-object))
    (vl-cmdf "PSpace")
    (vl-cmdf "PAN" Pnt_i Pnt_i+1)
    (setq i (1+ i))
  )
  (vla-ZoomExtents (vlax-get-acad-object))
  (setvar "OSMODE" Olmode)
  (Princ)
)

  • 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







#2835 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 30 September 2016 - 10:46 AM

Hình như tối đa view được 64 VP, biến hệ thống => MAXACTVP

Cảm ơn bác nhiều!

Em đã giải quyết xong vấn đề.

(setvar "MAXACTVP" 64)

Của em lúc đầu bằng 16 nên toàn bị mất khi tạo Mview.

Nếu nhiều Mview hơn 64 em tạo ra các Layout và chia đều Mview vào trong đó.


  • 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







#2836 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 30 September 2016 - 01:45 PM

Mặc dù đã set biến MAXACTVP là 64 nhưng đôi khi vẫn bị mất view khi kết thúc lệnh
Vì vậy thêm câu lệnh này để hiện tất cả các viewport nhé
"setq drawing (vla-get-activedocument (vlax-get-acad-object)))
(vla-Regen drawing acAllViewports)

:D
  • 1

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#2837 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 30 September 2016 - 06:11 PM

Cảm ơn bác nhiều!

Em đã giải quyết xong vấn đề.

(setvar "MAXACTVP" 64)

Của em lúc đầu bằng 16 nên toàn bị mất khi tạo Mview.

Nếu nhiều Mview hơn 64 em tạo ra các Layout và chia đều Mview vào trong đó.

Set 64 vẫn tạo 500 cái ngon ơ nhé!


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


#2838 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 01 October 2016 - 09:25 AM

Mặc dù đã set biến MAXACTVP là 64 nhưng đôi khi vẫn bị mất view khi kết thúc lệnh
Vì vậy thêm câu lệnh này để hiện tất cả các viewport nhé
"setq drawing (vla-get-activedocument (vlax-get-acad-object)))
(vla-Regen drawing acAllViewports)

:D

 

Dạ không được bác ạ! Chỉ tối đa 64 Viewport.

 

 

Set 64 vẫn tạo 500 cái ngon ơ nhé!

Ơ thế ạ! Cháu chỉ tạo dc 64 cái. Các viewport mất. @@


  • 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







#2839 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 03 October 2016 - 09:50 AM

Dạ không được bác ạ! Chỉ tối đa 64 Viewport.

Đúng là chỉ tạo được 64 view nhưng khi bác tạo từng view một theo câu lệnh lisp, nếu không dùng lệnh regen theo câu lệnh như trên thì kết thúc lệnh autolisp thì sẽ mất 1 số view không thấy nhé


  • 0

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#2840 thanhduan2407

thanhduan2407

    biết lệnh adcenter

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

Đã gửi 02 December 2016 - 06:45 AM

Các bác cho em hỏi chút ạ!

Em có 1 tập điểm Point (gọi là LtsAll), sau khi em Sort tọa độ Y giảm dần thì em thao tác như sau:

Lấy tọa độ Y thằng có tọa độ Y lớn nhất cộng trừ với 1 gia số a chẳng hạn, tất cả thằng tọa độ nào có Y nằm trong (Ymax-a; Ymax+a) thì lấy nó ra cho vào 1 list (gọi là lts1).

Sau đó loại bỏ lts1 ra khỏi LtsAll (ta được lts2).

Lại Sort lts2 lấy ra dc Ymax và lại tiếp tục vòng lặp cho đến khi không con phần tử nào nữa. Em đã làm được điều này nhưng chưa biết cách chặn điểm dừng của vòng lặp. Mong các bác chỉ dùng em cách thức với ạ.

Cảm ơn các bác nhiều!

(defun C:90 (/ ENDYP I K LSTOBJ	LTS1 LTS2 LTSPOINT LTS_SORTY_REDUCE P
	     POINTFINAL	STARTYP	STEP Flag
	    )
  (setq	i      0
	Step   10.0
	LstObj (LM:ss->ent (ssget (list (cons 0 "POINT"))))
  )
  (repeat (length LstObj)
    (setq LtsPoint
	   (cons (cdr (assoc 10 (entget (nth i LstObj))))
		 LtsPoint
	   )
	  i (1+ i)
    )
  )
  (setq
    Lts_sortY_Reduce
     (vl-sort
       LtsPoint
       (function
	 (lambda (e1 e2) (> (cadr e1) (cadr e2)))
       )
     )
  )
  (setq StartYP (cadr (nth 0 Lts_sortY_Reduce)))
  (setq EndYP (cadr (last Lts_sortY_Reduce)))
  (setq Lts2 (list))
  (setq Lts_sortY_Reduce (TD:LM:RemoveItems Lts1 Lts_sortY_Reduce))
  (setq Flag T)
  (while Flag
    (progn
      (if (>= StartYP EndYP)
	(progn
	  (setq
	    Lts_sortY_Reduce
	     (vl-sort
	       Lts_sortY_Reduce
	       (function
		 (lambda (e1 e2) (> (cadr e1) (cadr e2)))
	       )
	     )
	  )
	  (setq k 0)
	  (setq Lts1 (list))
	  (while (< k (- (length Lts_sortY_Reduce) 1))
	    (if
	      (and
		(<= (cadr (nth k Lts_sortY_Reduce))
		    (+ StartYP (* Step 0.5))
		)
		(> (cadr (nth k Lts_sortY_Reduce))
		   (- StartYP (* Step 0.5))
		)
	      )
	       (progn
		 (setq p
			(list (car (nth k Lts_sortY_Reduce))
			      (cadr (nth k Lts_sortY_Reduce))
			)
		 )
		 (setq Lts1 (append Lts1 (list p)))
	       )
	    )
	    (setq k (1+ k))
	  )
	  (setq
	    Lts1
	     (vl-sort
	       Lts1
	       (function (lambda (e1 e2) (< (car e1) (car e2))))
	     )
	  )
	  (setq	Lts_sortY_Reduce
		 (TD:LM:RemoveItems
		   Lts1
		   Lts_sortY_Reduce
		 )
	  )
	  (setq Lts2 (append Lts2 Lts1))
	)
	(Progn
	  (setq Flag nil)
	  (setq StartYP (cadr (nth 0 Lts_sortY_Reduce)))
	)
      )
    )
  )
  (princ)
)
(defun LM:ss->ent (ss / i l)
  (if ss
    (repeat (setq i (sslength ss))
      (setq l (cons (ssname ss (setq i (1- i))) l))
    )
  )
)
;;;;;;(TD:LM:RemoveItems  '(2 4 6) '(1 2 3 4 5 6 7 8))
(defun TD:LM:RemoveItems (items lst / i items1)
  (setq i -1)
  (setq items1 (mapcar '(lambda (x) (vl-position x lst)) items))
  (vl-remove-if '(lambda (x) (member (setq i (1+ i)) items1)) lst)
)

  • 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