Đến nội dung


Hình ảnh
- - - - -

[yeuCau] lisp di chuyển chuột đến chọn (pick) nét vẽ thì nét vẽ nhấp nháy


  • Please log in to reply
57 replies to this topic

#21 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 18 May 2014 - 09:50 AM

Screening có từ Cad nào vậy? Tôi đang dùng 2007 nên không có biến đó.


  • 0

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


#22 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 18 May 2014 - 10:20 AM

Ý bạn ấy là làm mờ đối tượng không được chọn.

Screening = 50% có lẽ là đang nói tới độ mờ của nét vẽ giảm 50% 

Nó kiểu như lệnh Layiso (với tham số Lock and fade = 50)


  • 0

#23 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 18 May 2014 - 10:27 AM

Vâng ý của em đúng như Bác Tue_NV nói đấy ạ.


  • 0

#24 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 18 May 2014 - 10:39 AM

Nhờ mọi người giải thích giùm mấy từ "Screening" và "Lock" and "Face" trong lệnh Layiso. Tôi không thấy nó đâu cả? 


  • 0

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


#25 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 18 May 2014 - 10:45 AM

Nhờ mọi người giải thích giùm mấy từ "Screening" và "Lock" and "Face" trong lệnh Layiso. Tôi không thấy nó đâu cả? 

Giải thích :

Command: LAYISO

Current setting: Lock layers, Fade=50

 

Select objects on the layer(s) to be isolated or [Settings]: S

 

Enter setting for layers not isolated [Off/Lock and fade] <Lock and fade>: L

Enter fade value (0-90) <50>: 50

....

 Còn Screening 50% ở image sau: (Khi in muốn làm mờ đối tượng xuống 50%)

4652_screening50.jpg


  • 0

#26 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 18 May 2014 - 10:55 AM

Cad2007 thì LAYISO như thế này đây. Chẳng thấy Lock and Face gì cả.

Command: LAYISO

 

Current setting: Viewports=Vpfreeze

 

Select objects on the layer(s) to be isolated or [Settings]: s

 

In paper space viewport use [Vpfreeze/Off] <Vpfreeze>: *Cancel*

 

Select objects on the layer(s) to be isolated or [Settings]: *Cancel*

Command: LAYISO
 
Current setting: Viewports=Vpfreeze
 
Select objects on the layer(s) to be isolated or [Settings]: s
 
In paper space viewport use [Vpfreeze/Off] <Vpfreeze>: *Cancel*
 
Select objects on the layer(s) to be isolated or [Settings]: *Cancel*

  • 0

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


#27 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 18 May 2014 - 11:20 AM

 

 

Cad2007 thì LAYISO như thế này đây. Chẳng thấy Lock and Face gì cả.

Command: LAYISO

 

Current setting: Viewports=Vpfreeze

 

Select objects on the layer(s) to be isolated or [Settings]: s

 

In paper space viewport use [Vpfreeze/Off] <Vpfreeze>: *Cancel*

 

Select objects on the layer(s) to be isolated or [Settings]: *Cancel*

Command: LAYISO
 
Current setting: Viewports=Vpfreeze
 
Select objects on the layer(s) to be isolated or [Settings]: s
 
In paper space viewport use [Vpfreeze/Off] <Vpfreeze>: *Cancel*
 
Select objects on the layer(s) to be isolated or [Settings]: *Cancel*

 

Chắc CAD2007 không có Lock and fade bác ạ.

Chắc là bác phải suy nghĩ nhiều rồi  :lol:

