Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
47c1

Em xin hỏi các anh về lệnh ssx

Các bài được khuyến nghị

Câu 1: Theo em được biết là có lệnh SSX trong lisp để chỉnh sửa các đối tượng giống nhau về cùng 1 kiểu(gõ lệnh p để chọn lại đối tượng mình muốn chỉnh sửa theo).các anh có thể chỉ chi tiết giùm em ko ạ.

Câu 2: em có 1 block mà em muốn đưa block đó chạy dọc theo 1 đường L hoặc Pl hoặc SPl với 1 khoảng cách cố định với đường và các block với nhau.nhưng các blog này đều vuông góc với đường mốc. E nên làm thế nào ạ?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Câu 1: Theo em được biết là có lệnh SSX trong lisp để chỉnh sửa các đối tượng giống nhau về cùng 1 kiểu(gõ lệnh p để chọn lại đối tượng mình muốn chỉnh sửa theo).các anh có thể chỉ chi tiết giùm em ko ạ.

Câu 2: em có 1 block mà em muốn đưa block đó chạy dọc theo 1 đường L hoặc Pl hoặc SPl với 1 khoảng cách cố định với đường và các block với nhau.nhưng các blog này đều vuông góc với đường mốc. E nên làm thế nào ạ?

Chào bạn 47c1,

Câu 1: Trong các lệnh gốc của lisp thì không thấy có cái lệnh ssx bạn cho, nhưng nếu lệnh này được tạo ra từ các code lisp thì nó lại có thể là bất cứ cái gì bạn muốn thực hiện chứ không phải chỉ có như cái bạn nói. Mà cái bạn nói thì mình chả hiểu nó là cái gì??? Sửa các đối tượng về cùng một kiểu nghĩa là thế nào?? Các hình vuông thành hình tròn hay các hình tròn thành e-líp???? Bạn cần giải thích rõ cái kiểu ở đây là cái gì bạn nhé....

Ví dụ sau đây là cách tạo lệnh ssx dùng để đổi màu của một đối tượng thành màu đỏ.

(defun c:ssx ()
(setq en (entsel "\n Chon đoi tuong bat ky")
       els (enget (car en)))
(if (/= (cdr (assoc 62 els)) nil)
(progn
(setq els (subst (cons 62 1) (assoc 62 els) els))
(entmod els))
(progn
(setq els (append els (list(cons 62 1))))
(entmod els))
)
)

Do vậy nếu bạn muốn lệnh ssx là cái gì thì bạn phải hiểu và biết cách viết lisp cho nó.

Câu 2:

Bạn có thể sử dụng lisp sau để làm cái việc bạn cần. Nếu nó chưa đúng ý bạn thì hãy post điều chưa vừa ý lên nhé.

