Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
tiendung89

[nhờ chỉnh sửa] Lisp vẽ mặt cắt từ bình đồ

Các bài được khuyến nghị

-em có down lisp vẽ mặt cắt từ bình đồ của bác Hoành về dùng nhưng vừa Ap vào thì máy lại báo lỗi, mặc dù em đã làm đúng yêu cầu rồi, lỗi như sau:

 

Command: ap APPLOAD 4292_vmc.lsp successfully loaded.

Command: ; error: misplaced dot on input

Command:

em ko biết vì sao có lỗi này, mong các bác giúp đỡ cho ạ, lisp như sau:

 

 

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...p?showtopic=812
;; Bien toan cuc deltaH
(defun c:vmc ( / sel)
 (defun luuos ()
(setq
 	HOANH_OSMODE   (getvar "OSMODE")
 	HOANH_AUTOSNAP (getvar "AUTOSNAP")
)
 )
 (defun traos ()
(if HOANH_OSMODE
 	(setvar "OSMODE" HOANH_OSMODE)
)
(if HOANH_AUTOSNAP
 	(setvar "AUTOSNAP" HOANH_AUTOSNAP)
)
 )
 (defun GiaoDT (ent1 ent2)
(setq ob1 (vlax-ename->vla-object ent1)
ob2 (vlax-ename->vla-object ent2)
)
(setq g (vlax-variant-value
(vla-IntersectWith ob1 ob2 acExtendNone)
  )
)
(if (/= (vlax-safearray-get-u-bound g 1) -1)
 	(setq g (vlax-safearray->list g))
 	(setq g nil)
)
(if g
 	(progn
(setq kq nil
sd (fix (/ (length g) 3))
)
(repeat sd
(setq kq (append kq (list (list (car g) (cadr g) (caddr g))))
g  (cdddr g)
)
)
kq
 	)
 	nil
)
 )
 (defun NhapdeltaH( / tmp)  
(while (not tmp)
 	(setq tmp (getdist "\nVao khoang cach deltaH: "))
 	(if (not tmp)
(setq tmp deltaH)
 	)
)
(setq deltaH tmp)
 )
 ;;;---------------------- Main --------------------------------
 (princ "\nVMC © CADViet.com")
 (if (not deltaH)
(NhapdeltaH)
 )
 (while (not sel)
(setq sel  (entsel "\nVao line mat cat (hoac nhan Enter de nhap deltaH): ")
entl (car sel)
)
(if (not sel)
 	(NhapdeltaH)
)
 )
 (if (= "LINE" (cdr (assoc 0 (entget entl))))
(progn
 	(setq
p  (cadr sel)
tt (entget entl)
p1 (cdr (assoc 10 tt))
p2 (cdr (assoc 11 tt))
 	)
 	(if (> (distance p p1)
(distance p p2)
)
(setq p  p1
p1 p2
p2 p
)
 	)
 	(luuos)
 	(setvar "osmode" 0)
 	(command ".zoom" p1 p2)
 	(setq
sspl  (ssget "F"
(LIST P1 P2)
'((-4 . "<or") (0="" .="" "lwpolyline")="" "spline")="" (-4="" "or="">")
)
)
tappl (ss2ent sspl)
goc   (+ (angle p1 p2) (/ pi 2.0))
index 0
tappn nil
 	)
 	(command ".zoom" "p")
 	(foreach entpl tappl
(if (setq tmp (giaodt entpl entl))
(setq
  p   (car tmp)
  pn   (polar p goc (* deltaH index))
  index (1+ index)
  tappn (append tappn (list pn))
)
)
 	)
 	(command ".pline")
 	(foreach pn tappn
(command pn)
 	)
 	(command "")
 	(traos)
)
 )
 (princ)
)
(vl-load-com)
(princ "\nVe mat cat tu binh do © CADViet.com 2007")
(princ "\nDung lenh VMC de bat dau!")
(princ)

</or")>

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn tiendung89 chú ý sửa lại bài post theo đúng quy định ngay nhé. Quy định cũng chỉ có vài điều, mong bạn tuân thủ. Mình đã gửi rất nhiều bài vào Thùng rác rồi, bác ĐVH cũng chỉ ra những chỗ sai của bạn rồi, bạn để ý giùm.

QUy định dưới chữ ký của mình có link!

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

em đang chú ý đây ạ. nhưng có chuyện gì thế bác ketxu?

 

Tiêu đề : viết dạng Title Case (chí ít chữ đầu là hoa / như mẫu)

Code : cho trong thẻ Code (như bạn vừa sửa)

 

Trả lời cho câu hỏi của bạn : chuyện ở đây là nếu thấy bài viết còn tiếp tục sai quy định thì đội ngũ mod sẽ xóa, và thắc mắc của bạn sẽ chìm trong im lặng thôi ^^

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn tiendung thân mến! Hôm qua tôi đã nhắc giùm bạn rồi, về việc post bài mà.

