Đến nội dung


Hình ảnh
- - - - -

[Nhờ sửa lisp] đặt layer và màu khi vẽ lệnh


  • Please log in to reply
8 replies to this topic

#1 ductrunggtvt

ductrunggtvt

    biết zoom

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

Đã gửi 20 November 2014 - 05:54 PM

Mình search trên diễn đàn và tìm được lisp về tô bóng, trong lệnh này khi vẽ các đường bóng thì layer và màu mặc định là cái hiện tại. mình muốn khi nó vẽ thì đường bóng layer là "danhbong" và màu mặc định là "8", sau khi hết thúc lệnh trả về layer và màu ban đầu. Mình không chuyên lập trình lisp nên nhờ anh em sửa giúp tí. cảm ơn nhiều!
(defun c:trb(/ p1 p11 p2 p22 n1 x1 x2 dis1 dis2 i oldOs oldCmd)
(grtext -1 "@S\U+01A1n T\U+00F9ng - ketxu - Cadviet")
(if (= n nil)(setq n 10))
(setq p1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m 1") 
p2 (getpoint p1 "\nCh\U+1ECDn \U+0111i\U+1EC3m 2") 
p11 (getpoint  "\nCh\U+1ECDn \U+0111i\U+1EC3m 3") 
p22 (getpoint p11 "\nCh\U+1ECDn \U+0111i\U+1EC3m 4") i 0
n1 (getint (strcat "\nS\U+1ED1 kho\U+1ea3ng chia < " (rtos n 2 0) " > : "))
	dis1 (distance p1 p11)
	dis2 (distance p2 p22)
)
(if n1 (setq n n1))
(setq
x1 (/ dis1  (/ (* n (+ n 1)) 2))
x2 (/ dis2  (/ (* n (+ n 1)) 2))
oldOs (getvar "osmode")
oldCmd (getvar "cmdecho"))

(setvar "osmode" 0)
(setvar "cmdecho" 0)
(repeat n
	(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
	(setq i (1+ i))
)
(setvar "osmode" oldOs)
(setvar "cmdecho" oldCmd)
)

  • 0

#2 hiepttr

hiepttr

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1298 Bài viết
Điểm đánh giá: 518 (tốt)

Đã gửi 20 November 2014 - 06:08 PM

không down được lisp của bạn !


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#3 ductrunggtvt

ductrunggtvt

    biết zoom

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

Đã gửi 20 November 2014 - 08:55 PM

Mình sửa lại rồi đó
  • 0

#4 nhoclangbat

nhoclangbat

    Edu level: li10

  • Members
  • PipPipPipPipPipPipPip
  • 1409 Bài viết
Điểm đánh giá: 379 (khá)

Đã gửi 20 November 2014 - 09:50 PM

- hàng này của thầy Ket đây mà ^^, nhoc nghịch tí ^^

;;--------------------------------------
(defun _layer2 ( name colour )
    (if (null (tblsearch "LAYER" name))
        (entmake
            (list
               '(0 . "LAYER")
               '(100 . "AcDbSymbolTableRecord")
               '(100 . "AcDbLayerTableRecord")
               '(70 . 0)
                (cons 2 name)
                (cons 62 colour)
            )
        )
    )
)
;================================
(defun c:trb(/ p1 p11 p2 p22 n1 x1 x2 dis1 dis2 i oldOs oldCmd oldclay)
(grtext -1 "@S\U+01A1n T\U+00F9ng - ketxu - Cadviet")
(if (null (tblsearch "layer" "danhbong")) (_layer2 "danhbong" 8)) 
(if (= n nil)(setq n 10))
(setq p1 (getpoint "\nCh\U+1ECDn \U+0111i\U+1EC3m 1") 
p2 (getpoint p1 "\nCh\U+1ECDn \U+0111i\U+1EC3m 2") 
p11 (getpoint  "\nCh\U+1ECDn \U+0111i\U+1EC3m 3") 
p22 (getpoint p11 "\nCh\U+1ECDn \U+0111i\U+1EC3m 4") i 0
n1 (getint (strcat "\nS\U+1ED1 kho\U+1ea3ng chia < " (rtos n 2 0) " > : "))
	dis1 (distance p1 p11)
	dis2 (distance p2 p22)
)
(if n1 (setq n n1))
(setq
x1 (/ dis1  (/ (* n (+ n 1)) 2))
x2 (/ dis2  (/ (* n (+ n 1)) 2))
oldOs (getvar "osmode")
oldCmd (getvar "cmdecho")
oldclay (getvar 'clayer))

(setvar "osmode" 0)
(setvar "cmdecho" 0)
(setvar 'clayer "danhbong")
(repeat n
	(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
	(setq i (1+ i))
)
(setvar "osmode" oldOs)
(setvar "cmdecho" oldCmd)
(setvar 'clayer oldclay)
(princ)
)

  • 1
"...................][)e\/i][_ /\/\@Y CrY....................."

(defun THỔ_DÂN_HỌC_CAD (xxxx) ...) ^_^








#5 ductrunggtvt

ductrunggtvt

    biết zoom

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

Đã gửi 21 November 2014 - 07:27 AM

Cảm ơn @nhoclangbat nhiều nhé. đã ok rồi :)


  • 0

#6 ductrunggtvt

ductrunggtvt

    biết zoom

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

Đã gửi 24 November 2014 - 02:52 PM

Ah. còn một điều hơi bất tiện nữa là đường tô bóng cuối cùng trùng với đường bao, hết lệnh mình lại phải xóa bằng tay. bạn có thể hiệu chỉnh thêm một tí k?


  • 0

#7 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5447 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 24 November 2014 - 04:31 PM

Bạn sửa:

(repeat n

Thành:

(repeat (1- n)


  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#8 ductrunggtvt

ductrunggtvt

    biết zoom

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

Đã gửi 24 November 2014 - 04:55 PM

cảm ơn bạn. đã hiểu cú pháp

(setq n (- n 1))
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setq n (+ n 1))
(setq n (- n 1))
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setq n (+ n 1))

  • 0

#9 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 25 November 2014 - 08:35 AM

cảm ơn bạn. đã hiểu cú pháp

(setq n (- n 1))
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setq n (+ n 1))
(setq n (- n 1))
(repeat n
(command ".Line" (setq p1 (polar p1 (angle p1 p11) (+ x1 (* i x1)))) (setq p2(polar p2 (angle p2 p22) (+ x2 (* i x2)))) "")
(setq i (1+ i))
)
(setq n (+ n 1))

 

Tốt quá rồi ^^ 


  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC