Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
- - - - -

[ yêu cầu ] lisp đo khoảng cách dán bào block att


  • Please log in to reply
18 replies to this topic

#1 traigtmientay

traigtmientay

    biết vẽ arc

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

Đã gửi 26 October 2012 - 10:58 AM

em đang làm mấy công tác liên quan đến đo khoảng cách ,
vì làm thủ công lâu nên e đã nghĩ ra làm cái block động có thể vận dụng mọi thứ .
nhưng cái khoảng cách ko khắc phục dc nên em viết yêu cầu này nhờ các anh .
lisp có thể đo theo 3 phương X Y đường chéo
thực thi lệnh thì líp hỏi đo theo phương nào
nếu theo phương cũ có thể bỏ qua bằng dấu cách .
đo xong hỏi chọn block cần điền , chọn att cần điền ( có thể có nhiều att )
kết thúc .
các anh hãy viết trường hợp chung nhất cho tất cả anh em dc dùng .
cảm ơn các anhhttp://www.cadviet.c..._drawing1_1.dwgHình đã gửi
  • 0

#2 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 October 2012 - 11:05 AM

1). Khái niệm đo khoảng cách: là k/c 2 điểm hay là chiều dài line, hay là chiều dài curve. Nếu vậy thì cần gì phải hỏi phương đo.
2). Add từng khoảng cách vào từng att, hay add khoảng cách cho tất cả?
3). Chọn block để làm gì? Chỉ cần chọn att được không?
4). File bản vẽ minh họa?
v.v... và v.v...
  • 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.


#3 traigtmientay

traigtmientay

    biết vẽ arc

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

Đã gửi 26 October 2012 - 11:19 AM

e đã cho file lên đó rồi . khoảng cách tốt nhất là pick điểm ,
add khoảng cách đo từng đoạn 1 vào 1 att
chỉ cần chọn att cũng dc miễn là cái att nằm trong block dc chọn nhảy số .
  • 0

#4 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 October 2012 - 11:25 AM

Chọn phương là thừa, phải không?
  • 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.


#5 lp_hai

lp_hai

    biết lệnh measure

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

Đã gửi 26 October 2012 - 11:46 AM

mình nghĩ nếu chọn khoảng cách bằng pick điểm thì chắc phải chọn phương, vì đôi khi chọn pick điểm thì chưa chắc 2 điểm đã thẳng hàng ?!
@ traimientay trong bản vẽ của bạn lúc nào cũng có cái đường màu trắng đó ah? nếu có thì giải quyết bài toán của bạn nhanh hơn
  • 0
Hình đã gửi

#6 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 26 October 2012 - 12:00 PM

Command Dim -> Lấy Entlast Measurement -> Pick vào Att -> Thay đổi giá trị -> del entlast (nếu cần). Cái này chắc bác Hạ đã viết xong từ lúc chủ topic còn chưa kịp upload, chỉ là chờ cầu trả lời về phương mà thôi
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 traigtmientay

traigtmientay

    biết vẽ arc

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

Đã gửi 26 October 2012 - 12:36 PM

thực ra em muốn chọn phương để khống chế sai số phát sinh khối lượng . nếu ko chọn phương thì mình phải bắt điểm chính xác , khối lượng thao tác tương đương nhau . chon phương nó chắc cú hơn về khối lượng , nhưng cái ko chọn phương chỉ chọn điểm trên bản vẽ bằng cách bắt điểm nó rèn luyện kỹ năng và trách nhiệm công việc . chắc e chọn hướng đi chỉ cần bắt điểm ko cần chọn phương . chỉ cần 2 vị trí trên bản vẽ là ok . các anh có thể phát triển cho text và mtext luôn cũng dc . trong 1 lisp mà làm dc trọn gói . mọi người có thể dùng lisp đa năng
còn cái đường màu trắng là để minh họa thôi anh à.
  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 October 2012 - 03:30 PM

... cách bắt điểm nó rèn luyện kỹ năng và trách nhiệm công việc . chắc e chọn hướng đi chỉ cần bắt điểm ko cần chọn phương . chỉ cần 2 vị trí trên bản vẽ là ok . các anh có thể phát triển cho text và mtext luôn cũng dc . trong 1 lisp mà làm dc trọn gói . mọi người có thể dùng lisp đa năng
còn cái đường màu trắng là để minh họa thôi anh à.


