Đến nội dung


Hình ảnh
- - - - -

Nhờ Các Bác Giúp Em Giải Quyết Bài Toán Này Với !


  • Please log in to reply
10 replies to this topic

#1 Chym Code

Chym Code

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: -10 (hơi kém)

Đã gửi 13 June 2016 - 02:31 PM

Cấu trúc câu lệnh :

 

- câu lệnh ( tùy các bác đặt)

- nhập D,  D1, D2, D3  (D1,D2,D3 >0)

- chọn đối tượng ( có thể chọn , hoặc quét toàn bộ đối tượng)

- kết quả

 

trong hình em đưa ra là D>0 ( đường màu tím nằm ngoài đối tượng )

nếu D<0 thì đường màu tím nằm bên trong đối tượng)

 

Đối tượng em đưa ra là đường PL, hoặc L

Các bác xem hình đính kèm bên cạnh giúp em nhé !

...

Em rất mong được các bác ghé qua giúp đỡ

 

http://www.cadviet.c.../151325_1_2.dwg

151325_1_1.jpg


Bài viết đã được chỉnh sửa nội dung bởi Chym Code: 13 June 2016 - 02:50 PM

  • 0

#2 Chym Code

Chym Code

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: -10 (hơi kém)

Đã gửi 14 June 2016 - 08:13 AM

các bác đi ngang qua, cho em xin 1 chấm cho đỡ trôi bài nhé. Có bác nào cao thủ vào giúp em chút đi


  • -1

#3 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 14 June 2016 - 01:01 PM

Offset 4 lần!

Đây là bạn đang vẽ cái gì? Có nhiều không? Nếu không thì mất công rèn dao (viết lisp) để cắt móng tay.


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


#4 Chym Code

Chym Code

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: -10 (hơi kém)

Đã gửi 14 June 2016 - 01:47 PM

Offset 4 lần!

Đây là bạn đang vẽ cái gì? Có nhiều không? Nếu không thì mất công rèn dao (viết lisp) để cắt móng tay.

 

nhiều bác @Hà ah, vài trăm hình như vậy, mà nó là đa giác 4 cạnh, nhưng chủ yếu là HCN. Bác có thể giúp em chút được không?  OFFSET nhưng vẫn phải có cái đường nối các đỉnh như trong hình nhé Bác,hjhj


  • 0

#5 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 14 June 2016 - 07:21 PM

Xài tạm cái này. Chỉ dùng cho LWPOLYLINE.

