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

#101 dotracchien

dotracchien

    biết vẽ line

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

Đã gửi 13 May 2008 - 10:59 PM

Các bạn cho hỏi khi load 1 file .lsp lên mà CAD thông báo tại dòng nhắc COMMAND la:
error: malformed list on input
Vậy đó là lỗi gì vậy.Mong dc chỉ giáo.
  • 0

#102 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 14 May 2008 - 11:06 AM

Các bạn cho hỏi khi load 1 file .lsp lên mà CAD thông báo tại dòng nhắc COMMAND la:
error: malformed list on input
Vậy đó là lỗi gì vậy.Mong dc chỉ giáo.

Thiếu dấu đóng ngoặc đơn ở đâu đó!
  • 1

#103 nguyenthuan

nguyenthuan

    Chưa sử dụng CAD

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

Đã gửi 14 May 2008 - 11:54 AM

Lỗi ở các chỗ màu đỏ. Bạn thiếu 2 dấu cách (space). Góp ý:
1) Bạn mới bắt đầu, hãy tập thói quen thận trọng và chuẩn xác khi coding. Với kiểu lỗi này, khi bạn lập 1 chương trình tương đối dài sẽ không kiểm nổi đâu!
2) Những chỗ ra vô đầu dòng nhất quán theo một quy luật rõ ràng sẽ giúp bạn giảm thiểu nhiều lỗi không đáng có.

cảm ơn huynh ssg nhiều.Mới bắt đầu cho nên lũng cũng thế đấy .Học từ cái ban đầu mới quan trọng . :blush:

Khi có pt1 ở dòng 2 thì cad sẽ có 1 đường nối từ pt1 đến cursor của bạn trong quá trình bạn chọn điểm thứ 2 , cái này để trực quan hơn thôi

còn cái "À quên " cảm ơn bạn h2c nhiều nhe.:cheers: .

Sẽ còn nhờ các huynh chỉ giúp nhiều đẻ có vốn kiến thức chiến đấu với mọi người trên diễn đàn ,chiến đấu để còn lên level như các bác nguyenhoanh ,hay ssg hay ... chẳng hạn.
  • 0

#104 MANHHUNGXDA

MANHHUNGXDA

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 926 Bài viết
Điểm đánh giá: 458 (tốt)

Đã gửi 14 May 2008 - 01:27 PM

cảm ơn huynh ssg nhiều.Mới bắt đầu cho nên lũng cũng thế đấy .Học từ cái ban đầu mới quan trọng . :blush:


còn cái "À quên " cảm ơn bạn h2c nhiều nhe.:cheers: .

Sẽ còn nhờ các huynh chỉ giúp nhiều đẻ có vốn kiến thức chiến đấu với mọi người trên diễn đàn ,chiến đấu để còn lên level như các bác nguyenhoanh ,hay ssg hay ... chẳng hạn.


ơ hơ, bác Hoành và bác ssg chơi võ lâm bao giờ vậy?
  • 0
Hãy ước cho trọn 1 ước mơ!

#105 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 05 June 2008 - 11:19 AM

Bác Hoành cho hỏi nhờ vấn đề này với.
Tôi có làm 1 lisp để chuyển font chử . (bác có rồi nhưng tôi cũng thí mày mò thủ xem)
Cách hoạt động của lisp này như sau:
-Hàm chuyenmagoc đọc trong tập hợp chọn có đối tượng là text thì làm các việc sau:
+Đếm số lượng ký tự trong text.
+Dùng vòng lặp repeat với số lần bằng số ký tự trong text.
+Vòng lặp làm công việc như sau:
*bắt đầu ở ký tự đầu tiên 1 lần đọc 1 ký tự chuyển sang cho hàm cachchuyenma
*Tùy theo yêu cầu mà cachchuyenma sẽ đọc các danh sách bên dưới so sánh và cho ra kết quả trả lại cho hàm chuyenmagoc
*tăng vị trí đọc ký tự lên, nối chuổi vừa đọc được thành nội dung mới và thay vào nội dung tẽt cũ.
Bâygiờ tôi gặp vấn đề như sau:
-Để chuyển từ font .VN sang VNI. thì dùng danh sách tcvnravni thì chạy ổn.
-Nhưng chuyễn từ VNI. sang .VN thì dùng danh sách vniratcvn (đây là danh sách đảo ngược của danh sách trên) thì không chạy được.

