Đến nội dung


Hình ảnh
- - - - -

[Yêu Cầu] Cắm Cọc Gpmb Trên 2 Mép Ngoài Taluy Trên Bình Đồ


  • Please log in to reply
66 replies to this topic

#21 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 10 November 2015 - 02:52 PM

Bác có thể giúp em tách ra được không, lisp cắm cọc và kích thước riêng (lisp này thì ok rồi), còn lisp xuất ra bảng gồm tọa độ và kích thước riêng khi đã có cọc gpmb và kích thước. Vấn đề xảy ra khi em làm là trong bình đồ bên thiết kế giao đường mép taluy ngoài gồm nhiều đường pline, nên em phải chạy lệnh cắm cọc thành nhiều lần, như thế mỗi lần lại xuất ra 1 bảng thì khó quản lý hơn ạ.


  • 0

#22 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 10 November 2015 - 04:52 PM

Tại sao bạn không join đường mép taluy lại thành 1 đối tượng trước khi chạy lisp ?! Như vậy có lạm dụng lisp quá chăng ?!


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#23 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 10 November 2015 - 05:04 PM

Em cũng đã thử join rồi, nhưng đường mép taluy ngoài này không hiểu sao ko join vào được.

Với cả khi làm trên bình đồ của em không hiểu sao thứ tự cọc xuất ra không đi theo đúng thứ tự, bác kiểm tra hộ em phát.

Đây là file của em đang làm 

http://www.cadviet.c...0_binh_do_1.dwg


  • 0

#24 tien2005

tien2005

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 257 Bài viết
Điểm đánh giá: 94 (tàm tạm)

Đã gửi 10 November 2015 - 06:13 PM

để giải quyết vấn đề khó quản lý của Bạn thì Bạn lại làm khó cho lisper.

Các newmember chỉ biết vào để xin lisp mà không chịu học hỏi viết lisp để chủ động hơn. Bởi vậy 4r bây giờ ít khi thấy các lisper kỳ cựu viết mà họ chỉ hổ trợ và trao đổi thuật toán mà thôi


  • 0

#25 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 10 November 2015 - 08:37 PM