(defun c:tes(/ D D1 D2 D3 DN DT E EG EL EL1 EL2 X Y)
(defun doimn (v a b) (command "change" v "" "P" "C" a "LT" b ""))
(defun laydinhr (e) (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= 10 (car x))) (entget e))))
(defun line (a b m) (entmake (list '(0 . "LINE") (cons 10 a) (cons 11 b) (cons 62 m))))
 
(command "ucs" "w")
(setq e (car (entsel "\nChon polyline:"))
eg (laydinhr e)
dt (polar (car eg) (angle (car eg) (nth 2 eg)) (* 0.5 (distance (car eg) (nth 2 eg)) ))
dn (polar (car eg) (angle (nth 2 eg) (car eg)) (* 0.5 (distance (car eg) (nth 2 eg)) )))
 
(setq d (getreal "\nKich thuoc D:"))
(command "offset" (abs d) e (if (> d 0) dn dt) "") (setq el (entlast)) (doimn el 6 "continuous")
 
(setq d1 (getreal "\nKich thuoc D1:"))
(command "offset" d1 el dn "") (setq el1 (entlast)) (doimn el1 3 "continuous")
 
(setq d2 (getreal "\nKich thuoc D2:"))
(command "offset" d2 el dt "") (doimn (entlast) 3 "continuous")
 
(setq d3 (getreal "\nKich thuoc D3:"))
(command "offset" (+ d2 d3) el dt "") (setq el2 (entlast)) (doimn el2 3 "continuous") 
 
(mapcar '(lambda(x y) (line x y 3)) (laydinhr el1) (laydinhr el2))
(princ)
)

  • 1

#6 Chym Code

Chym Code

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: -10 (hơi kém)

Đã gửi 15 June 2016 - 08:10 AM

 

Xài tạm cái này. Chỉ dùng cho LWPOLYLINE.

(defun c:tes(/ D D1 D2 D3 DN DT E EG EL EL1 EL2 X Y)
(defun doimn (v a b) (command "change" v "" "P" "C" a "LT" b ""))
(defun laydinhr (e) (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= 10 (car x))) (entget e))))
(defun line (a b m) (entmake (list '(0 . "LINE") (cons 10 a) (cons 11 b) (cons 62 m))))
 
(command "ucs" "w")
(setq e (car (entsel "\nChon polyline:"))
eg (laydinhr e)
dt (polar (car eg) (angle (car eg) (nth 2 eg)) (* 0.5 (distance (car eg) (nth 2 eg)) ))
dn (polar (car eg) (angle (nth 2 eg) (car eg)) (* 0.5 (distance (car eg) (nth 2 eg)) )))
 
(setq d (getreal "\nKich thuoc D:"))
(command "offset" (abs d) e (if (> d 0) dn dt) "") (setq el (entlast)) (doimn el 6 "continuous")
 
(setq d1 (getreal "\nKich thuoc D1:"))
(command "offset" d1 el dn "") (setq el1 (entlast)) (doimn el1 3 "continuous")
 
(setq d2 (getreal "\nKich thuoc D2:"))
(command "offset" d2 el dt "") (doimn (entlast) 3 "continuous")
 
(setq d3 (getreal "\nKich thuoc D3:"))
(command "offset" (+ d2 d3) el dt "") (setq el2 (entlast)) (doimn el2 3 "continuous") 
 
(mapcar '(lambda(x y) (line x y 3)) (laydinhr el1) (laydinhr el2))
(princ)
)

 

Cảm ơn bác @Tot 77, nhưng lip của bác chỉ dùng cho được 1 đối tượng . Khi em muốn làm đối tượng tiếp theo, e phải nhập lại toàn bộ thông số 1 lần nữa, làm như vậy lâu quá bác ah.

Em mong muốn khi nhập xong các thông số D, D1, D2, D3, mình chọn đối tượng bất kì thì ra kết quả luôn, vì của em có vài trăm hình như vậy.

Bác có thể thêm chút thời gian sửa lại giúp em được không ?


Bài viết đã được chỉnh sửa nội dung bởi Chym Code: 15 June 2016 - 08:20 AM

  • 0

#7 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 15 June 2016 - 08:21 AM

 Lisp trên chỉ cốt có cái nhìn "trực quan" về từng bước offset thôi. Còn muốn quét nhieu thì xài cái này.

(defun c:tes(/ D D1 D2 D3 DN DT E EG EL EL1 EL2 X Y)
(defun doimn (v a b) (command "change" v "" "P" "C" a "LT" b ""))
(defun laydinhr (e) (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= 10 (car x))) (entget e))))
(defun line (a b m) (entmake (list '(0 . "LINE") (cons 10 a) (cons 11 b) (cons 62 m))))
 
(command "ucs" "w")
(prompt "\nChon polyline:")
(setq d (getreal "\nKich thuoc D:")
d1 (getreal "\nKich thuoc D1:")
d2 (getreal "\nKich thuoc D2:")
d3 (getreal "\nKich thuoc D3:")
)
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LWPOLYLINE"))))))
(setq eg (laydinhr e)
dt (polar (car eg) (angle (car eg) (nth 2 eg)) (* 0.5 (distance (car eg) (nth 2 eg)) ))
dn (polar (car eg) (angle (nth 2 eg) (car eg)) (* 0.5 (distance (car eg) (nth 2 eg)) )))
 
(command "offset" (abs d) e (if (> d 0) dn dt) "") (setq el (entlast)) (doimn el 6 "continuous")
(command "offset" d1 el dn "") (setq el1 (entlast)) (doimn el1 3 "continuous")
(command "offset" d2 el dt "") (doimn (entlast) 3 "continuous")
(command "offset" (+ d2 d3) el dt "") (setq el2 (entlast)) (doimn el2 3 "continuous") 
 
(mapcar '(lambda(x y) (line x y 3)) (laydinhr el1) (laydinhr el2))
)
(princ)
)

  • 1

#8 Chym Code

Chym Code

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: -10 (hơi kém)

Đã gửi 15 June 2016 - 08:26 AM

 

 Lisp trên chỉ cốt có cái nhìn "trực quan" về từng bước offset thôi. Còn muốn quét nhieu thì xài cái này.

(defun c:tes(/ D D1 D2 D3 DN DT E EG EL EL1 EL2 X Y)
(defun doimn (v a b) (command "change" v "" "P" "C" a "LT" b ""))
(defun laydinhr (e) (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= 10 (car x))) (entget e))))
(defun line (a b m) (entmake (list '(0 . "LINE") (cons 10 a) (cons 11 b) (cons 62 m))))
 
(command "ucs" "w")
(prompt "\nChon polyline:")
(setq d (getreal "\nKich thuoc D:")
d1 (getreal "\nKich thuoc D1:")
d2 (getreal "\nKich thuoc D2:")
d3 (getreal "\nKich thuoc D3:")
)
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "LWPOLYLINE"))))))
(setq eg (laydinhr e)
dt (polar (car eg) (angle (car eg) (nth 2 eg)) (* 0.5 (distance (car eg) (nth 2 eg)) ))
dn (polar (car eg) (angle (nth 2 eg) (car eg)) (* 0.5 (distance (car eg) (nth 2 eg)) )))
 