@Ketxu: để suy nghĩ xem liệu có giải thuật gì biến cái không có của cad thành cái có thể của lisp chăng?

 
Doan Van Ha, on 17 May 2014 - 08:02, said:
Gởi chung mọi người:
Ban đầu thấy y/c này cứ nghĩ chủ topic chỉ muốn lòe thiên hạ, nhưng bây giờ thấy nó thực sự hữu dụng. Đó là: khi cần trình chiếu trên cad thì việc làm sáng lên, hoặc tô đậm, hoặc cho nhấp nháy đối tượng được chọn là rất cần thiết. Highlight thì nét mãnh nhìn không rõ. Di chuột đến từng đối tượng thì nét đậm và nhìn rõ nhưng mỗi lần chỉ nhìn được 1 đối tượng (đơn hoặc phức). Ước gì khi chọn đối tượng thì nó cũng làm đậm như khi di chuột thì hay biết mấy.
@Hoằn: giải pháp của em chỉ phù hợp nếu các nhóm đối tượng muốn tô đậm đã được xác định từ trước, đồng thời mỗi lần di chuột chỉ làm đậm được 1 nhóm. Trong trường hợp tổng quát, khi trình chiếu trên file cad thì các đối tượng muốn tô đậm là chưa được xác định trước mà thường phụ thuộc vào hội nghị >> ít khả thi.
@Ketxu: để suy nghĩ xem liệu có giải thuật gì biến cái không có của cad thành cái có thể của lisp chăng?
 
 

Gởi chung mọi người:

Ban đầu thấy y/c này cứ nghĩ chủ topic chỉ muốn lòe thiên hạ, nhưng bây giờ thấy nó thực sự hữu dụng. Đó là: khi cần trình chiếu trên cad thì việc làm sáng lên, hoặc tô đậm, hoặc cho nhấp nháy đối tượng được chọn là rất cần thiết. Highlight thì nét mãnh nhìn không rõ. Di chuột đến từng đối tượng thì nét đậm và nhìn rõ nhưng mỗi lần chỉ nhìn được 1 đối tượng (đơn hoặc phức). Ước gì khi chọn đối tượng thì nó cũng làm đậm như khi di chuột thì hay biết mấy.

@Hoằn: giải pháp của em chỉ phù hợp nếu các nhóm đối tượng muốn tô đậm đã được xác định từ trước, đồng thời mỗi lần di chuột chỉ làm đậm được 1 nhóm. Trong trường hợp tổng quát, khi trình chiếu trên file cad thì các đối tượng muốn tô đậm là chưa được xác định trước mà thường phụ thuộc vào hội nghị >> ít khả thi.

@Ketxu: để suy nghĩ xem liệu có giải thuật gì biến cái không có của cad thành cái có thể của lisp chăng?

 

Gởi chung mọi người:

Ban đầu thấy y/c này cứ nghĩ chủ topic chỉ muốn lòe thiên hạ, nhưng bây giờ thấy nó thực sự hữu dụng. Đó là: khi cần trình chiếu trên cad thì việc làm sáng lên, hoặc tô đậm, hoặc cho nhấp nháy đối tượng được chọn là rất cần thiết. Highlight thì nét mãnh nhìn không rõ. Di chuột đến từng đối tượng thì nét đậm và nhìn rõ nhưng mỗi lần chỉ nhìn được 1 đối tượng (đơn hoặc phức). Ước gì khi chọn đối tượng thì nó cũng làm đậm như khi di chuột thì hay biết mấy.

@Hoằn: giải pháp của em chỉ phù hợp nếu các nhóm đối tượng muốn tô đậm đã được xác định từ trước, đồng thời mỗi lần di chuột chỉ làm đậm được 1 nhóm. Trong trường hợp tổng quát, khi trình chiếu trên file cad thì các đối tượng muốn tô đậm là chưa được xác định trước mà thường phụ thuộc vào hội nghị >> ít khả thi.

@Ketxu: để suy nghĩ xem liệu có giải thuật gì biến cái không có của cad thành cái có thể của lisp chăng?

Gởi chung mọi người:

Ban đầu thấy y/c này cứ nghĩ chủ topic chỉ muốn lòe thiên hạ, nhưng bây giờ thấy nó thực sự hữu dụng. Đó là: khi cần trình chiếu trên cad thì việc làm sáng lên, hoặc tô đậm, hoặc cho nhấp nháy đối tượng được chọn là rất cần thiết. Highlight thì nét mãnh nhìn không rõ. Di chuột đến từng đối tượng thì nét đậm và nhìn rõ nhưng mỗi lần chỉ nhìn được 1 đối tượng (đơn hoặc phức). Ước gì khi chọn đối tượng thì nó cũng làm đậm như khi di chuột thì hay biết mấy.