Mong bác giúp đở gở cái vướngmắc này với. Cám ơn.


(defun c:tcrvn ()
(setq cachchuyenma tcvnravni)
(chuyenmagoc)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:vnrtc ()
(setq cachchuyenma vniratcvn)
(chuyenmagoc)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun chuyenmagoc (/ c e ss txt cmde )
(setq cmde (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(prompt "\nChon chu muon chinh.")
(setq ss (ssget))
(setq c 0)
(if ss (setq e (ssname ss c)))
(while e
(setq e (entget e))
; Ensure entity is text
(if (= (cdr (assoc 0 e)) "TEXT")
(progn
(setq ndtxt (cdr (assoc 1 e)))

(setq ddndtxt (strlen ndtxt))
(setq ddtrndtxt 0)
(setq txt "")

(repeat ddndtxt
(setq ddtrndtxt (+ ddtrndtxt 1))
(setq txtd (substr ndtxt ddtrndtxt 1))

(cachchuyenma)

(setq txt (strcat txt txtd))
);repeat

(setq txt (strcase txt))

(setq e (subst (cons 1 txt) (assoc 1 e) e))
(entmod e)
)
)
(setq c (1+ c)) ; Increment counter.
(setq e (ssname ss c)) ; Obtain next entity.
)
(setvar "CMDECHO" cmde)
(Prin I)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun tcvnravni ()
(cond
((= "®" txtd) (setq txtd "ñ"))
((= "§" txtd) (setq txtd "Ñ"))
((= "µ" txtd) (setq txtd "aø"))
((= "¸" txtd) (setq txtd "aù"))
((= "¶" txtd) (setq txtd "aû"))
((= "·" txtd) (setq txtd "aõ"))
((= "¹" txtd) (setq txtd "aï"))
((= "©" txtd) (setq txtd "aâ"))
((= "¢" txtd) (setq txtd "AÂ"))
((= "Ç" txtd) (setq txtd "aà"))
((= "Ê" txtd) (setq txtd "aá"))
((= "È" txtd) (setq txtd "aå"))
((= "É" txtd) (setq txtd "aã"))
((= "Ë" txtd) (setq txtd "aä"))
((= "¨" txtd) (setq txtd "aê"))
((= "¡" txtd) (setq txtd "AÊ"))
((= "»" txtd) (setq txtd "aè"))
((= "¾" txtd) (setq txtd "aé"))
((= "¼" txtd) (setq txtd "aú"))
((= "½" txtd) (setq txtd "aü"))
((= "Æ" txtd) (setq txtd "aë"))
((= "Ì" txtd) (setq txtd "eø"))
((= "Ð" txtd) (setq txtd "eù"))
((= "Î" txtd) (setq txtd "eû"))
((= "Ï" txtd) (setq txtd "eõ"))
((= "Ñ" txtd) (setq txtd "eï"))
((= "×" txtd) (setq txtd "ì"))
((= "Ý" txtd) (setq txtd "í"))
((= "Ø" txtd) (setq txtd "æ"))
((= "Ü" txtd) (setq txtd "ó"))
((= "Þ" txtd) (setq txtd "ò"))
((= "ß" txtd) (setq txtd "oø"))
((= "ã" txtd) (setq txtd "où"))
((= "á" txtd) (setq txtd "oû"))
((= "â" txtd) (setq txtd "oõ"))
((= "ä" txtd) (setq txtd "oï"))
((= "«" txtd) (setq txtd "oâ"))
((= "¤" txtd) (setq txtd "OÂ"))
((= "å" txtd) (setq txtd "oà"))
((= "è" txtd) (setq txtd "oá"))
((= "æ" txtd) (setq txtd "oå"))
((= "ç" txtd) (setq txtd "oã"))
((= "é" txtd) (setq txtd "oä"))
((= "¬" txtd) (setq txtd "ô"))
((= "¥" txtd) (setq txtd "Ô"))
((= "ê" txtd) (setq txtd "ôø"))
((= "í" txtd) (setq txtd "ôù"))
((= "ë" txtd) (setq txtd "ôû"))
((= "ì" txtd) (setq txtd "ôõ"))
((= "î" txtd) (setq txtd "ôï"))
((= "ï" txtd) (setq txtd "uø"))
((= "ó" txtd) (setq txtd "uù"))
((= "ñ" txtd) (setq txtd "uû"))
((= "ò" txtd) (setq txtd "uõ"))
((= "ô" txtd) (setq txtd "uï"))
((= "­" txtd) (setq txtd "ö"))
((= "­" txtd) (setq txtd "Ö"))
((= "õ" txtd) (setq txtd "öø"))
((= "ø" txtd) (setq txtd "öù"))
((= "ö" txtd) (setq txtd "öû"))
((= "÷" txtd) (setq txtd "öõ"))
((= "ù" txtd) (setq txtd "öï"))
((= "ú" txtd) (setq txtd "yø"))
((= "ý" txtd) (setq txtd "yù"))
((= "û" txtd) (setq txtd "yû"))
((= "ü" txtd) (setq txtd "yõ"))
((= "þ" txtd) (setq txtd "î"))
((= "£" txtd) (setq txtd "EÂ"))
((= "Ò" txtd) (setq txtd "eà"))
((= "Õ" txtd) (setq txtd "eá"))
((= "Ó" txtd) (setq txtd "eå"))
((= "Ô" txtd) (setq txtd "eã"))
((= "Ö" txtd) (setq txtd "eä"))
);cond
)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;.vni - tcvn3;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun vniratcvn ()
(cond
((= "ñ" txtd) (setq txtd "®"))
((= "Ñ" txtd) (setq txtd "§"))
((= "aø" txtd) (setq txtd "µ"))
((= "aù" txtd) (setq txtd "¸"))
((= "aû" txtd) (setq txtd "¶"))
((= "aõ" txtd) (setq txtd "·"))
((= "aï" txtd) (setq txtd "¹"))
((= "aâ" txtd) (setq txtd "©"))
((= "AÂ" txtd) (setq txtd "¢"))
((= "aà" txtd) (setq txtd "Ç"))
((= "aá" txtd) (setq txtd "Ê"))
((= "aå" txtd) (setq txtd "È"))
((= "aã" txtd) (setq txtd "É"))
((= "aä" txtd) (setq txtd "Ë"))
((= "aê" txtd) (setq txtd "¨"))
((= "AÊ" txtd) (setq txtd "¡"))
((= "aè" txtd) (setq txtd "»"))
((= "aé" txtd) (setq txtd "¾"))
((= "aú" txtd) (setq txtd "¼"))
((= "aü" txtd) (setq txtd "½"))
((= "aë" txtd) (setq txtd "Æ"))
((= "eø" txtd) (setq txtd "Ì"))
((= "eù" txtd) (setq txtd "Ð"))
((= "eû" txtd) (setq txtd "Î"))
((= "eõ" txtd) (setq txtd "Ï"))
((= "eï" txtd) (setq txtd "Ñ"))
((= "ì" txtd) (setq txtd "×"))
((= "í" txtd) (setq txtd "Ý"))
((= "æ" txtd) (setq txtd "Ø"))
((= "ó" txtd) (setq txtd "Ü"))
((= "ò" txtd) (setq txtd "Þ"))
((= "oø" txtd) (setq txtd "ß"))
((= "où" txtd) (setq txtd "ã"))
((= "oû" txtd) (setq txtd "á"))
((= "oõ" txtd) (setq txtd "â"))
((= "oï" txtd) (setq txtd "ä"))
((= "oâ" txtd) (setq txtd "«"))
((= "OÂ" txtd) (setq txtd "¤"))
((= "oà" txtd) (setq txtd "å"))
((= "oá" txtd) (setq txtd "è"))
((= "oå" txtd) (setq txtd "æ"))
((= "oã" txtd) (setq txtd "ç"))
((= "oä" txtd) (setq txtd "é"))
((= "ô" txtd) (setq txtd "¬"))
((= "Ô" txtd) (setq txtd "¥"))
((= "ôø" txtd) (setq txtd "ê"))
((= "ôù" txtd) (setq txtd "í"))
((= "ôû" txtd) (setq txtd "ë"))
((= "ôõ" txtd) (setq txtd "ì"))
((= "ôï" txtd) (setq txtd "î"))
((= "uø" txtd) (setq txtd "ï"))
((= "uù" txtd) (setq txtd "ó"))
((= "uû" txtd) (setq txtd "ñ"))
((= "uõ" txtd) (setq txtd "ò"))
((= "uï" txtd) (setq txtd "ô"))
((= "ö" txtd) (setq txtd "­"))
((= "Ö" txtd) (setq txtd "­"))
((= "öø" txtd) (setq txtd "õ"))
((= "öù" txtd) (setq txtd "ø"))
((= "öû" txtd) (setq txtd "ö"))
((= "öõ" txtd) (setq txtd "÷"))
((= "öï" txtd) (setq txtd "ù"))
((= "yø" txtd) (setq txtd "ú"))
((= "yù" txtd) (setq txtd "ý"))
((= "yû" txtd) (setq txtd "û"))
((= "yõ" txtd) (setq txtd "ü"))
((= "î" txtd) (setq txtd "þ"))
((= "EÂ" txtd) (setq txtd "£"))
((= "eà" txtd) (setq txtd "Ò"))
((= "eá" txtd) (setq txtd "Õ"))
((= "eå" txtd) (setq txtd "Ó"))
((= "eã" txtd) (setq txtd "Ô"))
((= "eä" txtd) (setq txtd "Ö"))


);cond
)

  • 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


#106 romeo1982

romeo1982

    biết lệnh mirror

  • Members
  • PipPipPip
  • 152 Bài viết
Điểm đánh giá: 19 (tàm tạm)

Đã gửi 05 June 2008 - 11:36 AM

Jin muốn hỏi về một vài lệnh trong Lisp
Ví dụ như Jin có một xâu như sau abcd45e263
Ở trong Lisp, lệnh để lấy ra xâu con cd45e từ xâu trên là gì?

Jin đã làm được líp này chưa, cho mình xin với mình cũng đang cần, cám ơn trước.
  • 0

#107 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 05 June 2008 - 05:39 PM

Jin đã làm được líp này chưa, cho mình xin với mình cũng đang cần, cám ơn trước.

Nó chỉ là 1 hàm có sẵn của AutoLisp, anh Hoành đã giải thích rồi:
(substr string start [length])
Sử dụng thế nào là tuỳ mỗi người.
  • 1

#108 traitimsat034

traitimsat034

    biết vẽ pline

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

Đã gửi 17 June 2008 - 07:03 AM

bạn thử lệnh LAYFRZ và LAYTHW chưa?

thank bác nhiều vậy mà em cứ mò mãi với lệnh -layer.
à bác cho em hỏi thêm lệnh pedit em muốn nó thực hiện tự động đến phần join thì làm thế nào, tức là tự động thực hiện với tham số "m", "y", "j" sau đó sẽ là phần mình nhập số vào để join.
  • 0

#109 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 18 June 2008 - 10:46 AM

Bác Hoành cho hỏi nhờ vấn đề này với.
Tôi có làm 1 lisp để chuyển font chử . (bác có rồi nhưng tôi cũng thí mày mò thủ xem)
Cách hoạt động của lisp này như sau:
-Hàm chuyenmagoc đọc trong tập hợp chọn có đối tượng là text thì làm các việc sau:
+Đếm số lượng ký tự trong text.
+Dùng vòng lặp repeat với số lần bằng số ký tự trong text.
+Vòng lặp làm công việc như sau:
*bắt đầu ở ký tự đầu tiên 1 lần đọc 1 ký tự chuyển sang cho hàm cachchuyenma
*Tùy theo yêu cầu mà cachchuyenma sẽ đọc các danh sách bên dưới so sánh và cho ra kết quả trả lại cho hàm chuyenmagoc
*tăng vị trí đọc ký tự lên, nối chuổi vừa đọc được thành nội dung mới và thay vào nội dung tẽt cũ.
Bâygiờ tôi gặp vấn đề như sau:
-Để chuyển từ font .VN sang VNI. thì dùng danh sách tcvnravni thì chạy ổn.
-Nhưng chuyễn từ VNI. sang .VN thì dùng danh sách vniratcvn (đây là danh sách đảo ngược của danh sách trên) thì không chạy được.

Mong bác giúp đở gở cái vướngmắc này với. Cám ơn.


Mình tìm ra nguyên nhân rồi:
-Vốn cách làm việc của 2 bảng mã này khác nhau: TCVN thì chử Ă là 1 ký tự còn VNI. thì gồm 2 ký tự là chử A và dấu á.
-Nhưng cách khắc phục thì vẩn đang bó tay.
Các bác có cao kiến gì 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


#110 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 18 June 2008 - 10:46 PM

Mình tìm ra nguyên nhân rồi:
-Vốn cách làm việc của 2 bảng mã này khác nhau: TCVN thì chử Ă là 1 ký tự còn VNI. thì gồm 2 ký tự là chử A và dấu á.
-Nhưng cách khắc phục thì vẩn đang bó tay.
Các bác có cao kiến gì giúp với.

bạn đọc mã lisp chuyển text từ mã VNI sang TCVN3 ở đây: http://www.cadviet.c...VN-3-t1781.html

Cái này tôi viết từ lâu rồi, bạn có thể tham khảo để giải quyết vấn đề băn khoăn của bạn. Sau khi tham khảo xong, chắc chắn bạn sẽ sáng rõ và làm được với nhiều font khác nữa chứ không chỉ VNI. VD: chữ ẫ trong tcvn là 1 byte, nhưng trong font xược nó thành 'a/m/x' tức là 4 byte.
  • 2

#111 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 20 June 2008 - 04:20 PM

thank bác nhiều vậy mà em cứ mò mãi với lệnh -layer.
à bác cho em hỏi thêm lệnh pedit em muốn nó thực hiện tự động đến phần join thì làm thế nào, tức là tự động thực hiện với tham số "m", "y", "j" sau đó sẽ là phần mình nhập số vào để join.

bạn sử dụng dòng mã: (command ".pedit" pause "m" "y" "j")
  • 0

#112 traitimsat034

traitimsat034

    biết vẽ pline

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

Đã gửi 20 June 2008 - 11:39 PM

bạn sử dụng dòng mã: (command ".pedit" pause "m" "y" "j")

(defun c:p0 () (command ".pedit" pause "m" "y" "j"))
không được bác ạ, lệnh trên chỉ tự động đến tham số "m" còn "y" và "j" thì mình vẫn phải nhập. bác thử với cad2007 xem em đang dùng cad này. em cũng tìm đc một số mã lệnh nhưng không hiểu sao cad lại ko hiểu.
(defun c:pj () (command "pedit" pause "y" "j" "au"))
khi thực hiện lệnh bị gián đoạn và mình vẫn phải bấm phím "j". em cũng chưa biết gì về lisp nên mong bác giúp em.
  • 0

#113 crazylisp

crazylisp

    biết vẽ line

  • CADViet Team
  • PipPip
  • 20 Bài viết
Điểm đánh giá: 14 (tàm tạm)

Đã gửi 21 June 2008 - 08:51 AM

(defun c:p0 () (command ".pedit" pause "m" "y" "j"))
không được bác ạ, lệnh trên chỉ tự động đến tham số "m" còn "y" và "j" thì mình vẫn phải nhập. bác thử với cad2007 xem em đang dùng cad này. em cũng tìm đc một số mã lệnh nhưng không hiểu sao cad lại ko hiểu.
(defun c:pj () (command "pedit" pause "y" "j" "au"))
khi thực hiện lệnh bị gián đoạn và mình vẫn phải bấm phím "j". em cũng chưa biết gì về lisp nên mong bác giúp em.

Bạn phải chắc chắn là 2 lần nhập lệnh gồm lần nhập lệnh tại CAD và lần nhập lệnh tại lisp bạn đều pick vào 1 loại đối tượng. Vì chữ Y đó là để trả lời rằng bạn sẽ convert đối tượng line thành pline. nếu bạn đã chọn pline thì câu hỏi đó sẽ không xuất hiện nữa, vì vậy lisp sẽ xảy ra lỗi 'Invalid option keyword'.

Đây là lệnh dành cho line
(defun c:JL() (command ".pedit" pause "y" "j"))

Đây là lệnh dành cho pline
(defun c:JPL() (command ".pedit" pause "j"))
  • 0

#114 traitimsat034

traitimsat034

    biết vẽ pline

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

Đã gửi 21 June 2008 - 01:46 PM

Bạn phải chắc chắn là 2 lần nhập lệnh gồm lần nhập lệnh tại CAD và lần nhập lệnh tại lisp bạn đều pick vào 1 loại đối tượng. Vì chữ Y đó là để trả lời rằng bạn sẽ convert đối tượng line thành pline. nếu bạn đã chọn pline thì câu hỏi đó sẽ không xuất hiện nữa, vì vậy lisp sẽ xảy ra lỗi 'Invalid option keyword'.

Đây là lệnh dành cho line
(defun c:JL() (command ".pedit" pause "y" "j"))

Đây là lệnh dành cho pline
(defun c:JPL() (command ".pedit" pause "j"))

chắc bác chưa hiểu ý em rồi. mục đích của em là viết dòng lệnh để nối các đối tượng không liền nhau theo dạng rút gọn của lệnh pedit. tức là thực hiện tự động các tham số "m", "y", "j". sau khi dùng lệnh JL, JPL của bác thì chương trình vẫn bắt nhập m để chọn nhiều đối tượng, tức là mình chỉ gọi đc lệnh pedit.

Command: JL .pedit Select polyline or [Multiple]:

Command: jpl
.pedit Select polyline or [Multiple]:

bác giúp em tạo một lệnh với cú pháp như sau:
gõ lệnh (j1) chương trình sẽ yêu cầu chọn đôi tượng ( ko phải bấm phím "m" và "y" để chọn nhiều đối tượng và convert sang pline.
chọn đối tượng kết thúc, nhấn enter chương trình sẽ yêu cầu nhập khoảng cách coi như bằng không để nối ( tự động thực hiện lệnh "j" )
bác giúp em nhé.
  • 0

#115 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 21 June 2008 - 02:47 PM

chắc bác chưa hiểu ý em rồi. mục đích của em là viết dòng lệnh để nối các đối tượng không liền nhau theo dạng rút gọn của lệnh pedit. tức là thực hiện tự động các tham số "m", "y", "j". sau khi dùng lệnh JL, JPL của bác thì chương trình vẫn bắt nhập m để chọn nhiều đối tượng, tức là mình chỉ gọi đc lệnh pedit.

Command: JL .pedit Select polyline or [Multiple]:

Command: jpl
.pedit Select polyline or [Multiple]:

bác giúp em tạo một lệnh với cú pháp như sau:
gõ lệnh (j1) chương trình sẽ yêu cầu chọn đôi tượng ( ko phải bấm phím "m" và "y" để chọn nhiều đối tượng và convert sang pline.
chọn đối tượng kết thúc, nhấn enter chương trình sẽ yêu cầu nhập khoảng cách coi như bằng không để nối ( tự động thực hiện lệnh "j" )
bác giúp em nhé.


Bạn dùng lệnh NN ở đây: http://www.cadviet.c...hp?showtopic=78
  • 0

#116 tienkieu_ce

tienkieu_ce

    biết vẽ line

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

Đã gửi 22 June 2008 - 09:16 PM

Hôm trước e vào 4room vô tình có đọc được 1 bài viết hướng dẫn viết lisp bắt đầu từ bài cơ bản (e nhớ đoạn đầu tiên là hd viết lisp ghi lời chào lên màn hình,sau đó là lisp tính diệ tích..) Giờ e vào tìm lại để đọc thì k nhớ rõ nó nằm ở đâu nữa.Bác nào biết thì xin chỉ dùm e cái.e đang rất muốn học lisp.thank..
  • 0
đang tìm hiểu về lisp..T_T..

#117 traitimsat034

traitimsat034

    biết vẽ pline

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

Đã gửi 22 June 2008 - 10:34 PM

Bạn dùng lệnh NN ở đây: http://www.cadviet.com/forum/index.php?showtopic=78

Thank bác, em cũng tìm được lisp này trên diễn đàn rồi. có điều em không hiểu tại sao mã
(command "change" "p" """p" "c" "bylayer" "" "")
thì lại dùng được, còn mã
(command ".pedit" pause "m" "y" "j")
cad lại không thực hiện, có điều gì khác hay sai ở đâu? bác giải thích giúp em với.
  • 0

#118 tulipden87

tulipden87

    biết vẽ line

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

Đã gửi 23 June 2008 - 11:38 AM

Các bác ơi. Cho em hỏi một chủt về hàm Foreach với.
Em có một list("A" "B" "C" "D"). Em muốn dùng hàm Foreach để gán giá trị cho từng phần tử trong list đó. Nhưng em dùng lệnh:
(foreach N (list "A" "B" "C" "D") (setq N (getreal (strcat "\nValue of " N ":"))))
thì lại không gán được giá trị cho từng phần tử được. Em không biết là lệnh trên sai ở chỗ nào. Mong các bác chỉ giáo giúp với.
Em xin chân thành cảm ơn!
  • 0

#119 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 23 June 2008 - 12:27 PM

Các bác ơi. Cho em hỏi một chủt về hàm Foreach với.
Em có một list("A" "B" "C" "D"). Em muốn dùng hàm Foreach để gán giá trị cho từng phần tử trong list đó. Nhưng em dùng lệnh:
(foreach N (list "A" "B" "C" "D") (setq N (getreal (strcat "\nValue of " N ":"))))
thì lại không gán được giá trị cho từng phần tử được. Em không biết là lệnh trên sai ở chỗ nào. Mong các bác chỉ giáo giúp với.
Em xin chân thành cảm ơn!

"A", "B", "C" là hằng số làm sao gán được bạn.

Lisp này sẽ có tác dung như sau: đầu tiên là gán biến N bằng "A", sau đó gán N bằng 1 số thực vừa được nhập vào. Tiếp đến gán N bằng "B",....
  • 1

#120 tulipden87

tulipden87

    biết vẽ line

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

Đã gửi 23 June 2008 - 04:23 PM

"A", "B", "C" là hằng số làm sao gán được bạn.

Lisp này sẽ có tác dung như sau: đầu tiên là gán biến N bằng "A", sau đó gán N bằng 1 số thực vừa được nhập vào. Tiếp đến gán N bằng "B",....

Bác Hoanh ơi! Nếu như em muốn gán lần lượt A, B, C, D cho các số thực nhập vào từ bàn phím bằng cách duyệt từng phần tử thì em phải dùng lisp như thế nào? Kính mong bác chỉ giáo giúp.
Thanks bác nhiều!
  • 0