Đến nội dung


Hình ảnh

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


  • Please log in to reply
7 replies to this topic

#1 47c1

47c1

    biết vẽ ellipse

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

Đã gửi 03 August 2010 - 03:44 PM

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 ạ?
  • 0

#2 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 03 August 2010 - 04:53 PM

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 (< (car vtt) 0)
(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) (< gd 270))
(setq gd (+ gd 180))
)
(setq i (1+ i))

)
)
(progn
(while (<= (+ a1 (* i dis)) lth)
(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) (< gd 270))
(setq gd (+ gd 180))
)
(setq i (1+ i))
)
)
)
(command "undo" "e")
(princ)
)

Chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#3 47c1

47c1

    biết vẽ ellipse

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

Đã gửi 03 August 2010 - 09:50 PM

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

#4 cauduong1k49

cauduong1k49

    biết zoom

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

Đã gửi 03 August 2010 - 10:12 PM

sao bạn không tạo block nhỉ???
  • 0

#5 cd2k44

cd2k44

    Edu level: li5

  • Members
  • PipPipPipPipPipPipPip
  • 648 Bài viết
Điểm đánh giá: 121 (tàm tạm)

Đã gửi 04 August 2010 - 08:06 AM

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
[/quote]
Sau khi tạo block bạn có thể dùng lệnh measure và làm theo hướng dẫn
  • 0

#6 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 14 August 2010 - 05:49 PM

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.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#7 haiauwater

haiauwater

    Chưa sử dụng CAD

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

Đã gửi 27 July 2013 - 10:53 PM

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


  • 0

#8 khatvong1993tqm

khatvong1993tqm

    biết vẽ circle

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

Đã gửi 31 July 2013 - 04:57 PM

câu 2 thì bạn tạo 1 block rồi dùng lệnh me nhé


  • 0