Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp chọn nhanh block cùng nội dung ATT


  • Please log in to reply
22 replies to this topic

#21 790312

790312

    biết lệnh fillet

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

Đã gửi 21 June 2013 - 06:11 AM

Tôi quên link rồi. Cái này nhớ ra là của ai đó, tôi chỉ biên tập lại thôi  :lol:  Tôi post lên lại vậy.

;---------- AN & HIEN. free lisp from cadviet.com
;---------- AN DOI TUONG DUOC CHON, HIEN PHAN CON LAI
(defun C:AN (/ sset count elem)
 (defun DXF (id obj)
  (cdr (assoc id (entget obj))))
 (prompt "\nChon cac doi tuong de an: ")
 (cond
  ((setq sset (ssget))
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))
     (prompt "\nDoi tuong nay thuoc lop bi khoa. Khong the an no.")))))
 (princ))
;---------- HIEN DOI TUONG DUOC CHON, AN PHAN CON LAI
(defun C:HIEN (/ sset0 sset count elem)
 (setq sset (cadr (ssgetfirst)))
 (prompt "\nChon cac doi tuong de hien: ")
 (if (null sset)
  (setq sset (ssget)))
 (cond
  ((setq sset0 (ssget "_X"))
   (repeat (setq count (sslength sset0))
    (setq count (1- count) elem (ssname sset0 count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))))))
 (cond
  (sset
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 0) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 0))))))))))
;---------- HIEN TAT CA DOI TUONG
(defun C:HIENTC (/ WhatNextsset count elem)
 (defun DXF (Id Obj)
  (cdr (assoc Id (entget Obj))))
 (cond
  ((setq sset (ssget "_X" '((60 . 1))))
   (initget "Yes No")
   (setq WhatNext
    (cond
     ((getkword "\nTat ca doi tuong dang an se duoc hien? N/<Yes>: "))
     (T "Yes")))
  (cond
   ((= WhatNext "Yes")
    (prompt "\nVui long doi...")
     (repeat (setq count (sslength sset))
      (setq count (1- count) elem (ssname sset count))
      (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
       (entmod (subst '(60 . 0) '(60 . 1) (entget elem)))
       (prompt "\nDoi tuong nay thuoc lop bi khoa. Khong the hien no.")))
    (prompt "\nKet thuc..."))))
  (T (prompt "\nKhong co doi tuong nao duoc an."))))
;---------- DOI TUONG AN VA HIEN DOI CHO CHO NHAU
(defun C:CHUYEN (/ sset0 sset count elem)
 (setq sset (ssget "_X" '((60 . 1))))
 (cond
  ((setq sset0 (ssget "_X"))
   (repeat (setq count (sslength sset0))
    (setq count (1- count) elem (ssname sset0 count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))))))
 (cond
  (sset
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 0) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 0))))))))))
(princ "\nAn cac doi tuong duoc chon, dung lenh: AN")
(princ "\nHien cac doi tuong duoc chon, dung lenh: HIEN")
(princ "\nHien tat ca doi tuong tren ban ve, dung lenh: HIENTC")
(princ "\nChuyen doi giua doi tuong an va hien, dung lenh: CHUYEN")
(princ)
;----------
 

Lisp báo lỗi:

; error: no function definition: DXF

Bác xem sửa giúp e với.Thanks.


  • 0

#22 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 June 2013 - 06:31 AM

Có chút sơ ý.

(defun DXF (id obj)
 (cdr (assoc id (entget obj))))
;---------- AN & HIEN. free lisp from cadviet.com
;---------- AN DOI TUONG DUOC CHON, HIEN PHAN CON LAI
(defun C:AN (/ sset count elem)
 (prompt "\nChon cac doi tuong de an: ")
 (cond
  ((setq sset (ssget))
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))
     (prompt "\nDoi tuong nay thuoc lop bi khoa. Khong the an no.")))))
 (princ))