Điều bác tien2005 nói em xin tiếp thu, nhưng do công việc cần gấp mà khả năng em không có mới phải mặt dày nhờ các bác thế này, mong các bác thông cảm cho em. Khi tải lisp về em cũng đã cố gắng đọc xem nội dung thế nào có chỉnh sửa được gì để phù hợp với yêu cầu của mình không n cái em sửa được chỉ là 1 vài thông số rất là nhỏ thôi :(


  • 0

#26 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 11 November 2015 - 07:43 AM

Vấn đề của bạn được giải quyêt như sau:

- Nếu không join được thì có thể F với R=0, chú ý chọn đúng "cạnh" của PL. Nếu góc tạo bởi 2 "cạnh" đầu-cuối của 2 PL = k*pi thì phải chọn 1 trong 2 và "cạnh" tiếp theo ...

- Sau khi đã join thành công rồi, chạy lisp, chọn 2 đường mép taluy xong, chọn tùy chọn F rồi "vẽ" theo đường tim để lisp xuất cọc đúng thứ tự.

Chúc bạn thành công ! :D


  • 1

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#27 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 11 November 2015 - 09:14 AM

- Em thử dùng cách của anh thấy có đoạn thì nối được có đoạn thì lại không, anh có thể giải thích thêm về góc của 2 cạnh đầu cuối PL = k*pi nghĩa là như thế nào ạ?
- Khi vẽ đường tim có cần thiết phải vẽ đúng vị trí đường tim không hay là chỉ cần chọn điểm đầu và cuôí tuyến thôi?

- Mà em thấy đường pline của em còn có nhiều vertex là các layer khác liệu có phải là nguyên nhân không bác?


  • 0

#28 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 11 November 2015 - 09:28 AM

- ...góc của 2 cạnh đầu cuối PL = k*pi ... Có nghĩa là 2 "cạnh" này nằm trên một đường thẳng >>> Khi đó lệnh FILLET của cad không thực hiện được (đúng ý đồ).

- Nói vẽ đường tim chỉ là cách nói cho dễ hiểu, thực chất là phương thức chọn Fence (hàng rào), cad sẽ chọn lần lượt từ đầu đến cuối các đối tượng mà đường "gạch gạch" cắt qua >>>> không cần vẽ đúng vị trí đường tim mà vẽ sao cho đường "gạch gạch" cắt qua các line ENTCOC là được.


  • 1

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#29 dinhnk2015

dinhnk2015

    Chưa sử dụng CAD

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

Đã gửi 11 November 2015 - 09:29 AM

xin chào các anh các bạn.

em mới học cad được thời giàn rồi. hôm nay em gặp vẫn đề mong mọi người giúp đỡ.

Em vẽ tren A2 với tỉ lệ 1:1.sau khi in em đo thục thế tren giấy thì không đúng với kích thước.

Cụ thể là trong bản vẽ có kích thước 160 nhung khi đo thưc tế chỉ là 155

Trước khi vẽ em đã chon metricssau đó mvsetup, trong bảng dim đã fit rồi

Mọng mọi người giúp đỡ


  • 0

#30 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 11 November 2015 - 09:57 AM

- ...góc của 2 cạnh đầu cuối PL = k*pi ... Có nghĩa là 2 "cạnh" này nằm trên một đường thẳng >>> Khi đó lệnh FILLET của cad không thực hiện được (đúng ý đồ).

- Nói vẽ đường tim chỉ là cách nói cho dễ hiểu, thực chất là phương thức chọn Fence (hàng rào), cad sẽ chọn lần lượt từ đầu đến cuối các đối tượng mà đường "gạch gạch" cắt qua >>>> không cần vẽ đúng vị trí đường tim mà vẽ sao cho đường "gạch gạch" cắt qua các line ENTCOC là được.

Sau khi fillet bằng 1 trong 2 cạnh tiếp theo thì những cạnh trước lại bị xóa đi như trong 2 đường pline trong file dưới đây của em. 

http://www.cadviet.c...64560_11111.dwg


  • 0

#31 tien2005

tien2005

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 257 Bài viết
Điểm đánh giá: 94 (tàm tạm)

Đã gửi 11 November 2015 - 10:36 AM

Đoạn PL bên phải của Bạn có các canh trùng nhau nên nối không được

khắc phục: explode đoạn PL bên phải, dùng overkill để loại bỏ các line trùng, dùng PE để join lại là OK


  • 1

#32 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 11 November 2015 - 10:57 AM

Hì hì em cũng thử explode và cũng phát hiện ra nhiều đường trùng nhau, nhưng e chỉ xóa thủ công thì nối ko được. N có cái lệnh OVERKILL là lại ổn rồi bác tien2005.

Thank bác!


  • 0

#33 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 11 November 2015 - 11:44 AM

Mình đã thử nối PL của bạn, lường trước rằng bạn sẽ bị vướng chổ này nên mới có đoạn: "Nếu góc tạo bởi 2 "cạnh" đầu-cuối của 2 PL = k*pi thì phải chọn 1 trong 2 và "cạnh" tiếp theo ..."

Có nghĩa là bạn Fillet với R=0, 2 điểm chọn tại 2 point như file đính kèm

Có lẻ là do mình diễn giải chưa được rõ :D :D :D

http://www.cadviet.c.../80156_note.dwg


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#34 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 11 November 2015 - 01:54 PM

- Khi bác giải thích góc = k*pi (tức là bội của 180 độ) thì em hiểu rồi, em cũng tick như trong file bác hướng dẫn, nhưng khi tick chọn 2 điểm đó thì các đường pline phía bên phải bị xóa đi 1 phần như trong file dưới đây ạ. 

http://www.cadviet.c...0156_note_1.dwg

 

- Mà lỗi khi xuất ra thứ tự cọc không đúng là do đường mép taluy có nhiều đối tượng trùng nhau nên mới bị lỗi đấy ý bác ạ, sau khi em overkill và nối lại toàn bộ 2 mép taluy trái phải thì thấy thứ tự cọc xuất ra không sai nữa (khi đấy em vẫn chưa dùng fence).

- Bác xem hộ em tại sao khi line entencoc giao đúng chỗ điểm gấp khúc trên 2 line meptlt và meptlp thì không chạy được lisp. Đây là 1 đoạn bị lỗi trên bình đồ em ạ.

http://www.cadviet.c.../64560_2222.dwg


  • 0

#35 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 12 November 2015 - 09:25 AM

- Mình vẫn nối bằng F với R=0 được mà !? :D Chắc là điểm pick của bạn đúng ngay đoạn line "quay đầu trở lại" :D

Nhưng thôi, bạn đã có overkill ...

 

- Mình đã nói là thứ tự cọc xuất ra phụ thuộc và thứ tự các line ENTCOC khi chọn đối tượng, vì trong thuật toán mình viết, mỗi lần xét giao để đóng cọc mốc chỉ xét cho 1 line ENTCOC và 1 đường biên nên cái "thứ tự này" nó ko liên quan gì đến overkill.

Bạn không tin, có thể thử chọn tùm lum thứ tự cọc xem nó xuất ra thế nào ??? :D :D :D

 

- Lisp chạy lỗi ko phải do điểm gấp khúc mà do có 1 line ENTCOC tại TD98 không giao với MEPTLP, bạn chỉ cần EXTEND đường MEPTLP ra để có điểm giao là OK !


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#36 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 12 November 2015 - 01:10 PM

- Lạ thật, em pick theo cả 2 kiểu point màu trắng và màu đỏ như bác hướng dẫn nhưng kiểu nào pline bên phải cũng bị xóa 1 phần.

 

- Đúng thế thật bác ạ, lúc trước e xuất ra đúng vì em lựa chọn line ENTCOC từ trái tuyến sang.

 

- Chỗ TD98 đấy thì do em cắt bình đồ không để ý, nhưng khi chạy trên tuyến đầy đủ chỗ P96, TC96 và nhiều điểm khác nữa bị lỗi bác ạ, hình như ko nhận điểm giao MEPTLT. Em up file đầy đủ bác xem hộ em với ạ.

http://www.cadviet.c...4560_2222_1.dwg


  • 0

#37 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 12 November 2015 - 02:59 PM

1; 2. Không bàn nữa :D

3. Đã fix :

(defun c:DONG4 ( / lst_va old ss lst_name coc tlt tlp ob trai phai mid mid_pt fn pw ten_coc)
(vl-load-com)
(defun mid(p1 p2)(mapcar '* (mapcar '+ p1 p2) '(0.5 0.5 0.5)))
(setq lst_va '("osmode" "cmdecho"))
(setq old (mapcar 'getvar lst_va))
(mapcar 'setvar lst_va '(0 0))
(prompt "\nChon BD muon dong coc GPMB !")
(setq ss (ssget '((8 . "MEPTLT,MEPTLP,ENTCOC"))))
(setq lst_name (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
(setq coc (vl-remove-if-not '(lambda(x) (= "ENTCOC" (cdr (assoc 8 (entget x))))) lst_name)
	  tlt (vlax-ename->vla-object (car (vl-remove-if-not '(lambda(x) (= "MEPTLT" (cdr (assoc 8 (entget x))))) lst_name)))
	  tlp (vlax-ename->vla-object (car (vl-remove-if-not '(lambda(x) (= "MEPTLP" (cdr (assoc 8 (entget x))))) lst_name))))
(setq fn (getfiled "Chon file de xuat ket qua" "" "csv" 1))
(setq pw (open fn "w"))
(write-line "STT,Ten coc,Trai,,,Phai" pw)
(write-line ",,K/cach den tim,Y,X,K/cach den tim,Y,X" pw)
(foreach c coc
	(setq ten_coc	(cdr 
						(car
							(vl-remove-if-not '(lambda (x) (= 1000 (car x))) (cdr (last (assoc -3 (entget c '("*"))))))
						)
					)
	)
	(setq 	mid_pt (mid (vlax-curve-getStartpoint c) (vlax-curve-getEndpoint c))
			trai (car (vl-sort (H:inter-group3 (setq ob (vlax-ename->vla-object c)) tlt) '(lambda (x y) (< (distance x mid_pt) (distance y mid_pt)))))
			phai (car (vl-sort (H:inter-group3 ob tlp) '(lambda (x y) (< (distance x mid_pt) (distance y mid_pt)))))
	)
	(command "_.insert" "cocmoc" trai 1 "" "")
	(command "_.insert" "cocmoc" phai 1 "" "")
	(command ".DIMALIGNED" mid_pt trai (mid trai mid_pt))
	(command ".DIMALIGNED" mid_pt phai (mid phai mid_pt))
	(write-line (strcat "," ten_coc "," (rtos (distance mid_pt trai) 2 3) "," (rtos (cadr trai) 2 3) "," (rtos (car trai) 2 3)
									"," (rtos (distance mid_pt phai) 2 3) "," (rtos (cadr phai) 2 3) "," (rtos (car phai) 2 3)) pw)
)
(close pw)
(mapcar 'setvar lst_va old)
(princ)
)
;;;;
(defun H:inter-group3(ob1 ob2 / modul res)
(cond 
	((null (setq modul (vlax-invoke ob1 'intersectwith ob2 acExtendThisEntity))) nil)
	((= (length modul) 3) (list modul))
	(t 
		(while (> (length modul) 0)
			(setq	res (cons (list (car modul) (cadr modul) (caddr modul)) res)
					modul (cdddr modul)
			)
		)
		(reverse res)
	)
)
)

  • 1

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson


#38 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 12 November 2015 - 04:26 PM

- Hì hì mượt mà như da em bé rồi bác ơi! Thank bác nhiều nhé


  • 0

#39 dangky2510

dangky2510

    biết vẽ circle

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

Đã gửi 23 November 2015 - 11:51 AM

Xin phép lại làm phiền bác "hiepttr" tý nhé. Tất cả các bình đồ thiết kế bằng NOVA thì chạy ngon lành cành đào. Nhưng khi bình đồ thiết kế bằng VNROAD như bình đồ dưới đây em gửi có 1 số vấn đề sau ạ. 

  1. Trên bình đồ chỗ cắm cọc được chỗ thì không có.

  2. File xuất ra không có dữ liệu gì cả.

Em gửi file bác xem hộ em phát nhé, Thank bác!

http://www.cadviet.c...4560_bi_loi.dwg


  • 0

#40 hiepttr

hiepttr

    Edu level: li10

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

Đã gửi 23 November 2015 - 02:44 PM

Mình đã nói từ trước là lisp này lấy tên cọc từ dữ liệu Xdata nên với BD bạn gửi thì nó bị "mù" không biết tên cọc >>> sai là điều tất nhiên :D :D :D

 

Không biết thằng VNROAD nó giấu tên cọc ở đâu, với cái bình đồ mà bạn gửi mình ko có cách nào để tìm thấy tên cọc cả :D


  • 0

Có vợ dù dữ dù hiền , bạn đều có lợi
_ Nếu vợ hiền, bạn sẽ là người đàn ông sung sướng
_ Nếu vợ dữ, bạn sẽ thành ... triết gia !

Bergson