Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
20 replies to this topic

#1 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 03 November 2011 - 01:48 PM

-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 &#169; CADViet.com 2007")
(princ "\nDung lenh VMC de bat dau!")
(princ)

</or")>

  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 03 November 2011 - 01:59 PM

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


#3 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 03 November 2011 - 02:01 PM

em đang chú ý đây ạ. nhưng có chuyện gì thế bác ketxu?
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 03 November 2011 - 02:03 PM

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


#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 03 November 2011 - 02:32 PM

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


#6 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 03 November 2011 - 02:33 PM

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

#7 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 03 November 2011 - 02:39 PM

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
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#8 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 03 November 2011 - 02:50 PM

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ì
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#9 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 03 November 2011 - 04:12 PM

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!
  • 0

#10 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 03 November 2011 - 09:29 PM

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 ạ
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#11 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

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


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 đồ.
  • 0

#12 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 05 November 2011 - 09:04 AM

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 ạ
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#13 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 05 November 2011 - 09:12 AM

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
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#14 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 05 November 2011 - 10:22 AM

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


#15 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 07 November 2011 - 07:13 AM

đc rùi bác HA ạ
thanks bác
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#16 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 07 November 2011 - 07:30 AM

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 :(
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#17 anhcos

anhcos

    biết lệnh hatchedit

  • Advance Member
  • PipPipPipPip
  • 260 Bài viết
Điểm đánh giá: 170 (tàm tạm)

Đã gửi 07 November 2011 - 10:32 AM

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 đồ.
  • 0
Clear sky!

MF Rock collection.

#18 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 07 November 2011 - 10:41 AM

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


#19 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 07 November 2011 - 02:20 PM

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
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^

#20 tiendung89

tiendung89

    biết lệnh move

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

Đã gửi 07 November 2011 - 02:33 PM


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)
  • 0
Tôi không phải là đặc biệt, nhưng tôi là duy nhất ^^