Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Jin Yong

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

Các bài được khuyến nghị

ssg    1.088
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 đó!

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
nguyenthuan    0
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
MANHHUNGXDA    458
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?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
duy782006    1.374

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
)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
romeo1982    19
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
ssg    1.088
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.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
duy782006    1.374
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nguyen Hoanh    4.524
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.com/forum/Lisp-chuyen-f...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.

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nguyen Hoanh    4.524
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")

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
crazylisp    14
(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"))

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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é.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nguyen Hoanh    4.524
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.com/forum/index.php?showtopic=78

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
tienkieu_ce    6

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

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
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.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
tulipden87    27

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!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nguyen Hoanh    4.524
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",....

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
tulipden87    27
"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!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nguyen Hoanh    4.524
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!

bạn muốn gán biến A, B, C, D, CADViet cho các số nhập từ bàn phím, bạn làm như sau:

(foreach N (list "A" "B" "C" "D" "C" "CADViet") (set (read N) (getreal (strcat "\nValue of " N ":"))))

 

Như vậy, biến a sẽ mang giá trị nhập vào đầu tiên, biến b mang giá trị nhập vào thứ 2,... biến cadviet sẽ mang giá trị nhập vào cuối cùng.

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
tulipden87    27
bạn muốn gán biến A, B, C, D, CADViet cho các số nhập từ bàn phím, bạn làm như sau:

(foreach N (list "A" "B" "C" "D" "C" "CADViet") (set (read N) (getreal (strcat "\nValue of " N ":"))))

 

Như vậy, biến a sẽ mang giá trị nhập vào đầu tiên, biến b mang giá trị nhập vào thứ 2,... biến cadviet sẽ mang giá trị nhập vào cuối cùng.

Em cảm ơn bác Hoanh nhiều. Em lại không nghĩ đến dùng hàm Read. Mong được bác chỉ giáo nhiều về sau!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
haimeadi    0
Cám ơn! Vậy là không có cách nào gọi lệnh bhatch từ mã lisp sao?

có đây:

(defun c:gv ()

(setvar "hpname" "BTGV-01")

(setvar "hpscale" 50)

(command "bhatch" )

);

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
duy782006    1.374
Có đây bạn dùng thử xem:

(defun c:gv ()

(setvar "hpname" "BTGV-01")

(setvar "hpscale" 50)

(command "bhatch" )

);

http://www.cadviet.com/upfiles/Lenh_Hatch_1.lsp

Bạn này không hiểu ý mình rồi. Gọi lệnh bhatch nghĩa là phải lên được hộp thoại kia. Làm kiểu này không lên được đâu.

Cám ơn !!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay


×