Đến nội dung


Hình ảnh
- - - - -

làm thế nào để nối hatch???


  • Please log in to reply
17 replies to this topic

#1 trankts

trankts

    biết zoom

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

Đã gửi 13 December 2007 - 11:34 PM

Các bạn cho tớ hỏi là nếu tớ có 3 cái hatch rời mà muốn + vào nhau( kiểu như merg layer ấy ) thì làm thế nào?
cái này giúp cho bản vẽ sạch sẽ hơn ấy mà.
  • 1

#2 thoclep

thoclep

    biết lệnh offset

  • Members
  • PipPipPip
  • 170 Bài viết
Điểm đánh giá: 142 (tàm tạm)

Đã gửi 14 December 2007 - 12:07 AM

Hoành cho tớ hỏi là nếu tớ có 3 cái hatch rời mà muốn + vào nhau( kiểu như merg layer ấy ) thì làm thế nào?
cái này giúp cho bản vẽ sạch sẽ hơn ấy mà.

Bạn vào đây để tham khảo
http://www.cadviet.com/forum/index.php?sho...18
  • 0

#3 trankts

trankts

    biết zoom

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

Đã gửi 14 December 2007 - 02:22 AM

Tôi đã tìm rồi, không thấy trong topic đấy. Nhờ Hoành xử lý cho vụ này nhé????. Cái này rất quan trọng , không những giúp bản vẽ sạch sẽ hơn mà còn giúp khi tính diện tích của nhiều hatch 1 lúc mà không mát công ngồi cộng = máy tính ngoài.
  • 0

#4 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 14 December 2007 - 06:34 AM

Tôi đã tìm rồi, không thấy trong topic đấy. Nhờ Hoành xử lý cho vụ này nhé????. Cái này rất quan trọng , không những giúp bản vẽ sạch sẽ hơn mà còn giúp khi tính diện tích của nhiều hatch 1 lúc mà không mát công ngồi cộng = máy tính ngoài.

Cái này trong ACAD không có sẵn.

Bạn thử làm theo các bước sau:
1. Bạn hãy dùng lisp CHB ở đây: http://www.cadviet.com/forum/index.php?sho...3&#entry973 để tạo các đường biên từ các hatch rời.
2. Dùng lệnh BHATCH để tạo 1 đối tượng hatch mới từ các đường biên đã chọn.
3. rồi xóa các hach rời cũ và đường biên đi.
  • 0

#5 trankts

trankts

    biết zoom

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

Đã gửi 15 December 2007 - 05:41 AM

Cái này trong ACAD không có sẵn.

Bạn thử làm theo các bước sau:
1. Bạn hãy dùng lisp CHB ở đây: http://www.cadviet.com/forum/index.php?sho...3&#entry973 để tạo các đường biên từ các hatch rời.
2. Dùng lệnh BHATCH để tạo 1 đối tượng hatch mới từ các đường biên đã chọn.
3. rồi xóa các hach rời cũ và đường biên đi.



Tớ vẫn thường làm như vậy nhưng mất thời gian 1 chút, nhưng lý do tớ post câu hỏi ở chuyên mục lisp là hỏi bạn có cái lisp nào làm công việc này không???? Tức là chỉ nhập lệnh, chọn các hatch và ok, các hatch đã được merg.
Hoành có thể giúp người sử dụng acad ở diễn đàn 1 lisp như vậy ko????
Rất cám ơn Hoanh!
  • 0

#6 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 15 December 2007 - 10:34 AM

Tớ vẫn thường làm như vậy nhưng mất thời gian 1 chút, nhưng lý do tớ post câu hỏi ở chuyên mục lisp là hỏi bạn có cái lisp nào làm công việc này không???? Tức là chỉ nhập lệnh, chọn các hatch và ok, các hatch đã được merg.
Hoành có thể giúp người sử dụng acad ở diễn đàn 1 lisp như vậy ko????
Rất cám ơn Hoanh!

Lệnh MH (Merge Hatch) dưới đây sẽ thực hiện điều bạn muốn.
Chương trình yêu cầu người sử select các hatch, sau đó nối chúng lại với nhau thành 1 hatch đơn nhất.

Thuộc tính (layer, màu, kiểu hatch, ...) của hatch kết quả được lấy theo đối tượng hactch đầu tiên. Mẹo: Khi các hatch không giống nhau, muốn đối tượng sau khi merge giống hatch nào thì nên pick hatch đó đầu tiên, sau đó mới select các hatch khác.