@Hoằn: giải pháp của em chỉ phù hợp nếu các nhóm đối tượng muốn tô đậm đã được xác định từ trước, đồng thời mỗi lần di chuột chỉ làm đậm được 1 nhóm. Trong trường hợp tổng quát, khi trình chiếu trên file cad thì các đối tượng muốn tô đậm là chưa được xác định trước mà thường phụ thuộc vào hội nghị >> ít khả thi.

@Ketxu: để suy nghĩ xem liệu có giải thuật gì biến cái không có của cad thành cái có thể của lisp chăng?

 

Gởi chung mọi người:

Ban đầu thấy y/c này cứ nghĩ chủ topic chỉ muốn lòe thiên hạ, nhưng bây giờ thấy nó thực sự hữu dụng. Đó là: khi cần trình chiếu trên cad thì việc làm sáng lên, hoặc tô đậm, hoặc cho nhấp nháy đối tượng được chọn là rất cần thiết. Highlight thì nét mãnh nhìn không rõ. Di chuột đến từng đối tượng thì nét đậm và nhìn rõ nhưng mỗi lần chỉ nhìn được 1 đối tượng (đơn hoặc phức). Ước gì khi chọn đối tượng thì nó cũng làm đậm như khi di chuột thì hay biết mấy.

@Hoằn: giải pháp của em chỉ phù hợp nếu các nhóm đối tượng muốn tô đậm đã được xác định từ trước, đồng thời mỗi lần di chuột chỉ làm đậm được 1 nhóm. Trong trường hợp tổng quát, khi trình chiếu trên file cad thì các đối tượng muốn tô đậm là chưa được xác định trước mà thường phụ thuộc vào hội nghị >> ít khả thi.

@Ketxu: để suy nghĩ xem liệu có giải thuật gì biến cái không có của cad thành cái có thể của lisp chăng?


  • 0

#28 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 18 May 2014 - 03:36 PM

Nếu chủ topic chấp nhận kiểu "làm mờ các đối tượng không được chọn" như trong lisp thì sử dụng. Còn bằng không thì hãy đợi đấy, lúc nào rảnh mần tiếp.

;Doan  Van Ha - CadViet.com - ngay 13/5/2014. Edit: 17/5/2014.
;Chuc nang: To dam va Highlight cac doi tuong duoc chon, dong thoi lam nhap nhay chung khi di chuot.
(vl-load-com)
(defun #SS:Subtract (ss1 ss2 / i)
 (if (and ss2 (> (sslength ss2) 0))
  (repeat (setq i (sslength ss2))
   (ssdel (ssname ss2 (setq i (1- i))) ss1)))
 ss1)