(command "offset" (abs d) e (if (> d 0) dn dt) "") (setq el (entlast)) (doimn el 6 "continuous")
(command "offset" d1 el dn "") (setq el1 (entlast)) (doimn el1 3 "continuous")
(command "offset" d2 el dt "") (doimn (entlast) 3 "continuous")
(command "offset" (+ d2 d3) el dt "") (setq el2 (entlast)) (doimn el2 3 "continuous") 
 
(mapcar '(lambda(x y) (line x y 3)) (laydinhr el1) (laydinhr el2))
)
(princ)
)

Cảm ơn bác, chuẩn rồi đấy !

Cảm ơn bác nhiều nha, đúng bài toán của e rồi !


  • 0

#9 Chym Code

Chym Code

    biết vẽ arc

  • Members
  • PipPip
  • 46 Bài viết
Điểm đánh giá: -10 (hơi kém)

Đã gửi 15 June 2016 - 08:59 AM

Bác @Tot77 cho em hỏi thêm chút được không ? ( 1 dạng bài toán khác, phát triển từ bài toán trên )

..................

..................

..vẫn dùng lip của bác, nhập các thông số đầu vào như bình thường, cho ra kết quả. Trong bài toán này, cạnh C ( D1, D2, D3, vẫn giữ nguyên ), nhưng d1 # D. Bác có cách nào để em được cạnh C có tham số (d1, D1, D2, D3) không bác?

 

 

http://www.cadviet.c.../151325_1_5.dwg

 

151325_2.jpg


  • -2

#10 Tot77

Tot77

    biết lệnh adcenter

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

Đã gửi 15 June 2016 - 09:35 AM

Cái đó bạn chịu khó stretch bằng tay chứ offset thì nó đều nhau ở mọi cạnh chứ không có khác biệt.


  • 0

#11 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

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

Đã gửi 15 June 2016 - 11:23 AM

Nếu luôn là hình chữ nhật (PLINE) thì có thể làm được.


  • 0