(defun c:mh (/ ss entht sl i dt dtht)
(princ "\nMerge Hatch - free lisp from CADViet.com")
(setq
ss (ssget '((0 . "HATCH")))
sl (if ss
(sslength ss)
0
)
i 0
l 0
)
(repeat sl
(setq
entht (ssname ss i)
dtht (getbdata entht)
dt (append dt dtht)
l (+ l (cdr (assoc 91 (entget entht))))
i (1+ i)
)
)
(setq ent (ssname ss 0)
ss (ssdel ent ss)
tt (entget ent)
duoi (member (assoc 75 tt) tt)
dau (reverse (member (assoc 91 tt) (reverse tt)))
tt (append dau dt duoi)
tt (subst (cons 91 l) (assoc 91 tt) tt)
)
(entmod tt)
(command ".erase" ss "")
(princ)
)
(defun getbdata (ent)
(setq tt (entget ent)
tt (cdr (member (assoc 75 tt) (reverse tt)))
tt (cdr (member (assoc 91 tt) (reverse tt)))
)
)
(princ "\nMerge Hatch is loaded, please type MH to start!")
(princ)

  • 11

#7 trankts

trankts

    biết zoom

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

Đã gửi 16 December 2007 - 04:49 AM

Tớ đang thử, cám ơn Hoành rất nhiều nhé!!!! sứ dụng tuyệt vời lắm.!!!!!!!!!!!!!!
  • 0

#8 hadex

hadex

    biết zoom

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

Đã gửi 25 December 2007 - 02:13 PM

merg layer là cái chi rứa bạn ?
  • 0

#9 bemove

bemove

    biết lệnh divide

  • Vip
  • PipPipPipPipPipPip
  • 446 Bài viết
Điểm đánh giá: 1308 (rất tốt)

Đã gửi 29 December 2007 - 01:30 PM

Bác Hoành có thể sửa được lỗi này không: khi các hatch giao nhau, ta dùng lệnh merge hatch thì tại các khoảng giao nhau đó sẽ thành khoảng trắng. (ý em là phải union hach kia chứ không phải merge hatch :) )
  • 0

#10 xuanthu189

xuanthu189

    biết zoom

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

Đã gửi 22 May 2009 - 08:16 AM

Bác Hoành có thể sửa được lỗi này không: khi các hatch giao nhau, ta dùng lệnh merge hatch thì tại các khoảng giao nhau đó sẽ thành khoảng trắng. (ý em là phải union hach kia chứ không phải merge hatch :mellow: )

Cái này sao không thấy bác nào quan tâm nhỉ??1 bài toán bị bỏ ngỏ.Em cũng đã thử và thực sự khi 2 hatch chồng lên nhau thì khi merg hatch sẽ bị lỗi khoảng trống ở chỗ hatch! :mellow:
  • 0

#11 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 22 May 2009 - 08:40 AM

Cái này sao không thấy bác nào quan tâm nhỉ??1 bài toán bị bỏ ngỏ.Em cũng đã thử và thực sự khi 2 hatch chồng lên nhau thì khi merg hatch sẽ bị lỗi khoảng trống ở chỗ hatch! :mellow:

Theo mình thì tạm thời giả quyết bằng cách:
-Tạo biên từ hatch.
-Trim phần chồng lên nhau.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#12 archhnm

archhnm

    biết zoom

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

Đã gửi 31 May 2009 - 02:26 PM

Mình thấy lisp của bác Hoành hiệu quả rồi , giải quyết công việc cũng nhanh , nếu cần theo cách đầu tiên của bác Hoành là ok
  • 0

#13 ktsk80

ktsk80

    biết lệnh erase

  • Members
  • PipPipPip
  • 107 Bài viết
Điểm đánh giá: 27 (tàm tạm)

Đã gửi 31 May 2009 - 03:50 PM

Thank bac hoanh, rất tiện ích
  • 0
Tớ nẫu đây ! Khà khà

#14 thanhduan2407

thanhduan2407

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 992 Bài viết
Điểm đánh giá: 223 (khá)

Đã gửi 19 June 2010 - 11:38 AM

Lệnh MH (Merge Hatch) dưới đây sẽ thực hiện điều bạn muốn.
Chương trình yêu cầu người sử select các hatch, sau đó nối chúng lại với nhau thành 1 hatch đơn nhất.

Thuộc tính (layer, màu, kiểu hatch, ...) của hatch kết quả được lấy theo đối tượng hactch đầu tiên. Mẹo: Khi các hatch không giống nhau, muốn đối tượng sau khi merge giống hatch nào thì nên pick hatch đó đầu tiên, sau đó mới select các hatch khác.