(defun VPCords()
 ((lambda (offset) ((lambda (viewctr) (list (mapcar '- viewctr offset) (mapcar '+ viewctr offset))) (getvar "viewctr")))
  ((lambda (halfHeight aspectRatio) (list (* halfHeight aspectRatio) halfHeight))
   (* 0.5 (getvar "viewsize"))
   (apply '/ (getvar "screensize")))))
(defun Draw_Grvecs(pt rad col / p0 p1 p2 p3 p4)
 (setq p0 (polar pt (/ pi -2) rad) p1 (polar p0 0 rad) p2 (polar p1 (/ pi 2) (* 2 rad)) p3 (polar p2 (/ pi -1) (* 2 rad)) p4 (polar p3 (/ pi -2) (* 2 rad)))
 (grvecs (list col p1 p2 p2 p3 p3 p4 p4 p1)))
(defun Second( / lst)
 (if (and (vl-position "acetutil.arx" (arx)) (not (vl-catch-all-error-p (vl-catch-all-apply (function (lambda nil (acet-sys-shift-down)))))))
  (progn
   (load "julian.lsp")
   (setq lst (jtoc (getvar "date")))
   (- (nth 5 lst) (fix (nth 5 lst))))
  (progn (alert "Chuong trinh yeu cau Ban phai cai dat Tool Express.") (exit))))
(defun *error* (msg)
 (redraw)
 (if (and ss (> (sslength ss) 0)) (HighLightObjects (#SS->Objlist ss) nil))
 (if (and ss2 (> (sslength ss2) 0)) (mapcar 'vla-Delete (#SS->Objlist ss2)))
 (if (and ss3 (> (sslength ss3) 0)) (HighLightObjects (#SS->Objlist ss3) nil))
 (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **")))
 (princ))
(defun HighLightObjects (lst h)
 ((lambda (x) (mapcar '(lambda (obj) (vla-highlight obj x)) lst))
  (if h :vlax-true :vlax-false)))
(defun #SS->Objlist (ss / i lst)
 (repeat (setq i (sslength ss))
  (setq lst (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) lst))))
(defun #SS->List (ss / i lst)
 (repeat (setq i (sslength ss)) (setq lst (cons (ssname ss (setq i (1- i))) lst))))
(defun COPYG(ss / lst ss2 obj1)
 (setq lst (#SS->Objlist ss) ss2 (ssadd))
 (foreach obj lst
  (vla-copy obj) (setq obj1 (vlax-ename->vla-object (entlast)))
  (vla-move obj1 (vlax-3d-point '(0 0)) (vlax-3d-point (list 0 (/ rad 5)))) (setq ss2 (ssadd (entlast) ss2))
  (vla-copy obj) (setq obj1 (vlax-ename->vla-object (entlast)))
  (vla-move obj1 (vlax-3d-point '(0 0)) (vlax-3d-point (list 0 (/ rad -5)))) (setq ss2 (ssadd (entlast) ss2))
  (vla-copy obj) (setq obj1 (vlax-ename->vla-object (entlast)))
  (vla-move obj1 (vlax-3d-point '(0 0)) (vlax-3d-point (list (/ rad 5) 0))) (setq ss2 (ssadd (entlast) ss2))
  (vla-copy obj) (setq obj1 (vlax-ename->vla-object (entlast)))
  (vla-move obj1 (vlax-3d-point '(0 0)) (vlax-3d-point (list (/ rad -5) 0))) (setq ss2 (ssadd (entlast) ss2)))
 ss2)
(defun C:HA( / rad gr code ss ss1 ss2 ss3 pt px p0 p1 p2 p3)
 (setq rad (/ (* (getvar "Viewsize") (getvar "Pickbox")) (cadr (getvar "Screensize"))) ss (ssadd))
 (princ "\nSelect objects: ")
 (while (and (setq gr (grread 't 15 1) code (car gr) pt (cadr gr)) (/= code 25) (not (equal gr '(2 13))))
  (redraw)
  (Draw_Grvecs pt rad 3)
  (cond
   ((= code 3)
    (setq p0 (polar pt (/ pi -2) rad) p1 (polar p0 0 rad) p2 (polar p1 (/ pi 2) (* 2 rad)) p3 (polar p2 (/ pi -1) (* 2 rad)))
    (setq ss1 (ssget "c" p1 p3))
(if ss1
(foreach ent (#SS->List ss1) (setq ss (ssadd ent ss)))
(progn
 (redraw)
      (setq px (getcorner pt "\nSpecify opposite corner: "))
 (if px (princ "\nSelect objects: "))
 (if (> (car pt) (car px))
       (setq ss1 (ssget "c" pt px))
       (setq ss1 (ssget "w" pt px)))
 (if ss1
  (progn
     (foreach ent (#SS->List ss1) (setq ss (ssadd ent ss)))
   (HighLightObjects (#SS->Objlist ss) T))))))
   ((and (= code 5) ss (> (sslength ss) 0))
    (if (and ss2 (> (sslength ss2) 0)) (mapcar 'vla-Delete (#SS->Objlist ss2)))
    (setq ss3 (ssget "c" (car (VPCords)) (cadr (VPCords))))
(HighLightObjects (#SS->Objlist ss3) T)
    (setq ss2 (copyg ss))
    (HighLightObjects (#SS->Objlist ss) (if (or (<= 0 (Second) 0.25) (<= 0.5 (Second) 0.75)) T nil)))))
 (if (and ss2 (> (sslength ss2) 0)) (mapcar 'vla-Delete (#SS->Objlist ss2)))
 (if (and ss3 (> (sslength ss3) 0)) (HighLightObjects (#SS->Objlist ss3) nil))
 (redraw)
 (princ))
(princ "\nLenh su dung: HA")
(princ)
 


  • 2

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


#29 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 19 May 2014 - 04:53 AM

Chào bác DoanVanHa!

Tue_NV có một số góp ý

1./ Test thử lisp bài 32, bác viết thì thấy quét 1 đối tượng thì toán bộ các đối tượng khác đều highlight?

2./ Có lẽ bác phải đưa biến sử lý viewsize, screensize và pickbox vô trong vòng lặp while để xử lý vì bản thân của việc làm đậm là copy đối tượng gốc ra (sít sít nhau thành đậm) nên lúc đầu chọn có thể zoom nhỏ, sau khi chọn đối tượng thì zoom to lên thì thấy các đối tượng copy ra rời rạc nhau liền, không thấy đậm lên mà thấy nhiều đối tượng .......

3./ Lisp của bác suy cho cùng cũng chỉ định trước đối tượng mà thôi. Tỉ như đang ngẫu nhiên chọn đối tượng A, B, C hiện sáng và nhấp nháy, giờ ngẫu nhiên muốn B và C hiện sáng và nhấp nháy thôi (bỏ đối tượng A), phải làm như thế nào? Phải huỷ lệnh và quay về chạy lisp và chọn lại từ đầu sao bác? 

 

4./ Mà nếu để ngẫu nhiên làm sáng rực đối tượng được chọn, làm mờ đối tượng được chọn, và làm đậm đối tượng được chọn thì sao không sử dụng lệnh của CAD?


  • 1

#30 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 19 May 2014 - 09:08 AM

Chế độ Lock & Fade của Layiso bắt đầu có từ 2008 :)


  • 1

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


#31 hotanphi

hotanphi

    biết vẽ polygon

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

Đã gửi 19 May 2014 - 09:33 AM

Nếu chủ topic chấp nhận kiểu "làm mờ các đối tượng không được chọn" như trong lisp thì sử dụng. Còn bằng không thì hãy đợi đấy, lúc nào rảnh mần tiếp.

Cái này theo em thì nên để cho các đối tượng khác bình thường. Riêng đối tượng được chọn sẽ sáng lên và nháy liên tục mà ko cần phải rê chuột. Lisp hiện tại của anh Doan Van Ha thì hình như phải di chuyển chuột thì đối tượng được chọn mới nháy (có thể di chuyển chuột lung tung ko cần rê vào đối tượng cần chọn). Điều này lơi bất tiện vì khi rê chuột lung tung làm hội đồng cảm thấy rối khi thẩm định....

Không hiểu là trong cad có chức năng giống trong powerpoint ko ko biết. Nếu được mấy anh làm theo kiểu hiệu ứng nhấp nháy hay là một đối tượng đó ẩn rồi hiện với tốc độ nhanh thì gần như là nhấp nháy và cho màu sáng nổi bật hơn các đối tượng khác.

Em ko rành lắm nên chỉ nêu thôi có gì các bác thông cảm giúp. Xin cảm ơn các bác.


  • 0

#32 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 19 May 2014 - 10:38 PM

Nếu chủ topic chấp nhận kiểu "làm mờ các đối tượng không được chọn" như trong lisp thì sử dụng. Còn bằng không thì hãy đợi đấy, lúc nào rảnh mần tiếp.

;Doan  Van Ha - CadViet.com - ngay 13/5/2014. Edit: 17/5/2014.
;Chuc nang: To dam va Highlight cac doi tuong duoc chon, dong thoi lam nhap nhay chung khi di chuot.
(vl-load-com)
(defun #SS:Subtract (ss1 ss2 / i)
 (if (and ss2 (> (sslength ss2) 0))
  (repeat (setq i (sslength ss2))
   (ssdel (ssname ss2 (setq i (1- i))) ss1)))
 ss1)
(defun VPCords()
 ((lambda (offset) ((lambda (viewctr) (list (mapcar '- viewctr offset) (mapcar '+ viewctr offset))) (getvar "viewctr")))
  ((lambda (halfHeight aspectRatio) (list (* halfHeight aspectRatio) halfHeight))
   (* 0.5 (getvar "viewsize"))
   (apply '/ (getvar "screensize")))))
(defun Draw_Grvecs(pt rad col / p0 p1 p2 p3 p4)
 (setq p0 (polar pt (/ pi -2) rad) p1 (polar p0 0 rad) p2 (polar p1 (/ pi 2) (* 2 rad)) p3 (polar p2 (/ pi -1) (* 2 rad)) p4 (polar p3 (/ pi -2) (* 2 rad)))
 (grvecs (list col p1 p2 p2 p3 p3 p4 p4 p1)))
(defun Second( / lst)
 (if (and (vl-position "acetutil.arx" (arx)) (not (vl-catch-all-error-p (vl-catch-all-apply (function (lambda nil (acet-sys-shift-down)))))))
  (progn
   (load "julian.lsp")
   (setq lst (jtoc (getvar "date")))
   (- (nth 5 lst) (fix (nth 5 lst))))
  (progn (alert "Chuong trinh yeu cau Ban phai cai dat Tool Express.") (exit))))
(defun *error* (msg)
 (redraw)
 (if (and ss (> (sslength ss) 0)) (HighLightObjects (#SS->Objlist ss) nil))
 (if (and ss2 (> (sslength ss2) 0)) (mapcar 'vla-Delete (#SS->Objlist ss2)))
 (if (and ss3 (> (sslength ss3) 0)) (HighLightObjects (#SS->Objlist ss3) nil))
 (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **")))
 (princ))
(defun HighLightObjects (lst h)
 ((lambda (x) (mapcar '(lambda (obj) (vla-highlight obj x)) lst))
  (if h :vlax-true :vlax-false)))
(defun #SS->Objlist (ss / i lst)
 (repeat (setq i (sslength ss))
  (setq lst (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) lst))))
(defun #SS->List (ss / i lst)
 (repeat (setq i (sslength ss)) (setq lst (cons (ssname ss (setq i (1- i))) lst))))
(defun COPYG(ss / lst ss2 obj1)
 (setq lst (#SS->Objlist ss) ss2 (ssadd))
 (foreach obj lst
  (vla-copy obj) (setq obj1 (vlax-ename->vla-object (entlast)))
  (vla-move obj1 (vlax-3d-point '(0 0)) (vlax-3d-point (list 0 (/ rad 5)))) (setq ss2 (ssadd (entlast) ss2))
  (vla-copy obj) (setq obj1 (vlax-ename->vla-object (entlast)))
  (vla-move obj1 (vlax-3d-point '(0 0)) (vlax-3d-point (list 0 (/ rad -5)))) (setq ss2 (ssadd (entlast) ss2))
  (vla-copy obj) (setq obj1 (vlax-ename->vla-object (entlast)))
  (vla-move obj1 (vlax-3d-point '(0 0)) (vlax-3d-point (list (/ rad 5) 0))) (setq ss2 (ssadd (entlast) ss2))
  (vla-copy obj) (setq obj1 (vlax-ename->vla-object (entlast)))
  (vla-move obj1 (vlax-3d-point '(0 0)) (vlax-3d-point (list (/ rad -5) 0))) (setq ss2 (ssadd (entlast) ss2)))
 ss2)
(defun C:HA( / rad gr code ss ss1 ss2 ss3 pt px p0 p1 p2 p3)
 (setq rad (/ (* (getvar "Viewsize") (getvar "Pickbox")) (cadr (getvar "Screensize"))) ss (ssadd))
 (princ "\nSelect objects: ")
 (while (and (setq gr (grread 't 15 1) code (car gr) pt (cadr gr)) (/= code 25) (not (equal gr '(2 13))))
  (redraw)
  (Draw_Grvecs pt rad 3)
  (cond
   ((= code 3)
    (setq p0 (polar pt (/ pi -2) rad) p1 (polar p0 0 rad) p2 (polar p1 (/ pi 2) (* 2 rad)) p3 (polar p2 (/ pi -1) (* 2 rad)))
    (setq ss1 (ssget "c" p1 p3))
(if ss1
(foreach ent (#SS->List ss1) (setq ss (ssadd ent ss)))
(progn
 (redraw)
      (setq px (getcorner pt "\nSpecify opposite corner: "))
 (if px (princ "\nSelect objects: "))
 (if (> (car pt) (car px))
       (setq ss1 (ssget "c" pt px))
       (setq ss1 (ssget "w" pt px)))
 (if ss1
  (progn
     (foreach ent (#SS->List ss1) (setq ss (ssadd ent ss)))
   (HighLightObjects (#SS->Objlist ss) T))))))
   ((and (= code 5) ss (> (sslength ss) 0))
    (if (and ss2 (> (sslength ss2) 0)) (mapcar 'vla-Delete (#SS->Objlist ss2)))
    (setq ss3 (ssget "c" (car (VPCords)) (cadr (VPCords))))
(HighLightObjects (#SS->Objlist ss3) T)
    (setq ss2 (copyg ss))
    (HighLightObjects (#SS->Objlist ss) (if (or (<= 0 (Second) 0.25) (<= 0.5 (Second) 0.75)) T nil)))))
 (if (and ss2 (> (sslength ss2) 0)) (mapcar 'vla-Delete (#SS->Objlist ss2)))
 (if (and ss3 (> (sslength ss3) 0)) (HighLightObjects (#SS->Objlist ss3) nil))
 (redraw)
 (princ))
(princ "\nLenh su dung: HA")
(princ)
 

Lisp gây nguy hiểm cho ổ cứng !!!!!
Thật sự thì không cần hàm jtoc cũng tính được Second (còn ngắn hơn)
Thêm dòng sau vào hàm Second rồi test.

(defun Second( / lst)
  (print (setq *dem* (if (not *dem*) 1 (1+ *dem*))))
  ;.....
)
Kết quả: mỗi giây file "julian.lsp" load vài chục lần.
Số lần đọc liên tục ở 1 vị trí ổ cứng sẽ giảm tuổi thọ của nó, đặc biệt là ổ SSD.
  • 1

#33 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 20 May 2014 - 09:01 AM

Cám ơn các góp ý!

@ndtnt: srr vì hàm lấy trong tài nguyên mà quên để ý là nó đặt trong while.

@Tue_NV: vì có góp ý số 4 nên các góp ý 1->3 cũng như các ý kiến khác sẽ chẳng còn ý nghĩa gì nữa khi mà Cad đã có 1 lệnh bí mật như thế. Tôi xài cad2007 và không thông thuộc hết lệnh cad nên không biết lệnh đó. Nhờ mọi người nêu ra để được biết thêm. Và vì đã có lệnh cad nên hiệu chỉnh lisp (nếu được) cũng trở thành vô ích mất rồi.

Chân thành mà nói thì đôi lúc lại ngớ ngẩn đi xây dựng 1 cái đã có, srr.


  • 0

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


#34 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 20 May 2014 - 10:19 AM

Trong CAD có lệnh REFEDIT

 

- Có thể tạo nhanh Block không cần đặt tên 

- Gõ lệnh REFEDIT -> Pick Block vừa tạo đó -> ok -> Mặc định thì CAD làm mờ toàn bộ các đối tượng không được chọn (Trừ Block đó).

+ Muốn hiện sáng đối tượng chọn thì gõ lệnh REFSET -> A (add) (hoặc nhấn biểu tượng nút + trên thanh Refedit)  

+ Muốn làm mờ đối tượng chọn thì gõ lệnh REFSET -> R (Remove) (hoặc nhấn biểu tượng nút - trên thanh Refedit)  

- Kết thúc gõ lệnh  REFCLOSE -> Gõ D (Discard reference changes) không lưu lại những gì đã làm : thêm và bớt đối tượng trong Block. Hoặc nhấn biểu tượng chữ X trên thanh Refedit -> OK) 

Command: REFCLOSE

Enter option [Save/Discard reference changes] <Save>: D

 

Kết quả là nó làm sáng đối tượng đã chọn, làm mờ đối tượng được chọn, chỉ chưa làm nhấp nháy được thôi ^ _ ^


  • 0

#35 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 20 May 2014 - 02:15 PM

4./ Mà nếu để ngẫu nhiên làm sáng rực đối tượng được chọn, làm mờ đối tượng được chọn, và làm đậm đối tượng được chọn thì sao không sử dụng lệnh của CAD?

REFEDIT chỉ làm mờ hoặc không làm mờ đối tượng. Không thể làm sáng rực và làm đậm được.


  • 0

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


#36 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 21 May 2014 - 10:12 PM

Làm sáng rựclàm đậm đâu mà bác quảng cáo cho Autodesk lắm thế?


  • 0

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


#37 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 21 May 2014 - 11:02 PM

Làm sáng rựclàm đậm đâu mà bác quảng cáo cho Autodesk lắm thế?

 

Làm đậm ở Lineweight bác ạ. Vô lệnh Refedit -> Chuyển tất cả các nét về 0.0 rồi chọn các nét làm sáng nét đậm từ 0.30 trở lên. Bật chế độ LWT để quan sát

Làm sáng rực có lẽ là Tue_NV nhầm. Làm mờ và sáng thì đúng hơn


  • 0

#38 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1431 Bài viết
Điểm đánh giá: 1425 (rất tốt)

Đã gửi 22 May 2014 - 06:25 AM

Trong CAD có lệnh REFEDIT

 

- Có thể tạo nhanh Block không cần đặt tên 

- Gõ lệnh REFEDIT -> Pick Block vừa tạo đó -> ok -> Mặc định thì CAD làm mờ toàn bộ các đối tượng không được chọn (Trừ Block đó).

+ Muốn hiện sáng đối tượng chọn thì gõ lệnh REFSET -> A (add) (hoặc nhấn biểu tượng nút + trên thanh Refedit)  

+ Muốn làm mờ đối tượng chọn thì gõ lệnh REFSET -> R (Remove) (hoặc nhấn biểu tượng nút - trên thanh Refedit)  

- Kết thúc gõ lệnh  REFCLOSE -> Gõ D (Discard reference changes) không lưu lại những gì đã làm : thêm và bớt đối tượng trong Block. Hoặc nhấn biểu tượng chữ X trên thanh Refedit -> OK) 

Command: REFCLOSE

Enter option [Save/Discard reference changes] <Save>: D

 

Kết quả là nó làm sáng đối tượng đã chọn, làm mờ đối tượng được chọn, chỉ chưa làm nhấp nháy được thôi ^ _ ^

REFEDIT chỉ làm việc với 1 nhóm đối tượng (1 block), nhưng thông thường khi báo cáo thuyết minh thì cần chọn hơn 1 nhóm đối tượng..


  • 0

#39 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 25 May 2014 - 10:47 AM

Tuy còn vài điều chưa hoàn chỉnh nhưng lisp này cũng đáp ứng một số yêu cầu sau:

- Làm đậm các đối tượng được chọn và highligth chúng.

- Làm mờ các đối tượng không được chọn.

- Làm nhấp nháy các đối tượng được chọn khi di chuột.

- Có thể thơm/bớt(hủy) các đối tượng được chọn.

http://www.cadviet.c.../67029_post.zip

67029_post.gif


  • 2

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


#40 Trang72

Trang72

    biết vẽ ellipse

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

Đã gửi 26 May 2014 - 08:16 AM

oke lisp của Bác hay nắm Bác Hà ạ.Cám ơn Bác!


  • 0