;Doan Van Ha - CADViet.com - Ngay 26/10/2012
;Muc dich: add dimension vao att
(defun C:HA( / p1 p2 ent data obj tag lst len)
(vl-load-com)
(while
(and
(setq p1 (getpoint "\nChon diem P1: "))
(setq p2 (getpoint P1 "\nChon diem P2: "))
(setq ent (nentsel "\nChon Attribute: ")))
(setq obj (vlax-ename->vla-object (cdr (assoc 330 (setq data (entget (car ent)))))))
(setq tag (cdr (assoc 2 data)))
(setq lst (list (cons tag (setq len (rtos (distance p1 p2) 2 2)))))
(foreach att (setq atts (vlax-safearray->list (vlax-variant-value (vla-getattributes obj))))
(if (= (vla-get-tagstring att) tag)
(vla-put-textstring att len)))
(vla-update obj)))

  • 1

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


#9 lp_hai

lp_hai

    biết lệnh measure

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

Đã gửi 26 October 2012 - 03:45 PM

bạn text thử thế nào

(defun c:muong(/ dz p1 p2 bl dis)
(setq dz (getvar "dimzin"))
(while (setq p1 (getpoint "\nchon diem 1:"))
(setq p2 (getpoint p1 "\nchon diem 2:")
bl (entget(entnext(entnext(car(entsel)))))
)
(setvar "dimzin" 4)
(setq dis (rtos (distance p1 p2) 2 2))
(setq bl (subst (cons 1 dis) (assoc 1 bl) bl))
(entmod bl)
)
(setvar "dimzin" dz)
(princ)
)

ở đây mình bỏ qua chọn phương vì mình nghĩ không cần thiết, và bạn có thể bật tắt F8 (chế độ othor) để chọn điểm như khi vẽ line vậy thôi.
  • 1
Hình đã gửi

#10 traigtmientay

traigtmientay

    biết vẽ arc

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

Đã gửi 26 October 2012 - 06:52 PM

e vẫn bị khóa like . thực ra là e có cái lisp khoảng cách cho text nhưng nó hơi gà chỉ cho text ko cho att . nên e nghĩ đến việc gộp chung cho anh em dùng . chứ như em có att rồi lại thêm text . người khác ko có phải mò cả 2 cũng khổ . vì e cũng đi mò và tìm kiếm nhiều rồi nên e biết .
  • 0

#11 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 26 October 2012 - 07:35 PM

Ng­ười ta yêu cầu như thế nào chỉ mần vậy thui các bác :)

(defun c:linhtinh(/ a)(vl-load-com)
(vla-put-textstring
(vlax-ename->vla-object (car(nentsel "\nThay gia tri vao dau day ?")))
(rtos (distance (setq a (getpoint "\nP1 :"))(getpoint a "\nP2 :")) 2 2)
)
(command "regen")
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#12 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 26 October 2012 - 09:45 PM

e vẫn bị khóa like . thực ra là e có cái lisp khoảng cách cho text nhưng nó hơi gà chỉ cho text ko cho att . nên e nghĩ đến việc gộp chung cho anh em dùng . chứ như em có att rồi lại thêm text . người khác ko có phải mò cả 2 cũng khổ . vì e cũng đi mò và tìm kiếm nhiều rồi nên e biết .

Đừng đem các lisper ra làm thí nghiệm nhé bạn!
  • 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.


#13 traigtmientay

traigtmientay

    biết vẽ arc

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

Đã gửi 26 October 2012 - 10:55 PM

e ko bao giờ có ý định như bác hà nói . e rất tôn trọng mọi người và cũng chẳng bao giờ đưa ai ra làm chuột bạch . mình ko tôn trọng người khác thì mình chinh là chuột bạch đầu tiên chứ ko phải người khác .
e chân thành cảm ơn anh em đã giúp đỡ em .
  • 0

#14 đặng phụng

đặng phụng

    biết pan

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

Đã gửi 17 May 2017 - 04:43 PM

Em xin chào cả nhà e là thành viên mới của diễn đàn, e có việc này muốn nhờ các cao nhân giúp đỡ, nói thật lisp e chỉ biết sử dụng thôi chứ còn viết chép gì thì chịu thua, e có tải  lisp của bác DOAN VAN HA về lisp lấy khoảng cách giữa 2 điểm rồi chèn vào block att .Tuy nhiên em muốn mấy a đặt biệt là bác Ha giúp e viết lại đoạn code giúp e: "Lấy khoảng cách tổng của nhiều điểm P1,P2, P3, Pn bằng cách pick chuột, lấy kết quả theo hệ mét chèn vào block att. Rất mong mọi người giúp đỡ e, e cảm ơn.http://www.cadviet.c...vao_attkc_1.lsp


  • 0

#15 Bee

Bee

    biết lệnh ddedit

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

Đã gửi 17 May 2017 - 08:09 PM

Em xin chào cả nhà e là thành viên mới của diễn đàn, e có việc này muốn nhờ các cao nhân giúp đỡ, nói thật lisp e chỉ biết sử dụng thôi chứ còn viết chép gì thì chịu thua, e có tải  lisp của bác DOAN VAN HA về lisp lấy khoảng cách giữa 2 điểm rồi chèn vào block att .Tuy nhiên em muốn mấy a đặt biệt là bác Ha giúp e viết lại đoạn code giúp e: "Lấy khoảng cách tổng của nhiều điểm P1,P2, P3, Pn bằng cách pick chuột, lấy kết quả theo hệ mét chèn vào block att. Rất mong mọi người giúp đỡ e, e cảm ơn.http://www.cadviet.c...vao_attkc_1.lsp

Sửa nhanh chút thôi ^_^

(defun C:KC1 (/ p lst_p sum ent data obj tag lst len)

  (vl-load-com)

  (setq lst_p nil sum 0)

  (while (setq p (getpoint "\nChon diem : "))
    (setq lst_p (cons p lst_p))
  )
  (setq sum (apply '+ (mapcar 'distance lst_p (cdr lst_p))))

  (setq ent (nentsel "\nChon Attribute: "))

  (setq	obj (vlax-ename->vla-object
	      (cdr (assoc 330 (setq data (entget (car ent)))))
	    )
  )
  (setq tag (cdr (assoc 2 data)))

  (setq lst (list (cons tag (setq len (strcat (rtos (/ sum 1000.) 2 0) " m.")))))

  (foreach att (setq atts (vlax-safearray->list
			    (vlax-variant-value (vla-getattributes obj))
			  )
	       )

    (if	(= (vla-get-tagstring att) tag)

      (vla-put-textstring att len)
    )
  )

  (vla-update obj)
)

  • 0