(defun c:mh (/ ss entht sl i dt dtht)
(princ "\nMerge Hatch - free lisp from CADViet.com")
(setq
ss (ssget '((0 . "HATCH")))
sl (if ss
(sslength ss)
0
)
i 0
l 0
)
(repeat sl
(setq
entht (ssname ss i)
dtht (getbdata entht)
dt (append dt dtht)
l (+ l (cdr (assoc 91 (entget entht))))
i (1+ i)
)
)
(setq ent (ssname ss 0)
ss (ssdel ent ss)
tt (entget ent)
duoi (member (assoc 75 tt) tt)
dau (reverse (member (assoc 91 tt) (reverse tt)))
tt (append dau dt duoi)
tt (subst (cons 91 l) (assoc 91 tt) tt)
)
(entmod tt)
(command ".erase" ss "")
(princ)
)
(defun getbdata (ent)
(setq tt (entget ent)
tt (cdr (member (assoc 75 tt) (reverse tt)))
tt (cdr (member (assoc 91 tt) (reverse tt)))
)
)
(princ "\nMerge Hatch is loaded, please type MH to start!")
(princ)

Cám ơn bác hoành rất nhiều
Em đã đọc rất nhiều bài post của bác trên mạng và rất phục bác
Em cũng đang giai đoạn tìm hiểu về lisp và ứng dụng cho chuyên ngành của mình
Em là dân Trắc Địa bác ạ nên cần phải năng động cho lĩnh vực xử lý tính toán số liệu của mình
Em rất mong bác giúp đỡ em một số bài toán mà em đang vướng mắc
Bác có thể nêu cấu trúc đọc từng dòng của 1 file dữ liệu với một vài kiểu khuôn dạng trong từng dòng
VD đọc dữ liệu với 3 dòng được lặp đi lặp lại:
dòng 1: kiểu a
dòng 2 Kiể b
dòng 3 Kiểu c
dòng 4: kiểu a
dòng 5 Kiể b
dòng 6 Kiểu c
.....

Tiện thể bác có thế giúp em lập trình một hàm tách xâu ký tự trên một dòng mà các số liệu được phân biệt bởi dấu cách,hoặc dấu tab, hoặc dấu phẩy
VD dấu tab
1 1035846.246 597526.601 -1.23
2 1035853.471 597526.324 -2.09
3 1035862.06 597523.732 -2.93
VD dấu cách
1 1035846.246 597526.601 -1.23
2 1035853.471 597526.324 -2.09
3 1035862.06 597523.732 -2.93
VD dấu phẩy
1,1035846.246,597526.601,-1.23
2,1035853.471,597526.324,-2.09
3,1035862.06,597523.732,-2.93

Em cảm ơn bác rất nhiều
Có gì bác có thể gửi cho em tài liệu hoặc câu trả lời qua Email : thanhduan_mda@yahoo.com
Em chân thành cảm ơn bác
  • 0



Tôi là con kiến bò trên sa mạc kiến thức bao la. Biển học thật rộng lớn







#15 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 11 July 2010 - 01:00 PM

Em cũng là dân kỹ thuật đây, theo em thì bác chỉnh sửa file từ máy toàn đạc ra có phải không?
Cái này cũng dễ thôi bác ơi, không cần dùng lisp đâu
Định dạng này bác cứ chuyển qua Notepad lưu xuống file *.txt
Sau đó dùng EXCEL mở file *.TXT
Chọn đánh dấu các mục Tab, Space,... và tại vị trí Other bác thêm chữ , là được
Excel sẽ tạo cho bác 4 cột 3 dòng như ý và bác cứ xóa các dòng không như mong muốn, chỉnh sửa số tùy thích
Sau đó, chọn vùng dữ liệu
Bấm Ctrl+C
Qua Notepad bấm Ctrl+V sẽ được định dạng như ý
Có j không hiểu bác cứ pm
  • 0

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#16 hochoaivandot

hochoaivandot

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 310 Bài viết
Điểm đánh giá: 106 (tàm tạm)

Đã gửi 04 January 2012 - 11:31 PM

Lisp này không hoạt động trong trường hợp sau:

Hình đã gửi

Cụ thể: Khi lựa chọn tập đối tượng thì đối tượng hatch đầu tiên tạo ra từ (command "-bhatch" "S" (ssget) "" ""), các đối tượng hatch chọn sau thì tạo bằng cách Pick điểm

Lưu ý thứ tự khi chọn phải như vậy, nếu chon thứ tự ngược lại thì lại không bị lỗi

Mình gởi file đính kèm http://www.cadviet.c..._goicadviet.dwg

Mong tác giả và các anh em giải thích và giải quyết giúp.


  • 0

Dương Bá Diệp

 

www.cadonline.duyxuyen.vn 

 

Thành viên nhóm CADMAGIC

 


#17 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 08 July 2013 - 11:00 AM

Bác Hoành có thể sửa được lỗi này không: khi các hatch giao nhau, ta dùng lệnh merge hatch thì tại các khoảng giao nhau đó sẽ thành khoảng trắng. (ý em là phải union hach kia chứ không phải merge hatch undecided.gif )

Bạn dùng thử MergeHatch sau của hmsilva

http://forums.autode...it/td-p/3823971

(defun c:test (/ ss zer ss1 hpb olde itm ent bou ss2)
  (alert
    "\n            Select hatch to Merge.\n\nFirst one will be the Properties Source."
  )
  (if (setq ss (ssget ":L" '((0 . "HATCH"))))
    (progn
      (command "_.undo" "_BE")
      (setq olde (getvar 'cmdecho)
	    hpb	 (getvar 'hpbound)
	    itm	 -1
	    ss1	 (ssadd)
	    zer	 (entlast)
      )
      (ssadd zer ss1)
      (setvar 'hpbound 0)
      (setvar 'cmdecho 0)
      (while
	(setq ent (ssname ss (setq itm (1+ itm))))
	 (command ".-hatchedit" ent "b" "r" "y")
      );; while
      (while
	(setq zer (entnext zer))
	 (ssadd zer ss1)
      );; while
      (ssdel (ssname ss1 0) ss1)
      (command "_.union" ss1 "")
      (setq bou (entlast))
      (command "_.hatch" "solid" "l" "")
      (setq ss2 (ssget "_L"))
      (command "_.copy"
	       (ssname ss 0)
	       ""
	       "0,0,0"
	       "0,0,0"
	       "_.erase"
	       "p"
	       ""
	       "_.matchprop"
	       "L"
	       ss2
	       ""
	       "_.draworder"
	       ss2
	       ""
	       "b"
	       "_.erase"
	       "L"
	       bou
	       ss
	       ""
      )
    );; progn
  );; if
  (command "_.undo" "_E")
  (setvar 'hpbound hpb)
  (setvar 'cmdecho olde)
  (princ)
);; test

  • 2

#18 Hoan1111

Hoan1111

    biết lệnh adcenter

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

Đã gửi 08 July 2013 - 01:31 PM

Lisp này không hoạt động trong trường hợp sau:

mh.gif

Cụ thể: Khi lựa chọn tập đối tượng thì đối tượng hatch đầu tiên tạo ra từ (command "-bhatch" "S" (ssget) "" ""), các đối tượng hatch chọn sau thì tạo bằng cách Pick điểm

Lưu ý thứ tự khi chọn phải như vậy, nếu chon thứ tự ngược lại thì lại không bị lỗi

Mình gởi file đính kèm http://www.cadviet.c..._goicadviet.dwg

Mong tác giả và các anh em giải thích và giải quyết giúp.

 

Theo em Hoằn thì có thể làm thủ công kiểu Hai Lúa như sau:

1)-  Gõ lệnh E để xóa hatch 2 và 3

2)- Gõ HE

3)- Pick đối tượng hatch1 >>>Hiện bảng Hatch Edit >>> Pick chọn ô Add Pick points (Pick an Intrernal point

4) Pick chọn vùng hatch 2 và 3 >>> Xong!

 

Command: e ERASE 2 found
Hatch boundary associativity removed.
Hatch boundary associativity removed.
Command: He HATCHEDIT
Select hatch object:
Pick internal point or [Select objects/remove Boundaries]: Selecting everything...
Selecting everything visible...
Analyzing the selected data...
Analyzing internal islands...
Pick internal point or [Select objects/remove Boundaries]: Selecting everything...
Selecting everything visible...
Analyzing the selected data...
Analyzing internal islands...
Pick internal point or [Select objects/remove Boundaries]:
Command: *Cancel*


  • 0

66 Câu Phật Học Cho Cuộc Sống : http://ngocchinh.com...-cho-cuoc-song/

Gió đưa cây cải về trời / Rau răm ở lại chịu lời đắng cay...