Jump to content
InfoFile
Tác giả: Doan Nguyen Van
Bài viết gốc: 441689
Tên lệnh: d1 d2
lisp về dải gạch lát sàn theo hatch
29 phút trước, quan le đã nói:

Cảm ơn bạn! Bản vẽ triển khai...

>>
29 phút trước, quan le đã nói:

Cảm ơn bạn! Bản vẽ triển khai cho công ty Nhật, nên form này không được rồi bạn ạ. 

(defun c:d1 (/ p1 ent str)
 (if (not ct1) (or (setq ct1 (getreal "Nhap khoang chia: <100>")) (setq ct1 100.00)))
  (if (SETQ P1 (GETPOINT "Specify First Point")) (progn						   
  (command "DIMLINEAR" "_NON" p1 pause pause )
  (SETQ ENT (ENTLAST))
  (entmod (subst (cons 1 (strcat (itoa (fix (/ (cdr (assoc 42 (entget ent))) ct1)) ) "x" (rtos ct1 2 0) "=" "<>"))
		 (assoc 1 (entget ent)) (entget ent)))) (progn (setq ct1 nil) (c:d1)))(princ)
      )
(defun c:d2 (/ p1 p2 str)
 (if (not ct2) (or (setq ct2 (getreal "Nhap khoang chia: <100>")) (setq ct2 100.00)))
  (if (SETQ P1 (GETPOINT "Specify First Point")) (progn
(SETQ P2 (GETPOINT p1 "Specify Second Point")) (setq dis (distance p1 p2))
(setq str (strcat (itoa (fix (/ dis ct2))) "x" (rtos ct2 2 0) "=" "<>"))
  (command "DIMALIGNED" "_NON" p1 p2 "T" str pause )
  ) (progn (setq ct2 nil) (c:d2))) (princ)
    )

Viết nhanh cho bạn


<<

Filename: 441689_d1_d2.lsp
Tác giả: hai_1401
Bài viết gốc: 76679
Tên lệnh: cpp
Chọn đối tượng sau lệnh Copy

Chào study_forever

Lisp trên đã được Tue_NV hoàn thiện lại :