#16 đặng phụng

đặng phụng

    biết pan

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

Đã gửi 18 May 2017 - 07:22 PM

Cảm ơn bác BEE cùng Bác Ha. em text ok luôn


  • 0

#17 đặng phụng

đặng phụng

    biết pan

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

Đã gửi 18 May 2017 - 08:04 PM

p/S Do công việc tính chiều dài dây điện, với lisp của bác BEE trên thì tính tổng được chiều dài dây trên mặt bằng rất ok, hic còn trên mặt đứng nữa. Vậy đã nhờ bác BEE rồi thì e nhờ bác 1 lần nữa bác giúp e sửa lisp 1 chút. Bác thêm một dòng lệnh là "Nhập thêm hằng số cộng vào tổng:" sau khi chọn pick điểm xong, để cộng thêm hằng số đó vào cái tổng chiều dài trên. Như vậy chiều dài dây từ bảng điện lên tới đèn mới giải quyết được. mong bác ra tay giúp e xin chân thành cảm ơn.


  • -1

#18 Bee

Bee

    biết lệnh ddedit

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

Đã gửi 18 May 2017 - 09:35 PM

p/S Do công việc tính chiều dài dây điện, với lisp của bác BEE trên thì tính tổng được chiều dài dây trên mặt bằng rất ok, hic còn trên mặt đứng nữa. Vậy đã nhờ bác BEE rồi thì e nhờ bác 1 lần nữa bác giúp e sửa lisp 1 chút. Bác thêm một dòng lệnh là "Nhập thêm hằng số cộng vào tổng:" sau khi chọn pick điểm xong, để cộng thêm hằng số đó vào cái tổng chiều dài trên. Như vậy chiều dài dây từ bảng điện lên tới đèn mới giải quyết được. mong bác ra tay giúp e xin chân thành cảm ơn.

Ok mình sửa nhanh nên ko lằng nhằng các trường hợp khác. Nhập thêm hằng số theo hệ mm nhé. ^_^

(defun C:KC1 (/ p lst_p sum d ent data obj tag lst len)

  (vl-load-com)

  (setq lst_p nil sum 0)

  (while (setq p (getpoint "\nChon diem : "))
    (setq lst_p (cons p lst_p))
  )
  
  (setq sum (apply '+ (mapcar 'distance lst_p (cdr lst_p))))
  
  (setq d (getreal "\nNhap them hang so cong vao tong:"))
  
  (setq sum (+ sum d))
	 
  (setq ent (nentsel "\nChon Attribute: "))

  (setq	obj (vlax-ename->vla-object
	      (cdr (assoc 330 (setq data (entget (car ent)))))
	    )
  )
  (setq tag (cdr (assoc 2 data)))

  (setq lst (list (cons tag (setq len (strcat (rtos (/ sum 1000.) 2 0) " m.")))))

  (foreach att (setq atts (vlax-safearray->list
			    (vlax-variant-value (vla-getattributes obj))
			  )
	       )

    (if	(= (vla-get-tagstring att) tag)

      (vla-put-textstring att len)
    )
  )

  (vla-update obj)
)

  • 0

#19 đặng phụng

đặng phụng

    biết pan

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

Đã gửi 19 May 2017 - 11:39 AM

Thank bác e thích líp của bác. Chúc bác sức khỏe.


  • 0