-
Số lượng nội dung
1175 -
Đã tham gia
-
Lần ghé thăm cuối
-
Ngày trúng
28
Bài đăng được đăng bởi thanhduan2407
-
-
Vào lúc 17/7/2019 tại 15:24, united đã nói:Không biết anh @thanhduan2407 còn ở đây không?
Em xin được nhờ anh (hoặc bất kỳ anh nào) sửa giúp em 1 chút lisp VTL2 để "đối tượng thứ hai" không phải là 1 đường mà có thể là nhiều đường.
Trên diễn đàn có 1 lisp làm được tương tự (lisp Batter) nhưng với các đối tượng dài (hoặc rải dày) thì nó làm việc rất chậm.
Về tác dụng thì như hình: Chỉ cần chọn đối tượng thứ nhất (1) và chọn nhóm đối tượng thứ 2 (2&3) rồi Enter để ra được kết quả như hình. Còn với lisp VTL2 thì phải thực hiện rải 2 lần và xóa bớt đối tượng thừa, hoặc phải Break đối tượng (1) thành các đoạn nhỏ.
PS: hình chỉ là minh họa chứ em thường rải nhiều đối tượng khá phức tạp nên rất mất thời gian.
- Thêm 1 điều nữa là lisp này có nhược điểm là không chạy liên tục, mỗi lần rải lại phải thực hiện lệnh từ đầu, không như lisp #dưới em up.
Bạn nhờ người khác viết lisp tức là chiếm dụng thời gian. Bạn nên trả phí cho công việc này. Khởi điểm ra giá 300k.
-
2
-
-
Thế nên cứ phải chuyển tiền trước mới viết. Hiii.
Em có đọc được stt trên tường của bác @Doan Van Ha thấy thấm.
Học mà không hỏi: Một là thiên tài, hai là cố thủ cái ngu.
Học và hỏi: Chuyện bình thường.
Không học mà hỏi: Bóc lột trí tuệ người khác.
-
1
-
-
Xin phép em viết lisp này! Không biết như vậy đã hoàn thiện chưa ạ! Mong các bác chỉ giáo!
(vl-load-com) (defun C:DUAN (/ ELAST LOOP LTSOBJ PT1 PT2 SSA) (defun *error* (msg) (if Olmode (setvar 'osmode Olmode) ) (if (not (member msg '("*BREAK,*CANCEL*,*EXIT*"))) (princ (strcat "\nError: " msg)) ) (princ) ) (setq Olmode (getvar "OSMODE")) (setvar 'CMDECHO 0) (Prompt "\nQu\U+00E9t ch\U+1ECDn \U+0111\U+1ED1i t\U+01B0\U+1EE3ng \U+0111\U+1EC3 copy v\U+00E0 xoay:" ) (setq ssa (ssget)) (setq Loop T) (setq pt1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m chu\U+1EA9n: ")) (while Loop (setq pt2 (getpoint pt1 "\nCh\U+1ECDn \U+0111i\U+1EC3m \U+0111\U+1EB7t: ")) (cond (T (if pt2 (progn (setq Elast (entlast)) (command "copy" ssa "" pt1 pt2 ) (setq LtsObj (GetNewEnts Elast)) (command "rotate" (CV:List-to-ss LtsObj) "" pt2 pause) ) (setq Loop nil) ) ) ) ) (setvar 'OSMODE Olmode) (princ) ) (defun CV:List-to-ss (lst / ss) (setq ss (ssadd)) (foreach item lst (or (= (type item) 'Ename) (setq item (vlax-vla-object->ename item)) ) (setq ss (ssadd item ss)) ) ss ) (defun GetNewEnts (ename / new) (while (setq ename (entnext ename)) (if (entget ename) (setq new (cons ename new)) ) ) new ) ;|«Visual LISP© Format Options» (200 2 60 2 nil "end of " 80 9 0 0 0 T T T T) ;*** DO NOT add text below the comment! ***|;-
1
-
-
1 giờ} trướ}c, Doan Van Ha đã nói:Lỗi sao được mà lỗi Duan ơi.
Thử thay dòng này vào dòng của ndtnv xem:
(setq LtsZichZac ((eval (read(strcat "SortPoint_" style))) x y))
Sorry bác Doan Van Ha. Cháu nhầm với phía trên khi biến chưa xác định. Lúc này là hàm đã xác định rồi.
11 phút trước, ngokiet đã nói:Mình giải thích cho bạn
- Hàm eval trả về giá trị biến.
- Hàm read đọc tên biến.
Tuy nhiên mình cảm thấy nếu bác viết lại hàm sortpoint thành 1 hàm có các trường hợp thì hay hơn vì bác cũng phải làm 4 hàm tương tự nhau. Mình viết như vậy để bác có thể dùng hàm như biến, biến như hàm thì linh động hơn.
Mình share cho bạn hàm sort 2 chiều theo 8 trường hợp luôn
(defun sortx(s1 st / f1 f2 f3 f4) (mapcar 'set '(f1 f2 f3 f4) (mapcar 'eval (nth st '((cadr car > >) (cadr car > <) (cadr car < <) (cadr car < >) (car cadr > >) (car cadr > <) (car cadr < <) (car cadr < >))))) (vl-sort s1 '(lambda(x y) (if (equal (f1 x) (f1 y) 0.1) (f4 (f2 x) (f2 y)) (f3 (f1 x) (f1 y))))))
Bác có thể thay đổi theo ý mình và chỉnh sửa cũng dễ.
St : Là style của bạn (Bạn có thể dùng là (vl-position style '("PTTD" "TPTD" ....))
Mình nghĩ nên dùng style là số thì dễ hơn.
Đây là mình sử dụng các biến fx là các hàm tương ứng khi sort.
Cảm ơn bác! Em vội quá chưa test, cứ nghĩ ở câu hỏi hôm qua. Cảm ơn bác cho ví dụ dễ hiểu và dễ học hỏi.
-
139 phút trước, ngokiet đã nói:Thanks bác sửa dùm do quên test.
Nhưng mình thích
(setq LtsZichZac ((eval(read(strcat “SortPoint_” style))) LtsPoint kccum))
hơn vì eval không phải chạy lệnh.
Nếu không cho LtsPoint kccum vào dấu " " thì sẽ bị lỗi bác ạ!
-
37 phút trước, ndtnv đã nói:Dòng đó là của bạn ngokiet
Theo cách của tôi là:
(setq LtsZichZac (eval (read (strcat "(SortPoint_" style " LtsPoint kccum)" ))))
26 phút trước, Doan Van Ha đã nói:1 ví dụ viết theo cách viết cho gọn của anh ndtnv để thanhduan dễ hiểu:
(defun C:HA() (setq x 1 y 2) (initget "TDTP DTTP TPDT PTDT") (setq style (getkword "\nStyle [TDTP/DTTP/TPDT/PTDT]: ")) (setq LstZickZac (eval (read (strcat "(SortPoint_" style " x y " ")"))))) (defun SortPoint_TDTP(x y) (+ x y)) (defun SortPoint_DTTP(x y) (- x y)) (defun SortPoint_TPDT(x y) (* x y)) (defun SortPoint_PTDT(x y) (/ x y))
Cảm ơn anh @ndtnv và bác @Doan Van Ha nhiều!
Thiếu "(" và ")" là cái em/cháu vướng.
-
1 giờ} trướ}c, ndtnv đã nói:Bạn test xem
(setq LtsZichZac ((read(strcat “SortPoint_” style)) LtsPoint kccum))
có chạy được không?
Cách lập trình của tôi là kết hợp 4 hàm SortPoint thay cho kết hợp 4 lệnh gọi, trên đó chỉ là VD kết hợp 4 lệnh gọi
Có thể có cách kết hợp khác hay hơn, nếu bạn nào biết xin chia sẻ.
Cảm ơn bác đã quan tâm đến bài viết của em. Em test của bác không được bác ạ!
Nó lỗi tại dòng của bác.
-
Cháu cảm ơn bác @Doan Van Ha! và bác @ngokiet!
(cond ((= Style "TDTP") (setq LtsZichZac (SortPoint_TDTP LtsPoint kccum)) ) ((= Style "DTTP") (setq LtsZichZac (SortPoint_DTTP LtsPoint kccum)) ) ((= Style "TPDT") (setq LtsZichZac (SortPoint_TPDT LtsPoint kccum)) ) ((= Style "PTDT") (setq LtsZichZac (SortPoint_PTDT LtsPoint kccum)) ) )Đoạn này lặp lại 4 lần. Dài 1 chút nhưng giải quyết được vấn đề rồi ạ.
-
1 giờ} trướ}c, Botot đã nói:Không hiểu ý của bạn, đọc câu này mình hiểu là ai đó muốn viết lisp có phí trên CV phải xin phép bạn trước, và “kiếm tiền trên công sức của ngkhac là ko đc” tức là bạn bị ng khác lấy source của bạn đem bán hả?
ps: tui không phải “bác quân”, chỉ thấy câu nói của bạn khá là lạ!
Tức là lisp này mình viết và tặng anh em trên diễn đàn Trắc Địa, cả kho lisp của mình luôn. Mình biết bạn Quân lấy về và phát triển thêm rồi bán. Thậm chí còn đăng ký bản quyền. Có rất nhiều người đã phản ánh tới mình nhưng mình không bận tâm lắm.
Tác giả viết và bán thì không sao nhưng không phải của mình thì đừng bán.
-
1
-
-
2 giờ trước, ngokiet đã nói:Vì bác ấy ghi
(setq choose ham1)...
ví dụ:
(setq ch +)
(ch 5 3) = 8
Ch lúc đó là hàm +
Trong lisp thì hàm cũng là biến.
Sorry bác, trong hàm có biến đi kèm, mà biến chưa xác định.
-
20 phút trước, HOAILINHLINH đã nói:cảm ơn các bạn đã quan tâm hiện có bác quân giúp cảm ơn tất cả mọi người
Nếu là Lang Quân thì Free thì ko sao. Nhưng tính phí phải hỏi ý kiến mình. Kiếm tiền trên công sức của ngkhac thì ko dc
-
1
-
-
7 phút trước, Doan Van Ha đã nói:Khi biến (x1, x2...) chưa xác định mà muốn dùng ham1, ham2... thì không thể viết kiểu đó.
Phải viết là (defun C:ham1()...
Khi đó >> (cond ((= a (C:ham1))...
Dạ. Cháu cảm ơn bác. Cháu hiểu cách ấy rồi.
-
7 phút trước, Doan Van Ha đã nói:Nó!
(defun C:AB() (initget "TDTP DTTP TPDT PTDT") (setq a (getkword (strcat "\nB\U+1EA1n mu\U+1ED1n \U+0111\U+00E1nh s\U+1ED1 hi\U+1EC7u theo ki\U+1EC3u n\U+00E0o?[TDTP - Tr\U+00EAn D\U+01B0\U+1EDBi - Tr\U+00E1i Ph\U+1EA3i / DTTP - D\U+01B0\U+1EDBi Tr\U+00EAn - Tr\U+00E1i Ph\U+1EA3i / TPDT - Tr\U+00E1i ?Ph\U+1EA?3i - D\U+01B0\U+1EDBi Tr\U+00EAn / PTDT - Ph\U+1EA3i Tr\U+00E1i - ?D\U+01B0\U+1EDB?i Tr\U+00EAn]?"))) (cond ((= a "TDTP") (Ham1 3 5)) ((= a "DTTP") (Ham2 3 5)) ((= a "TPDT") (Ham3 3 5)) ((= a "PTDT") (Ham4 3 5)))) (defun Ham1 (x1 x2) (+ x1 x2)) (defun Ham2 (x1 x2) (- x1 x2))
Dạ, cái x1 và x2 chưa xác định bác ạ!
Cháu đang muốn xác định hàm phù hợp với lựa chọn bác ạ! Cháu không muốn lặp lại hàm.
-
10 phút trước, beckakham333 đã nói:Em hiện tại đang bị vấn đề này, mong cao nhân chỉ giáo giúp em. Em hơi yếu công nghệ, mong được chỉ giáo cụ thể ạ. Em cảm ơn nhiều nhiều.
Bạn copy dòng này rồi Paste vào dòng Command. Back ngược lại tìm đến Folder "Plot Styles". Ở trên có đường link download file monochrome.ctb rồi. Copy dán vào đó là dc.
(startapp "explorer" (vl-filename-directory (getvar 'FONTMAP)))
-
5 phút trước, Doan Van Ha đã nói:Cạnh tranh khốc liệt quá!
Đúng nghề của cháu bác ạ!
-
Các bác cho em hỏi 1 chút!
Em có các hàm:
defun ham1(x1 x2 / ); defun ham2(x1 x2 / ); defun ham3(x1 x2 / ); defun ham4(x1 x2 / ),....
Em đang làm 1 cái tuỳ chọn.
(if (null *Style*)
(setq *Style* "TDTP")
)
(initget "TDTP DTTP TPDT PTDT")
(if (setq Style (getkword
(strcat "\nB\U+1EA1n mu\U+1ED1n \U+0111\U+00E1nh s\U+1ED1 hi\U+1EC7u theo ki\U+1EC3u n\U+00E0o?
[TDTP - Tr\U+00EAn D\U+01B0\U+1EDBi - Tr\U+00E1i Ph\U+1EA3i /
DTTP - D\U+01B0\U+1EDBi Tr\U+00EAn - Tr\U+00E1i Ph\U+1EA3i /
TPDT - Tr\U+00E1i Ph\U+1EA3i - D\U+01B0\U+1EDBi Tr\U+00EAn /
PTDT - Ph\U+1EA3i Tr\U+00E1i - D\U+01B0\U+1EDBi Tr\U+00EAn]
<"
*Style*
">: "
)
)
)
(setq *Style* Style)
)Em muốn làm cái tuỳ chọn như này nhưng sẽ là sai. Nhờ các bác chỉ dẫn dùm với ạ
(cond
((= Style "TDTP")
(setq Choose Ham1)
)
((= Style "DTTP")
(setq Choose Ham2)
)
((= Style "TPDT")
(setq Choose Ham3)
)
((= Style "PTDT")
(setq Choose Ham4)
)
) -
Nếu bạn trả phí thì liên hệ với mình qua Email: Heaven2407@gmail.com hoặc số điện thoại 0972.0168.25 hoặc qua Facebook: https://www.facebook.com/thanhduan.mda
-
27 phút trước, lethanh2004 đã nói:hề hề . Bác Nào viết đc inbox 0973852740 ạ
Bạn liên hệ mình 0972.0168.25 hoặc Email: Heaven2407@gmail.com
-
14 giờ trước, ngokiet đã nói:Hình như nó hỏi kiểu báo cho bạn biết có chương trình muốn sửa đổi file hay không?
Cái này dùng để bảo vệ dữ liệu chống thay đổi trái phép của windows. Muốn ko hỏi thì phải tắt Uac đi.
Tìm hiểu thêm về UAC trên Google nhé.
Cảm ơn bác nhiều!
Em sẽ nghiên cứu thêm ít nữa. Chưa thấy có tác dụng dù em làm thủ công nó vẫn hỏi.
-
Các bác cho em hỏi 1 chút ạ!
Em dùng Win 10, 64 bit. Em dùng lisp để rename hoặc copy ở Ổ C: mà các file không có động tĩnh gì?
Về cấu trúc vl-file-rename và vl-file-copy đều rất ổn. Phải chăng cần can thiệp về Permission cho phép tạo file hoặc đổi tên file?
Bản thân em rename bằng tay, sau khi kết thúc thì máy tính cũng hỏi Yes or No.
Mong nhờ các bác cho em sáng dạ thêm chút ạ. Hic hic
-
Vào lúc 6/11/2018 tại 09:03, ketxu đã nói:Nhìn code quen quá ^^
@ketxu Không nói nên điều gì. Hehehehe.
Ngày ấy anh có biết gì mấy đâu. Giờ thì.....làm chủ được cái mình viết rồi
-
Hãy xem video này!
-
1
-
-
Vừa xong, Doan Van Ha đã nói:Thế mà chả bao giờ thấy mời nhậu (?)
Hic. Bác ở xa quá! Đợt bác ra HN cháu lại đang đi đo đạc. Ketxu mấy lần í ới mà chưa ngồi dc bác ạ. Hẹn bác dịp nào bác ra HN nhé!
-
11 phút trước, Doan Van Ha đã nói:Tuyệt vời quá bác ạ! Đúng là cháu thật may mắn được biết bác. Hii
Chúc bác @Doan Van Ha buổi tối nhiều niềm vui!
(YÊU CẦU) LISP GHI CAO ĐỘ VÀ KHOẢNG CÁCH LẺ MẶT CẮT
trong AutoLisp
Đã đăng · Trả lời báo cáo
Cứ nói là 1 hay 2 củ gì đó thì bài viết được quan tâm thôi.