Chuyển đến nội dung
Diễn đàn CADViet
nhunhapro123

Nhờ kiểm tra giúp code lisp

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

Quote

(defun c:ghb (/ p1 p0 ssl h i)
(vl-load-com)
(setq str "") 
;;;(command "undo" "be")
;;;(setq p1 (getpoint "\n Chon diem dat bang"))
;;;(command "text" "j" "mc" (list (+ (car p1) 18) (+ (cadr p1) 4)) 2 0 "BANG GIA TRI")
(if (setq ss (ssget '((0 . "TEXT"))))
(while (setq ssl (acet-ss-to-list ss))
      (setq ssl (vl-sort ssl '(lambda (x y) ( > (caddr (assoc 11 (entget x))) (caddr (assoc 11 (entget y)))))))
;;;         (setq h (cdr(assoc 40 (entget (car ssl)))))
;;;           i 1 p0 p1 )
      (foreach dt ssl
;;;               (command "text" "j" "mc" (list (+ (car p0) (* 3 h)) (- (cadr p0) h)) h 0 (cdr (assoc 1 (entget dt))))
;;;               (command "rectangle" p0 (list (+ (car p0) (* 6 h)) (- (cadr p0) (* 2 h))))
;;;               (setq p0 (list (+ (car p0) (* 6 h)) (cadr p0)))
      (setq str (strcat str "\t"
                  (cdr(assoc 1 (entget dt))) "\n"))  
      );;;foreach
;;;      (setq p1 (list (car p1) (- (cadr p1) (* 2 h))))
  (SetClipBoardText str)
)
  
  )
;;;(command "undo" "e")
(princ)
)
(defun Trim_Str(Str len)
 (if(and Str (< len (strlen Str)))
   (strcat(substr Str 1 len)"...")
   Str
   ))
(defun SetClipBoardText (text / htmlfile result ) ; By XShrimp
 (if (= 'STR (type text))
   (progn
     (setq htmlfile (vlax-create-object "htmlfile")
    result (vlax-invoke (vlax-get (vlax-get htmlfile 'ParentWindow ) 'ClipBoardData) 'SetData "Text" text ) )
     (vlax-release-object htmlfile)
     text
     ))
 )
(defun GetClipBoardText( / htmlfile result ) ; By Patrick_35
 (setq htmlfile (vlax-create-object "htmlfile")
result (vlax-invoke (vlax-get (vlax-get htmlfile 'ParentWindow ) 'ClipBoardData) 'GetData "Text" ) )
 (vlax-release-object htmlfile)
 result
)
;; free lisp from cadviet.com
;;; this lisp was downloaded from https://www.cadviet.com/forum/topic/14099-sử-dụng-clipboard-trong-lisp-copy-và-paste-dữ-liệu-kiểu-text/?tab=comments
(defun SetClipBoardText (text / htmlfile result ) ; By XShrimp
  (if (= 'STR (type text))
    (progn
      (setq htmlfile (vlax-create-object "htmlfile")
        result (vlax-invoke (vlax-get (vlax-get htmlfile 'ParentWindow ) 'ClipBoardData) 'SetData "Text" text )
      )
      (vlax-release-object htmlfile)
      text
    )
    )
  )

Nhờ các anh chị kiểm tra giúp em code Lisp này với ạ, Em muốn chọn tập hợp text rồi lưu vào ClipBoard nhưng khi chạy bị lỗi không thoát vòng lặp ạ.

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ôi chỉ sửa lỗi vòng lặp, còn kết quả khi không có dxf 11 ra thế nào thì bạn tự sửa


(if (setq ss (ssget '((0 . "TEXT"))))
    (progn
        (setq ssl (acet-ss-to-list ss))
    (setq ssl (vl-sort ssl '(lambda (x y) ( > (caddr (assoc 11 (entget x))) (caddr (assoc 11 (entget y)))))))
;;;         (setq h (cdr(assoc 40 (entget (car ssl)))))
;;;           i 1 p0 p1 )
      (foreach dt ssl
;;;               (command "text" "j" "mc" (list (+ (car p0) (* 3 h)) (- (cadr p0) h)) h 0 (cdr (assoc 1 (entget dt))))
;;;               (command "rectangle" p0 (list (+ (car p0) (* 6 h)) (- (cadr p0) (* 2 h))))
;;;               (setq p0 (list (+ (car p0) (* 6 h)) (cadr p0)))
      (setq str (strcat str "\t"
                  (cdr(assoc 1 (entget dt))) "\n"))  
      );;;foreach
  (SetClipBoardText str)
        )
;;;      (setq p1 (list (car p1) (- (cadr p1) (* 2 h))))
)

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

×