;---------- HIEN DOI TUONG DUOC CHON, AN PHAN CON LAI
(defun C:HIEN (/ sset0 sset count elem)
 (setq sset (cadr (ssgetfirst)))
 (prompt "\nChon cac doi tuong de hien: ")
 (if (null sset)
  (setq sset (ssget)))
 (cond
  ((setq sset0 (ssget "_X"))
   (repeat (setq count (sslength sset0))
    (setq count (1- count) elem (ssname sset0 count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))))))
 (cond
  (sset
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 0) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 0))))))))))
;---------- HIEN TAT CA DOI TUONG
(defun C:HIENTC (/ WhatNextsset count elem)
 (cond
  ((setq sset (ssget "_X" '((60 . 1))))
   (initget "Yes No")
   (setq WhatNext
    (cond
     ((getkword "\nTat ca doi tuong dang an se duoc hien? N/<Yes>: "))
     (T "Yes")))
  (cond
   ((= WhatNext "Yes")
    (prompt "\nVui long doi...")
     (repeat (setq count (sslength sset))
      (setq count (1- count) elem (ssname sset count))
      (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
       (entmod (subst '(60 . 0) '(60 . 1) (entget elem)))
       (prompt "\nDoi tuong nay thuoc lop bi khoa. Khong the hien no.")))
    (prompt "\nKet thuc..."))))
  (T (prompt "\nKhong co doi tuong nao duoc an."))))
;---------- DOI TUONG AN VA HIEN DOI CHO CHO NHAU
(defun C:CHUYEN (/ sset0 sset count elem)
 (setq sset (ssget "_X" '((60 . 1))))
 (cond
  ((setq sset0 (ssget "_X"))
   (repeat (setq count (sslength sset0))
    (setq count (1- count) elem (ssname sset0 count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))))))
 (cond
  (sset
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 0) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 0))))))))))
(princ "\nAn cac doi tuong duoc chon, dung lenh: AN")
(princ "\nHien cac doi tuong duoc chon, dung lenh: HIEN")
(princ "\nHien tat ca doi tuong tren ban ve, dung lenh: HIENTC")
(princ "\nChuyen doi giua doi tuong an va hien, dung lenh: CHUYEN")
(princ)
;----------
 


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


#23 790312

790312

    biết lệnh fillet

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

Đã gửi 21 June 2013 - 07:08 AM

Có chút sơ ý.

(defun DXF (id obj)
 (cdr (assoc id (entget obj))))
;---------- AN & HIEN. free lisp from cadviet.com
;---------- AN DOI TUONG DUOC CHON, HIEN PHAN CON LAI
(defun C:AN (/ sset count elem)
 (prompt "\nChon cac doi tuong de an: ")
 (cond
  ((setq sset (ssget))
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))
     (prompt "\nDoi tuong nay thuoc lop bi khoa. Khong the an no.")))))
 (princ))
;---------- HIEN DOI TUONG DUOC CHON, AN PHAN CON LAI
(defun C:HIEN (/ sset0 sset count elem)
 (setq sset (cadr (ssgetfirst)))
 (prompt "\nChon cac doi tuong de hien: ")
 (if (null sset)
  (setq sset (ssget)))
 (cond
  ((setq sset0 (ssget "_X"))
   (repeat (setq count (sslength sset0))
    (setq count (1- count) elem (ssname sset0 count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))))))
 (cond
  (sset
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 0) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 0))))))))))
;---------- HIEN TAT CA DOI TUONG
(defun C:HIENTC (/ WhatNextsset count elem)
 (cond
  ((setq sset (ssget "_X" '((60 . 1))))
   (initget "Yes No")
   (setq WhatNext
    (cond
     ((getkword "\nTat ca doi tuong dang an se duoc hien? N/<Yes>: "))
     (T "Yes")))
  (cond
   ((= WhatNext "Yes")
    (prompt "\nVui long doi...")
     (repeat (setq count (sslength sset))
      (setq count (1- count) elem (ssname sset count))
      (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
       (entmod (subst '(60 . 0) '(60 . 1) (entget elem)))
       (prompt "\nDoi tuong nay thuoc lop bi khoa. Khong the hien no.")))
    (prompt "\nKet thuc..."))))
  (T (prompt "\nKhong co doi tuong nao duoc an."))))
;---------- DOI TUONG AN VA HIEN DOI CHO CHO NHAU
(defun C:CHUYEN (/ sset0 sset count elem)
 (setq sset (ssget "_X" '((60 . 1))))
 (cond
  ((setq sset0 (ssget "_X"))
   (repeat (setq count (sslength sset0))
    (setq count (1- count) elem (ssname sset0 count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 1) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 1)))))))))
 (cond
  (sset
   (repeat (setq count (sslength sset))
    (setq count (1- count) elem (ssname sset count))
    (if (/= 4 (logand 4 (DXF 70 (tblobjname "layer" (DXF 8 elem)))))
     (if (DXF 60 elem)
      (entmod (subst '(60 . 0) (assoc 60 (entget elem)) (entget elem)))
      (entmod (append (entget elem) (list '(60 . 0))))))))))
(princ "\nAn cac doi tuong duoc chon, dung lenh: AN")
(princ "\nHien cac doi tuong duoc chon, dung lenh: HIEN")
(princ "\nHien tat ca doi tuong tren ban ve, dung lenh: HIENTC")
(princ "\nChuyen doi giua doi tuong an va hien, dung lenh: CHUYEN")
(princ)
;----------
 

Cảm ơn bác nhiều,cái này bác có thể sửa cho nó giống lệnh layiso,ý là các đối tượng được chọn sẽ hiện và các đối tượng khác sẽ mờ đi nhưng vẫn thấy trên bản vẽ.Layiso cad từ 2010 đến 2014 nó vậy đó bác.Thanks.


  • 0