(defun c:ido ()
(vl-load-com)
(command "undo" "be")
(setq dt (car (entsel "\n Chon doi tuong goc"))
     edt (entget dt)
     bn (cdr (assoc 2 edt))
     dg (cdr (assoc 10 edt))
     dc (car (entsel "\n Chon duong chuan"))
     edc (entget dc)
     p0 (getpoint"\n Chon diem bat dau")
)
(if (equal (cdr (assoc 10 edc)) p0)
   (setq a1 0)
   (setq a1 (vlax-curve-getdistatpoint dc p0))
)
(setq par (vlax-curve-getparamatdist dc a1)
     vtt (vlax-curve-getFirstderiv dc par)
     lth (vlax-curve-getdistatpoint dc (vlax-curve-getendpoint dc))
     dis (getreal "\n Nhap khoang cach giua cac diem : ")
     i 0
)
(if (/= (car vtt) 0)
   (setq gr (atan (/ (cadr vtt) (car vtt))))
   (setq gr (- 0 (/ pi 2)))
)
(if (> (car vtt) 0)
   (setq gr (+ pi gr))
)
(setq gd (/ (* gr 180) pi))
(if (    (progn
         (while (>= (- a1 (* i dis)) 0)
                (setq p1 (vlax-curve-getpointatdist dc (- a1 (* i dis)))
                      par (vlax-curve-getparamatpoint dc p1)
                      vtt (vlax-curve-getFirstderiv dc par)
                )
                (if (/= (car vtt) 0)
                    (setq gr (atan (/ (cadr vtt) (car vtt))))
                )
                (if (> (car vtt) 0)
                    (setq gr (+ pi gr))
                )
                (setq gd (/ (* gr 180) pi))
                (command "insert" bn "r" gd p1 "" "" "")
                (if (and (> gd 90) (                     (setq gd (+ gd 180))
                )
                (setq i (1+ i))

          )
    )
    (progn
          (while (                  (setq p1 (vlax-curve-getpointatdist dc (+ a1 (* i dis)))
                       par (vlax-curve-getparamatpoint dc p1)
                       vtt (vlax-curve-getFirstderiv dc par)
                 )
                 (if (/= (car vtt) 0)
                     (setq gr (atan (/ (cadr vtt) (car vtt))))
                 )
                 (if (                      (setq gr (+ pi gr))
                 )
                 (setq gd (/ (* gr 180) pi))
                 (command "insert" bn "r" gd p1 "" "" "") 
                 (if (and (> gd 90) (                      (setq gd (+ gd 180))
                 )
                 (setq i (1+ i))
          )
    )
)
(command "undo" "e")
(princ)
)

Chúc bạn vui.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Thank u.

Trước hết theo cảm nhận đối với công việc của riêng em thì cũng ko nhất thiết là phải biết lisp sâu nhiều.

Vì những lisp cơ bản các anh đã viết hết cho rồi sử dụng thế là đủ. Và em cũng phải học nhiều phần mềm khác ngoài cad nữa.

Còn về câu hỏi của em.

Câu 1: ví dụ em có rất nhiều mặt cắt tương tự nhau trong mặt cắt đó em muốn chỉnh 1 chi tiết thành màu khác hoặc scale to hơn hoặc là nét đậm hơn, sau đó muốn tất cả các chi tiết tương tự(thường là giống hệt) như thế thành giống chi tiết em vừa sửa chẳng hạn. Và em nhớ là có 1 anh đã dùng lệnh SSX trong lisp nên em muốn tìm hiểu thêm

Câu 2: Câu này em đã nhờ seach trên mạng và tìm hiểu từ cadviet thì làm như sau cũng tạm được: block hình đó lại sau đó dùng lệnh DIVIDE. và em đã đạt được điều mình mong muốn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Câu 2: Câu này em đã nhờ seach trên mạng và tìm hiểu từ cadviet thì làm như sau cũng tạm được: block hình đó lại sau đó dùng lệnh DIVIDE. và em đã đạt được điều mình mong muốn

Sau khi tạo block bạn có thể dùng lệnh measure và làm theo hướng dẫn

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Thank u.

Trước hết theo cảm nhận đối với công việc của riêng em thì cũng ko nhất thiết là phải biết lisp sâu nhiều.

Vì những lisp cơ bản các anh đã viết hết cho rồi sử dụng thế là đủ. Và em cũng phải học nhiều phần mềm khác ngoài cad nữa.

Còn về câu hỏi của em.

Câu 1: ví dụ em có rất nhiều mặt cắt tương tự nhau trong mặt cắt đó em muốn chỉnh 1 chi tiết thành màu khác hoặc scale to hơn hoặc là nét đậm hơn, sau đó muốn tất cả các chi tiết tương tự(thường là giống hệt) như thế thành giống chi tiết em vừa sửa chẳng hạn. Và em nhớ là có 1 anh đã dùng lệnh SSX trong lisp nên em muốn tìm hiểu thêm

Câu 2: Câu này em đã nhờ seach trên mạng và tìm hiểu từ cadviet thì làm như sau cũng tạm được: block hình đó lại sau đó dùng lệnh DIVIDE. và em đã đạt được điều mình mong muốn

Xin lỗi bạn 47c1,

Mình đã trả lời sai câu hỏi của bạn do khi đó mình chưa cài đặt được bộ Express Tool. Sau khi cài đặt mình đã thấy cái lệnh SSX ấy như sau:

SSX

 

--------------------------------------------------------------------------------

 

Creates a selection set

 

Either type SSX at the Command prompt to create a "previous" selection set or type (SSX) in response to any Select Objects prompt.

 

SSX returns a selection set that is either exactly like a selected object or, if you adjust the filter list, very similar to that object.

 

Command: SSX

Select object/: Use an object selection method to select a template object, or press ENTER for none

>>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector:

 

 

Filter Options

Block name Specifies the block name to add or remove.

Color Specifies the color number to add or remove.

Entity Specifies the object type to add or remove.

Flag Toggles the ENTITIES FOLLOW flag.

Layer Specifies the layer name to add or remove.

Ltype Specifies the linetype name to add or remove.

Pick Selects object(s) using any selection set method.

Style Selects the text style name to add or remove.

Thickness Specifies the thickness to add or remove.

Vector Specifies the extrusion vector to add or remove.

 

Note:

Once you have a filter list, any of the filters can be removed by selecting the option keyword and then pressing ENTER. If an item exists in the filter list and you elect to add a new item, the old value is overwritten by the new value. You can have only one of each type of item in a single (ssget 'x') call.

 

 

Usage Example:

Select a line to use as a template object, but remove the layer filter.

 

Command: SSX

Select object/: Select a line

Current Filter: ((0 . "LINE") (8 . "0") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))

Enter filter option [block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector]: layer

>>Layer name to add/: Press ENTER to remove layer filter

Current Filter: ((0 . "LINE") (39 . 2.0) (62 . 1) (210 0.0 0.0 1.0))

Enter filter option [block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vector]: Press ENTER

To select objects that match the filter, enter "previous" at the next Select Objects prompt.

 

Rất mong bạn thông cảm do sự thiếu hiểu biết của mình. Thành thất xin lỗi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

chào bạn Moderator!

hiện tại tôi cũng đang nghiên cứu về lệnh SSX. khi apload lệnh ssx và sử dụng, tôi thấy xuất hiện

Command: ssx
Select object/<None>:
Filter: ((0 . "DHNODE") (6 . "CONTINUOUS") (8 . "CAODO") (62 . 1))
>>Block name/Color/Entity/Flag/LAyer/LType/Pick/Style/Thickness/Vecto.

sau đó thì không làm được gì nữa. mong bạn hãy chỉ giáo cặn kẽ về lệnh này giúp tôi với. Tôi xin cảm ơn rất nhiều

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×