Đến nội dung


Hình ảnh

[NO]Bài 10: Biến hệ thống - Lisp


  • Please log in to reply
11 replies to this topic

#1 cadvietedu

cadvietedu

    Trung tâm đào tạo CADViet

  • Moderator
  • PipPipPipPip
  • 261 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 04 September 2014 - 10:23 PM

[Nội dung được bảo vệ - Chỉ có học viên lớp AutoCAD Nâng cao Online mới nhìn thấy nội dung này. Thông tin chi tiết các lớp học xem tại đây]
____________________________________________________________________________
  • 1

#2 caiquattran1609

caiquattran1609

    Edu level: ao10, to10, no10

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

Đã gửi 07 February 2015 - 09:24 PM

Em đã học xong chương trình ACAD Online của trung tâm. Em thấy rất hay và bổ ích.Em rất cảm ơn trung tâm!

Nhưng em có thắc mắc là em vẫn chưa biết cách tạo nên 1 file giống file CADVIETSTANDARD ?

Anh có thể chỉ giúp em cách tạo nên 1 file giống như vậy được không ạ?

Em cám ơn!


  • 0

#3 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 07 February 2015 - 10:36 PM

Cảm ơn bạn đã theo học cả 3 khóa học từ Cơ bản, Trung cấp đến Nâng cao của CADViet.

Về block CADViet Standard, thực tế là file CADVietStandard, nó là 1 file chứa đủ tất cả các block thôi mà bạn,
Bạn cứ tạo lần lượt các layer, block, text style, dim style rồi lưu lại thành 1 file cadstandard là được.
  • 0

#4 caiquattran1609

caiquattran1609

    Edu level: ao10, to10, no10

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

Đã gửi 08 February 2015 - 01:33 AM

Vâng. Em đã hiểu. Em cám ơn!


  • 0

#5 vangialoc

vangialoc

    Edu level: no10

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

Đã gửi 08 February 2015 - 05:35 PM

Anh kiểm tra giúp E lisp đo chiều dài của các đối tượng là line, polyline, mline... bị lỗi khi sử dụng trong

AutoCad 2015 (lisp bị lỗi khi chọn nhiều đối tượng 1 lúc ah). Cám ơn Anh.

http://www.cadviet.c...o_chieu_dai.lsp

 


  • 0

#6 cadvietedu

cadvietedu

    Trung tâm đào tạo CADViet

  • Moderator
  • PipPipPipPip
  • 261 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 09 February 2015 - 04:38 PM

Bạn có thể paste mã lisp vào bài viết được không?
File bạn upload bị lỗi.
  • 0

#7 vangialoc

vangialoc

    Edu level: no10

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

Đã gửi 10 February 2015 - 10:57 AM