(defun c:cpp( / ss frome toe cur obj po1 po2)
(Command "undo" "be")
(setq frome...
>>
Chào study_forever

Lisp trên đã được Tue_NV hoàn thiện lại :

(defun c:cpp( / ss frome toe cur obj po1 po2)
(Command "undo" "be")
(setq frome (entlast));;
(Prompt "\nChon doi tuong :")
(setq obj (ssget))
(sssetfirst obj obj)
(setq po1 (getpoint "\n Base point : "))
(command "line" '(0 0 0) '(1 1 1) "")
(setq obj (ssadd (entlast) obj))

(command "copy" obj "" po1)
(while (< 0 (getvar "CMDACTIVE")) (command pause))

(setq dc (cdr(assoc 10 (entget (entlast)))))
(setq obj (ssdel (entlast) obj))
(entdel (entlast))
(setq kc (distance '(0 0 0) dc))
(setq ang (angle '(0 0 0) dc))
(setq po2 (polar po1 ang kc))

(setq toe (entlast))

(setq cur frome
ss (ssadd)
)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)

(setq po1 po2)

(while po2
 (setq frome (entlast))
(command "line" '(0 0 0) '(1 1 1) "")
(setq ss (ssadd (entlast) ss))
(command "copy" ss "" po1)
   	 (while (< 0 (getvar "CMDACTIVE")) (command pause))
  	(setq dc (cdr(assoc 10 (entget (entlast)))))
(setq ss (ssdel (entlast) ss))
(entdel (entlast))
(setq kc (distance '(0 0 0) dc))
(setq ang (angle '(0 0 0) dc))
(setq po2 (polar po1 ang kc))
(setq toe (entlast))
(setq cur frome; khoi tao
ss (ssadd)
)
(while (not (eq cur toe))
(setq
cur (entnext cur)
ss (ssadd cur ss)
)
)
(setq po1 po2)
)
(Command "undo" "end")
(princ)
)

Chúc các bạn một buổi sáng tốt lành

Edit : Chức năng Download Lisp File của diễn đàn bị lỗi -> bạn hãy nhấn nút Reply bài viết này của Tue_NV -> copy hết code này về chạy thử nhé

:bigsmile:

Lạ thật đấy anh Tuệ ơi, tại sao khi copy xong nó cứ ra cái dấu chấm j ấy anh ạ (1 đường line rất nhỏ), và khi muốn kết thúc lệnh CPP bằng Enter thì không được, đồng thời khi chọn đối tượng để copy trước rồi chọn lệnh CPP thì chưa được (bắt buộc phải chọn CPP trước)


<<

Filename: 76679_cpp.lsp
Tác giả: Doan Nguyen Van
Bài viết gốc: 441696
Tên lệnh: d2
lisp về dải gạch lát sàn theo hatch

16 phút trước, quan le đã nói:

Lệnh D2 đang bị lỗi về tính số...

>>
16 phút trước, quan le đã nói:

Lệnh D2 đang bị lỗi về tính số lượng, bạn sửa giúp mình với. 

Cảm ơn bạn.

Có thể do khi ofset ra khoảng cách bị lệch đi 1 khoảng rất nhỏ, dẫn đến kết quả chia bị sai, để khắc phục tạm thời mình sửa như này:

(defun c:d2 (/ p1 p2 ent dis)
 (if (not ct2) (or (setq ct2 (getreal "Nhap khoang chia: <100>")) (setq ct2 100.00)))
  (if (SETQ P1 (GETPOINT "Specify First Point")) (progn
(SETQ P2 (GETPOINT p1 "Specify Second Point")) (setq dis (distance p1 p2))
(setq str (strcat (itoa (fix (+ 0.0001 (/ dis ct2)))) "x" (rtos ct2 2 0) "=" "<>"))
  (command "DIMALIGNED" "_NON" p1 p2 "T" str pause )
  ) (progn (setq ct2 nil) (c:d2))) (princ)
    )

 


<<

Filename: 441696_d2.lsp
Tác giả: Doan Nguyen Van
Bài viết gốc: 441703
Tên lệnh: test
Xin lisp vẽ tâm đường tròn

10 phút trước, meohoang88 đã nói:

Chào các bác. Em có một nhu...

>>
10 phút trước, meohoang88 đã nói:

Chào các bác. Em có một nhu cầu nhỏ như này mong được các bác giúp đỡ. (em tìm lisp trên diễn đàn rồi nhưng không phù hợp)

 

Em cần 1 lisp vẽ tâm đường tròn.

 

Mô tả yêu cầu của lisp:

- Quét qua được đồng thời nhiều đối tượng là hình tròn (circle)

- Đồng thời hiện tâm của các đường tròn, với điều kiện: chiều dài đường tâm gấp 1.5 lần đường kính.

Ví dụ; Đừờng tròn phi 10, thì chiều dài mỗi đường tâm là 15mm.

-Layer và thuộc tính của đường tâm: là của layer hiện hành.

 

Em xin hết ạ! Rất mong đc các bác chiếu cố! Em xin cảm ơn!

 

 

Code nhanh cho bạn:

(defun c:test (/ ent pt r)
  (foreach ent (acet-ss-to-list (ssget (list (cons 0 "CIRCLE"))))
    (command "LINE" "_NON" (polar (setq pt (cdr (assoc 10 (entget ent))))  pi (* 1.5 (setq r (cdr (assoc 40 (entget ent))))))
	     "_NON" (polar pt 0 (* 1.5 r)) "")
    (command "LINE" "_NON" (polar pt (* 0.5 pi) (* 1.5 r)) "_NON" (polar pt (* 1.5 pi) (* 1.5 r)) "")))

 


<<

Filename: 441703_test.lsp
Tác giả: bach1212
Bài viết gốc: 329177
Tên lệnh: eco
Lisp tính diện tích theo layer

 

Mình thấy vệc này tạm thời làm thủ công + lisp đơn giản không hề chậm lắm đâu, và mọi người sẽ hiện thực hóa nó.Ta sẽ...

>>

 

Mình thấy vệc này tạm thời làm thủ công + lisp đơn giản không hề chậm lắm đâu, và mọi người sẽ hiện thực hóa nó.Ta sẽ không dùng lệnh aa để đo diện tích,vì chưa có đối tượng bao,hoặc phải kích điểm rất lâu,mà dùng mắt thường để tạo ra đường biên đa giác bao ngoài trước.

1.Như bạn nói, đường biên chỉ bao gồm 2 layer, vậy trước tiên bạn layiso 2 layer này trước đã nhé.

2.Sau đó dùng lisp nối các line bao ngoài thành 1 pline kín

3.Lấy diện tích đa giác bao ngoài này bằng các lisp tính diện tích có sẵn trên diễn đàn

Các thao tác để tạo pline bao ngoài có thể gói gọn bằng lisp này, của 1 Pro người nga do 1 pro người Việt (^^) giới thiệu.Lệnh Eco.Sau khi có em bao ngoài rồi thì việc còn lại k có j phứcc tạp cả ^^

 

;;;; External contour of objects(defun C:ECO (/       *error* blk     obj     MinPt   MaxPt   hiden              pt      pl      unnamed_block   isRus   tmp_blk adoc              blks    lays    lay     oname   sel     csp     loc              sc      ec      ret     DS      osm     iNSpT             )  (defun *error* (msg)    (princ msg)    (mapcar '(lambda (x) (vla-put-visible x :vlax-true)) hiden)    (vla-endundomark adoc)    (if (and tmp_blk             (not (vlax-erased-p tmp_blk))             (vlax-write-enabled-p tmp_blk)        ) ;_ end of and      (vla-erase tmp_blk)    ) ;_ end of if    (if osm      (setvar "OSMODE" osm)    ) ;_ end of if    (foreach x loc (vla-put-lock x :vlax-true))  ) ;_ end of defun  (vl-load-com)  (setvar "CMDECHO" 0)  (setq osm (getvar "OSMODE"))  (if (zerop (getvar "WORLDUCS"))    (progn (vl-cmdf "_.UCS" "") (vl-cmdf "_.Plan" ""))  ) ;_ end of if  (setq isRus (= (getvar "SysCodePage") "ANSI_1251"))  (setq adoc (vla-get-activedocument (vlax-get-acad-object))        blks (vla-get-blocks adoc)        lays (vla-get-layers adoc)  ) ;_ end of setq  (vla-startundomark adoc)  (if isRus    (princ "\n§£§í§Ò§Ö§â§Ú§ä§Ö §à§Ò§ì§Ö§Ü§ä§í §Õ§Ý§ñ §á§à§ã§ä§â§à§Ö§ß§Ú§ñ §Ü§à§ß§ä§å§â§Ñ")    (princ "\nSelect objects for making a contour")  ) ;_ end of if  (vlax-for lay lays    (if (= (vla-get-lock lay) :vlax-true)      (progn (vla-put-lock lay :vlax-false)             (setq loc (cons lay loc))      ) ;_ end of progn    ) ;_ end of if  ) ;_ end of vlax-for  (if (setq sel (ssget))    (progn      (setq sel (ssnamex sel))      (setq iNSpT '(0 0 0))      (setq sel (mapcar 'vlax-ename->vla-object                        (vl-remove-if 'listp (mapcar 'cadr sel))                ) ;_ end of mapcar      ) ;_ end of setq      (setq csp (vla-objectidtoobject adoc (vla-get-ownerid (car sel))))      (setq unnamed_block             (vla-add (vla-get-blocks adoc)                      (vlax-3d-point inspt)                      "*U"             ) ;_ end of vla-add      ) ;_ end of setq      (foreach x sel        (setq oname (strcase (vla-get-objectname x)))        (cond	  ((member oname '("ACDBVIEWPORT" "ACDBATTRIBUTEDEFINITION" "ACDBMTEXT" "ACDBTEXT"  )  ) ;_ end of member               nil              )	  ((= oname "ACDBBLOCKREFERENCE")               (vla-insertblock                 unnamed_block                 (vla-get-insertionpoint x)                 (vla-get-name x)                 (vla-get-xscalefactor x)                 (vla-get-yscalefactor x)                 (vla-get-zscalefactor x)                 (vla-get-rotation x)               ) ;_ end of vla-InsertBlock               (setq blk (cons x blk))              )              (t (setq obj (cons x obj)))        ) ;_ end of cond      ) ;_foreach      (setq lay (vla-item lays (getvar "CLAYER")))      (if (= (vla-get-lock lay) :vlax-true)        (progn (vla-put-lock lay :vlax-false)               (setq loc (cons lay loc))        ) ;_ end of progn      ) ;_ end of if      (if obj        (progn (vla-copyobjects                 (vla-get-activedocument (vlax-get-acad-object))                 (vlax-make-variant                   (vlax-safearray-fill                     (vlax-make-safearray                       vlax-vbobject                       (cons 0 (1- (length obj)))                     ) ;_ end of vlax-make-safearray                     obj                   ) ;_ end of vlax-safearray-fill                 ) ;_ end of vlax-make-variant                 unnamed_block               ) ;_ end of vla-copyobjects        ) ;_ end of progn      ) ;_ end of if      (setq obj (append obj blk))      (if obj        (progn          (setq tmp_blk (vla-insertblock                          csp                          (vlax-3d-point inspt)                          (vla-get-name unnamed_block)                          1.0                          1.0                          1.0                          0.0                        ) ;_ end of vla-insertblock          ) ;_ end of setq          (vla-getboundingbox tmp_blk 'MinPt 'MaxPt)           (setq MinPt (vlax-safearray->list MinPt)                MaxPt (vlax-safearray->list MaxPt)                DS    (max (distance MinPt (list (car MinPt) (cadr MaxPt)))                           (distance MinPt (list (car MaxPt) (cadr MinPt)))                      ) ;_ end of max                DS    (* 0.2 DS)                  ;1/5                DS    (max DS 10)                MinPt (mapcar '- MinPt (list DS DS))                MaxPt (mapcar '+ MaxPt (list DS DS))          ) ;_ end of setq          (lib:Zoom2Lst (list MinPt MaxPt))          (setq sset (ssget "_C" MinPt MaxPt))          (if sset            (progn              (setvar "OSMODE" 0)              (setq hiden (mapcar 'vlax-ename->vla-object                                  (vl-remove-if                                    'listp                                    (mapcar 'cadr (ssnamex sset))                                  ) ;_ end of vl-remove-if                          ) ;_ end of mapcar                    hiden (vl-remove tmp_blk hiden)              ) ;_ end of setq              (mapcar '(lambda (x) (vla-put-visible x :vlax-false))                      hiden              ) ;_ end of mapcar              (setq pt (mapcar '+ MinPt (list (* 0.5 DS) (* 0.5 DS))))              (vl-cmdf "_.RECTANG" (trans MinPt 0 1) (trans MaxPt 0 1))              (setq pl (vlax-ename->vla-object (entlast)))              (setq sc (entlast))              (if                (vl-catch-all-error-p                  (vl-catch-all-apply                    '(lambda ()                       (vl-cmdf "_-BOUNDARY" (trans pt 0 1) "")                       (while (> (getvar "CMDACTIVE") 0) (command ""))                     ) ;_ end of lambda                  ) ;_ end of VL-CATCH-ALL-APPLY                ) ;_ end of VL-CATCH-ALL-ERROR-P                 (if isRus                   (princ "\n§¯§Ö §å§Õ§Ñ§Ý§à§ã§î §á§à§ã§ä§â§à§Ú§ä§î §Ü§à§ß§ä§å§â")                   (princ "\nIt was not possible to construct a contour")                 ) ;_ end of if              ) ;_ end of if              (setq ec sc)              (while (setq ec (entnext ec))                (setq ret (cons (vlax-ename->vla-object ec) ret))                )                (setq ret (vl-remove pl ret))              (mapcar '(lambda (x) (vla-erase x) (vlax-release-object x))                      (list pl tmp_blk)              ) ;_ end of mapcar              (setq pl nil                    tmp_blk nil              ) ;_ end of setq              (setq                ret (mapcar '(lambda (x / mipt)                               (vla-getboundingbox x 'MiPt nil)                                (setq MiPt (vlax-safearray->list MiPt))                               (list MiPt x)                             ) ;_ end of lambda                            ret                    ) ;_ end of mapcar              ) ;_ end of setq              (setq ret (vl-sort ret                                 '(lambda (e1 e2)                                    (< (distance MinPt (car e1))                                       (distance MinPt (car e2))                                    ) ;_ end of <                                  ) ;_ end of lambda                        ) ;_ end of vl-sort              ) ;_ end of setq              (setq pl  (nth 1 ret)                    ret (vl-remove pl ret)              ) ;_ end of setq              (mapcar 'vla-erase (mapcar 'cadr ret))              (mapcar '(lambda (x) (vla-put-visible x :vlax-true))                      hiden              ) ;_ end of mapcar              (foreach x loc (vla-put-lock x :vlax-true))              (if pl                (progn                  (initget "Yes No")                  (if                    (= (getkword (if isRus                                   "\n§µ§Õ§Ñ§Ý§ñ§ä§î §à§Ò§ì§Ö§Ü§ä§í?  <No> : "                                   "\nDelete objects?  <No> : "                                 ) ;_ end of if                       ) ;_ end of getkword                       "Yes"                    ) ;_ end of =                     (mapcar '(lambda (x)                                (if (vlax-write-enabled-p x)                                  (vla-erase x)                                ) ;_ end of if                              ) ;_ end of lambda                             obj                     ) ;_ end of mapcar                  ) ;_ end of if                ) ;_ end of progn                (if isRus                  (princ "\n§¯§Ö §å§Õ§Ñ§Ý§à§ã§î §á§à§ã§ä§â§à§Ú§ä§î §Ü§à§ß§ä§å§â")                  (princ "\nIt was not possible to construct a contour")                ) ;_ end of if              ) ;_ end of if            ) ;_ end of progn          ) ;_ end of if        ) ;_ end of progn      ) ;_ end of if      (vl-catch-all-apply        '(lambda ()           (mapcar 'vlax-release-object                   (list unnamed_block tmp_blk csp blks lays)           ) ;_ end of mapcar         ) ;_ end of lambda      ) ;_ end of VL-CATCH-ALL-APPLY    ) ;_ end of progn  ) ;_if not  (foreach x loc (vla-put-lock x :vlax-true))  (setvar "OSMODE" osm)  (vla-endundomark adoc)  (vlax-release-object adoc)  (command ".area" "o" "L")(setq dt (getvar "area"))(command ".erase" L "") (writeres dt)  (princ)) ;_ end of defun;;; ========== HELPER FUNCTION ==========================================(defun lib:IsPtInView (pt / VCTR Y_Len SSZ X_Pix Y_Pix X_Len Lc Uc)  (setq pt (trans pt 0 1))  (setq VCTR  (getvar "VIEWCTR")        Y_Len (getvar "VIEWSIZE")        SSZ   (getvar "SCREENSIZE")        X_Pix (car SSZ)        Y_Pix (cadr SSZ)        X_Len (* (/ X_Pix Y_Pix) Y_Len)        Lc    (polar VCTR (dtr 180.0) (* 0.5 X_Len))        Uc    (polar Lc 0.0 X_Len)        Lc    (polar Lc (dtr 270.0) (* 0.5 Y_Len))        Uc    (polar Uc (dtr 90.0) (* 0.5 Y_Len))  ) ;_ end of setq  (if (and (> (car pt) (car Lc))           (< (car pt) (car Uc))           (> (cadr pt) (cadr Lc))           (< (cadr pt) (cadr Uc))      ) ;_ end of and    t    nil  ) ;_ end of if) ;_ end of defun(defun DTR (a) (* pi (/ a 180.0)))(defun lib:pt_extents (vlist / tmp)  (setq    tmp (mapcar          '(lambda (x) (vl-remove-if 'null x))          (mapcar            '(lambda (what) (mapcar '(lambda (x) (nth what x)) vlist))            '(0 1 2)          ) ;_ end of mapcar        ) ;_ end of mapcar  ) ;_setq  (list (mapcar '(lambda (x) (apply 'min x)) tmp)        (mapcar '(lambda (x) (apply 'max x)) tmp)  ) ;_ end of list) ;_defun(defun lib:Zoom2Lst (vlist / bl tr Lst OS)  (setq Lst (lib:pt_extents vlist)        bl  (car Lst)        tr  (cadr Lst)  ) ;_ end of setq  (if (not (and (lib:IsPtInView bl) (lib:IsPtInView tr)))    (progn (setq OS (getvar "OSMODE"))           (setvar "OSMODE" 0)           (command "_.Zoom"                    "_Window"                    (trans bl 0 1)                    (trans tr 0 1)                    "_.Zoom"                    "0.95x"           ) ;_ end of command           (setvar "OSMODE" OS)           t    ) ;_ end of progn    NIL  ) ;_ end of if) ;_ end of defun(defun CheckObj(e MyType) (equal (cdr (assoc 0 (entget e))) MyType))(defun WriteRes(kq / OK e data)(setq OK nil)(while (not OK)(setq e (car (entsel "\tChon text ghi ket qua:")))(if (CheckObj e "TEXT") (setq OK T) (princ "\nDoi tuong chon khong phai text")))(entmod (subst (cons 1 (rtos kq 2 2)) (assoc 1 (setq data (entget e))) data))(princ))

 

 

Nhờ bạn ketxu cải biến thêm lisp eco để nó tính diện tích nhiều đa giác kín 1 lúc? 

HIện tại mình thấy khi quét nhiều đa giác kín thì nó chỉ tính diện tích của 1 đa giác.


<<

Filename: 329177_eco.lsp
Tác giả: Bee
Bài viết gốc: 440724
Tên lệnh: test
Nhờ viết lisp thay đổi thay đổi tỷ lệ Annotation scale
6 giờ trước, jangboko đã nói:

không đúng bạn ạ. Mình muốn sau...

>>
6 giờ trước, jangboko đã nói:

không đúng bạn ạ. Mình muốn sau khi gõ lệnh thì chọn vào đối tượng chứa anotative ( text, hacth,  dim, block...) thì annotation scale ( vị trí mình khoanh đỏ trên file đính kèm ) thay đổi theo annotion của đối tượng được chọn

1.png

Bạn thử cái này xem:

(defun c:test  (/ dict entsc)
  (if (and
        (setq dict (cdr (assoc 360 (entget (car (entsel "\nChon doi tuong anno: "))))))
        (setq dict (dictsearch dict "AcDbContextDataManager"))
        (setq dict (dictsearch (cdr (assoc -1 dict)) "ACDB_ANNOTATIONSCALES"))
        )
    (foreach n dict
      (if (and
            (= (car n) 350)
            (setq entsc
                   (cdr (assoc 300 (entget (cdr (assoc 340 (entget (cdr n)))))))
                  )
            );and
        (setvar "CANNOSCALE" entsc)
        )
      );foreach
    ) ;if
  (princ)
  )

 


<<

Filename: 440724_test.lsp
Tác giả: vcdichoi
Bài viết gốc: 441739
Tên lệnh: getppl ha1
Đường bao Wipeout không tắt được hết

Em có sử dụng đoạn code sau trên diễn đàn để tạo Wipeout với hình dạng bất kỳ, nhưng không thể tắt hết được (vẫn bị mờ khi in ra) đường bao Wipeout

Nếu đặt nét đường bao Wipeout vào nét để "không in ra " thì khi in ra nét Hacth sẽ không bị che khuất bởi Wipeout.

Các anh/chị xem giúp em và cách xử lý để hết nét mờ ( màu xanh) khi tạo Wipeout như cách...

>>

Em có sử dụng đoạn code sau trên diễn đàn để tạo Wipeout với hình dạng bất kỳ, nhưng không thể tắt hết được (vẫn bị mờ khi in ra) đường bao Wipeout

Nếu đặt nét đường bao Wipeout vào nét để "không in ra " thì khi in ra nét Hacth sẽ không bị che khuất bởi Wipeout.

Các anh/chị xem giúp em và cách xử lý để hết nét mờ ( màu xanh) khi tạo Wipeout như cách trên.

Em có tải file và hình ảnh đính kèm.

Em xin cảm ơn!

(defun c:getppl (/ en par pob pa ppl)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(setq en (car (entsel "\n chon lwpolyline can chuyen ")))
(setq ppl (list)
         par 0
         pob (vlax-ename->vla-object en) )
(while (< par (vlax-curve-getendparam pob))
      	(setq pa (vlax-curve-getpointatparam pob par)
                	ppl (append ppl (list pa))
                	par (+ par 0.1) )
)
(setq ppl (append ppl (list (vlax-curve-getendpoint pob))))
ppl
(command "pline")
(foreach p ppl
   (command p)
)
(command "")
(command "erase" en "")
(setvar "osmode" oldos)
(princ)
)
;Doan Van Ha - CADViet.com - Ngay 04/4/2012
;Muc dich: Convert cac Lwpolyline duoc chon thanh cac Wipeout.
(defun C:HA1( / cmd entlst xoa)
(command "undo" "be")
(setq cmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq entlst (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LWPOLYLINE")))))))
(initget "X K") (setq xoa (getkword "\n pline cu <X>: "))
(if (= xoa "K") (setq xoa "N") (setq xoa "Y"))
(foreach ent entlst
 (setq lst (acet-geom-vertex-list ent))
 (cond
  ((= 1 (cdr (assoc 70 (entget ent))))
(command "wipeout" "p" ent xoa))
  ((and (= 0 (cdr (assoc 70 (entget ent)))) (equal (car lst) (last lst) 1E-8))
(entmod (subst (cons 70 1) (assoc 70 (entget ent)) (entget ent)))
(command "wipeout" "p" ent xoa))))
(setvar "cmdecho" cmd)
(command "undo" "end")
(princ))

 

file.dwg

mo.png


<<

Filename: 441739_getppl_ha1.lsp
Tác giả: whatcholingon
Bài viết gốc: 200652
Tên lệnh: test
LISP tạo đường viền cho text

Sửa lại cho bạn đây :

(defun c:test ( / e ss) (vl-load-com)
(setq i -1)
(if (setq ss (ssget '((0 . "*TEXT"))))
(while (setq e...
>>

Sửa lại cho bạn đây :

(defun c:test ( / e ss) (vl-load-com)
(setq i -1)
(if (setq ss (ssget '((0 . "*TEXT"))))
(while (setq e (ssname ss (setq i (1+ i))))
(entmakex
  (append
   (list
  	(cons 0 "LWPOLYLINE")
  	(cons 100 "AcDbEntity")
  	(cons 100 "AcDbPolyline")
  	(cons 90 4)
  	(cons 70 1))
   (mapcar '(lambda ( p ) (cons 10 p)) (LM:BoundingBox (vlax-ename->vla-object e)))))))
 (princ))
(defun LM:BoundingBox ( object / lowerleft upperright )
 (if (vlax-method-applicable-p object 'GetBoundingBox)
((lambda ( boundingbox )
   (mapcar
  	(function
        (lambda ( _functionlist )
          (mapcar
         (function
 	         (lambda ( _function ) ((eval _function) boundingbox)))
         _functionlist)))
  '((caar   cadar) (caadr  cadar)
        (caadr cadadr) (caar  cadadr))))
  (mapcar 'vlax-safearray->list
   (progn
  	(vla-getBoundingBox object 'lowerleft 'upperright) (list lowerleft upperright))))))

 

Thanks ban nhieu!


<<

Filename: 200652_test.lsp
Tác giả: Doan Nguyen Van
Bài viết gốc: 441741
Tên lệnh: test
Xin lisp vẽ tâm đường tròn
Vào lúc 11/10/2019 tại 22:43, meohoang88 đã nói:

Em rất cảm ơn...

>>
Vào lúc 11/10/2019 tại 22:43, meohoang88 đã nói:

Em rất cảm ơn bác. Code bác đã đúng ý em. Đã 1 like cho bác!

Tuy nhiên có 1 vấn đề em chưa lường trước. Có lẽ lại nhờ bác chỉnh thêm được ko ạ.

Layer đường tâm thì tất nhiên là em để nét đứt rồi, em đang để với tỉ lệ bản vẽ 1:1 thì linetype scale của đường tâm bằng 0.2.

Như vậy, với tỉ lệ 1:2 thì linetype scale = 0.4

với tỉ lệ 1:4 thì linetype scale = 0.8, .... tương ứng với các tỉ lệ khác, vì em dùng Annotative.

 

Em chỉ muốn bổ sung thêm 1 điều kiện cho lisp này thôi: hệ số linetype scale hiển thị = hệ số linetype scale cài đặt của layer hiện hành (với tỉ lệ 1:1) x giá trị hệ số Annotation Scale hiện hành.

Bác có thể chỉnh lại cho em thêm đúng 1 điều kiện phát sinh này nữa ko ạ? 

 

Em nghĩ lisp này rất nhiều người sẽ cần, đặc biệt cho bên cơ khí. Em xin cảm ơn bác!

 

Bạn test xem được chưa, do mình ít dùng ANOTATION

(defun c:test (/ ent pt r lt ca ano)
  (setq lt (getvar 'celtype))
  (command "_-LINETYPE" "S" "CENTER" "")
  (setq ca (Getvar 'CANNOSCALE)
	ano (* (getvar 'CELTSCALE) (/ (atoi (substr ca (+ (vl-string-search ":" ca) 2))) (atoi (substr ca 1 (vl-string-search ":" ca))))))	   
  (foreach ent (acet-ss-to-list (ssget (list (cons 0 "CIRCLE"))))
    (command "LINE" "_NON" (polar (setq pt (cdr (assoc 10 (entget ent))))  pi (* 1.5 (setq r (cdr (assoc 40 (entget ent))))))
	     "_NON" (polar pt 0 (* 1.5 r)) "")
    (vla-put-linetypescale (vlax-ename->vla-object (entlast)) ano )
    (command "LINE" "_NON" (polar pt (* 0.5 pi) (* 1.5 r)) "_NON" (polar pt (* 1.5 pi) (* 1.5 r)) "")
    (vla-put-linetypescale (vlax-ename->vla-object (entlast)) ano))
  (command "_-LINETYPE" "S" lt ""))

 


<<

Filename: 441741_test.lsp
Tác giả: Doan Nguyen Van
Bài viết gốc: 441760
Tên lệnh: te
Nhờ viết LISP gán Contents
14 giờ trước, anhtam_084 đã nói:

Bác Đoàn có thể chỉnh giúp...

>>
14 giờ trước, anhtam_084 đã nói:

Bác Đoàn có thể chỉnh giúp lisp chọn được nội dung của Block ATT làm nguồn, đích là dtext, đc không? hiện tại lisp đang dùng rất ngon cho nguồn là dtext và đích cũng là dtext. Cám ơn bác.

 

11 giờ trước, kieutrang đã nói:

Với anh thêm vòng lặp cho chọn nhiều Text Đích được không? Chỉ kết thúc khi Enter.

 

Giải quyết vấn đề của cả 2 bạn 

(defun c:te (/ ent1 ent2 )
  (setq ent1 (car (nentsel "\npick text nguon")))
(while (setq ent2 (car (Entsel "\npick text dich")))
(vla-put-textstring (vlax-ename->vla-object ent2)
  (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID (vlax-ename->vla-object ent1))) ">%).TextString>%"))))

 


<<

Filename: 441760_te.lsp
Tác giả: quochuyksxd
Bài viết gốc: 301134
Tên lệnh: ddi
Cần tìm lisp về thiết lập cho toàn bộ Dim

Bạn thử lisp sau, chọn dimstyle nguồn qua 1 đối tượng của nó, sửa thông số, rồi chọn đối tượng thuộc dimstyle đích.

 

>>

Bạn thử lisp sau, chọn dimstyle nguồn qua 1 đối tượng của nó, sửa thông số, rồi chọn đối tượng thuộc dimstyle đích.

 

(defun c:ddi(/ a entg0 entg1 li tm name)
  (setq a (car (entsel "\nChon doi tuong thuoc dimstyle nguon:"))
entg0 (tblsearch "DIMSTYLE" (cdr (assoc 3 (entget a)))))
  (command "-dimstyle" "R" (cdr (assoc 3 (entget a))))
  (command "ddim")
  (setq entg1 (tblsearch "DIMSTYLE" (cdr (assoc 3 (entget a))))
li (vl-remove nil (mapcar '(lambda(x y)
(if (not (equal x y)) y nil)) entg0 entg1)))
  
  (prompt "\nChon doi tuong thuoc dimstyle dich can doi:")
  (mapcar '(lambda(x)
    (setq name (cdr (assoc 3 (entget x)))
  tm (tblobjname "DIMSTYLE" name))
    (foreach y li
      (entmod (if (assoc (car y) (entget tm))
      (subst y (assoc (car y) (entget tm)) (entget tm))
      (append (entget tm) (list y)))))
    (command "-dimstyle" "R" name)
    (command "-dimstyle" "A" (ssget "X" (list '(0 . "DIMENSION") (cons 3 name))) ""))
 (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "DIMENSION")))))))
  
  (princ)
)

Cảm ơn bạn đã chia sẻ. Lisp này cơ bản đã thực hiện đúng theo ý tưởng của mình như trên rồi. Tuy nhiên khi sử dụng mình thấy bất cập  là mỗi lần cần ánh xạ thì buộc phải thay đổi tối thiểu 1 thông số ở dim nguồn. Bạn có thể hiểu chỉnh sao cho có thể không cần phải thay đổi ở dim nguồn (hoặc chỉ thay đổi thông số 1 lần duy nhất) và chọn đến dim đích là OK. có thể chọn nhiều dim đích thì càng tốt. 


<<

Filename: 301134_ddi.lsp
Tác giả: ui_troi_2005
Bài viết gốc: 52053
Tên lệnh: scc
Scale tất cả trên bẻn vẽ
Bạn dùng tạm lisp này xem thử có ổn không.

Lưu ý: mỗi lần chạy lệnh SCC, các đối tượng được chọn phải có cùng 1 kiểu dimstyle

 

>>
Bạn dùng tạm lisp này xem thử có ổn không.

Lưu ý: mỗi lần chạy lệnh SCC, các đối tượng được chọn phải có cùng 1 kiểu dimstyle

 

;;;-------------------------------------------------------------
(defun ss2ent (ss / i Le e);;;Convert ss to list of ename
(setq i 0 Le nil)
(repeat (sslength ss)
(setq
e (ssname ss i)
Le (append Le (list e))
i (1+ i)
)
)
Le
)
;;;-------------------------------------------------------------
(defun upd_dim( ssd)
(setq
   e (ssname ssd 0)
   d (entget e)
   dtype (cdr (assoc 3 d))
   dt (tblsearch "dimstyle" dtype)
   k0 (cdr (assoc 144 dt))
   ks (cdr (assoc 40 dt))
   newdtype (strcat dtype "x" (rtos k))
)
(command "dimstyle" "r" dtype)
(setvar "dimlfac" (/ k0 k))
(setvar "dimscale" (* ks k))
(if (tblsearch "dimstyle" newdtype)
   (command "dimstyle" "r" newdtype)
   (command "dimstyle" "s" newdtype)
)
(command "dimstyle" "a" ssd "")
)
;;;-------------------------------------------------------------
(defun C:SCC( / ss ssd L p k ks e d dtype dt k0 newdtype)
(setq
   ss (ssget)
   ssd (ssget "p" '((0 . "DIMENSION")))
   L (ss2ent ss)
   p (getpoint "\nDiem chuan:")
   k (getreal "\nScale factor:")
)
(if (> k 1)
   (progn (command "scale" ss "" p k) (if ssd (upd_dim ssd)))
   (progn (if ssd (upd_dim ssd)) (command "scale" ss "" p k))
)
(princ)
)
;;;-------------------------------------------------------------

 

Chào bác SSG.

Em cảm ơn bác đã giúp em, cái lisp rất hay, nó đã scc đúng tất cả như em muốn. Nhưng đúng như lời bác nói nó ko thể làm tốt khi bản vẽ có nhiều Dimension style, có lẽ lần sau em sẽ hạn chế các Dimension style.

 

Rất cảm ơn bác.

 

Chúc bác luôn luôn vui vẻ với những gì đã chia sẻ với mọi người.


<<

Filename: 52053_scc.lsp
Tác giả: vothanhdn
Bài viết gốc: 190457
Tên lệnh: gg
Hỏi code lisp: Lấy text từ .txt đưa vào CAD

Mấy ngày nay không thấy bác Tue_NV online nên tôi làm giúp cho bạn đây:

(defun c:gg ( / osm cmd tenfile file cc...
>>

Mấy ngày nay không thấy bác Tue_NV online nên tôi làm giúp cho bạn đây:

(defun c:gg ( / osm cmd tenfile file cc ccc lst pt gtri)
(command "undo" "be")
(setq osm (getvar "osmode") cmd (getvar "cmdecho"))
(setvar "osmode" 0) (setvar "cmdecho" 0)
(setq tenfile (getfiled "Chon file" "" "txt" 10))
(setq file (open tenfile "r"))
(read-line file)
(if (= (setq cc (cdr (assoc 40 (tblsearch "style" (getvar "textstyle"))))) 0)
 (setq ccc (getreal "\nChieu cao chu: ")))
(while (setq dulieu (read-line file))
 (setq lst (TUE-STR-SPLIT " " dulieu))
 (setq pt (list (nth 0 lst) (nth 1 lst)))
 (setq gtri (nth 2 lst))
 (if (= cc 0)
  (command ".text" "mc" pt ccc 0 gtri)
  (command ".text" "mc" pt 0 gtri)))
(close file)
(setvar "osmode" osm) (setvar "cmdecho" cmd)
(command "undo" "end")
(princ))
;-----
(defun Tue-str-split(sym str / i)
 (setq i (strlen str) str1 "")
 (while (= (substr str i 1) sym) (setq i (1- i)) )
 (setq str (strcat (substr str 1 (1- i)) "\")")  j (strlen str))
 (while (/= (substr str j 1) sym) (setq j (1- j)))
 (read (strcat (substr str 1 j) "\"" (substr str (1+ j) i))))

Oh, cám ơn a nhiều nhé!


<<

Filename: 190457_gg.lsp
Tác giả: Nguyen Hoanh
Bài viết gốc: 2887
Tên lệnh: enc dec
Mã hóa các text trong bản vẽ
Đây rồi. các bác GET về và dung với các lệnh:

ENC = mã hóa

DEC = giải mã

 

;Chuong ma hoa chuoi theo thuat toan Ceasar
(DEFUN...
>>
Đây rồi. các bác GET về và dung với các lệnh:

ENC = mã hóa

DEC = giải mã

 

;Chuong ma hoa chuoi theo thuat toan Ceasar
(DEFUN ENCRYPT(str n / i l str1 m)
 (setq str1 "a")  
 (setq l (strlen str))
 (setq i 1)
 (while (	(setq c (substr str i 1))
(setq m (ascii c))
(setq m (+ m n))
(setq m (MOD m 255))
(setq str1 (strcat str1 (chr (nth (- m 32) LiAlpha))))
(setq i (1+ i))
 )
 (setq str1 (substr str1 2))  
 str1
)
(DEFUN DECRYPT (str n / i l str1 m)
 (setq str1 "a")
 (setq l (strlen str))
 (setq i 1)
 (while (	(setq c (substr str i 1))
(setq m (ascii c))
(setq m (- m n))
(if (	  (setq m (+ m 255))
)
(setq str1 (strcat str1 (chr (nth (- m 32) LiAlpha))))
(setq i (1+ i))
 )  
 (setq str1 (substr str1 2))
 str1
)
(DEFUN SETALPHA( / Li)
 (setq Li (List))
 (setq i 32)
 (while (	(setq Li (append Li (List i)))
(setq i (1+ i))
 )
 (setq LiAlpha Li)
)  
(DEFUN MOD (m n / kq)
 (while (> m n)
(setq m (- m n))
 )
 (setq kq m)
 kq
)
(DEFUN C:ENC (/ ss str str0)
 (SETALPHA)
 (setvar "CMDECHO" 0)
 (princ "\nChon doi tuong can ma hoa:")  
 (setq ss (ssget '((-4 . ""))))
 (setq m (getint "Cho biet ma khoa: "))
 (setq i 0)
 (setq dt (ssname ss 0))  
 (setq n (sslength ss))
 (setq i 0)
 (while (	(setq dt (ssname ss i))	
(setq str (GETCONTENT dt))	
(setq str0 str)
(if (= (TENDOITUONG dt) "TEXT")
  (setq str (ENCRYPT str m))
  (setq str (ENC_MTEXT str m))	
)	
(setq obj (entget dt))
(setq obj (subst (cons 1 str) (cons 1 str0) obj))	
(entmod obj)
(entupd dt)
(setq i (1+ i))
 )
 (setvar "CMDECHO" 0)
 (princ) 
)
(DEFUN C:DEC (/ ss str str0)
 (SETALPHA)
 (setvar "CMDECHO" 0)
 (princ "\nChon doi tuong can giai ma:")  
 (setq ss (ssget '((-4 . ""))))
 (setq m (getint "Cho biet ma khoa: "))
 (setq i 0)
 (setq dt (ssname ss 0))  
 (setq n (sslength ss))
 (setq i 0)
 (while (	(setq dt (ssname ss i))	
(setq str (GETCONTENT dt))	
(setq str0 str)
(if (= (TENDOITUONG dt) "TEXT")
  (setq str (DECRYPT str m))
  (setq str (DEC_MTEXT str m))	
)	
(setq obj (entget dt))
(setq obj (subst (cons 1 str) (cons 1 str0) obj))	
(entmod obj)
(entupd dt)
(setq i (1+ i))
 )
 (setvar "CMDECHO" 0)
 (princ) 
)

(DEFUN ENC_MTEXT(str m / LiStr i encstr n)
 (setq LiStr (List))
 (setq encstr "a")  
 (setq i (POSTSTR str "\\P"))  
 (if (= i 0)
(setq LiStr (Append LiStr (List str)))
(progn	  
  (while (> i 0)	
(setq temp (substr str 1 (1- i)))	
	(setq LiStr (Append LiStr (List temp)))
	(setq str (substr str (+ i 2)))	
(setq i (POSTSTR str "\\P"))	
  )
  (setq LiStr (Append LiStr (List str)))	  
)
 )
 (setq n (length LiStr))  
 (setq i 0)
 (while(	(setq encstr (strcat encstr "\\P" (ENCRYPT (nth i LiStr) m)))
(setq i (+ i 1))	
 )  
 (setq encstr (substr encstr 4))
 encstr
)  
(DEFUN DEC_MTEXT(str m / LiStr i decstr n)
 (setq LiStr (List))
 (setq decstr "a")  
 (setq i (POSTSTR str "\\P"))  
 (if (= i 0)
(setq LiStr (Append LiStr (List str)))
(progn	  
  (while (> i 0)	
(setq temp (substr str 1 (1- i)))	
	(setq LiStr (Append LiStr (List temp)))
	(setq str (substr str (+ i 2)))	
(setq i (POSTSTR str "\\P"))	
  )
  (setq LiStr (Append LiStr (List str)))	  
)
 )
 (setq n (length LiStr))  
 (setq i 0)
 (while(	(setq decstr (strcat decstr "\\P" (DECRYPT (nth i LiStr) m)))
(setq i (+ i 1))	
 )  
 (setq decstr (substr decstr 4))
 decstr
)
(DEFUN GETCONTENT (obj / cont)
 (setq cont (cdr (assoc 1 (entget obj))))
 cont
)
(DEFUN POSTSTR(str0 str / vt i l0 l)
 (setq vt 0)
 (setq l0 (strlen str0))
 (setq l (strlen str))
 (setq i 1)
 (while (	(if (= (substr str0 i l) str)
  (progn			 
	(setq vt i)
	(setq i l0)
  )
)
(setq i (1+ i))
 )
 vt
)
(DEFUN TENDOITUONG (obj / name)
 (setq name (CDR (ASSOC 0 (ENTGET obj))))  
 name  
)

 

"Chuyên gia phần mềm chuyên nghiệp" xem lại cho tại sao khi encrypt một số đối tượng thì bị báo lỗi:

; error: bad argument value: non-negative: -31

số -31 chỉ là ví dụ, mỗi mã khóa bị một số khác nhau.

 

Ví dụ khi dòng text có giá trị {error} thì sử dụng lệnh ENC với mã khóa từ 131-185 đều báo lỗi.

không biết chuyên gia chuyên nghiệp giải thích thế nào với khác hàng, hay là do phần mềm trên free nên còn nhiều lỗi?


<<

Filename: 2887_enc_dec.lsp
Tác giả: taipham
Bài viết gốc: 386327
Tên lệnh: cco
Nhờ Viết Lisp Copy Cộng Dồn Khoảng Cách

 

Hề hề hề,

Không hiểu ý bạn có phải cái này không???

>>

 

Hề hề hề,

Không hiểu ý bạn có phải cái này không???

http://www.cadviet.com/upfiles/5/5194_copymultidist.lsp

(defun c:cco (/ ss p0 p1 a d)
(setq oldos (getvar "osmode"))
(setvar "osmode" 0)
(alert "\n Chon doi tuong can copy")
(setq ss (ssget )
          p0 (getpoint "\n Chon diem goc")
          p1 (getpoint p0 "\n Chon diem dinh huong copy")
          a (angle p0 p1)
          e (entlast)  )
(while (setq d (getdist "\n Nhap khoang cach can copy tiep theo: "))
       (command "copy" ss "" p0 (setq p0 (polar p0 a d)))
       (setq ss (ssadd))
       (while (setq e (entnext e))
            (setq ss (ssadd e ss))
       )
       (setq e (entlast))
)
(setvar "osmode" oldos)
(princ)
)

Cảm ơn anh Bình nhiều nhé! Lisp chạy oke, anh sửa thêm chút nữa nhé: bỏ hiển thị cái bảng OKE (chọn đối tượng cần copy) và nếu có thể anh sửa luôn giúp em ở chỗ là khi chọn đối tượng copy (ở vị trí khác), chọn điểm gốc và pick hướng thì đối tượng được copy ra nằm trên phương của điểm gốc và điểm pick hướng. Hehe, em nói quần quần không biết anh hiểu ý em không!


<<

Filename: 386327_cco.lsp
Tác giả: thanhduan2407
Bài viết gốc: 441984
Tên lệnh: 00
Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

 

Chào các bác! Em đang viết DCL nhưng đang bị vướng bởi nút thắt này. Em muốn tích vào các toggle thì nó là Yes và không tích là No mà nó cứ sai hoài! Mong các bác chỉ dùm. Cảm ơn các bác nhiều!

 

 

(vl-load-com)
(defun C:00 (/ ANSDC ANSKCDC ANSKH ANSMSS CAOCHU_TD CAOCHU_TN DCH DCL DES KCDAUCO KC_COT KC_HANG MSS0 MSS_TD...
>>

 

Chào các bác! Em đang viết DCL nhưng đang bị vướng bởi nút thắt này. Em muốn tích vào các toggle thì nó là Yes và không tích là No mà nó cứ sai hoài! Mong các bác chỉ dùm. Cảm ơn các bác nhiều!

 

 

(vl-load-com)
(defun C:00 (/ ANSDC ANSKCDC ANSKH ANSMSS CAOCHU_TD CAOCHU_TN DCH DCL DES KCDAUCO KC_COT KC_HANG MSS0 MSS_TD PATH_NTD SOCOTMC TLD1 TLD1_TN TLN1	TLN1_TN	USEBUTTON WIDTHMD)
  (defun *error* (msg)
    (if	(= 'file (type des))
      (close des)
    )
    (if	(and (= 'int (type dch)) (< 0 dch))
      (unload_dialog dch)
    )
    (if	(and (= 'str (type dcl)) (findfile dcl))
      (vl-file-delete dcl)
    )
    (if	(and msg (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")))
      (princ (strcat "\nError: " msg))
    )
    (princ)
  )
  (command "-style" "Times New Roman" "Times New Roman" 0 1 0 "" "")
  (Create_dialog_VETD_VETN)
  (setq dch (load_dialog dcl))
  (end_list)

  (setq Path_ntd "")
  (action_tile
    "InputFile"
    (vl-prin1-to-string
      (quote (if (setq Path_ntd	(getfiled "Select Input File"
					  (getvar "dwgprefix")
					  "ntd;*"
					  16
				)
		 )
	       (set_tile "box_Input" Path_ntd)
	     )

      )
    )
  )
;;;;;;;;;;;;;;;;PHAN TRAC DOC;;;;;;;;;;;;;;;;;;;;;;;;;
  (action_tile "box_TLD1" "(setq TLD1 (get_tile \"box_TLD1\"))")
  (setq TLD1 (get_tile "box_TLD1"))
  (action_tile "box_TLN1" "(setq TLN1 (get_tile \"box_TLN1\"))")
  (setq TLN1 (get_tile "box_TLN1"))
  (action_tile "box_CC1" "(setq Caochu_TD (get_tile \"box_CC1\"))")
  (setq Caochu_TD (get_tile "box_CC1"))
  (action_tile "box_MSS1" "(setq MSS_TD (get_tile \"box_MSS1\"))")
  (setq MSS_TD (get_tile "box_MSS1"))
  (action_tile
    "VETRACDOC"
    (strcat
      "(done_dialog)(setq UseButton 1))"
    )
  )





;;;;;;;;;;;;;;;;PHAN TRAC NGANG;;;;;;;;;;;;;;;;;;;;;;;;;
  (Check_Toggle)
  (action_tile "box_TLD2" "(setq TLD1_TN (get_tile \"box_TLD2\"))")
  (setq TLD1_TN (get_tile "box_TLD2"))
  (action_tile "box_TLN2" "(setq TLN1_TN (get_tile \"box_TLN2\"))")
  (setq TLN1_TN (get_tile "box_TLN2"))
  (action_tile "box_CC2" "(setq Caochu_TN (get_tile \"box_CC2\"))")
  (setq Caochu_TN (get_tile "box_CC2"))
  (action_tile "box_SC" "(setq SocotMC (get_tile \"box_SC\"))")
  (setq SocotMC (get_tile "box_SC"))
  (action_tile "box_KCC" "(setq KC_COT (get_tile \"box_KCC\"))")
  (setq KC_COT (get_tile "box_KCC"))
  (action_tile "box_KCH" "(setq KC_HANG (get_tile \"box_KCH\"))")
  (setq KC_HANG (get_tile "box_KCH"))
  ;;;TOGGLE
  (action_tile "toggle_KCDC" "(Check_Toggle)(setq tog_KCDC $value)")
;;;  (setq tog_KCDC (get_tile "toggle_KCDC"))
  (action_tile "toggle_MSS" "(Check_Toggle)(setq tog_MSS_TN $value)")
;;;  (setq tog_MSS_TN (get_tile "toggle_MSS"))
  (action_tile "toggle_KH" "(Check_Toggle)(setq tog_KH $value)")
;;;  (setq tog_KH (get_tile "toggle_KH"))
  (action_tile "toggle_DC" "(Check_Toggle)(setq tog_DC $value)")
;;;  (setq tog_DC (get_tile "toggle_DC"))
;;;;;;KHOANG CACH DAU CO TU DONG
  (if (= tog_KCDC "1")
    (progn
      (setq ansKCDC "Yes")
      (setq KCDauCo "0")
    )
    (progn
      (setq ansKCDC "No")
      (action_tile "box_KCDC"   "(setq KCDauCo (get_tile \"box_KCDC\"))")
      (setq KCDauCo (get_tile "box_KCDC"))
    )
  )

;;;;;;MUC SO SANH TU DONG
  (if (= tog_MSS_TN "1")
    (progn
      (setq ansMSS "Yes")
      (setq MSS0 "0")
    )
    (progn
      (setq ansMSS "No")
      (action_tile "box_MSS_TN"   "(setq MSS0 (get_tile \"box_MSS_TN\"))")
      (setq MSS0 (get_tile "box_MSS_TN"))
    )
  )


;;;;;;KY HIEU DIA VAT
  (if (= tog_KH "1")
    (setq ansKH "Yes")
    (setq ansKH "No")
  )
  
;;;;;MEP DUONG CU
  (if (= tog_DC "1")
    (progn
      (setq ansDC "Yes")
;;;      (action_tile "box_DC"   "(setq WidthMD (get_tile \"box_DC\"))")
;;;      (setq WidthMD (get_tile "box_DC"))
    )
    (progn
      (setq ansDC "No")
      (setq WidthMD "0")
    )
  )

  
  (action_tile
    "VETRACNGANG"
    (strcat
      "(done_dialog)(setq UseButton 2))"
    )
  )
  (action_tile
    "accept"
    "(done_dialog)
       (vl-file-delete dcl)"
  )
  (action_tile
    "cancel"
    "(done_dialog)
       (vl-file-delete dcl)"
  )

  (start_dialog)
  (unload_dialog dch)
  (if (= UseButton 1)
    (progn
      (if (/= Path_ntd "")
	(progn
	  (Func_VETD Path_ntd (atof TLD1) (atof TLN1) (atof Caochu_TD) (atof MSS_TD))
	  (done_dialog)
	)
	(Alert "B\U+1EA1n ch\U+01B0a ch\U+1ECDn file ntd!")
      )
    )
  )

  (if (= UseButton 2)
    (progn
      (if (/= Path_ntd "")
	(progn
	  (prompt
	    (strcat
		"\n"
		"AnsKCDC: " ansKCDC
		"\n"
		"ansMSS : " ansMSS
		"\n"
		"AnsKH: " AnsKH
		"\n"
		"AnsDC : " AnsDC
		"\n"
	    )
	  )
;;;	  (Func_VETN ansKH
;;;		     ansDC
;;;		     Path_ntd
;;;		     (atof WidthMD)
;;;		     ansMSS
;;;		     (atof MSS0)
;;;		     (atof TLD1_TN)
;;;		     (atof TLN1_TN)
;;;		     (atof Caochu_TN)
;;;		     (atof SocotMC)
;;;		     (atof KC_HANG)
;;;		     (atof KC_COT)
;;;		     ansKCDC
;;;		     (atof KCDauCo)
;;;	  )
	  (done_dialog)
	)
	(Alert "B\U+1EA1n ch\U+01B0a ch\U+1ECDn file ntd!")
      )
    )
  )



  (vl-file-delete dcl)
  (princ)
)
(defun toggleSet ( k kL )
    (foreach x kL (set_tile x "0")) (set_tile k "1") k
  )
(defun Check_Toggle ()
  (if (= (atoi (get_tile "toggle_MSS")) 1)
    (progn
      (mode_tile "box_MSS_TN" 2)
      (mode_tile "Text_MSS" 1)
    )
    (progn
      (mode_tile "box_MSS_TN" 0)
      (mode_tile "Text_MSS" 0)
    )
  )
  (if (= (atoi (get_tile "toggle_KCDC")) 1)
    (progn
      (mode_tile "box_KCDC" 2)
      (mode_tile "Text_KCDC" 1)
    )
    (progn
      (mode_tile "box_KCDC" 0)
      (mode_tile "Text_KCDC" 0)
    )
  )
  (if (= (atoi (get_tile "toggle_DC")) 1)
    (progn
      (mode_tile "box_DC" 0)
      (mode_tile "Text_DC" 0)
    )
    (progn
      (mode_tile "box_DC" 2)
      (mode_tile "Text_DC" 1)
    )
  )
)
(defun Create_dialog_VETD_VETN ()
  (setq dcl (vl-filename-mktemp nil nil ".dcl"))
  (setq des (open dcl "w"))
  (foreach x
	     '("temp : dialog"
	       "{"
	       "label = \"CH\U+01AF\U+01A0NG TRÌNH V\U+1EBC TR\U+1EAEC D\U+1ECCC - TR\U+1EAEC NGANG\";"
	       ": text"
	       "{"
	       "label = \"Ng\U+01B0\U+1EDDi vi\U+1EBFt: Nguy\U+1EC5n Th\U+00E0nh Du\U+00E2n\";"
	       "alignment = centered;"
	       "}"
	       ": text"
	       "{"
	       "label = \"Email: Heaven2407@gmail.com - Mobile: 0972.0168.25\";"
	       "alignment = centered;"
	       "}"

	       "spacer;" "spacer;"

	       
	       ": boxed_column"
	       "{"
	       "label = \"Ch\U+1ECDn \U+0111\U+01B0\U+1EDDng d\U+1EABn\";"
	       "fixed_width = 10;"
	       "alignment = centered;"
	       "width = 20.0;"

	       ": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"&File\";"
	       "fixed_width = true;"
	       
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_Input\";"
	       "fixed_width = true;"
	        "width = 50.0;"
	       "}"
	       
	       ": button"
		"{"
		"label = \"Browse...\";"
		"key = \"InputFile\";"
		"is_default = false;"
		"width = 15;" "fixed_width = true;"
	        "alignment = centered;"
		"}"
	       "}"



	       
	       "}"
                 
	       



	       
	       ": row"
	       "{"
		": boxed_column"
		"{"
		"label = \" Tr\U+1EAFc D\U+1ECDc \";"
	        "fixed_width = 10;"
	       "alignment = centered;"
	        "width = 20.0;"

	       ": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"T\U+1EF7 l\U+1EC7 \U+0111\U+1EE9ng 1 / \";"
	       "fixed_width = true;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_TLD1\";"
	       "fixed_width = true;"
	       "value = \"100\";"
	       "}"
	       "}"

	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"T\U+1EF7 l\U+1EC7 ngang 1 / \";"
	       "fixed_width = true;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_TLN1\";"
	       "fixed_width = true;"
	       "value = \"1000\";"
	       "}"
	       "}"

	       

	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"Cao ch\U+1EEF \";"
	       "fixed_width = true;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_CC1\";"
	       "fixed_width = true;"
	       "value = \"2\";"
	       "}"
	       "}"



	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"M\U+1EE9c so s\U+00E1nh \";"
	       "fixed_width = true;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_MSS1\";"
	       "fixed_width = true;"
	       "value = \"0\";"
	       "}"
	       "}"
	       
 		"spacer;" "spacer;" "spacer;" "spacer;"
	       
		": button"
		"{"
		"label = \"  V\U+1EBD Tr\U+1EAFc D\U+1ECDc   \";"
		"key = \"VETRACDOC\";"
		"is_default = false;"
		"width = 15;" "fixed_width = true;"
	        "alignment = centered;"
		"}"



	       
	       
               "}"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	       ": row"
	       "{"
	       	": boxed_column"
		"{"
		"label = \" Tr\U+1EAFc Ngang \";"
	        "fixed_width = 10;"
	        "width = 20.0;"
	       

	       ": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"T\U+1EF7 l\U+1EC7 \U+0111\U+1EE9ng 1 / \";"
	       "fixed_width = true;"
	       "alignment = left;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_TLD2\";"
	       "fixed_width = true;"
	       "value = \"200\";"
	       "}"
	       "}"

	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"T\U+1EF7 l\U+1EC7 ngang 1 / \";"
	       "fixed_width = true;"
	       "alignment = left;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_TLN2\";"
	       "fixed_width = true;"
	       "value = \"200\";"
	       "}"
	       "}"

	       

	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"Cao ch\U+1EEF\";"
	       "fixed_width = true;"
	       "alignment = left;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_CC2\";"
	       "fixed_width = true;"
	       "value = \"0.4\";"
	       "}"
	       "}"



	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"S\U+1ED1 c\U+1ED9t\";"
	       "fixed_width = true;"
	       "alignment = left;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_SC\";"
	       "fixed_width = true;"
	       "value = \"10\";"
	       "}"
	       "}"

	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"Kho\U+1EA3ng c\U+00E1ch c\U+1ED9t\";"
	       "fixed_width = true;"
	       "alignment = left;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_KCC\";"
	       "fixed_width = true;"
	       "value = \"100\";"
	       "}"
	       "}"

	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"Kho\U+1EA3ng c\U+00E1ch h\U+00E0ng \";"
	       "fixed_width = true;"
	       "alignment = left;"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_KCH\";"
	       "fixed_width = true;"
	       "value = \"100\";"
	       "}"
	       "}"


	
	       ":toggle"
	       "{"
	       "alignment = centered ;"
	       "label = \"Auto kho\U+1EA3ng c\U+00E1ch \U+0111\U+1EA7u c\U+1EDD\" ;"
		"key = \"toggle_KCDC\" ;"
		"}"
	       
	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"Kho\U+1EA3ng c\U+00E1ch \U+0111\U+1EA7u c\U+1EDD\";"
	       "fixed_width = true;"
	       "alignment = left;"
	       "key = \"Text_KCDC\";"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_KCDC\";"
	       "value = \"20\";"
	       "fixed_width = true;"
	       "}"
	       "}"


	       
	       ":toggle"
	       "{"
	       "alignment = centered ;"
	       "label = \"So s\U+00E1nh t\U+1EF1 \U+0111\U+1ED9ng\" ;"
		"key = \"toggle_MSS\" ;"
		"}"

	       	": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"Nh\U+1EADp m\U+1EE9c so s\U+00E1nh\";"
	       "fixed_width = true;"
	       "alignment = left;"
	       "key = \"Text_MSS\";"
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_MSS_TN\";"
	       "fixed_width = true;"
	       "value = \"0\";"
	       "}"
	       "}"




	       

	       ":toggle"
	       "{"
	       "alignment = centered ;"
	       "label = \"Ch\U+00E8n k\U+00FD hi\U+1EC7u l\U+00EAn Tr\U+1EAFc Ngang\" ;"
		"key = \"toggle_KH\" ;"
		"}"


	       ":toggle"
	       "{"
	       "alignment = centered ;"
	       "label = \"V\U+1EBD l\U+1EDBp \U+0111\U+01B0\U+1EDDng c\U+0169\" ;"
		"key = \"toggle_DC\" ;"
		"}"

	       ": row"
	       "{"
	       "children_alignment = right;"
	       ": text"
	       "{"
	       "label = \"Nh\U+1EADp \U+0111\U+1ED9 d\U+00E0y l\U+1EDBp \U+0111\U+01B0\U+1EDDng c\U+0169\";"
	       "fixed_width = true;"
	       "key = \"Text_DC\" ;"
	       "alignment = left;"
	       
	       "}"
	       ": edit_box"
	       "{"
	       "key = \"box_DC\";"
	       "fixed_width = true;"
	       "value = \"0.1\";"
	       "}"
	       "}"


	       

 		"spacer;" "spacer;" "spacer;" "spacer;"
	       
		": button"
		"{"
		"label = \"V\U+1EBD Tr\U+1EAFc Ngang\";"
		"key = \"VETRACNGANG\";"
		"is_default = false;"
		"width = 15;" "fixed_width = true;"
	        "alignment = centered;"
		"}"

	       
		"}"
	       "}"
 	       "}"


	       
	       "spacer;" "spacer;" "spacer;" 
	       "ok_cancel;"
	       "}"
	      )
    (write-line x des)
  )
  (not (setq des (close des)))
  (< 0 (setq dch (load_dialog dcl)))
  (new_dialog "temp" dch)
)


 


<<

Filename: 441984_00.lsp
Tác giả: phamthanhbinh
Bài viết gốc: 378616
Tên lệnh: dcd
Nhờ Xem Giúp Lips Điền Cao Độ Tk

Một cách viết khác :) :

(defun c:dcd (/ doc ms a p) (vl-load-com)
(setq doc (vla-get-activedocument...
>>

Một cách viết khác :) :

(defun c:dcd (/ doc ms a p) (vl-load-com)
(setq doc (vla-get-activedocument (vlax-get-acad-object)) 
ms (vla-get-modelspace doc))
(if (ssget (list (cons 0 "*POLYLINE"))) 
(vlax-map-collection (vla-get-ActiveSelectionset doc) '(lambda (obj)
(foreach x (acet-geom-vertex-list (vlax-vla-object->ename obj))
(vla-put-Alignment (setq a (vla-addtext ms (rtos (last x) 2 2)
(setq p (vlax-3d-point (list (car x) (cadr x)))) 1.)) 10)
(vla-put-TextAlignmentPoint a p) )))))

Cad bạn phải có Express Tools!

Hề hề hề,

Bác pphung183 có thể giải thích giùm hai tham số 1. và 10 ở trong đoạn code trên giùm mình không???


<<

Filename: 378616_dcd.lsp
Tác giả: Doan Van Ha
Bài viết gốc: 442028
Tên lệnh: ha
Lấy Font Name trong Text Style
26 phút trước, Danh Cong đã nói:

^^ Cám ơn bác. Câu số...

>>
26 phút trước, Danh Cong đã nói:

^^ Cám ơn bác. Câu số 2 đã tìm được lời giải đáp.

Còn câu số 1 nữa.

Hoặc:


(defun C:HA()
 (vla-GetFont (vlax-ename->vla-object (tblobjname "style" "MyStyle")) 'n 'b 'i 'c 'p)
 (alert n))


<<

Filename: 442028_ha.lsp
Tác giả: songvotinh
Bài viết gốc: 12405
Tên lệnh: ve
Xin được diễn giải về Lisp chèn ký tự !!!

Tôi có một đoạn List như sau:

(defun C:ve (/ scalei  pto  mtxtin i orx pti)

 (setq pto (getpoint "Nhap toa do "))
 (setq scalei (getreal "Nhap khoang cach chu: "))
 (setq mtxtin "")
 (setq mtxtin (getstring "input text: "))
 (setq tlen  (strlen mtxtin))
 (setq i 1)
 (setq orx (car pto))
 (while (<= i tlen )

(setq pti (polar pto  0.0 orx)) 


(if (= (substr mtxtin i 1) "a") (command "Insert" "a" pti "" "" ""))
   	(if (= (substr mtxtin i 1)...
>>

Tôi có một đoạn List như sau:

(defun C:ve (/ scalei  pto  mtxtin i orx pti)

 (setq pto (getpoint "Nhap toa do "))
 (setq scalei (getreal "Nhap khoang cach chu: "))
 (setq mtxtin "")
 (setq mtxtin (getstring "input text: "))
 (setq tlen  (strlen mtxtin))
 (setq i 1)
 (setq orx (car pto))
 (while (<= i tlen )

(setq pti (polar pto  0.0 orx)) 


(if (= (substr mtxtin i 1) "a") (command "Insert" "a" pti "" "" ""))
   	(if (= (substr mtxtin i 1) "b")	(command "Insert" "b" pti "" "" ""))
   	(if (= (substr mtxtin i 1) "c")	(command "Insert" "c" pti "" "" ""))
(if (= (substr mtxtin i 1) "d")	(command "Insert" "d" pti "" "" ""))
   	(if (= (substr mtxtin i 1) "e")	(command "Insert" "e" pti "" "" ""))
   	(if (= (substr mtxtin i 1) "f")	(command "Insert" "f" pti "" "" ""))
   	(if (= (substr mtxtin i 1) "g")	(command "Insert" "g" pti "" "" ""))



(if (= (substr mtxtin i 1) "h")	(command "Insert" "h" pti "" "" ""))
(if (= (substr mtxtin i 1) "i")	(command "Insert" "i" pti "" "" "" ))
(if (= (substr mtxtin i 1) "j")	(command "Insert" "j" pti ""  "" ""))
(if (= (substr mtxtin i 1) "k")	(command "Insert" "k" pti ""  "" ""))
   	(if (= (substr mtxtin i 1) "l")	(command "Insert" "l" pti ""  "" ""))
   	(if (= (substr mtxtin i 1) "m")	(command "Insert" "m" pti ""  "" ""))
   	(if (= (substr mtxtin i 1) "n")	(command "Insert" "n" pti ""  "" ""))

   	(if (= (substr mtxtin i 1) "o")	(command "Insert" "o" pti "" "" ""))
(if (= (substr mtxtin i 1) "p")	(command "Insert" "p" pti "" "" "" ))
(if (= (substr mtxtin i 1) "q")	(command "Insert" "q" pti ""  "" ""))
(if (= (substr mtxtin i 1) "r")	(command "Insert" "r" pti ""  "" ""))
   	(if (= (substr mtxtin i 1) "s")	(command "Insert" "s" pti ""  "" ""))
   	(if (= (substr mtxtin i 1) "t")	(command "Insert" "t" pti ""  "" ""))
   	(if (= (substr mtxtin i 1) "u")	(command "Insert" "u" pti ""  "" ""))

   	(if (= (substr mtxtin i 1) "v")	(command "Insert" "v" pti "" "" ""))
(if (= (substr mtxtin i 1) "x")	(command "Insert" "x" pti "" "" "" ))
(if (= (substr mtxtin i 1) "y")	(command "Insert" "y" pti ""  "" ""))
(if (= (substr mtxtin i 1) "z")	(command "Insert" "z" pti ""  "" ""))
   	(if (= (substr mtxtin i 1) "w")	(command "Insert" "w" pti ""  "" ""))


   	(setq orx (+ scalei orx))

  	(setq i (1+ i))	
 )	
)

Và đi kèm với nó là File ABC

http://www.cadviet.com/upfiles/ABC.dwg

 

Bác Hoanh và các cao thủ có thể giúp tôi chỉnh sửa nó với... hiện nay tôi muốn sử dụng list mà ko cần đi kèm với File cad có được ko ? và tôi muốn chèn ký tự tại chính điểm chọn thì làm thế nào (hiện tại điểm chèn ký tự ko trùng với điểm chọn)

Xin các bác chỉ giáo dùm... xin cảm ơn... rất nhiều

Cadviet rất hay và ý nghĩa, chúc các bạn mạnh khoẻ...


<<

Filename: 12405_ve.lsp
Tác giả: Thaistreetz
Bài viết gốc: 115718
Tên lệnh: abc
Phương pháp chỉnh sửa và bắt lỗi trong Auto Lisp
1. Khi bạn muốn viết 1 đoạn lisp theo một ý tưởng nào đó trong quá trình làm việc thì bạn nên copy một đoạn mã chuẩn làm mẫu. Sau đó, bạn xóa đi một số dòng...
>>
1. Khi bạn muốn viết 1 đoạn lisp theo một ý tưởng nào đó trong quá trình làm việc thì bạn nên copy một đoạn mã chuẩn làm mẫu. Sau đó, bạn xóa đi một số dòng câu lệnh không phù hợp đi để có được 1 cú pháp tốt nhất

VD :

(defun c:abc (/)
 (setvar "cmdecho" 0)
 (command "_.undo" "be")
 (setvar "regenmode" 1)
 (setq osmode (getvar "osmode"))
 (setq colo (getvar "clayer"))
 (setvar "osmode" 0)
 (command "ucs" "")
;;;bat dau viet tu day


;;;ket thuc
 (setvar "clayer" colo)
 (setvar "osmode" osmode)
 (command "_.undo" "e")
)

2. Sau đó bạn sẽ triển khai viết tiếp các dòng lệnh tiếp theo ....

Làm 3 cái hàm con Start-progn, Done-progn, Error-progn cho lành. Mình chỉ cần 3 hàm này để kiểm soát toàn bộ biến hệ thống của mỗi chương trình.

 

Và tôi thường hay dùng một số lệnh tắt dùng để bắt lỗi chương trình như sau (vào AutoCad bấm lệnh Vlide) : Tại vị trí con trỏ viết lệnh

- Ctrl+Shift+] : kiểm tra đoạn mã có thiếu dấu ( hoặc ) hay không

- F9 : dùng để đánh dấu câu lệnh tại vị trí con trỏ (sau khi load file, vào Cad đánh lệnh ... thì chương trình lisp chỉ chạy tới vị trí đánh dấu này và dừng

- F8 : dùng phím này để tiếp tục chạy chương trình sau khi dừng tại vị trí F9. Tiếp tục bấm F8 chạy cho đến hết chương trình. Nếu bị dừng tại vị trí nào thic câu lệnh đó bị lỗi

- Ctrl+Shift+I : trả ra kết quả của câu lệnh. Nếu không hiện ra kết quả thì câu lệnh đó bị sai (hoặc thiếu biến số)

....

- Có thể kiểm tra xem đoạn code đã đủ các dấu đóng mở ngoặc, các dấu nháy kép bằng cách kích đúp chuột vào vị trí đầu hoặc cuối các đoạn code cần kiểm tra

- Bật thêm cái cửa sổ Watch (Ctrl+shift+W) trong cửa sổ này add tất cả các biến cần theo dõi và 1 biến không thể thiếu là LastValue. với công cụ này thì việc kiểm tra lỗi trở lên đơn giản rất nhiêu.

- Ngoài ra còn 1 công cụ hữu ích nữa là "Check edit window" (trên thanh công cụ của Vlide bấm nút có biểu tuợng tờ giấy trắng và chữ V màu xanh). công cụ này sẽ kiểm tra toàn bộ các lỗi có thể gặp phải trong code (thiếu dấu đóng mở ngoặc, thiếu dấu nháy kép, khai báo thừa hoặc thiếu biến...) nếu sảy ra lỗi sẽ đuợc thông báo bằng cửa sổ Buil output các lỗi sẽ đuợc thông báo bằng dòng chữ tô màu xanh, kích đúp vào dòng chữ này con trỏ sẽ nhảy về vị trí đoạn code bị lỗi.


<<

Filename: 115718_abc.lsp

Trang 303/330

303