Về lisp của bác Nguyen Hoanh thì không hiểu sao mà nó lại lỗi từ chữ "sspl". Lỗi này sửa được, nhưng nếu sửa xong thì trong lisp này vẫn thiếu hàm SS2ENT nên không thể chạy được. Cái này chỉ chủ topic mới biết chứ người ngoại đạo thì e khó.

Thân thương!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

-em có down lisp vẽ mặt cắt từ bình đồ của bác Hoành về dùng nhưng vừa Ap vào thì máy lại báo lỗi, mặc dù em đã làm đúng yêu cầu rồi, lỗi như sau:

 

Command: ap APPLOAD 4292_vmc.lsp successfully loaded.

Command: ; error: misplaced dot on input

Command:

em ko biết vì sao có lỗi này, mong các bác giúp đỡ cho ạ, lisp như sau:

 

 

;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.c...p?showtopic=812
;; Bien toan cuc deltaH
(defun c:vmc ( / sel)
 .........

Nhìn chung, nếu máy của bạn có chạy lisp này được hay không, thì lisp này cũng không thể vẽ mặt cắt từ bình đồ được đâu.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

thanks bác ketxu, em mới vào k lâu với lại dùng 3G ít vào mạng nên còn thiếu kinh nghiệm. mong mọi người thông cảm.em sẽ rút kinh nghiệm

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

bác có thể nói rõ hơn đc ko ạ.vì lisp này đã có người dùng và đã vẽ đc mặt cắt bình đồ rồi.em cũng từng gửi tin nhắn hỏi bác Hoành nhưng ko thấy hồi âm gì

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

bác có thể nói rõ hơn đc ko ạ.vì lisp này đã có người dùng và đã vẽ đc mặt cắt bình đồ rồi.em cũng từng gửi tin nhắn hỏi bác Hoành nhưng ko thấy hồi âm gì

Lisp chỉ vẽ được hình chiếu của mặt cắt thôi. Hình chiếu ở đây là 1 polyline thẳng bon, có các nút là điểm giao của line mặt cắt và các đường contour. Chắc cái hồi năm 2007, bác Hoành chỉ hình tượng hoá cái mặt cắt là như vậy.

Lisp vẽ mặt cắt không đơn giản chỉ có vài chục dòng mã như vậy được. Cỡ 400-500 dòng đó. Phải đầu tư nhiều sức lực lắm!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Lisp chỉ vẽ được hình chiếu của mặt cắt thôi. Hình chiếu ở đây là 1 polyline thẳng bon, có các nút là điểm giao của line mặt cắt và các đường contour. Chắc cái hồi năm 2007, bác Hoành chỉ hình tượng hoá cái mặt cắt là như vậy.

Lisp vẽ mặt cắt không đơn giản chỉ có vài chục dòng mã như vậy được. Cỡ 400-500 dòng đó. Phải đầu tư nhiều sức lực lắm!

 

thế bác cứ giúp em sửa cái lisp trên cũng đc ạ.làm sao cho nó chạy đc trên Cad là đc rồi. vì em ko biết nó sai chỗ nào cả ạ

e ko cần phải cụ thể như tạo ra các mặt cắt trong Nova hay các phần mềm khác đâu. chỉ cần tạo ra hình chiếu mặt cắt như bác nói trên cũng đc ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

thế bác cứ giúp em sửa cái lisp trên cũng đc ạ.làm sao cho nó chạy đc trên Cad là đc rồi. vì em ko biết nó sai chỗ nào cả ạ

e ko cần phải cụ thể như tạo ra các mặt cắt trong Nova hay các phần mềm khác đâu. chỉ cần tạo ra hình chiếu mặt cắt như bác nói trên cũng đc ạ

;;;------------ve hinh chieu mat cat ------
;;;------------by THIEP /11/2011 ------
(defun c:hmc (/ entl sel ss pa pb L0 L1 L2 Lstp)
 (vl-load-com)
 (command "undo" "be")
 (acet-sysvar-set
(list "cmdecho" 0 "osmode" 0)
 )
 (while (not sel)
(setq sel  (entsel "\nPick line mat cat: ")
  entl (car sel)
)
 )
 (setq PA (vlax-curve-getStartPoint entl)
PB (vlax-curve-getEndPoint entl)
)
 (setq ss (ssget "F"
(list pA pB)
'((0 . "LWPOLYLINE,POLYLINE"))
)
L0 (acet-ss-to-list ss)
L1 nil
L2 nil
 )
 (foreach x L0
(setq L1 (append L1 (list(vla-copy (vlax-ename->vla-object x)))))
 )
 (mapcar '(lambda (x)
 	(vla-put-Elevation x 0.0)
)
  L1
 )
 (foreach ent L1
(setq Lstp (acet-geom-intersectwith
 entl
 (vlax-vla-object->ename ent)
 0
  	)
)
(foreach P Lstp
(setq L2 (append L2 (list P)))
 	)
 )
 (mapcar 'vla-Delete L1)
 (setq L2 (append (list pa) L2)
L2 (append L2 (list pb))
L2 (vl-sort L2 '(lambda (e1 e2) (< (car e1) (car e2))))
 )
 (ACET-LWPLINE-MAKE (list L2))
 (setq ss (SSADD (entlast) (SSADD)))
 (command ".move"
ss
""
pa
(ACET-SS-DRAG-MOVE
 	SS
 	pa
 	"\nChon vi tri dat hinh chieu mat cat: "
)
 )
 (ACET-SYSVAR-RESTORE)
 (command "undo" "end")
 (princ "\nChuc cac ban thanh cong! Thiep")
 (princ)
)
(princ "\nDung lenh HMC de bat dau!")

Bạn dùng thử lisp trên nhé. Nó là trích đoạn (1 phần 10) của lisp vẽ MC từ bình đồ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

cám ơn bác thiệp, công nhận là để vữ mặt cắt thật ko đơn giản

nếu bác có 9 phần 10 nữa thì giúp em nhé :D

em nghĩ lisp này chắc cũng có rất nhiều người cần ạ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

mà có chút xíu vấn đề nhỏ bác thiep ơi

em dùng lisp nhưng khi kích vào đường Line để vẽ mặt cắt xong thì nó ko hiện câu "chọn vị trí để đặt hình chiếu mặt cắt" mà chỉ có câu "chúc bạn thành công" thôi. nên ko thấy hình chiếu mặt cắt đâu cả. hic. bác xem giúp em lại với

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tôi không chuyên ngành này. Bạn thử sửa dòng

(command ".move" ss "" pa (ACET-SS-DRAG-MOVE SS pa "\nChon vi tri dat hinh chieu mat cat: "))

thành dòng dưới đây xem sao nhé.

(command ".move" ss "" pa (getpoint "\nChon vi tri dat hinh chieu mat cat: "))

Nếu không được nữa thì chắc phải nhờ bác ấy thôi.

Thân thương!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

cho em hỏi tí nữa là từ cácđiểm trên đường hình chiếu ta dựng lên các đường thẳng có độ dài bằng cao độ của điểm trên địa hình tương ứng với điểm trên hình chiếu đó thì có khó khăn lắm ko ạ? vì em thử mãi mà chưa làm đc :(

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình không rành về lĩnh vực này lắm, hồi trước cũng làm một chương trình cho thằng bạn, vẽ MC từ bình đồ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

cho em hỏi tí nữa là từ cácđiểm trên đường hình chiếu ta dựng lên các đường thẳng có độ dài bằng cao độ của điểm trên địa hình tương ứng với điểm trên hình chiếu đó thì có khó khăn lắm ko ạ? vì em thử mãi mà chưa làm đc :(

 

post bản vẽ lên xem sao, thể hiện cả y/c trên đó thì mới có thể nói được

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Mình không rành về lĩnh vực này lắm, hồi trước cũng làm một chương trình cho thằng bạn, vẽ MC từ bình đồ.

thế bạn có thể up cho mình code đó đc ko?công nhận lisp này phức tạp thật

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

 

post bản vẽ lên xem sao, thể hiện cả y/c trên đó thì mới có thể nói được

xin lỗi bác Ha cùng mọi người là bây giờ em vào phần upload thì nó bảo đang nâng cấp ít hôm nữa mới up đc.hic.

khi nào up đc em sẽ up lên cho ạ, bây giờ chưa up đc thì em diễn giải thế này mong mọi người hiểu:

+ từ lisp trên ta vẽ đc hình chiếu mặt cắt là 1 đường thẳng(tạm gọi là đường thẳng 1) trên đó có nhiều điểm, mà các điểm này chính là hình chiếu giao điểm của đường thẳng mình chọn để vẽ mặt cắt với bình đồ đã có

+ bây giờ em muốn từ các điểm trên hình chiếu mặt cắt này sẽ vẽ lên các đoạn thẳng (vuông góc với đường thẳng 1 ở trên) có độ dài bằng với cao độ của các giao điểm giữa đường thẳng mình chọn vẽ mặt cắt với bình đồ(bình đồ ở đây thể hiện bằng các đường đồng mức)

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

các bác cho e hỏi sao em dùng lisp vẽ hình chiếu mặt cắt trên thì chỉ được 1 lần còn lần sau thì nó báo lỗi là:

" no function defintion : acet- sysvar-set " nhỉ

nhờ các bác sửa hộ em tí

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×