Mã lísp đây ah. Anh kiểm tra giúp E.

 
;; free lisp from cadviet.com
(defun add_mline ()
  (foreach e_record_sub e_record
    (cond ((= 10 (car e_record_sub))
  (setq pt1   (cdr e_record_sub)
mline_len 0.0
  )
 )
 ((= 11 (car e_record_sub))
  (setq pt2   (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1   pt2
  )
 )
    )
  )
  (setq tot_len (+ tot_len mline_len))
  (ssdel e_name ss)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:tg (/ tot_len ss e_name e_record e_type)
  (setq tot_len 0.0)
  (setq ss (ssget))
  (if (null ss)
    (exit)
  )
  (while (> (sslength ss) 0)
    (setq e_name (ssname ss 0))
    (setq e_record (entget e_name))
    (setq e_type (cdr (assoc '0 e_record)))
    (cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
  (command "lengthen" e_name "")
  (setq tot_len (+ tot_len (getvar "PERIMETER")))
  (ssdel e_name ss)
 )
 ((wcmatch e_type "MLINE") (add_mline))
 (e_type (ssdel e_name ss))
    )
  )
  (prompt (strcat "\nTotal length is: " (rtos tot_len 2 2)))
  (princ)
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:GG ( / *error* vl ov LastEntity ent ss )
 
CADVIET
 
(defun *error* ( msg )
 
(mapcar 'setvar vl ov)
 
(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
 
(princ (strcat "\n** Error: " msg " **")))
 
(princ)
 
)
 
(setq vl '("CMDECHO" "PEDITACCEPT" "QAFLAGS")
 
ov (mapcar 'getvar vl))
 
(setq LastEntity (entlast))
 
(command "_.mline")
 
(while (= 1 (logand 1 (getvar 'CMDACTIVE)))
 
(command pause)
 
)
 
(if (not (equal LastEntity (setq ent (entlast))))
 
(progn
 
(mapcar 'setvar vl '(0 1 5))
 
(vl-cmdf "_.explode" ent "")
 
(setq ss (ssadd))
 
(mapcar '(lambda ( e ) (ssadd e ss)) (LM:EntnexttoEnd ent))
 
(vl-cmdf "_.pedit" "_M" ss "" "_J" "" "")
 
)
 
)
 
(mapcar 'setvar vl ov)
 
(princ)
 
)
 
(defun LM:EntnexttoEnd ( e )
 
(if (setq e (entnext e))
 
(cons e (LM:EntnexttoEnd e))
 
)
 
)

  • 0

#8 vangialoc

vangialoc

    Edu level: no10

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

Đã gửi 10 February 2015 - 11:00 AM

;; free lisp from cadviet.com
(defun add_mline ()
(foreach e_record_sub e_record
(cond ((= 10 (car e_record_sub))
(setq pt1 (cdr e_record_sub)
mline_len 0.0
)
)
((= 11 (car e_record_sub))
(setq pt2 (cdr e_record_sub)
mline_len (+ mline_len (distance pt2 pt1))
pt1 pt2
)
)
)
)
(setq tot_len (+ tot_len mline_len))
(ssdel e_name ss)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun C:tg (/ tot_len ss e_name e_record e_type)
(setq tot_len 0.0)
(setq ss (ssget))
(if (null ss)
(exit)
)
(while (> (sslength ss) 0)
(setq e_name (ssname ss 0))
(setq e_record (entget e_name))
(setq e_type (cdr (assoc '0 e_record)))
(cond ((wcmatch e_type "LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE")
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))
(ssdel e_name ss)
)
((wcmatch e_type "MLINE") (add_mline))
(e_type (ssdel e_name ss))
)
)
(prompt (strcat "\nTotal length is: " (rtos tot_len 2 2)))
(princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:GG ( / *error* vl ov LastEntity ent ss )

CADVIET

(defun *error* ( msg )

(mapcar 'setvar vl ov)

(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")

(princ (strcat "\n** Error: " msg " **")))

(princ)

)

(setq vl '("CMDECHO" "PEDITACCEPT" "QAFLAGS")

ov (mapcar 'getvar vl))

(setq LastEntity (entlast))

(command "_.mline")

(while (= 1 (logand 1 (getvar 'CMDACTIVE)))

(command pause)

)

(if (not (equal LastEntity (setq ent (entlast))))

(progn

(mapcar 'setvar vl '(0 1 5))

(vl-cmdf "_.explode" ent "")

(setq ss (ssadd))

(mapcar '(lambda ( e ) (ssadd e ss)) (LM:EntnexttoEnd ent))

(vl-cmdf "_.pedit" "_M" ss "" "_J" "" "")

)

)

(mapcar 'setvar vl ov)

(princ)

)

(defun LM:EntnexttoEnd ( e )

(if (setq e (entnext e))

(cons e (LM:EntnexttoEnd e))

)

)


  • 0

#9 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 11 February 2015 - 09:54 AM

Nội dung cần sửa:
Sửa đoạn mã
(command "lengthen" e_name "")
(setq tot_len (+ tot_len (getvar "PERIMETER")))

Bằng
(setq tot_len (+ tot_len (setq dai (vlax-curve-getDistAtParam e_name (vlax-curve-getEndParam e_name )))))

Và đây là toàn bộ lisp sau khi sửa:

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...sp/#entry333892
;; free lisp from cadviet.com

(defun add_mline ()

(foreach e_record_sub e_record

(cond ((= 10 (car e_record_sub))

(setq pt1 (cdr e_record_sub)

mline_len 0.0

)

)

((= 11 (car e_record_sub))

(setq pt2 (cdr e_record_sub)

mline_len (+ mline_len (distance pt2 pt1))

pt1 pt2

)

)

)

)

(setq tot_len (+ tot_len mline_len))

(ssdel e_name ss)

)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun C:tg (/ tot_len ss e_name e_record e_type)

(setq tot_len 0.0)

(setq ss (ssget))

(if (null ss)

(exit)

)

(while (> (sslength ss) 0)

(setq e_name (ssname ss 0))

(setq e_record (entget e_name))

(setq e_type (cdr (assoc '0 e_record)))

(cond ((wcmatch e_type
"LINE,ARC,CIRCLE,POLYLINE,LWPOLYLINE,ELLIPSE,SPLINE"
)

;(command "lengthen" e_name "")

(setq tot_len (+ tot_len (setq dai (vlax-curve-getDistAtParam e_name (vlax-curve-getEndParam e_name )))))

(ssdel e_name ss)

)

((wcmatch e_type "MLINE") (add_mline))

(e_type (ssdel e_name ss))

)

)

(prompt (strcat "\nTotal length is: " (rtos tot_len 2 2)))

(princ)

)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:GG (/ *error* vl ov LastEntity ent ss)


CADVIET


(defun *error* (msg)


(mapcar 'setvar vl ov)


(or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")


(princ (strcat "\n** Error: " msg " **"))
)


(princ)


)


(setq vl '("CMDECHO" "PEDITACCEPT" "QAFLAGS")


ov (mapcar 'getvar vl)
)


(setq LastEntity (entlast))


(command "_.mline")


(while (= 1 (logand 1 (getvar 'CMDACTIVE)))


(command pause)


)


(if (not (equal LastEntity (setq ent (entlast))))


(progn


(mapcar 'setvar vl '(0 1 5))


(vl-cmdf "_.explode" ent "")


(setq ss (ssadd))


(mapcar '(lambda (e) (ssadd e ss)) (LM:EntnexttoEnd ent))


(vl-cmdf "_.pedit" "_M" ss "" "_J" "" "")


)


)


(mapcar 'setvar vl ov)


(princ)


)


(defun LM:EntnexttoEnd (e)


(if (setq e (entnext e))


(cons e (LM:EntnexttoEnd e))


)


)

  • 0

#10 vangialoc

vangialoc

    Edu level: no10

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

Đã gửi 11 February 2015 - 10:14 PM

Lisp đã sử dụng tốt. Cảm ơn Anh.


  • 0

#11 chaudinhphuc

chaudinhphuc

    Edu level: no10, to10

  • Advance Member
  • PipPipPipPip
  • 210 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 04 March 2015 - 09:08 AM

Nhờ anh Hoành xem giúp em, em không xem được video bài 10 ạ.


  • 0

Học nữa, học mãi.       Không thầy đố mày làm nên


#12 chaudinhphuc

chaudinhphuc

    Edu level: no10, to10

  • Advance Member
  • PipPipPipPip
  • 210 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 04 March 2015 - 10:39 PM

Nhờ anh giúp đỡ, sau khi cài xong Autocad2015, em khởi động Cad lên để vẽ, khi di chuyển con chuột trên màn hình thì nó để lại những vệt đường trắng như hình dưới rất khó chịu, di chuyển con trỏ tới đâu để lại những vệt đường trắng tới đó.

Em đã thử vào Run gõ gõ GRAPHICSCONFIG mà không thấy xuất hiện bảng lệnh gì

Anh giúp em. Em cảm ơn nhiều.

22222222._zpssehhrnlm.png


  • 0

Học nữa, học mãi.       Không thầy đố mày làm nên